加
深对51单片机及其接口电路的理解,掌握定时/计数器、中断的应用编程技术及程序的调试方法。
2.实验内容
利用C8051F310单片机设计一个倒计时定时器,功能要求如下:
模式1:基本功能
主要技术指标要求如下:
1. 定时时间为9秒,定时精度为1秒 。
2. 在LED数码管上显示剩余时间。
3. 时间到0时,蜂鸣器鸣响1次(0.5秒钟)。
4. 通过KINT键实现启动和暂停功能,暂停时D9灯亮。
5. 利用单片机内部定时器定时,KINT键输入和定时器控制均要求采用中断方式。
模式2:提高要求
1. 定时时间可通过键盘设定,最大为200秒。
2. 其它个性化设计。
二、设计思路
1.给主程序,T0、T1中断和外部KINT键中断设置入口地址;
2.初始化,将所要用到的寄存器都清零,将T0,T1的中断都开启,都设为方式1模式,并装填各自的TH和TL,设好定时时间;
3.采用数据指针,指向TABLE表,TABLE表中存取数码管中0-9的转换值;
4.进行键盘扫描程序,若无键盘按下,则继续主程序;若有键盘按下,进入按键识别程序,识别出具体哪个按键按下。若为数字键,则将相应的数字暂存人R6;若为功能键,则转入相应的功能程序。当有键盘按下时,R5自加1,当R5=2时,将其清零;
5.当为数字键时,将按下的键值,根据R5的大小,将R6转存入R2、R3、R4即百、十、个位。当R5=0,R6值转存入R2;当R5=1,R6值转存入R3;当R5=2,R6值转存入R4;
6.控制P0.6,P0.7的0/1值,根据需求点亮数码管;
7.当KINT键按下时,开启T0计时控制位,T0开始计时。计时1秒后,秒数减一。数码管上显示的数字相应的减一;
8.当KINT键再次按下,计时停止,关闭T0计时控制位,T0停止计时,数码管显示的数字不变。
9.当计时到达000时,关闭T0计时,开启T1计时,开启蜂鸣器,蜂鸣0.5秒后,关闭T1计时和蜂鸣器。
10.当为功能键时,转入功能子程序,完成相应的功能。
三、资源分配
R0: 用于300ms延迟循环
R1: 用于10ms消抖循环
R2:存取数码管百位
R3:存取数码管十位
R4:存取数码管个位
R5:用于控制暂存值R5的转存到R2或R3或R4
R6:用于键盘输入值暂存
R7:用于个性化设计延时
000BH:T0中断入口地址
0013H:外部中断KINT键入口地址
001BH:T1中断入口地址
P0.0:控制LED灯D9的开关
P0.1:控制外部中断KINT键
P0.6:数码管位位控
P0.7:数码管位位控
P1:控制数码管段的开关
P2:P0.0-P0.3行扫描,P0.4-P0.7列扫描
P3.1:控制蜂鸣器
TABLE:数码管