单片机按键加减报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告

一、实验目的

1、学习利用单片机设计简单加减计数,并学会定时/计数器T0/T1的使用。

2、学习使用keil和proteus软件。

3、熟悉汇编语言并能利用汇编语言编写程序。

二、实验思路

用T0、T1设计10位以内的按键加减计数:

利用T0/T1计数功能实现每次按键的中断,且采用方式2,可以自动重载初值,较为方便。这里不考虑优先级的问题。再分别对T0、T1编写中断处理的程序。要注意的是,加法时,9加1显示0的情况;减法时,0减1显示9的情况。

三、实验原理

(以下不考虑T2的情况)

1、中断的概念

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。

2、定时/计数器

(1)中断控制寄存器(TCON)

TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。

TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

TR0(TCON.4):T0运行控制位,其功能与TR1类同。

本次试验要用到T0、T1,即TR0、TR1置1。

(2)中断允许控制(IE)

EX0(IE.0),外部中断0允许位;

ET0(IE.1),定时/计数器T0中断允许位;

EX1(IE.2),外部中断1允许位;

ET1(IE.3),定时/计数器T1中断允许位;

ES(IE.4),串行口中断允许位;

EA (IE.7),CPU中断允许(总允许)位。

以上都是为1时开启,为0时关闭。本次试验需要开启EA、ET1、ET0,即令IE为8AH。

(3)工作方式寄存器TMOD

GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。

C/T:定时/计数模式选择位。C/T=0为定时模式;C/T =1为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

这次试验需要计数模式且为方式二,所以,TMOD值设为66H。

3、数码管

在这里我们使用的是7SEG-COM-AN-GRN数码管,由7个发光管组成的8字形构成的,如下图所示,左边接线顺序下来分别命名为ABCDEFG

数码管的接线为共阳接法,即低电平亮,高电平灭。实验中用P0.0-P0.6控制数码管的7段,P0口的八位与发光管的对应关系见下表所示。

显示P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

HEX ——G F E D C B A

0 0 1 0 0 0 0 0 0 40H

1 0 1 1 1 1 0 0 1 79H

2 0 0 1 0 0 1 0 0 24H

3 0 0 1 1 0 0 0 0 30H

4 0 0 0 1 1 0 0 1 19H

5 0 0 0 1 0 0 1 0 12H

6 0 0 0 0 0 0 1 0 02H

7 0 1 1 1 1 0 0 0 78H

8 0 0 0 0 0 0 0 0 00H

9 0 0 0 1 1 0 0 0 18H

四、设计流程

N

Y

Y

N Y N

(a)主程序(b)中断响应

五、原理图

存数寄存器

初始化

中断初始化

开始

数码管显示

等待中断

按键扫描

R0置0

是否为加法

R0是否为9

R0是否为0

R0加1

R0加1

R0减1

中断返回

运行后,初始如上图所示,当按一下第一个键时,数码管显示1,此后每按一次数码管显示数值加1,当数码管显示为9时,按下第一个键,显示为0;初始状态下,当按下第二个键时,数码管显示9,此后每按一次第二个键,数码管显示数值减1。说明实验成功

六、汇编程序

ORG 0000H

JMP MAIN

ORG 000BH //T0(加法)中断入口

JMP T0_ADD

ORG 001BH //T1(减法)中断入口

JMP T1_SUB

MAIN: //主程序

MOV TMOD,#66H //设置T1、T0方式2计数

MOV TL1,#0FFH //为T1、T0设置初值

MOV TH1,#0FFH

MOV TL0,#0FFH

MOV TH0,#0FFH

MOV IE,#8AH //CPU、T0、T1开启中断

SETB TR1 //启动T1计数器

SETB TR0 //启动T0计数器

MOV R0,#0 //设置显示的初始值及其地址

MOV DPTR,#TAB

LOOP:

MOV A,R0 //输出显示数值

MOVC A,@A+DPTR

MOV P0,A

SJMP LOOP //等待中断

T0_ADD:

CJNE R0,#9,T_END0 //是否需要进位

相关文档
最新文档