这是我们本学期的单片机课程设计题目,程序就是在昨天的数字钟的基础上增加了一些内容,不想继续做了,还有一门考试要复习。
主程序流程图:

汇编程序清单:
/***************************************************************
程序名称:51单片机自动打铃系统
简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒
显示格式:23-59-59(小时十位如果为0则不显示)
到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7
打 方式分起床、熄灯铃和上、下课铃两种
系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮
调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁
增加键ADD_KEY:P1.1;按一次使选中位加1
减少键DEC_KEY;P1.2;按一次使选中位减1
如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁
如果选中位是秒,则按增加键或减少键都是将秒清零
强制打铃键DALING_KEY:P1.3;用来强制打铃或强制关闭铃声
P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12M
编 写:JiangX.net
最后更新:09/1/2晚
***************************************************************/
BEEP EQU P3.7 ;定义蜂鸣器(电铃)控制信号输出口
ORG 0000H ;程序入口地址
LJMP START
ORG 000BH ;定时器0中断入口地址
LJMP TIMER_0
ORG 0300H
/*****程序开始,初始化*****/
START:
SETB BEEP ;关闭蜂鸣器(电铃)
SETB 48H ;使用一个bit位用于调时闪烁标志
SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基
CLR 45H ;关闭响铃方式1标志
CLR 44H ;关闭响铃方式2标志
MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒
MOV 20H,#00H ;用于控制秒基准时钟源的产生
MOV 21H,#00H ;清零秒寄存器
 
