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

发布者:SerendipityLove最新更新时间:2020-11-25 来源: 51hei关键字:C8051F310  单片机  LED灯控制器  汇编语言 手机看文章 扫描二维码
随时随地手机看文章

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

[1] [2] [3] [4] [5] [6] [7]
关键字:C8051F310  单片机  LED灯控制器  汇编语言 引用地址:基于C8051F310单片机的LED灯控制器汇编语言程序调试

上一篇:单片机控制8×8LED点阵屏显示数字的设计
下一篇:STC15W408AS单片机白光T12控制器

推荐阅读最新更新时间:2024-11-14 06:57

影响单片机系统运行稳定性的因素可大体分为外因和内因
1、外因 射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰; 电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。 2、内因 振荡源的稳定性,主要由起振时间,频率稳定度和占空比稳定度决定 起振时间可由电路参数整定,稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。
[单片机]
基于51单片机的简易计算器设计
一.硬件方案 本设计是以51单片机为核心的计算器模拟系统设计,输入采用4×4矩阵键盘,可以进行加、减、乘、除4位带符号数字运算,并在LCD1602上显示操作过程。 主要由51单片机+最小系统+LCD1602液晶显示模块+4*4矩阵按键电路;如图: 二.设计功能 (1)本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。 (2)矩阵按键输入、LCD1602液晶显示,构成一套可以运算两个数之间的加减乘除的设计。 (3)最大运算是:9999*9999,可以运算负数; 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)Protues仿真图如下: 四.软件设计 (
[单片机]
基于51<font color='red'>单片机</font>的简易计算器设计
基于MR16单片机的UPS设计
  本文介绍了一种基于Motorala单片机MR16的全数字化的UPS设计方法,根据设计思想制作了一台样机,得到了较好的实验结果。   1 主电路的设计   系统主电路主要包括蓄电池、逆变电路和切换电路3部分,逆变部分采用电压型全桥逆变结构,如图1所示。蓄电池电压经全桥逆变电路逆变,再经工频变压器升压和滤波后输出。逆变电压或电网电压Un通过切换开关向负载供电。系统设计要求为直流侧输入电压220V,额定交流输出电压为220V/50Hz,额定容量5kVA。   由图1可见,在蓄电池和滤波电容之间设计了由R和继电器KM1组成的合闸软启动电路,是为了防止在开机瞬间蓄电池对电解电容C1充电所产生的冲击电流而设的。KM1由单片机控制,通
[单片机]
基于MR16<font color='red'>单片机</font>的UPS设计
51单片机自动打铃C语言程序
51单片机自动打铃C语言程序: #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阴极总段// uchar DSY_BUFFER ={0,0,0xBF,0,0,0xff,0,0};//时间显示时-分 模式 uchar DSY_BUFFER1 ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
[单片机]
51<font color='red'>单片机</font>自动打铃C语言程序
单片机控制LCD1602显示屏动态显示字符串
仿真电路图: 仿真实验结果: C语言程序代码: //------------------------------------------------*/ #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include intrins.h sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0
[单片机]
<font color='red'>单片机</font>控制LCD1602显示屏动态显示字符串
利用高度集成的8位MCU简化CAN汽车应用
  控制器局域网(CAN)协议是在20世纪80年代中期专为汽车行业设计的一种规范,可在日益增长的互联应用中减少数据传输的布线复杂性(重量、数量和成本)。   CAN的优势也被其他市场(包括工厂自动化和医疗应用)接受和吸纳,这使其应用范围更加广泛,全球每年交付的CAN节点超过10亿个。同样,每年交付的8位单片机(MCU)也超过10亿个。如今,虽然这些统计数据有部分重叠,但今后仍会有大幅增长。   CAN继续满足汽车制造商的需求   传统的CAN通信以事件为基础,允许单片机和专用集成电路(ASICS)在应用中直接相互通信,无需主机。CAN经过半导体公司集成后极大降低了成本,并且能够与更多汽车系统兼容。自2000年初以来,8位M
[嵌入式]
利用高度集成的8位<font color='red'>MCU</font>简化CAN汽车应用
MCS-51单片机定时器和计数器的4种工作方式解析
MCS-51单片机含有2个定时器/计数器,具有4种工作方式。具有两种工作模式(计数器模式和定时器模式) MCS-51单片机含有1个全双工串行口,具有4种工作方式。 TMOD-》定时器/计数器方式控制寄存器 TCON-》定时器/计数器控制寄存器 SMOD-》串行口波特率系数选择位 SCON-》串行口控制寄存器 SBUF -》串行口数据缓冲器 TH0 -》定时器/计数器0(高字节) TL0 -》定时器/计数器0(低字节) TH1 -》定时器/计数器1(高字节) TL1 -》定时器/计数器1(低字节) MCS-51单片机定时器和计数器的4种工作方式解析 一、定时器/计数器 定时器/计数器T0由特殊功能寄存器TH0、TL0
[单片机]
MCS-51<font color='red'>单片机</font>定时器和计数器的4种工作方式解析
【GD32 MCU入门教程】GD32 MCU GPIO 结构与使用注意事项
1.前言 本文是专门为基于GD32 MCU开发的工程设计人员提供,主要介绍了GPIO的功能配置、内部结构以及在不同场景使用时的注意事项,旨在帮助GD32 MCU开发者优化对通用型输入输出端口(GPIO)的使用,正确快速的使用GD32 MCU进行产品开发。 GPIO,通用型输入输出端口的简称,可以通过软件配置其输出或者输入,GD32 的 GPIO 引脚与外部设备连接,从而实现与外部通信,控制以及信号输入的功能,是 GD32 MCU 中很常见,使用最广泛的模块。 每个 GPIO 引脚可以由软件配置为输出(推挽或开漏)、输入、外设备用功能或者模拟模式。 每个 GPIO 引脚都可以配置为上拉、下拉或浮空模式或无上拉/下拉。 GD32
[单片机]
【GD32 <font color='red'>MCU</font>入门教程】GD32 <font color='red'>MCU</font> GPIO 结构与使用注意事项
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved