历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2020年11月25日 | 基于C8051F310单片机的LED灯控制器汇编语言程序调试

2020-11-25 来源:51hei

深对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                              ;开外部中断允许

推荐阅读

史海拾趣

AB Connectors Ltd公司的发展小趣事

AB Connectors Ltd成立于上世纪九十年代初,当时电子行业正处于飞速发展的黄金时期。公司创始人张三和李四凭借对连接器技术的深刻理解和对市场需求的敏锐洞察,决定创立这家公司。初创时期,公司面临着资金短缺、技术瓶颈和市场认可度低等挑战。然而,通过不懈的努力,AB Connectors Ltd成功研发出了一款具有竞争力的新型连接器产品,并在国际电子展览会上获得了广泛关注。这为公司打开了市场大门,奠定了发展的基础。

Hind Rectifiers Ltd公司的发展小趣事

随着公司实力的不断增强,AB Connectors Ltd开始将目光投向国际市场。公司积极参加国际电子展会和商务洽谈活动,与海外客户建立了广泛的合作关系。同时,公司还通过设立海外办事处和建立分销网络等方式,进一步拓展国际市场。这些举措不仅提高了公司的知名度和影响力,还为公司的快速发展提供了有力支持。

Aptiv公司的发展小趣事

随着数字化时代的到来,Aptiv积极拥抱数字化转型,通过引入先进的信息技术和管理系统,提升了企业的运营效率和市场竞争力。例如,公司向汽车行业某公司发出EDI对接邀请,计划通过EDI系统实现双方的数据共享和业务协同,从而提高了工作效率和下单准确性。这种数字化转型不仅有助于Aptiv在激烈的市场竞争中保持领先地位,还为整个电子行业的数字化转型提供了有益的借鉴和参考。

这五个故事展示了Aptiv公司在电子行业中的发展历程和成就,从技术创新到全球布局、创新合作、社会责任以及数字化转型等方面,都体现了公司的实力和担当。Aptiv以其卓越的技术实力和市场表现,成为了电子行业中一颗璀璨的明星。

EOS POWER INDIA Pvt公司的发展小趣事

在追求经济效益的同时,EOS也注重可持续发展和环保责任。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。EOS还投入资金建设了环保设施,确保生产过程中的废弃物得到有效处理。此外,公司还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了EOS的社会责任感,也为公司的长期发展奠定了坚实的基础。

超霸(GP)公司的发展小趣事

绿索超容深知品质是企业生存的根本。因此,公司从原材料采购到生产制造,再到成品检验,都实施了严格的质量控制措施。此外,公司还通过了ISO9001体系认证,进一步提升了其产品质量管理水平。这些努力不仅保证了绿索超容产品的优良品质,也为其赢得了客户的信任和好评。

Cellergy公司的发展小趣事

在电子行业的快速发展中,Cellergy公司以一项创新技术打破了行业内的常规。该公司成功研发出了一种新型电容器,其性能远超市场上同类产品。这一技术突破不仅为Cellergy公司赢得了大量订单,还使其在电子行业中的地位得到了显著提升。随着技术的不断完善和市场的不断拓展,Cellergy公司逐渐成为了电容器领域的佼佼者。

问答坊 | AI 解惑

大数码管的显示问题

买了三块大数码管,一块\"8\"就有成人手掌大小,一共有十支管脚,自己测了一下,找到了阳极、a,b,c,d,e,f,g,dp,共九支,还有一支管脚不知道是干什么的。用5V直流点不亮,换9V直流才点亮。我把几块数码管的a.....dp串接起来用PNP三极管接51的P0-P7,用PN ...…

查看全部问答>

怎么样进行PCB布局?

我初学99 SE ,不知道怎样进行PCB布局,请大虾给个经验,在网上找到的多是布线经验…

查看全部问答>

开关电源设计流程简介

开关电源设计流程简介…

查看全部问答>

项目寻求协助 ARM-linux 下的程序开发(非驱动)

请南京或周边(最好是南京)有能力的朋友和我联系,报酬细谈. QQ:980096 mail:001688@gmail.com…

查看全部问答>

阿牛哥参观中国国际汽车零部件博览会

9月26日下午阿牛哥去静安庄国展参观中国国际汽车零部件博览会。 1号馆是浙江厂商的天下, 温州,台州,宁波 ,绍兴 民营企业林林总总。 “无湘不成军,无浙不成商”确实是这样。国内的湖北十堰市,安徽合肥市 福建厦门等地方组织的综合展台很有特 ...…

查看全部问答>

【转】MDK仿真时从RAM启动,只需修改SCF文件即可

这是网友小野狼发表在“ARM 论坛”MDK仿真时从RAM启动,只需修改SCF文件即可二姨的ABC代码越来越不好使了。…

查看全部问答>

目前在做CC2530+cc2591的zigbee模块,遇到一些问题求大神指教

目前拿到一个cc2530+cc3591的zigbee模块,在这个模块的基础上要加一个RS485和一个电源,目前这两个电路都已经有了,问题是怎么把rs485和zigbee模块连接起来?直接把TX和RX对应相接么?还有这个模块具体要给它供多少伏电压,多少安电流啊?请大神详 ...…

查看全部问答>

我写了一个ADC10序列通道重复转换模式的代码,但没法用,求高手指点

#include unsigned int a[3]; unsigned int i=0; void main(void) {         WDTCTL=WDTPW+WDTHOLD;         P1OUT=0;         ADC10CTL0|=ADC10ON+ADC10IE+REFON+REF2_5V+SREF ...…

查看全部问答>

win7环境安装Eplan2.1破解方法

费了好半天才装成功的eplan p82.1。和大家分享下安装方法。附件下载word文档。 一、安装EPLANElectric P8 2.1二、用管理员身份运行 “命令提示符”(按win+R组合键弹出)如第一图file:///C:/Users/postlily/AppData/Local/Temp/msohtmlclip1/01/c ...…

查看全部问答>