1、单片机AT89C51的P2口接8个发光二极管,让这8个发光二极管显示闪烁功能,即八灯亮2S,熄灭3S,如此循环。参考程序: ORG 0000Hstart: MOV P1,#0H CALL delay MOV P1,#0FFH CALL delay CALL delay LJMP startdelay: MOV R7,#200d2: MOV R6,#250d1: DJNZ R6,d1 DJNZ R7,d2 RET END ;200*250次*2*1us=1000ms=1s2、单片机AT89C51的P1口接8个发光二极管,让这8个发光二极管能够双灯左移之后再双灯右移,形成霹雳灯的效果,如此循环5次后全灭,延时0.5S。灯右移,形成霹雳灯的效果,如此循环5次后全灭。延时0.5S。参考程序1: ORG 0000H MOV A,#11111100Bstart: MOV P1,A CALL delay RL A RL AINC R0 CJNE R0,#4,start MOV R0,#00Hs: RR A RR A MOV P1,A CALL delay INC R0 CJNE R0,#4,s MOV R0,#00H LJMP start delay: MOV R5,#100k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END参考程序2:ORG 0000H MOV R0,#5 start: MOV P2,#11111100B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11001111B CALL delay0_5s MOV P2,#00111111B CALL delay0_5s MOV P2,#11001111B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11111100B CALL delay0_5s DJNZ R0,start MOV P2,#0FFH SJMP $ delay0_5s: MOV R7,#20d3: MOV R6,#200d2: MOV R5,#250d1: NOP NOP DJNZ R5,d1 DJNZ R6,d2 DJNZ R7,d3 RET END3、单片机AT89C51的P2口接8个发光二极管,让这8个发光二极管先交互闪烁5次,然后双灯左移之后再双灯右移,如此循环,形成流水灯的效果,延时0.5S。 ORG 0000H MOV R0,#5start: MOV P1,#10101010B CALL delay MOV P1,#01010101B CALL delay DJNZ R0,start MOV R0,#5 MOV A,#11111100Bs1: MOV P1,A CALL delay RL A RL A CJNE A,#11111100B,s1s2: RR A RR A MOV P1,A CALL delay CJNE A,#11111100B,s2 JMP start delay: MOV R5,#100k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END4、单片机AT89C51的P1口和P2口分别接八个发光二极管,P2口八灯实现左移,延时0.5S,要求左移第一次,P1.0对应灯点亮,P2口灯左移第二次,P1.1对应灯亮,如此延续下去,直至左移八次后,所有灯全灭。 ORG 0000H MOV R0,#11111110Bstart: MOV A,#11111110B MOV P2,As: CALL delay RL A MOV P2,A CALL delay CJNE A,#01111111B,s MOV A,R0 MOV P1,A RL A MOV R0,A JMP start delay: MOV R5,#100k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END5、单片机AT89C51的P2.0、P2.1和P2.2分别接按钮开关PB1、PB2和PB3;P1.0接一个LED。按下PB1,则LED亮;按下PB2则LED灭;按下PB3则LED闪烁。延时为0.1S。原理图: 参考程序: ORG 0000H MOV P2,#0FFHs1: JNB P2.0,s3 JNB P2.1,s2 JNB P2.2,s4 JMP s1s2: SETB P1.0 JMP s1s3: CLR P1.0 JMP s1s4: SETB P1.0 CALL delay CLR P1.0 CALL delay JNB P2.0,s3 JNB P2.1,s2 JMP s4 delay: MOV R5,#100k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END 6、单片机AT89C51的P2.0、P2.1和P2.2分别接按钮开关PB1、PB2和PB3;P1口接8个LED。按下PB1,则8个LED闪烁;按下PB2则8个LED单灯右移;按下PB3则8个LED单灯左移。延时为0.1S。 源代码: ORG 0 MOV P2,#0FFHLOOP: JNB P2.0,LOOP_1 JNB P2.1,LOOP_2 JNB P2.2,LOOP_3 JMP LOOP LOOP_1: MOV R0,#2LOOP_1_1: MOV A,#10101010B MOV P0,A CALL D100MS MOV A,#01010101B MOV P0,A CALL D100MS MOV P0,#11111111B DJNZ R0,LOOP_1_1LOOP_1_2: JB P2.0,LOOP JMP LOOP_1_2 LOOP_2: MOV A,#11111110B MOV R0,#8LOOP_2_1: MOV P0,A RL A CALL D100MS DJNZ R0,LOOP_2_1 MOV P0,#11111111BLOOP_2_2: JB P2.1,LOOP JMP LOOP_2_2 LOOP_3: MOV A,#01111111B MOV R0,#8LOOP_3_1: MOV P0,A RR A CALL D100MS DJNZ R0,LOOP_3_1 MOV P0,#11111111BLOOP_3_2: JB P2.2,LOOP JMP LOOP_3_2 D100MS: MOV R7,#250D1: MOV R6,#200 DJNZ R6,$ DJNZ R7,D1 RET END7、单片机AT89C51的P2口分别接8个指拨开关;P0口接8个LED。指拨开关闭合之前8个LED全亮,闭合指拨开关P2.0,则P0.0所对应的LED灭,以此类推。 源代码: ORG 0 MOV A,#00000000B MOV P0,A MOV P2,#0FFHLOOP: MOV A,P2 CPL A MOV P0,A JMP LOOP END8、单片机AT89C51的P2口分别接8个指拨开关;P0口接8个LED。指拨开关闭合之前8个LED单灯左移3次后,全亮,闭合指拨开关P2.0,则P0.0所对应的LED灭,以此类推。延时为0.2S。原理图: 源代码: ORG 0 MOV R1,#3LOOP1: MOV R0,#8 MOV A,#11111110BLOOP2: MOV P0,A RL A CALL D200MS DJNZ R0,LOOP2 DJNZ R1,LOOP1 MOV A,#00000000B MOV P0,A MOV P2,#0FFHLOOP: MOV A,P2 CPL A MOV P0,A JMP LOOPD200MS: MOV R7,#250D1: MOV R6,#200D2: MOV R5,#2 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET END9、单片机AT89C51的P2.0、P2.1和P2.2口分别接一个按钮开关,P1口低4位接译码器7447,7447输出部分接共阳极LED数码管。要求按一下P2.0口对应按钮,数码管显示数字“0”;按一下P2.1口对应按钮,数码管显示数字“8”;按一下P2.2口对应按钮,数码管所显示的数字被关闭。原理图: 源代码: ORG 0000H START: MOV P2,#0FFH LOOP: JNB P2.0,ON JNB P2.1,ON8 JNB P2.2,OFF JMP LOOP ON: MOV P1,#00H ON_1: JB P2.0,LOOP JMP ON_1 ON8: MOV P1,#08H ON_8: JB P2.1,LOOP JMP ON_8 OFF: MOV P1,#0FFH OFF_1: JB P2.2,LOOP JMP OFF_1 END10、单片机AT89C51的P2口接7447驱动一个共阳极七段数码管。让该数码管循环显示数字“9~0”,延时为1S。 ORG 0000H MOV R0,#10start: DJNZ R0,s MOV P2,R0 CALL delay MOV R0,#10 JMP starts: MOV P2,R0 CALL delay JMP start delay: MOV R5,#100k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END11、单片机AT89C51的P2口接7447驱动一个共阳极七段数码管。让该数码管显示数字“2~6”,之后显示“9~0”,如此循环,延时为1S。ORG 0START: MOV R0,#5 MOV A,#2LOOP_1: MOV P2,A INC A CALL D1000MS DJNZ R0,LOOP_1 MOV R0,#10 MOV A,#9LOOP_2: MOV P2,A DEC A CALL D1000MS DJNZ R0,LOOP_2 JMP STARTD1000MS: MOV R7,#250D1: MOV R6,#200D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET END12、四个集成共阳极七段数码管的公共端以PNP三极管做开关分别连接到单片机AT89C51的P1低四位,数码管的各显示引脚a~dP分别连接到P2.0~2.7。让4个数码管稳定显示“2012”。ORG 0LOOP: MOV P1,#11111110B MOV P2,#10100100B CALL D4MS MOV P1,#11111101B MOV P2,#11000000B CALL D4MS MOV P1,#11111011B MOV P2,#11111001B CALL D4MS MOV P1,#11110111B MOV P2,#11111001B CALL D4MS JMP L
单片机闪烁灯流水灯汇编代码大全
时间:2024-05-27 07:37:11