单片机的功能部件Word文档下载推荐.docx
《单片机的功能部件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机的功能部件Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
依题意知,TMOD=11100011B=E3H
MOV TMOD,#0E3H
----------------
2)、定时器控制寄存器TCON
定时器控制寄存器TCON的格式如图4所示,
定时控制寄存器TCON也是SFR,字节地址为88H,可位寻址,位地址为88H--8FH,用于控制定时器的操作与中断。
TR0.TR1用于启停定时/计数器:
当TRX=1时,启动定时/计数器,用SETB TRX 实现;
当TRX=0时,停止定时/计数器,用CLR TRX 实现;
TF0.TF1为定时/计数器中断标志:
当TFX=1,表示定时/计数有溢出,可用查询或中断来处理;
当TFX=0,表示定时/计数无溢出,可用查询或中断来处理;
IE0.IE1为外中断标志:
图4 定时器控制寄存器TCON
当IEX=1,表示外部有中断发生(与ITX配合使用);
当IEX=0,表示外部无中断发生(与ITX配合使用);
IT0.IT1为外中断触发方式选择位:
置ITX=1,则外中断在脉冲下降沿触发,
置1T1=0,则外中断在低电平触发方式,
定时器/计数器T0作定时器使用,工作在方式1,T1作计数器使用,工作在方式2,当T0定时到,先关闭定时,后开启计数器T1,计数到,先关闭计数,后开启定时器T0,如些往复,试编写实现上述过程的程序。
分析:
先确定方式寄存器的值:
由题意知:
TMOD=01100001B=A1H
判别定时/计数溢出:
用LP:
JNB TFX,LP语句;
采用查询方式
程序设计:
ORG 1000H
START:
MOV TMOD,#0A1H;
设置TMOD工作方式
SETB TR0 ;
开启定时器T0
LP:
JNB TF0,LP ;
定时器无溢出等待
CLR TR0 ;
定时溢出关定时器T0
SETB TR1 ;
开计数器T1
LJ:
JNB TF1,LJ ;
计数器无溢出等待
CLR TR1
LJMP START
END
3)、中断允许寄存器IE
中断允许寄存器也是一个SFR,地址为A8H,可以位寻址,如图5所示:
图5中断允许控制寄存器IE
通过向IE写入中断控制字,实现CPU对中断的开放和屏蔽。
4、工作方式
80C51单片机共有四种工作方式,定时器/计数器的功能与其工作方式有关:
1)、方式0
工作在方式0时,内部定时/计数器控制逻辑图如图6所示,计数值由THX(8位)和TLX(低5位)组成13位计数器。
定时/计数值的确定:
①最大定时/计数值
最大定时/计数值=213*机器周期;
此时,TH=00H.TL=00H
②定时/计数值的确定
定时值/计数值=(213-X)*机器周期;
式中X为TH.TL的设置值
注意:
在实际运算过程中,由于TL的高3位未用,一般应填写O,因此对实际的计算结果要进行调整。
如:
实际计算定时值,调整后
图6 内部定时/计数器控制逻辑
选择T1工作在方式0用于定时,晶振fosc=6MHZ,要求在P1.1输出1ms方波。
由题意得定时器T1的定时时间为:
1ms/2=500us
机器同期:
T=12/fosc=12/6*106=2us
设定时器的初始值为X,则:
(213-X)*2=500
考虑到TL的高三位未用,用0或1来补上,则调整后的X值为:
结果:
TH1=F8H;
TL1=06H
ORG 2000H
MOV TMOD, #00H
MOV TL1,#06H
MOV TH1,#0F8H
SETB TR1
LP1:
JBC TF1,LP2
AJMP LP1
LP2:
MOV TL1, #06H
MOV TH1, #0F8H
AJMPLP1
2)、方式1
方式1在结构与操作上几乎与方式0相同,不同点有二:
一是工作方式设置,二是方式1是一个由高THX(8位)和低TLX(8位)共同组成的16位定时计数器。
定时/计数值=(216-X)*机器周期
3)、方式2
方式2是能重置初值的8位定时器/计数器,其结构如图7所示:
图7定时/计数器工作在方式2的结构
THX中放复置值,TLX放定时/计数值,通常将两者取同样大的数值
用定时器T1作计数器,工作在方式2,要求每计满100次,将P1.0端取反,试编制应用程序。
外部计数脉冲从P3.5输入,每跳变一次计数器加1
程序采用查询方式
确定工作方式值:
TMOD=60H
确定计数器初值:
X=28-100=156D=9CH
TH1=9CH;
TL1=9CH
ORG1000H
START:
MOVTMOD,#60H
MOVTH1,#9CH
MOVTL1,#9CH
SETBTR1
DEL:
JBCTF1,REP
AJMPDEL
END
4)、方式3
方式3只适用于定时器T0。
定时器在方式3下被拆成两个独立的8位计数器TL0和TH0,如图8所示。
TL0占居了T0口的所有资源,TH0只能作简单的内部定时器使用,它占用T1口的TR1和TF1。
图8T0方式3结构
在定时器T0用做方式3时,T1仍可设置为方式0∽2,如图9所示:
(1)T0口在方式3下的控制
①TL0的控制
开启/停止:
TR0
溢出:
TF0
②TH0的控制
TR1
TF1
图9TO在方式3下T1口结构
(2)T0在方式3下的T1口控制
①T1工作在方式0或方式1下:
启动:
只要设置好工作方式,T1自动启动
停止:
送入一个设置定时器T1为方式3的方式字
输出:
定时/计数器输出送串行口
②T1工作在方式2下:
启动/停止方法与T1工作在方式0或方式1下相同。
它的输出也直接送串行口,通常把定时器T1设置为方式2作波特率发生器。
5、初始化
由于定时器/计数器的功能是由软件编程确定的,因此在使用定时/计数器前要对其进行初始化,使其按设定的功能工作。
1)、定时器/计数器初始化内容
①定时/计数器的工作方式:
依据要求定出TMOD的值
②预置定时/计数器初值:
给TH1.TL1或TH0.TL0赋值
③根据要求开放定时/计数器的中断:
对IE赋值
④启动定时/计数器
2)、实战训练
晶振频率为6MHZ,使用T0作定时器,试编写在P1.3口输出秒脉冲方波程序。
分析:
A、确定TMOD的值:
TMOD=01H
B.求TH0和TL0的值:
取定时时间为125000μS,则8个定时时间等于1秒,计算定时器初值:
机器周期T=12×
1/6×
10-6=2μS
(216-X)×
T=25000
X=6070=17B6H
TH0=17H TL=B6H
C.确定IE的值:
由题意知IE=00H
D.启动定时/计数器:
用SETB TR0来启动定时器。
E.程序设计:
程序流程图如右所示,程序如下:
ORG4100H
START:
MOVTMOD,#01H
MOVTH0,#17H
MOVTL0,#0B6H
SETBTR0
MOVR0,#08H
LOOP1:
JNBTF0,LOOP1
MOVTH0,#17H
MOVTL0,#0B6H
DJNZR0,LOOP1
LJMPLOOP0
6、应用
定时器是单片机应用系统中的重要部件,是实时控制系统中不可缺少的部分,灵活应用其不同的工作方式可提高编程技巧,减轻CPU负担,简化外围电路,下面介绍定时/计数器的应用:
1)、在多任务应用系统中用来定时/计数
单片机定时/计数器常用来作定时器或计数器使用,对于一个采用单片机作为控制核心的系统来说,采用定时器来定时/计数,既不要增加硬件投入,又具有定时准确等特点,同时不占用CPU资源。
2)、用来测量脉冲宽度
利用方式控制寄存器TMOD门控位GATE=1时,允许外部输入电平控制启.停定时器这个特性,用定时器来测量外部输入脉冲的宽度。
实战训练:
分析如何测量图10所示的方波频率。
B.单片机复位时,P3.2=1,当检 图10 外部脉冲
测到P3.2=0时,开启TR0,等一个P3.2=1到来时开启定时器T0,P3.2=0时关闭定时器T0。
C.根据定时器的定时值,计算方波的频率。
3)、在串行通信中作波特率发生器
当T0工作在方式3时,T1口工作在方式0.1.2下,T1定时/计数溢出直接送串行口的特点,定时器T1可以用来作串行通信的波特率发生器。
第二节单片机中断系统
1、中断
1)、与中断相关的几个概念
中断——程序在运行过程中,由于外界的原因,CPU暂停当前的处理转去执行紧急事件,待紧急事件执行完毕后再转回执行原程序。
中断源——引起中断的原因或触发中断请求的来源。
中断服务——中断之后执行的处理叫中断服务,对应的处理程序叫中断服务程序,原程序叫主程序。
中断系统——实现中断功能而设置的各种硬件和软件。
正确区分中断服务和调用子程序。
2)、引进中断技术的优点
①、分时操作
有了中断功能就能解决快速CPU与慢速外设之间的矛盾,可以使CPU和外设同时工作。
②、实时处理
在实时控制中,现场的各个参数.信息是随时间和现场情况不断变化的。
有了中断功能,外界的这些变化量可根据要求随时向CPU发出中断请求,要求CPU及时处理,CPU可以马上响应加以处理。
③、故障处理
计算机在运行过程中,出现一些事先无法预料的故障是难免的,例如电源突变.存储出错.运算溢出等,有了中断功能,计算机就能自行处理,而不必停机处理。
3)、中断源
①、外部中断:
INT0、INT1
单片机外部中断源有INT0、INT1,每个中断源有两种触发方式,一种是电平触发,另一种是脉冲触发方式。
具体的触发过程如下:
电平方式:
当INT0、INT1对应管脚出现低电平时有效。
脉冲方式:
在两个相邻机器周期中,检测到引脚由高电平到低电平时,表示有中断发生。
特别注意:
电平方式与脉冲方式的区别:
在电平触发方式,单片机在每个机器周期都将INT0(或INT1)的信号读入IE0(或IE1)中,如果送入8051的中断信号,未能及时检测到,就会漏掉中断要求。
脉冲方式不存在这个问题,但脉冲方式必须采用软件清除IE0(或IE1)。
②、定时/计数器中断:
T1,T2
单片机内部有两个定时计数器,当启用中断时,如果计数器有溢出,溢出信号去置位TF0(或TF1)标志位,作为单片机接受中断请求的标志。
③、串行中断:
当串行口发送和接收一组串行数据时,就产生一个中断请求。
④、中断优先权:
按中断的级别将中断分成不同的等级,并按优先权原则执行中断处理,CPU响应中断的顺序:
a、不同级别的中断源同时申请时按中断优先权执行;
b、同级别的中断源同时申请时按事先安排的程序执行;
c、在处理中断过程中,又有中断申请时,视其级别的高低,如果申请的级别高程序转向申请的中断,如果申请的级别低程序继续执行,直到结束再转向中断。
对80C51单片机来说,同一级别的中断按下顺序执行:
外部中断0定时/计数器T0T1外部中断1定时/计数器串行口
2、单片机中断系统
1)、单片机中断系统
单片机中断系统如图11所示:
2)、单片机中断入口地址
当有中断发生并且系统开放中断时,单片机将自动转入固定的入口地址,单片机的中断入口地址如表1所示:
表180C51单片机中断入口地址
中断源
入口地址
外部中断0
0003H
T1溢出
001BH
T0溢出中断
000BH
串行口接收
0023H
外部中断1
0013H
串行口发送
3)、单片机中断控制
单片机的中断设置由下面的四个控制寄存器确定。
①中断充许寄存器IE
中断允许寄存器是一个SFR,地址为A8H,可以位寻址。
如图12所示:
EA:
中断允话控制位;
ES:
串行口中断;
ET1:
定时/计数器T1;
EX1:
ET0:
定时/计数器0;
图12中断允许数寄存器
EX0:
外部中断0;
②定时控制寄存器TCON
如图13所示:
图13定时控制寄存器
IT1.1T0:
是专门用来设置外部中断1和0的触发方式的,对于外部中断INT1.INT0来说,用不同的触发方式,中断过程是不一样的:
1T1=0:
为低电平触发方式。
处于这种触发方式时,CPU响应中断后不能自动清除IE1标志,也不能由软件清除,因此在中断返回前发须撤消INT1引脚上的低电平,否则将再次响应中断。
IT0=1:
为脉冲触发方式。
处于这种触发方式时,CPU响应中断后自动清除IE1。
对于IE0来说触发方式与IE1的触发方式一样。
③串行控制寄存器SCON
SCON是一个可位寻址的专用寄存器,用于串行数据通信的控制,单元地址为:
98H,位地址与位功能如表2所示:
表2位地址与位功能表
④中断优级控制寄存器IP
***PSPT1PX1PT0PX0
IP:
PX0------------外部中断0中断优先级控制位
PT0-----------定时/计数器T0中断优先级控制位
PX1----------外部中断1中断优先级控制位
PT1----------定时/计数器T1中断优先级控制位
PS-----------串行口中断优先级控制位
3、中断处理过程
单片机在每一指令的S5P2期间,CPU采样各中断源,并设置相应的中断标志位。
CPU在下一个周期S6期间按优先级顺序查询各中断标志,如查询到某个中断标志为1,将在下一个机器周期S1期间按优先级进行中断处理。
中断处理过程分成三个阶段,即中断响应.中断处理和中断返回,如图14所示:
1)、中断响应
(1)、中断请求标志
IE0(外部中断0)——中断处理时,由硬件复位。
TF0(T0)——中断处理时,由硬件复位
IE1(外部中断0)——中断处理时,由硬件复位
TF1(T1)——中断处理时,由硬件复位
T1(发送标志)——中断处理时,由软件复位
R1(接收标志)——中断处理时,由软件复位
(2)、中断响应
CPU响应中断的条件
①有中断源发出中断申请
②对应的中断开放图14中断处理
③CPU不是运行在中断服务程序;
也不是处于执行RET1或者读写IE或IP指令期间,正在执行的指令要执行完成。
(3)、中断响应过程
CPU响应中断请求后,自动将当前的PC值压入椎栈然后程序转入约定的入口地址,开始执行中断服务程序。
2)、中断处理
中断处理又叫中断服务,程序从入口地址开始执行,直到返回指令RETI为止,这个过程称之为中断处理。
中断服务过程包含两部分内容:
一是保护现场,二是处理中断源的请求。
中断处理过程如图15所示:
①保护现场
将中断处理程序所用到的如累加器、通用寄存器等参数;
入栈保护。
注意在入栈时应关中断,入栈完成后再开中断。
图15中断处理
②中断服务
处理中断事件,它是事先按中断要求编制的服务程序。
③恢复现场;
中断服务结束后,应立即关中断,恢复现场;
恢复现
场结束后应立即开中断。
中断请求的撤除:
CPU响应中断请求后,在中断返回前,应撤消中断请求,否则会引起另一次中断对于定时器T0.T1.以及外部中断0或1工作在脉冲触发方式时,CPU响应中断后,会自动清除中断标志位;
对于串行通信中断请求只能用软件清除;
外部中断0或外部中断1工作在低电平触发方式时,只有改变触发电平,再配以软件才能清除中断请求。
中断响应的时间:
CPU不是在任何时候都能响应中断的,因此CPU响应中断的时间也不一样。
3)、中断返回
在中断处理完成后用RETI返回主程序指令。
4、中断系统扩展
1)、利用定时器扩展外部中断
让定时/计数器作计数器用,工作在方式2,定时器的定时值为#0FFH当外部来一个脉冲,定时/计数器产生溢出,用定时/计数器的溢出作为中断请求标志,这样就可以增加两个外部中断源。
例如:
将定时器T0作为外部中断源的程序如下:
MOV TMOD,#06H
MOV TL0,#0FFH
MOV TH0,#0FFH
SETB TR0
SETB EA
SETB ET0
……………
2)、利用中断和查询结合法扩展外部中断
如图16所示,有多个外部中断,只用一个外部中断源,采用中断和查询相结合的方法解决外部多中断请求的问题:
解决问题的思路:
将外部信号通过非门后接在一起,作为外部中断信号,当CPU响应外部中断后,查询外部中断信号,根据外部中断信号转到相应服务程序,这样就实现了用一个外部中断源解决多个外部中断的问题。
中断服务程序设计:
中断服务程序:
CLR EA
JB P1.0,X10
JBP1.1,X11
JBP1.2,X12
JBP1.3,X13
ZDFH:
RETI
图16中断扩展
X10:
……………
AJMP ZDFH
X11:
………………
X12:
X13:
5、中断系统应用实例
例1:
利用定时器T0定时,在P1.0端输出一方波,方波周期为20ms。
已知晶振频率为12MHZ。
定时器T0工作在方式1,经计算定时器的初值为:
D8F0H
ORG 0000H
LJMP 1000H
ORG 000BH
LJMP 2000H
ORG 1000H
1000H:
MOV TMOD,#01H
MOV TL0,#0F0H
MOV TH0,#0D8H
MOV IE,#82H
SETB TR0
LOOP:
SJMP LOOP
----------------------------------
ORG 2000H
MOV TL0,#0F0H
MOV TH0,#0D8H
END
例2:
单片机P1口的输出通过与非门接发光二极管,正常情况发光二极管从左到右点亮,现系统开发中断INT0,当有中断发生时,灯间隙闪烁16次。
试编制相关程序。
系统采用软件定时,定时时间为1S,开发外部中断INT0。
主程序:
ORG 0000H
LJMP 1000H
ORG 0003H
LJMP 2000H
ORG 1000H
1000H:
SETB EA
SETB EX0
SETB IT0
MOV A,#80H
LOOP:
MOV P1,A
LCALL 1SMIN
RL A
LJMP LOOP
子程序:
1SMIN:
MOV R0,#0FA
LOOP1:
MOV R1,#88H
LOOP2:
DJNZ R1,LOOP2
DJNZ R0,LOOP1
RET
ORG 2000H
MOV R2,#10H
LOOP3:
MOV P1,#55H
LCALL 1SMIN
MOV P1,#0AAH
DJNZ R2,LOOP3
RETI
END
第三节单片机串行接口
1、串行通信
1)、计算机通信
计算机通信分并行通信和串行通信两种。
并行通信的各数据位同时传送,每一位数据需一条传输线,传送速度快,传送距离近,适应于计算机与周围设备之间通信,如打印机,接口电路如图17所示。
串行通信的数据传送是按位的顺序(低位在前,高位在后)和一定的格式传送。
近程串行通信只要将