版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容中断系统定时器串行口5.1中断系统中断概念在计算机执行程序的过程中,当出现某种情况,由服务对象向CPU发出请求当前程序中断的信号,要求CPU暂时停止当前程序的执行,而转去执行相应的处理程序,待处理程序执行完毕后,再返回继续执行原来被中断的程序。这样的过程称为中断。引起中断的原因或触发中断请求的来源。中断源中断系统为实现中断而设置的各种硬件和软件称为中断系统。中断技术的优点(1)实行分时操作,提高了CPU的效率。(2)实现实时处理,及时处理实时信息。(3)对难以预料的情况或故障进行及时处理。
主要包括中断请求、中断响应、中断服务、中断返回四个阶段。中断处理过程保护断点:保存主程序断开点PC值的操作。恢复断点:重新恢复主程序断开点地址的操作。
由CPU利用堆栈区自动完成51的中断系统TCON、SCON:中断标志IE:中断允许控制寄存器IP:中断优先级控制寄存器五源两优先级中断5.1.2中断源引脚第二功能功能说明P3.0RXD串行口数据接收端P3.1TXD串行口数据发送端P3.2外部中断输入0P3.3外部中断输入1P3.4T0定时/计数器0外部计数输入端P3.5T1定时/计数器1外部计数输入端P3.6外部数据存储器写信号P3.7外部数据存储器读信号中断源中断源中断请求标志中断入口地址外部中断0IE00003H定时器T0中断TF0000BH外部中断1IE10013H定时器T1中断TF1001BH串行口中断RI、TI0023H自然优先级最高级最低级1.定时器控制寄存器TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0中断请求标志触发方式选择启动定时/计数器0低电平1下降沿0停止1启动中断标志9FH9EH9DH9CH9BH9AH99H98HSM0SM1SM2RENTB8RB8TIRI2.串行口控制寄存器SCON(98H)由中断源控制中断允许控制寄存器IE
D7D6D5D4D3D2D1D0EA——ESET1EX1ET0EX0EA——CPU中断总允许位。EA=1,CPU开放中断,否则禁止ES——串行口中断允许位。ES=1,允许串行口中断,否则禁止ETi——Ti中断允许位。ETi=1,允许Ti中断。(i=0或1),否则禁止EXi——外部中断i允许位。Exi=1,允许外部中断i中断,否则禁止。MCS-51单片机中没有专设的开中断和关中断指令,对各中断源的中断开放或关闭是由内部的中断允许寄存器IE的各位来控制的。IE各位的定义如下:实例例如:假设在P3.2(INT0)引脚上引入一个外部中断,采用下降沿触发方式,禁止其他中断,试设置相关的控制寄存器值。
分析:采用下降沿触发方式只需将TCON中的IT0置1;要允许外部中断0中断,可将IE中的EA和EX0置1。程序如下:用字节操作指令
MOV TCON,#01HMOV IE,#81H用位操作指令
SETB IT0SETB EASETB EX0
中断优先级控制寄存器(IP)D7D6D5D4D3D2D1D0———PSPT1PX1PT0PX0PS——串行口中断优先级控制位。PS=1设定串行口为高优先级中断否则为低级。PTi——Ti中断优先级控制位。PTi=1,设定定时器Ti为高优先级中断PXi——外部中断i中断优先级控制位。PXi=1,设定外部中断i为高优先级中断。优先级控制原则:(1)若CPU同时接收几个不同优先级的中断请求时,先响应高优先级中断,后响应低优先级中断;(2)当高优先级的中断正在响应时,不能被其它中断打断;(3)当低优先级的中断正在响应时,可以被高优先级的中断所打断,但不能被与它同级的其它中断所打断。当CPU响应低优先级中断时被打断,而转去响应高优先级中断的现象称为中断嵌套;(4)当几个同级的中断源同时发出中断请求时,CPU将通过内部硬件电路按自然优先级顺序依次响应。其优先级顺序依次为:外部中断0→定时/计数器T0→外部中断1→定时/计数器T1→串行口(从高到低)实例某单片机应用系统将定时/计数器T0和串行口设置为高优先级的中断,试分析中断系统中各中断源的中断优先级顺序(由高到低)。分析:定时/计数器T0和串行口同属于高优先级中断,它们又是同级的,因此这两个中断源的优先级顺序为T0→串行口。外部中断0、外部中断1和定时/计数器T1同属于低优先级中断,它们又是同级的,因此这三个中断源的优先级顺序为外部中断0→外部中断1→T1。因此可得出各中断优先级顺序由高到低依次为:T0→串行口→外部中断0→外部中断1→T1。中断响应条件①有中断源发出中断请求。②中断总允许位EA=1,即CPU开放中断;且申请中断的中断源对应的中断允许位为1,即没有被屏蔽。③没有更高级或同级的中断正在处理中。④执行完当前指令。若当前指令为返回指令RET、RETI或访问IE、IP的指令,CPU必须在执行完当前指令后,再继续执行一条指令,然后才响应中断。中断响应的过程CPU首先使被响应中断的相应“优先激活”触发器置位,以阻断同级或低级中断。然后,根据中断源的类别,在硬件的控制下自动形成长调用指令(LCALL),此指令的作用将断点压入堆栈,然后将对应中断源的入口地址(又称中断矢量地址)装入程序计数器PC,使程序转向该中断的入口地址继续执行,中断服务程序即从此开始执行。中断处理中断处理包括三部分:一是保护现场,二是中断服务,三是恢复现场。中断服务程序时应注意以下几点:
(1)各中断源的入口地址之间,只相隔8个单元,常在中断入口地址单元存放一条无条件转移指令,将中断服务程序转至存储器的其它空间去。
(2)若要在执行当前中断程序时,屏蔽更高优先级中断,应先编程关闭CPU中断,或关闭更高优先级中断源的中断,而后在中断返回前再次开放中断。(3)在保护现场和恢复现场时,为了不使现场信息受到破坏或造成混乱,应先关CPU中断,使CPU暂时不响应新的中断请求,然后进行保护现场和恢复现场的操作,在保护现场和恢复现场后再开放中断。中断请求的撤销(1)硬件清零
定时器T0和定时器T1的溢出中断标志TF0、TF1及采用下降沿触发方式的外部中断0及外部中断1的中断请求标志IE0、IE1可以由硬件自动清零。(2)软件清零
串行口发出的中断请求,在CPU响应后,硬件不能自动清除TI和RI标志位,因此CPU响应中断后,必须在中断服务程序中,用软件来清除相应的中断标志位,以撤销中断请求。(3)强制清零
当外部中断采用低电平触发方式时,仅仅依靠硬件清除中断标志IE0、IE1并不能彻底清除中断请求标志。
低电平触发的外部中断请求清除电路5.1.5中断程序设计
中断控制程序中断服务程序
作为主程序的一部分和主程序一起运行。常放在中断入口地址所对应的存储区中,仅在发生中断时才会执行。主程序应在0000H处放置一条无条件跳转指令,跳过中断入口程序地址段。中断控制程序1设置SP值,将SP值改为用户存储区的高位地址段。一般应设为30H以上。2定义中断允许及中断优先级控制,即设置IE和IP的值。3定义外部中断的触发方式,选择是低电平触发还是下降沿触发。4从对应的中断入口地址开始放置中断服务程序。中断服务程序1如果中断服务程序中要使用与主程序有关的寄存器,必须保护现场,用PUSH指令完成。在中断返回到主程序前,应恢复这些寄存器的值,即恢复现场,用POP指令完成。2如果需要进行中断屏蔽操作,可在中断服务程序中关中断,同时应考虑何时再次开中断,取消中断屏蔽。3对不能实现硬件清零操作的中断请求标志,应编程及时清除中断请求标志。
4实例将P1端口的P1.4~P1.7作为输入,P1.0~P1.3作为输出。要求将开关S0~S3的状态读入单片机,并通过P1.0~P1.3输出,驱动发光二极管点亮。现要求采用下降沿触发方式,每中断一次,完成一次读/写操作。参考程序 ORG 0000H LJMP MAIN ;上电,转向主程序
ORG 0003H
;外部中断0入口地址
LJMP INSER ;转向中断服务程序
ORG 0030H ;主程序MAIN:SETB EX0 ;允许外部中断0中断
SETB IT0 ;选择下降沿触发方式
SETB EA ;CPU开中断HERE:SJMP HERE ;等待中断
ORG 0100H ;中断服务程序INSER:MOV A,#0FFH MOV P1,A ;将P1口线置高电平,准备读引脚
MOV A,P1 ;取开关状态
SWAP A ;A的高、低四位互换
MOV P1,A ;输出驱动LED发光
RETI
;中断返回
END5.2.1定时/计数器的结构定时器的控制1.定时/计数器方式控制寄存器TMOD2.定时/计数器控制寄存器TCON3.定时/计数器的初值TH1/TH0、TL1/TL0
定时器控制寄存器TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0中断请求标志触发方式选择启动定时/计数器0低电平1下降沿0停止1启动由中断源控制定时/计数器方式控制寄存器TMOD定时器/计数器方式寄存器TMOD(89H)――不能进行位寻址。TMOD为T0、T1的工作方式寄存器,其格式如下:T1T0功能选择位C/T:
=0:定时功能,计数内部机器周期脉冲;
=1:计数功能,计数引脚T0(T1)输入的负脉冲。=0,非门控方式(内部启动):
TRx=1,启动定时器工作;
TRx=0,停止定时器工作。=1,门控方式(外部启动):
TRx=1且引脚INTx=1才启动。方式选择位M1、M0:4种工作方式:13/16/8位门控方式选择位GATE
:M1M0方式说明00方式0TLi的低5位与THi的8位构成13位计数器01方式1TLi的8位与THi的8位构成16位计数器10方式2具有自动重装初值功能的8位计数器11方式3T0分成两个独立的计数器,T1可工作在方式0~方式289S51单片机内部有两个定时/计数器T0和T1。每个定时/计数器都可以实现定时和计数功能。定时/计数器Ti的基本部件是两个8位寄存器THi及TLi组合的16位加法计数器,用于对定时或计数脉冲进行加法计数。定时/计数器内部控制逻辑图定时/计数器的工作方式由方式选择位M1、M0设定。方式0(M1M0=00):13位(THx8位和TLx低5位)加定时/计数器计数外部脉冲个数:1~8192(213)定时时间(若T=1
s):1
s~8.19msT=12/foscfosc16位定时/计数器。THx8位和TLx8位组成16位加1计数器。计数外部脉冲个数:1~65536(216)定时时间(若T=1
s):1
s~(65536×T=65.54ms)方式1(M1M0=01)T=12/fosc方式2(M1M0=10)
自动恢复初值8位定时/计数器。TLx为8位加1计数器,
THx为8位初值暂存器。用于需要重复定时和计数的场合。最大计数值:256(28)最大定时时间(若T=1
s):256
sT=12/fosc方式3(M1M0=11)T0分成2个8位定时器:TL0定时/计数器和TH0定时器;TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位:TR1、TF1;T1不能使用方式3工作,常作串口的波特率发生器使用。使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式。初始化编程格式:MOVTMOD,#方式字;选择方式MOVTHx,#XH
;装入Tx时间常数MOVTLx,#XL(SETBEA ) ;开Tx中断(SETBETx )SETBTRx
;启动Tx定时器需考虑:1.按实际需要选择定时/计数功能;
2.按时间或计数长度选择工作方式;
3.计算时间常数:计算时间常数X(计算初值):计数功能:X=2n-计数值(n:8/13/16)定时功能:X=2n-t/T (t:定时时间;
T:机器周期)5.2.4定时器程序设计1)作定时器用时,定时时间
t=(−计数初值)×机器周期=(−计数初值)×2)作计数器用时,计数值C=−计数初值=−计数初值定时时间及计数值实例设晶振的频率为12MHz,定时器0工作在方式1,要求定时时间为50ms,则装入TH0和TL0的定时器初值为多少?定时计数初值=2n−=216−=65536−50000=15536=3CB0HΔt12×fOSC50×10
-312×12×106定时器/计数器与中断综合应用举例例1:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。2ms解:每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。计算时间常数:X=216-t/T=216-1000/1=FC18H(1)查询方式:
START:MOV TMOD,#01H MOVTL0,#18H MOV TH0,#0FCH SETBTR0 LOOP:JBC TF0,PTF0 SJMPLOOP PTF0:CPL P1.0 MOV TL0,#18H MOVTH0,#0FCH SJMPLOOPT1T0单片机
P1.02ms中断方式
ORG 0000H AJMP MAIN
ORG 000BH
;T0定时器
AJMP PT0INT ORG 0100HMAIN:MOV SP,#60H MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB EA SETB ET0 SETB TR0HERE:SJMP HEREPT0INT:CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH RETIT1T0
定时器中断举例(程序设计)例:要求隔1秒外接发光二极管LED改变一次亮灭状态。解:晶振频率为12MHz时最大定时时间为65.536ms,达不到所需定时时间,所以采用定时器+软件计数的方法。用方式1实现50ms定时,定时20次即为1秒。定时器T0工作为方式1时,定时50ms的初值为:X=65536-50毫秒/1微秒=15536=3CB0H于是(TH0)=3CH(TL0)=0B0H定时器中断程序
ORG0000HLJMPMAINORG000BHLJMPINSERORG0100HMAIN:MOVTMOD,#01HMOVTL0,#3CHMOVTH0,#0B0HMOVR7,#20SETBEASETBET0SETBTR0SJMP$INSER:MOVTL0,#3CHMOVTH0,#0B0HDJNZR7,KEEPCPLP1MOVR7,#20KEEP:RETI实训音乐门铃焊接电路
序号元件名称规格数量189C51单片机AT89C51/AT89S511个2晶振6MHz立式1个3起振电容30pF瓷片电容2个4复位电容22μF16V电解电容1个5复位电阻1kΩ电阻1个6放大电路电阻4.7kΩ、100Ω电阻各1个7三极管90121个8DIP封装插座40脚集成插座1个9喇叭8W1个10万能板150×90mm1块焊接电路所需元件音乐播放器的设计思路
音乐主要是由音符和节拍决定的。要想产生音频脉冲,即音符。只要算出某一音频脉冲高电平或低电平持续的时间,通常认为音频脉冲信号为方波,则应算出音频脉冲半周期的时间,利用定时器对这个半周期计时,每当计时时间到时,就将输出I/O口线反相,不断重复,就可得到此音频脉冲。利用延时来控制发音时间的长短,即可控制节拍。把乐谱中的音符和相应的节拍变换成定时常数和延迟常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。当延迟时间到时,再查下一个音符的定时常数和延迟常数。音乐播放器的设计思路
例:歌曲“新年好”的一段简谱,利用定时器T1以方式1工作,产生各音符对应频率的方波,由P1.0输出驱动喇叭发音。节拍控制通过调用延时子程序D200(延时200ms)次数来实现,以每拍800ms为例,一拍需循环调用D200延时子程序4次,同理,半拍就需用2次,音乐播放器的设计思路
乐曲中的音符、频率、定时常数的关系C调音符5671234567频率(Hz)392440494524588660698784880988半周期(ms)1.281.141.010.950.850.760.720.640.570.51定时值FD80FDC6FE07FE25FE57FE84FE98FEC0FEE3FF01设晶振频率为6MHz,参考程序 ORG 0000H LJMP START ORG 001BH ;定时器中断入口
MOV TH1,R1 ;重装定时初值
MOV TL1,R0 CPL P1.0 ;输出方波
RETI ;中断返回
ORG 0100HSTART: MOV TMOD,#10H ;T1方式1 MOV IE,#88H ;允许T1中断
MOV DPTR,#TAB ;装入表首址LOOP: CLR A MOVC A,@A+DPTR MOV R1,A ;定时器高8位存R1 INC DPTR CLR A MOVC A,@A+DPTR MOV R0,A ;低8位存R0 ORL A,R1 JZ NEXT0 ;全0为休止符
MOV A,R0 ANL A,R1 CJNE A,#0FFH,NEXT;全1表示乐曲结束
SJMP START ;从头开始,循环演奏 NEXT: MOV TH1,R1 ;装入定时值
MOV TL1,R0 SETB TR1 SJMP NEXT1NEXT0: CLR TR1 ;关定时器,停止发音NEXT1: CLR A INC DPTR MOVC A,@A+DPTR ;查延迟常数
MOV R2,ALOOP1: LCALL D200 ;调用延时200ms子程序
DJNZ R2,LOOP1 ;控制延时次数
INC DPTR AJMP LOOP ;处理下一音符D200: MOV R4,#81H ;延时200ms子程序D200B: MOV A,#0FFHD200A: DEC A JNZ D200A DEC R4 CJNE R4,#00H,D200B RETTAB: DB0FEH,25H,02H,0FEH,25H,02H,0FEH,25H,04H DB0FDH,80H,04H,0FEH,84H,02H,0FEH,84H,02H DB0FEH,84H,04H,0FEH,25H,04H,0FEH,25H,02H DB0FEH,84H,02H,0FEH,0C0H,04H,0FEH,0C0H,04H DB0FEH,98H,02H,0FEH,84H,02H,0FEH,57H,04H DB00H,00H,04H,0FFH,0FFH END参考程序模拟仿真与软件调试5.3串行通信
计算机1GND
计算机2GND并行通信
计算机1GND
计算机2GND发送接收串行通信并行通信:数据的各位同时传送;串行通信:数据一位一位顺序传送。串行通信和并行通信串行通信的分类同步通信和异步通信同步和异步都属于串行数据传送方式,但二者的传送格式有所不同。同步方式的一帧内含有很多数据位,如果要传送一大堆数据,同步方式只给这串数据进行一次外包装(即添加“头帧”、“尾帧”、“校验”帧)。异步方式一帧内只含有几个数据位,而异步方式在传送这串数据时则要对数据的每一个字节分别加以包装(即添加“头”位、“尾”位和校验)。异步通信帧数据格式由四部分组成:起始位、数据位、奇偶校验位和停止位。同步通信帧结构(或称为帧格式)由三部分组成:由若干字符组成的数据块,在数据块前加上1~2个同步字符SYN,在数据块的后部根据需要加入若干校验字符CRC(循环冗余校验)。同步字符的插入可以是单同步字符方式或双同步字符方式,同步字符可以由用户约定,也可以采用ASCII码中规定的SYNC代码,即16H。
在同步传送时,要求用时钟来实现发送端与接收端之间的同步。为了保证接收正确无误,发送方除了传送数据外,还要同时传送时钟信号。同步传送可以提高传输速率(达56kb/s或更高),但硬件比较复杂。波特率串行通信的数据传输速率是用波特率来表示的。波特率定义为每秒钟传送二进制数的位数。在异步通信中,波特率为每秒传送的字符数与每个字符位数的乘积。假如每秒传送120个字符,而每个字符按上述规定包含10位(起始位、校验位、停止位各1位,数据位7位),则波特率为:120字符/秒×10位/字符=1200位/秒(bps)串行通信制式单工(a)、半双工(b)和全双工(c)(simplexhalfduplexfullduplex)(a)单工(b)半双工(c)全双工串行口的连接方法(a)三线连接(b)RS232接口连接(c)Modem连接51串行口的结构
89S51的串行口是一个可编程全双工的通信接口,具有通用异步接收和发送器UART(UniversalAsynchronousReceiver/Transmitter)的全部功能,能同时进行数据的发送和接收,也可作为同步移位寄存器使用。串行口数据缓冲器SBUF串行接收和串行发送寄存器在串行口内部是两个独立的存储单元,共用同一个地址99H。串行口数据传送使用的是内部数据传送指令:MOVA,SBUFMOVSBUF,A接收发送串行口控制寄存器SCONSM0SM1SM2RENTB8RB8TIRI工作方式选择多机通信控制位允许串行接收位接收数据的第9位发送数据的第9位接收中断标志发送中断标志9FH9EH9DH9CH9BH9AH99H98H串行口工作方式SM0SM1工作方式功能波特率00方式08位同步移位寄存器fosc/1201方式110位UART可变10方式211位UARTfosc/64或fosc/3211方式311位UART可变方式0串行口工作于同步移位寄存器方式,串行口相当于一个并入串出或串入并出的移位寄存器。数据从RXD输入或输出(低位在先,高位在后),TXD输出同步移位时钟,其传输波特率是固定的,为fosc/12。发送过程从“MOVSBUF,A”开始,当8位数据传送完毕后,TI被置1。接收时,必须先使REN=1、RI=0,当8位数据接收完后,RI会置1,此时可由“MOVA,SBUF”,将数据读入累加器。若要再次发送和接收数据,必须用软件将TI、RI清零。串行口静态显示移位寄存器74LS164Q0~Q7为并行输出端A、B为串行输入端CK为时钟输入端,为清零端。
串口静态显示程序ORG 0100HDISP:CLRP1.4 ;显示器熄灭
SETB P1.3 ;打开移位脉冲输入
SETB P1.4 ;打开74LS164 MOV SCON,#00H ;设置串口工作在方式0 MOV R0,#50H ;设置显示缓冲区首址
MOV R2,#03H ;设置循环次数
MOV DPTR,#TABLOOP:MOV A,@R0 MOVC A,@A+DPTR ;查显示码
MOV SBUF,A ;送显示WAIT:JNB TI,WAIT ;发送是否完成
CLR TI ;清发送完成标志
INC R0 DJNZ R2,LOOP ;未发送完继续
CLR P1.3 RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H方式1串行口工作于异步通信方式,帧数据格式为10位(8位数据,起始位、停止位各1位)。其传输波特率是可变的,对于89S51串行口的波特率由工作在方式2下的定时器T1的溢出率决定。此时常设置定时器T1工作在方式2下,且禁止中断。波特率=×T1的溢出率=×串行通信只用该位,为1时,波特率×2;为0时不变。SMOD×××GF1GF0PDIDL87H电源控制寄存器PCON方式1时序一帧数据为10位:1位起始位、8位数据位和1位停止位。写SBUFTXD起始位停止位TID0D1D2D3D4D5D6D7方式1发送时序:起始位停止位RXDRI采样时间D0D1D2D3D4D5D6D7方式1接收时序:方式2和方式3串行口工作于异步通信方式,帧数据格式为11位(起始位1位、8位数据位、1位可编程数据位、1位停止位)。方式2与方式3的差别:方式2——波特率为fOSC/32(SMOD=1)或fOSC/64(SMOD=0)。方式3——与方式1一样,波特率是可变的,也是由定时器T1的溢出率决定。定时器T1产生各种常用波特率波特率/(b/s)fosc/MHzSMOD定时器1C/模式初始值方式0:1M方式2:375k方式1/3:62.5k19.2k9.6k4.8k2.4k1.2k137.5k11011012121211.05911.05911.05911.05911.05911.986612×1110000000××000000000××222222221××FFHFDHFDHFAHF4HE8H1DH72HFEEBHT串行通信的程序设计
1.串行口的初始化编程First:MOV SCON,#工作方式控制字 ;设定串行口工作方式
MOV PCON,#80H ;波特率加倍时,设定
MOV TMOD,#20H ;波特率可变时,用于设定T1工作方式
MOV TH1,#定时初值 ;与表5-4对应
MOV TL1,#定时初值
CLR ET1 ;禁止定时器T1中断
SETB TR1 ;启动T1,产生波特率
SETB EA ;若使用中断方式,开CPU中
SETB ES ;开串行口中断
SETB PS ;设定串行口为高优先级中断初始化编程实例例5-4:若fosc=6MHz,波特率为2400bps,设SMOD=1,则定时/计数器T1的计数初值为多少?并进行初始化编程。编程思路:要设定波特率为2400,首先应计算定时初值:初始化程序如下:
MOV SCON,#40H MOV TMOD,#20H MOV PCON,#80H MOV TH1,#0F3H MOV TL1,#0F3H CLR ET1 SETB TR12.发送和接收程序设计发送和接收程序分别位于发送机和接收机中。发送和接收程序的设计一般采用两种设计方法:查询和中断。查询方式发送程序接收程序查询方式实例例5-5:用查询方式实现,将甲机起始地址为50H的数据块传送至乙机50H为首址的数据缓冲区中。设数据块的长度为5。编程思路:设波特率=2400bps。由T1工作于方式2,fosc=6MHz,SMOD=1,求得TH1=TL1=0F3H。发送程序如下: ORG 0100HFIRST: MOV TMOD,#20H ;定时器T1初始化
MOV TH1,#0F3H MOV TL1,#0F3H MOV SCON,#40H ;串行口初始化
MOV PCON,#80H SETB TR1 MOV R0,#50H ;置数据块首址
MOV R1,#05HF: MOV A,@R0 ;发送数据
MOV SBUF,AJF: JBC TI,GG ;查询TI,判断是否发送完一帧数据
SJMP JFGG: INC R0 ;修改地址
DJNZ R1,F ;判断所有数据是否都送完
SJMP $ END例5-5接收程序接收参考程序如下:
ORG 0100HSIRST: MOV TMOD,#20H ;定时器T1初始化
MOV TH1,#0F3H MOV TL1,#0F3H MOV SCON,#50H ;串行口初始化,允许接收
MOV PCON,#80H SETB TR1 MOV R0,#50H ;置数据块首址
MOV R1,#05HJS: JBC RI,GG ;查询RI,判断是否接收完一帧数据
SJMP JSGG: MOV A,SBUF ;将SBUF中数据送入数据缓冲区
MOV @R0,A INC R0 ;修改地址
DJNZ R1,JS SJMP $ END中断方式实例例5-6:用中断方式实现,将甲机起始地址为ADDRT的数据块传送至乙机以ADDRR为首址的数据缓冲区中。设数据块的长度为6,串行口工作在方式2,波特率为fosc/64。发送参考程序如下:
ORG 0000H ADDRT EQU40H LJMP MAINT ;转发送主程序
ORG 0023H LJMP INTSE1 ;转中断服务程序
MAINT:MOV SP,#60H;主程序
MOV SCON,#80H;串行口初始化
MOV PCON,#00H SETB EA ;开中断
SETB ES MOV R1,#ADDRT MOV R0,#00H MOV A,@R1 ;发送数据
MOV SBUF,A SJMP $ INTSE1:CLR TI ;清中断标志
CJNE R0,#05H,LOOP
;是否数据全发完
CLR ES ;关中断
SJMP ENDTLOOP: INC R0 ;修改计数器
INC R1;修改地址指针
MOV A,@R1 MOV SBUF,A ENDT: RETI END中断方式实例例5-6:用中断方式实现,将甲机起始地址为ADDRT的数据块传送至乙机以ADDRR为首址的数据缓冲区中。设数据块的长度为6,串行口工作在方式2,波特率为fosc/64。接收参考程序如下:
ORG 0000H ADDRREQU40H LJMP MAINR ;转接收主程序
ORG 0023H LJMP INTSE2;转中断服务程序
MAINR:MOV SP,#60H ;主程序
MOV SCON,#90H ;串行口初始化,允许接收
MOV PCON,#00H SETB EA;开中断
SETB ES MOV R1,#ADDRR
;置接收缓冲区首址
MOV R0,#00H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 固体废物资源化利用技术方案
- 公司文档生命周期管理方案
- 公司运营管理体系评估方案
- 2026年幼儿园教育质量家长满意度调查报告
- 公司设备管理与调试方案
- 2026年新能源汽车三电系统检测项目方案
- 2026年大学生领导力培养与实践报告
- 钢结构拆除及回收利用方案
- 工业园区污水处理工程建设技术方案
- 分拣中心设施建设与改造方案
- 分岗设权内部控制制度
- 2023年江苏省南京市栖霞区司法局招聘9人(共500题)笔试必备质量检测、历年高频考点模拟试题含答案解析
- 数据出境安全评估申报指南(第一版)
- GB/T 3836.11-2022爆炸性环境第11部分:气体和蒸气物质特性分类试验方法和数据
- WS/T 461-2015糖化血红蛋白检测
- 部编四年级语文下册 全册教案 (表格式)
- 警械使用课件
- 崔允漷建构新教学心得体会(共13篇)
- 输血相容性检测室内质控-课件
- M30注浆砂浆配合比计算资料
- 《现代汉语语法词类》PPT课件(完整版)
评论
0/150
提交评论