- UID
- 864567
|
蜂鸣器流水灯数码管显示作息时间控制单片机课程设计 8
5.2 完整的程序清单及注释 主程序清单: 主程序清单: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H JNB P1.4,K1CHECK JNB P1.5,K2CHECK JNB P1.6,K3CHECK JNB P1.7,K4CHECK SJMP MAIN K1CHECK: JB P1.0,KEYA SJMP KEYA KEYA: MOV SP,#70H MOV R2,#08H START0: SETB P3.4 LCALL DELAY CLR P3.4 LCALL DELAY DJNZ R2,START0 SJMP MAIN DELAY: MOV R7,#02 DELAY0: MOV R6,#200 DELAY1: MOV R5,#248 DJNZ R5,$ DJNZ R6,DELAY1 DJNZ R7,DELAY0 RET K3CHECK: JB P1.6,KEYC
17
;去抖动,按下 KEYA,跳转到 KEYA 子程序
;给堆栈指针赋初值 ;蜂鸣器响声计数 3.4 口置高电平 ;调用延时子程序 3.4 口取反 ;判断计数是否结束,否跳到 START0 处 ;返回主程序 ;延时子程序
SJMP KEYC K4CHECK: JB P1.7,KEYD SJMP KEYD END。。。。。。。。。。。。。。。。 蜂鸣器。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。 K3CHECK: JB P1.4,KEYA SJMP KEYA ;去抖动,按下 KEYA,跳转到 KEYA 子程序
KEYA: MOV SP,#70H ;给堆栈指针赋初值 MOV R2,#0FFFFH ;蜂鸣器响声计数 START0: SETB P3.4 3.4 口置高电平 LCALL DELAY ;调用延时子程序 CLR P3.4 3.4 口取反 LCALL DELAY DJNZ R2,START0 ;判断计数是否结束,否跳到 START0 处 SJMP MAIN ;返回主程序 DELAY: ;延时子程序 MOV R7,#02 DELAY0: MOV R6,#12 DELAY1: MOV R5,#75 DJNZ R5,$ DJNZ R6,DELAY1 DJNZ R7,DELAY0 RET 。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。流水灯。。。。。。。。。。。。。。 。。。。。。。。。。。。。。 K2CHECK: ;去抖动,按下 KEYB,跳转到 KEYB 子程序 JB P1.5,KEYB SJMP KEYB KEYB: MOV SP,#80H MOV R2,#18H ;LED 循环闪亮三次 MOV A,#0FEH ;A 中赋初始值 LOOP: MOV P2,A ;流水灯闪亮 LCALL DELAY3
18
RL A ;A 中初值左移 DJNZ R2,LOOP MOV A,#0FFH ;三次结束后,熄灭所以 LED 灯 MOV P2,A SJMP MAIN ;返回主程序 DELAY3: ;延时子程序 MOV R7,#20 DELAY4: MOV R6,#125 DELAY5: MOV R5,#255 DJNZ R5,$ DJNZ R6,DELAY5 DJNZ R7,DELAY4 RET 。。。。。。。。。。。。。。。 数码管显示。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。
;数码显示子程序 DISPLAY: MOV ;显示分钟 MOV MOV ANL MOVC MOV LCALL MOV MOV SWAP ANL MOVC MOV LCALL ;显示小时 MOV MOV ANL MOVC MOV LCALL MOV MOV
DPTR,#DIG_CODE P1,#11110111b A,MIN A,#0FH A,@A+DPTR P0,A DIS_DELAY P1,#11111011b A, MIN A A,#07H A,@A+DPTR P0,A DIS_DELAY P1,#11111101b A,H A,#0FH A,@A+DPTR P0,A DIS_DELAY P1,#11111110b A,H |
|