1、單片機AT89C51的P2口接8個發(fā)光二極管,讓這8個發(fā)光二極管顯示閃爍功能,即八燈亮2S,熄滅3S,如此循環(huán)。 參考程序: ORG 0000H start: MOV P1,#0H CALL delay MOV P1,#0FFH CALL delay CALL delay LJMP start delay: MOV R7,#200 d2: MOV R6,#250 d1: DJNZ R6,d1 DJNZ R7,d2 RET END ;200*250次*2*1us=1000ms=1s 2、單片機AT89C51的P1口接8個發(fā)光二極管,讓這8個發(fā)光二極管能夠雙燈左移之后再雙燈右移, 形成霹靂燈的效果,如此循環(huán)5次后全滅,延時0.5S。燈右移,形成霹靂燈的效果, 如此循環(huán)5次后全滅。延時0.5S。 參考程序1: ORG 0000H MOV A,#11111100B start: MOV P1,A CALL delay RL A RL A INC R0 CJNE R0,#4,start MOV R0,#00H s: RR A RR A MOV P1,A CALL delay INC R0 CJNE R0,#4,s MOV R0,#00H LJMP start delay: MOV R5,#100 k1: MOV R6,#250 k2: MOV R7,#250 k3: 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,#20 d3: MOV R6,#200 d2: MOV R5,#250 d1: NOP NOP DJNZ R5,d1 DJNZ R6,d2 DJNZ R7,d3 RET END 3、單片機AT89C51的P2口接8個發(fā)光二極管,讓這8個發(fā)光二極管先交互閃爍5次, 然后雙燈左移之后再雙燈右移,如此循環(huán),形成流水燈的效果,延時0.5S。 ORG 0000H MOV R0,#5 start: MOV P1,#10101010B CALL delay MOV P1,#01010101B CALL delay DJNZ R0,start MOV R0,#5 MOV A,#11111100B s1: MOV P1,A CALL delay RL A RL A CJNE A,#11111100B,s1 s2: RR A RR A MOV P1,A CALL delay CJNE A,#11111100B,s2 JMP start delay: MOV R5,#100 k1: MOV R6,#250 k2: MOV R7,#250 k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END 4、單片機AT89C51的P1口和P2口分別接八個發(fā)光二極管,P2口八燈實現(xiàn)左移,延時0.5S, 要求左移第一次,P1.0對應燈點亮,P2口燈左移第二次,P1.1對應燈亮,如此延續(xù)下去, 直至左移八次后,所有燈全滅。 ORG 0000H MOV R0,#11111110B start: MOV A,#11111110B MOV P2,A s: 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,#100 k1: MOV R6,#250 k2: MOV R7,#250 k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END 5、單片機AT89C51的P2.0、P2.1和P2.2分別接按鈕開關(guān)PB1、PB2和PB3;P1.0接一個LED。按下PB1, 則LED亮;按下PB2則LED滅;按下PB3則LED閃爍。延時為0.1S。 原理圖: 參考程序: ORG 0000H MOV P2,#0FFH s1: JNB P2.0,s3 JNB P2.1,s2 JNB P2.2,s4 JMP s1 s2: SETB P1.0 JMP s1 s3: CLR P1.0 JMP s1 s4: SETB P1.0 CALL delay CLR P1.0 CALL delay JNB P2.0,s3 JNB P2.1,s2 JMP s4 delay: MOV R5,#100 k1: MOV R6,#250 k2: MOV R7,#250 k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END 6、單片機AT89C51的P2.0、P2.1和P2.2分別接按鈕開關(guān)PB1、PB2和PB3;P1口接8個LED。 按下PB1,則8個LED閃爍;按下PB2則8個LED單燈右移;按下PB3則8個LED單燈左移。延時為0.1S。 源代碼: ORG 0 MOV P2,#0FFH LOOP: JNB P2.0,LOOP_1 JNB P2.1,LOOP_2 JNB P2.2,LOOP_3 JMP LOOP LOOP_1: MOV R0,#2 LOOP_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_1 LOOP_1_2: JB P2.0,LOOP JMP LOOP_1_2 LOOP_2: MOV A,#11111110B MOV R0,#8 LOOP_2_1: MOV P0,A RL A CALL D100MS DJNZ R0,LOOP_2_1 MOV P0,#11111111B LOOP_2_2: JB P2.1,LOOP JMP LOOP_2_2 LOOP_3: MOV A,#01111111B MOV R0,#8 LOOP_3_1: MOV P0,A RR A CALL D100MS DJNZ R0,LOOP_3_1 MOV P0,#11111111B LOOP_3_2: JB P2.2,LOOP JMP LOOP_3_2 D100MS: MOV R7,#250 D1: MOV R6,#200 DJNZ R6,$ DJNZ R7,D1 RET END 7、單片機AT89C51的P2口分別接8個指撥開關(guān);P0口接8個LED。指撥開關(guān)閉合之前8個LED全亮, 閉合指撥開關(guān)P2.0,則P0.0所對應的LED滅,以此類推。 源代碼: ORG 0 MOV A,#00000000B MOV P0,A MOV P2,#0FFH LOOP: MOV A,P2 CPL A MOV P0,A JMP LOOP END 8、單片機AT89C51的P2口分別接8個指撥開關(guān);P0口接8個LED。 指撥開關(guān)閉合之前8個LED單燈左移3次后,全亮,閉合指撥開關(guān)P2.0, 則P0.0所對應的LED滅,以此類推。延時為0.2S。 原理圖: 源代碼: ORG 0 MOV R1,#3 LOOP1: MOV R0,#8 MOV A,#11111110B LOOP2: MOV P0,A RL A CALL D200MS DJNZ R0,LOOP2 DJNZ R1,LOOP1 MOV A,#00000000B MOV P0,A MOV P2,#0FFH LOOP: MOV A,P2 CPL A MOV P0,A JMP LOOP D200MS: MOV R7,#250 D1: MOV R6,#200 D2: MOV R5,#2 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET END 9、單片機AT89C51的P2.0、P2.1和P2.2口分別接一個按鈕開關(guān), P1口低4位接譯碼器7447,7447輸出部分接共陽極LED數(shù)碼管。要求按一下P2.0口對應按鈕,數(shù)碼管顯示數(shù)字“0”; 按一下P2.1口對應按鈕,數(shù)碼管顯示數(shù)字“8”;按一下P2.2口對應按鈕,數(shù)碼管所顯示的數(shù)字被關(guān)閉。 原理圖: 源代碼: 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 END 10、單片機AT89C51的P2口接7447驅(qū)動一個共陽極七段數(shù)碼管。讓該數(shù)碼管循環(huán)顯示數(shù)字“9~0”,延時為1S。 ORG 0000H MOV R0,#10 start: DJNZ R0,s MOV P2,R0 CALL delay MOV R0,#10 JMP start s: MOV P2,R0 CALL delay JMP start delay: MOV R5,#100 k1: MOV R6,#250 k2: MOV R7,#250 k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END 11、單片機AT89C51的P2口接7447驅(qū)動一個共陽極七段數(shù)碼管。 讓該數(shù)碼管顯示數(shù)字“2~6”,之后顯示“9~0”,如此循環(huán),延時為1S。 ORG 0 START: MOV R0,#5 MOV A,#2 LOOP_1: MOV P2,A INC A CALL D1000MS DJNZ R0,LOOP_1 MOV R0,#10 MOV A,#9 LOOP_2: MOV P2,A DEC A CALL D1000MS DJNZ R0,LOOP_2 JMP START D1000MS: MOV R7,#250 D1: MOV R6,#200 D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET END 12、四個集成共陽極七段數(shù)碼管的公共端以PNP三極管做開關(guān)分別連接到單片機AT89C51的P1低四位, 數(shù)碼管的各顯示引腳a~dP分別連接到P2.0~2.7。讓4個數(shù)碼管穩(wěn)定顯示“2012”。 ORG 0 LOOP: 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 LOOP D4MS: MOV R7,#10 D1: MOV R6,#200 DJNZ R6,$ DJNZ R7,D1 RET END 13、四個集成共陽極七段數(shù)碼管的公共端以PNP三極管做開關(guān)分別連接到單片機AT89C51的P1低四位, 數(shù)碼管的各顯示引腳a~dP分別連接到P2.0~2.7。讓LED先穩(wěn)定顯示“2012”, 約1秒之后再穩(wěn)定顯示“12.21”,如此循環(huán)。 ORG 0 LOOP: MOV R0,#65 LOOP_1: 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 DJNZ R0,LOOP_1 MOV R1,#65 LOOP_2: MOV P1,#11111110B MOV P2,#11111001B CALL D4MS MOV P1,#11111101B MOV P2,#00100100B CALL D4MS MOV P1,#11111011B MOV P2,#10110000B CALL D4MS MOV P1,#11110111B MOV P2,#11000000B CALL D4MS DJNZ R1,LOOP_2 JMP LOOP D4MS: MOV R7,#10 D1: MOV R6,#200 DJNZ R6,$ DJNZ R7,D1 RET END 14、單片機AT89C51的P0口接8個LED,用INT0產(chǎn)生中斷。主程序正常執(zhí)行時,P0口的8個LED單燈左移。 當進入中斷狀態(tài)時,P0口的8個LED將變成單燈右移,3個循環(huán)后,恢復中斷前的狀態(tài), 即繼續(xù)執(zhí)行8個LED單燈左移。延時為0.5S。 ORG 0000H JMP main ORG 0003H JMP int_0 main: SETB IT0 SETB EX0 SETB EA MOV A,#11111110B s: RL A MOV P2,A CALL delay JMP s delay: MOV R7,#100 d3: MOV R6,#200 d2: MOV R5,#250 d1: DJNZ R5,d1 DJNZ R6,d2 DJNZ R7,d3 RET int_0: MOV P2,A MOV R0,#24 k: RR A MOV P2,A CALL delay DJNZ R0,k MOV R0,#24 RETI END 15、功能要求:用 產(chǎn)生中斷,主程序正常執(zhí)行時,數(shù)碼管循環(huán)顯示“0~9”, 每0.5S增加1。當進入中斷狀態(tài)時,數(shù)碼管循環(huán)顯示“9~0”, 每0.5S減少1,一圈之后恢復中斷前的狀態(tài)。 ORG 0000H JMP main ORG 0003H JMP int_0 main: SETB IT0 SETB EX0 SETB EA s: MOV P2,A CALL delay INC A CJNE A,#10,s MOV A,#0 JMP s delay: MOV R7,#100 d3: MOV R6,#200 d2: MOV R5,#250 d1: DJNZ R5,d1 DJNZ R6,d2 DJNZ R7,d3 RET int_0: MOV A,#10 k: DEC A MOV P2,A CALL delay CJNE A,#0H,k RETI END