首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

蜂鸣器流水灯数码管显示作息时间控制单片机课程设计 8

蜂鸣器流水灯数码管显示作息时间控制单片机课程设计 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
返回列表