|
該程序示例了單片機鍵盤控制p1口流水燈花樣的方法;具體表現(xiàn)為:p3.2 3.2 3.4 3.5四個小按鍵 分別實現(xiàn)了四個控制: 1啟動, 停止;在任何狀態(tài)下按此鍵程序停止運行. 2 跑燈,p1.0---1.7亮點流動: 3 流水燈; p1.0-1.7 依次點亮 4 交錯等; p0.O,P0.2,P0.4,P0.6和p0.1,P0.3,P0.5,P0.7輪流點亮 該程序在本站DCF51-1開發(fā)板上調(diào)試通過: ;************; ;亮燈控制程序; ;************; ; ;************; ;中斷入口程序; ;************; ; ORG 0000H LJMP START ORG 0003H RETI ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ; ;************; ; 初始化程序 ; ;************; ; CLEAR: RET ; ;************; ; 主 程 序 ; ;************; ; START:ACALL CLEAR STAR1:MOV P3,#0FFH JNB P3.4,FUN0 JNB P3.5,FUN1 JNB P3.2,FUN2 JNB P3.3,FUN3 ;關(guān)閉按紐 JNB F0,STAR1 ;曾經(jīng)有鍵按下F0置1 RET ; FUN0:LCALL DL10MS ;消岸抖動 JB P3.4,STAR1 WAITL0:JNB P3.4,WAITL0 ;等待鍵釋放 SETB F0 FUN01:LCALL FUN00 LCALL STAR1 LJMP FUN01 ; FUN1:LCALL DL10MS ;消岸抖動 JB P3.5,STAR1 WAITL1:JNB P3.5,WAITL1 ;等待鍵釋放 SETB F0 FUN10:LCALL FUN11 LCALL STAR1 LJMP FUN10 ; FUN2:LCALL DL10MS ;消岸抖動 JB P3.2,STAR1 WAITL2:JNB P3.2,WAITL2 ;等待鍵釋放 SETB F0 FUN20:LCALL FUN22 LCALL STAR1 LJMP FUN20 ; FUN3:LCALL DL10MS ;消岸抖動 JB P3.3,STAR1 WAITL3:JNB P3.3,WAITL3 ;等待鍵釋放 CLR F0 MOV P1,#0FFH ;關(guān)顯示 LJMP STAR1 ; FUN00:MOV A,#0FEH FUN000:MOV P1,A LCALL DL05S JNB ACC.7,OUT RL A AJMP FUN000 OUT: RET ; FUN11:MOV A,#0FEH FUN111:MOV P1,A LCALL DL05S JZ OUT RL A ANL A,P1 AJMP FUN111 ; FUN22:MOV A,#0AAH MOV P1,A LCALL DL30S CPL A MOV P1,A LCALL DL30S RET ; ;************; ; 延時程序 ; ;************; ; DL512:MOV R2,#0FFH LOOP1: DJNZ R2,LOOP1 RET DL10MS:MOV R3,#14H LOOP2: LCALL DL512 DJNZ R3,LOOP2 RET DL05S:MOV R4,#0AH LOOP3: LCALL DL10MS DJNZ R4,LOOP3 RET DL30S:MOV R5,#03H LOOP4:LCALL DL05S DJNZ R5,LOOP4 RET end |