C8051汇编语言递归,基于C8051F310单片机的LED灯控制器汇编语言程序调试

本文介绍了一个基于C8051F310单片机的LED灯控制器设计,使用汇编语言编程,包含9秒倒计时定时器功能,支持键盘输入设定定时时间,以及中断控制的启动、暂停和蜂鸣器提示。设计思路涉及中断入口地址设置、寄存器初始化、数据指针和键盘扫描程序等,详细阐述了资源分配和程序流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深对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:数码管

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值