加
深对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:数码管0-9数字转换表
四、流程图主程序:
判断有无按键按下子程序
扫描子程序
百十个赋值子程序
键盘释放子程序
10ms消抖子程序
蜂鸣子程序
外部KINT键中断
T0中断
T1中断
五、源代码 (含文件头说明、语句行注释)
;Filename: F310_frame.asm
;Designed by: 贺森涛
;Date: 2019/05/28
;P1:ABCDEFG,dp P0.7和P0.6控制哪个数码管亮
;P2.0-P2.7行输入4,列输入4
;K0-K9数字键,K10键转个性化设计程序
;-------------------------------------------------------------------------------
$include(C8051F310.inc)
LED BIT P0.0
BEEP BIT P3.1
KINT BIT P0.1
INIT SEGMENT CODE
rseg INIT
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0INT
ORG 0013H
LJMP KINT0
ORG 001BH
LJMP T1INT
ORG 0100H
MAIN:
LCALL Init_Device ;设备初始化
LCALL INIT0 ;定时器初始化
MOV R0,#0 ;延迟循环
MOV R1,#0 ;消抖循环
MOV R2,#0 ;百位
MOV R3,#0 ;十位
MOV R4,#0 ;个位
MOV R5,#0 ;位选信号
MOV R6,#0 ;键盘输入数值
MOV R7,#0 ;个性化设计用
MOV DPTR,#TABLE ;0-9转换表
CLR BEEP
CLR LED
LOOP: ;LED数码管不停显示
ACALL LED100
MOV A,R2
MOVC A,@A+DPTR ;百位
MOV P1,A
ACALL DELAY_300ms
ACALL LED10
MOV A,R3
MOVC A,@A+DPTR ;十位
MOV P1,A
ACALL DELAY_300ms
ACALL LED1
MOV A,R4
MOVC A,@A+DPTR ;个位
MOV P1,A
ACALL DELAY_300ms
JB LED,LOOP ;等待键盘
LCALL KKEY
AJMP LOOP
;-----------------定时器初始化子程序--------------------------------------------
INIT0:
SETB EX1 ;开外部中断允许
上一篇:单片机控制8×8LED点阵屏显示数字的设计
下一篇:STC15W408AS单片机白光T12控制器
推荐阅读最新更新时间:2024-11-14 06:57
设计资源 培训 开发板 精华推荐
- NCV7685LOWR1GEVK:NCV7685 低端 EVB/REF 套件
- DC1112A,用于 LTC2755 16 位、四路、SoftSpan、1LSB INL Iout DAC 的演示板
- NCS199A3RSQT2GEVB:电流检测放大器
- LTC1174 5V、425mA 表面贴装
- 基于STPM33,STPM34和STM8S903的带有电流互感器的多相电能计量演示板
- 具有双极性 LCD 对比度的 LT1183CS 90% 高效浮动 CCFL 配置的典型应用电路
- AM6TW-4805DZ ±5V 6 瓦双路输出 DC-DC 转换器的典型应用
- 使用 Analog Devices 的 LT1376IS 的参考设计
- 基于器件L6470的STM32 Nucleo双轴步进电机驱动器扩展板
- 用于工业应用的 C8051F064 MCU 的 C8051F064EK、8051 开发系统