论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
(三)、电路总原理图
三、软件设计
(一)、程序设计
程序设计主要运用了中断和定时器/计数器知识在编写程序之前先把这两个系统的基本情况介绍一下。
(1)中断系统
1、中断的概念
(1)在单片机中,当CPU在执行程序时,由单片机内部或外部的原因引起的随机事件要求CPU暂时停止⭣在执行的程序,而转向执行一处用于处理该随机事件的程序并处理完后又返回被停止的程序处继续执行,这一过程就称为中断。
(2)单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回。
(3)向CPU发出中断请求的来源,或引起中断错原因称中断源。中断源要求服务的请求称为中断请求。中断源可分为两大类:一类来自单片机内部,称之为内部中断源;另一类来自单片机外部,称之为外部中断源。
图 8
2、中断系统结构
(1)8051单片机的中断系统主要由与中断有关的4个特殊功能寄存器和硬件查询电路等组成。
1) 定时器控制寄存器TCON ——主要用于保存中断信息。
2) 串行口控制寄存器SCON ——主要用于保存中断信息。
3) 中断允许寄存器IE ——主要用于控制中断的开放和关闭。
各位的功能说明:
1) TF1(TCON.7):定时器1溢出标志位。定时器1被启动计数后,从初值开始进行加1计数,当定时器1计满溢出时,由硬件自动使TF1置1,并申请中断。该标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。
2) TR1(TCON.6):定时器1启停控制位。
3) IT1(TCON.2):外部中断1触发方式选择位。
4) IE1(TCON.3):外部中断1请求标志位。IEl=1表示外部中断1向CPU申请中断。当CPU响应外部中断1的中断请求时,由硬件自动使IE1清0(边沿触发方式)。
5) TF0(TCON.5):定时器0溢出标志位。其功能同TF1。
6) TR0(TCON.4):定时器0启、停控制位。其功能同TR1。
7) IE0(TCON.1):外部中断0请求标志位。其功能同IE1。
8) IT0(TCON.0):外部中断0触发方式选择位。其功能同IT1。
(2)定时器/计数器
1、定时器/计数器的工作方式寄存器TMOD
定时器/计数器是一种可编程部件,在工作之前必须通过软件设定它的工作方式,即对工作方式寄存器TMOD中每位进行设定。下面介绍每位的含义:
TMOD(89H)
其中,低4位用于决定T0的工作方式,高4位用于决定T1的工作方式。
(1)M1和M0工作方式控制位
M0和M1为工作方式控制位,确定4种工作方式,如表7-1所示。
(2)C/T定时器/计数器方式选择位 (科教范文网 lw.nseaC.Com编辑发布)
C/T=0,设置为定时方式,对机器周期进行计数;
C/T=1,设定为计数方式,对外部信号进行计数,外部信号接至T0(P3.4)或T1(P3.5)引脚。
2、定时器/计数器的控制寄存器TCON
设定好了定时器/计数器的工作方式后,它还不能进入工作状态,必须通过设置控制寄存器TCON中的某些位来启动它工。要使定时器/计数器停止运行,也必须通过设置TCON中的某些位来实现。当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。下面介绍控制寄存器TCON每位的含义:
TF1:定时器T1溢出标志位。当定时器T1溢出时,由硬件自动使TF1置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。
TR1:定时器T 1运行控制位。可由软件置1(或清零)来启动(或关闭)定时器T1,使定时器T1开始计数。用指令SETB TR1(或CLR TR1)使TR1置1(或清零)。
TF0:定时器T0溢出标志位。其功能与TF1相同。
TR0:定时器T0运行控制位。其功能与TR1相同。
IE1:外部中断1请求标志位。
IT1:外部中断1触发方式控制位。
IE0:外部中断0请求标志位。
IT0:外部中断0触发方式控制位。
IE1、IT1、IE0、IT0这4位将在第3节讲述。
控制寄存器TCON的位地址是88H,可以对它进行位寻址。
(二)、单片机控制的计时计数器设计
1、00~99计数,按钮S1、S2分别控制加1,减1计数在00~99之间循环变化,系统复位时计数值为00。
2、00~99秒计时,循环变化,复位时计时值为00。
3、但记数值小于60时,发光管以1HZ频率闪烁,但记数值大于等于60时,发光管以2HZ频率闪烁。
ORG 0000H ;设置初始地址 (科教范文网 lw.nseaC.Com编辑发布)
AJMP MAIN
ORG 000BH ;中断LT0地址
AJMP LT0
ORG 001BH ;中断LT5地址
AJMP LT5
MAIN:MOV TMOD,#11H;定时工作方式1
MOV TH1,#0ECH ;设置初始值
MOV TL1,#78H
SETB EA&nbs