《51单片机:LED灯亮灯灭程序设计.docx》由会员分享,可在线阅读,更多相关《51单片机:LED灯亮灯灭程序设计.docx(11页珍藏版)》请在第壹文秘上搜索。
1、1.功能阐明:控制单片机P1.端口输出,使P1.。位所接的1.ED点亮,其他7只灯熄灭血:01:MOVA,#111111106;存入欲显示灯的位置数据02:MOVP1.,A;点亮第一只灯03:JMP$;保持目前的输出状态04:END;程序结束2.功能阐明:单片机P1.端口接8只1.ED点亮第1、3、4、6、7、8只灯。蛛OkSTART:MOVA,#0001OO1.OB;存入欲显示灯时位置数据02:MOVP1.,A;点亮灯03:JMPSTART;重新设定显示值04:END;程序结束3.功能阐明:单片机PI端口接8只1.ED,每次点亮一只,向左移动点亮,反复循环吹01:START:MOVRO,#8
2、;设左移8次02:亮灯位置MOVA,#1111111OB;存入开始点03:1.OOP:MOVP1,A;传送到P1.并输出04:R1.A;左移一位05:DJNZRO,1.OOP;判断移动次数;重新设定显示值;程序结束06:JMPSTART07:END4.功能阐明:单片机P1.转口接8只1.ED,每次点亮一只,向右移动点亮,反便循环叫01:START:MOVR0,#8;设右移8次02:MOVA,#011111I1.B;存入开始点亮灯位置03:1.OOP:MOVP1,A;传送到P1.并输出04:ACA1.1.DE1.AY;调延时子程序05:RRA;右移一位06:DJNZR0,1.OOP;判断移动次数
3、07:JMPSTART;重新设定显示值08:DE1.AY:MOVR5,#50;09:D1.YkMOVR6,#100;10:D1.Y2:MOVR7,#100;11: DJNZR7,$;12: DJNZR6,D1.Y2;13:DJNZR5,D1.Y1.;14:RET:子程序返回15:END;程序结束5.功能阐明:单片机P1.端口接8只1.ED,每次点亮一只,先把右边的第一只点亮。5秒后点亮右数的第二只灯,第一只熄灭,再过0.5秒点亮右数的第三只灯,第二只熄灭,亮灯按此顺序由右向左移动.当亮灯移到左1后,开始与上述反方向移动,即亮灯由左向右移动,反复循环.程序:01:START:MOVR0,#8;设
4、左移8次02:MOVA,#0FEH;存入开始亮灯位置03:1.OOP:MOVP1.,A:传送到P1.并输出04:ACA1.1.DE1.AY;调延时子程序05:R1.A;左移一位06:DJNZRO,1.OOP;判断移动次数07:MOVR1,#8;设右移8次08;1.OOP1.:RRA;右移一位09:MOVP1.,A;传送到PI并输出10:ACA1.1.DE1.AY;调延时子程序11:DJNZR1.XOOP1;判断移动次数12:JMPSTART;重新设定显示值13:DE1.AY:MOVR5,#25;延时0.5秒子程序14:D1.Y1:MOVR6,#100;15:D1.Y2:MOVR7,#100;1
5、6: DJNZR7,$;17: DJNZR6,D1.Y2;18: DJNZR5,D1.Y1;19:RET;子程序返回20:END;6,功能阐明:单片机P1.蜡口接8只1.ED,每次点亮两只,先从右边向左边移动点亮;再从左边向右边移动点亮,然后闪烁两次,反复循环。程序:01:START:MOVRO,#7;设左移7次02:位置MOVA,#0FCH;存入开始亮灯03:1.OOP:MOVP1并输出P1.,A;传送到04:ACA1.1.DE1.AY;调延时子程序05:R1.A;左移一位06:DJNZR0,1.OOP;判断移动次数07:MOVR1.,#7;设右移7次08:1.OOP1:RRA;右移一位09
6、:并输出MOVP1,A;传送到P1.10:ACA1.1.DE1.AY;调延时子程序子程序16:CP1.A;A取反值17:DJNZR2,1.OOP2;判断闪烁次数18:JMPSTART;重新设定显示值19:DE1.AY:MOVR5,#2520:D1.Y1.:MOVR6,#10021:D1.Y2:MOVR7,#10022:DJNZR7,$23:DJNZR6,D1.Y224:DJNZR5,D1.Y1.25:RET;子程序返回26:END;程序结束7,功能阐明单片机端口接八只1.ED,编程时运用取表的措施,使端口P1.做单一11:DJNZR1.1.OOPI;判断移动次数12:数13:MOVR2,#3M
7、OVA,#00H14:1.OOP2:MOVP1.,A15:;设立闪烁次;设初始值;P1端口灯亮ACA1.1.DE1.AY:调用延时灯的变化:先向左移2次,然后向右移2次,再闪烁4次,不断循环.程序:01:START:MOVDPTR,#TAB1.E;存表02:1.OOP:C1.RA;A清零03:MOVCA,A+DPTR;取表代码04:05:jmpstart;重新设定06:1.OOP1:MOVPhA;送P1.输出07:Aca1.1.de1.ay;调延时程序08:INCDPTR09:JMP1.OOP10:DE1.AY:MOV;数据指针加1;转移到1.ooP处R5,#25;延时0.5秒CJNEA,#0
8、1H,1.OOP1.;不是01H,循11:D1.Y1.:MOVR6,#10012:D1.Y2:MOVR7,#10013:DJNZR7414:DJNZR6,D1.Y2;15:DJNZR5,D1.Y1;16:RET;17: TAB1.E:DBOFEH,OFDH,0FBH,OF7H18: DBOEFH1ODFH,OBFH17FH;左移19: DB0FEH,OFDH,OFBH,0F7H20:DBOEFH,ODFH,OBFHJFH;左移21:DB7FH,OBFH1ODFHiOEFH;22:DBOF7H,0FBH,0FDH,0FEH;右移23:DB7FH,OBFH,ODFH,0EFH;24:DBOF7H,
9、ofbh,ofdh,ofeh;右移25: DBOOH,OFFH100H,OFFH;26: DBOOH,OFFH,OOH,OFFH;闪烁27: DBO1.H;结束码28: END;8:功能阐明:单片机P1端口接8只1.ED,依次点亮且前面保持不灭,再依次熄灭;延时0.5s,反复循环断ORGOOHSTART:MOVP1,#OFFHCA1.1.DE1.AYMOVP1,#7FHCa1.1.de1.aYMOVP1,#3FHCA1.1.DE1.AYMOVP1,#1FHCA1.1.DE1.AYMOVP1,#0FHCA1.1.DE1.AYMOVP1.,#07HCA1.1.DE1.AYMOVP1.,#03HCA
10、1.1.DE1.AYMOVP1,#01HCA1.1.DE1.AYMOVP1.#OoHCA1.1.DE1.AYMOVP1,#01HCA1.1.DE1.AYMOVP1,#03HCA1.1.DE1.AYMOVP1.,#07HCA1.1.DE1.AYMOVP1.,#OFHCA1.1.DE1.AYMOVP1,#1FHCA1.1.DE1.AYMOVP1.#3FHCA1.1.DE1.AYMOVP1.,#7FHCA1.1.DE1.AYCA1.1.DE1.AYJMPSTARTDE1.AY:MOVR3,#20D1:MOVR4,#20D2:MOVR5,#248DJNZR5,$DJNZR4,D2DJNZR3,D1.RETEND