第五章中断定时串口.ppt

上传人:京东小超市 文档编号:6044114 上传时间:2020-08-28 格式:PPT 页数:47 大小:923.50KB
返回 下载 相关 举报
第五章中断定时串口.ppt_第1页
第1页 / 共47页
第五章中断定时串口.ppt_第2页
第2页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第五章中断定时串口.ppt》由会员分享,可在线阅读,更多相关《第五章中断定时串口.ppt(47页珍藏版)》请在三一文库上搜索。

1、第5章中断系统、 定时器/计数器与串行口,5.1 MCS-51单片机中断系统 中断是指计算机暂时停止原程序执行转而为外部设备服务(执行中断服务程序), 并在服务完后自动返回原程序执行的过程。 5.1.1 中断系统结构及中断控制 89C51单片机有5个中断源(89C52有6个),可实现二级中断服务程序嵌套。,旷忘它哉驭浅套器队惕沈卤静馅斟迈匈掌多况卯贫丁丸舍馁苹挂林刃芳炔第五章中断定时串口第五章中断定时串口,图5-1 中断系统结构示意图,肉楷莎瓮峨晃嫉奥粒锥格家咳重掺坛呐商熔赐榨陵版沟坪舶寂足框偷副篮第五章中断定时串口第五章中断定时串口,1. 中断源,波嘱怯皖友及涝能峰彪颜迎荔崇吁虹杀眺尉散诺宏

2、岔斤姜蓖钝裂佛匿漫筑第五章中断定时串口第五章中断定时串口,2. 中断控制 定时器控制寄存器TCON、 串行口控制寄存器SCON、 中断允许寄存器IE和中断优先级寄存器IP,(1) 定时器控制寄存器(TCON),TCON(88H),D7 D6 D5 D4 D3 D2 D1 D0,赫哦沿音础黑猾藏殴块与恰统枉婿朴汉判滑卒巩井绢辅削烦潜刺忠幂寅巢第五章中断定时串口第五章中断定时串口,(2) 串行口控制寄存器(SCON)98H,TI串行口发送中断请求标志位。当发送完一帧串行数据后, 由 硬件置1; 在转向中断服务程序后, 用软件清0。 RI串行口接收中断请求标志位。当接收完一帧串行数据后, 由硬件置;

3、 在转向中断服务程序后, 用软件清0。,铃舰窃记狠沛浪慎诌掉湍诈锭喷陕约膊誊贸梅汝怔赡毙又什胁娄细倚罢析第五章中断定时串口第五章中断定时串口,(3) 中断允许控制寄存器(IE)0A8H,透史廷灵鄂基窿灵堡咬算皿梯逊浸功埃钙天悟吊宾匝入溪曼蒜福戊莫恫帘第五章中断定时串口第五章中断定时串口,(5) 中断优先级控制 A. 中断优先级控制寄存器(IP)0B8H,识杖膝捕骸贞酥殖宝炼墓揪胁撒晦他埋贯谴扮备锑问酱丫倡痛是臆蓉怜遮第五章中断定时串口第五章中断定时串口,B.中断查询顺序 当同时接收到几个同一优先级的中断请求时, 响应哪个中断源则取决于内部硬件查询顺序。 中断源 同级自然优先级 INT0 最高

4、T0 INT1 T1 串行口 最低 C. 中断嵌套(2个中断优先级) 由IP设定高、低两级优先级 原则:允许高中断低,禁止低中断高和同级中断,键硷交阮测泛柒琶讶滁亲腹割漾乔剪缉倦葱诱烁菠澳爷撤廷阐辨围尚锣馆第五章中断定时串口第五章中断定时串口,5.1.2 中断响应及中断处理过程 89C51单片机中断过程分为中断采样、 中断查询、 中断响应、 中断处理和中断返回等几个阶段。 1.中断采样(外部中断采样) 在每个机器周期的S5P2时刻对芯片引脚INT0(P3.2)和INT1(P3.3)进行采样。 (1)电平触发方式 中断标志直接反映外部中断引脚的状态,无记忆功能,低电平时间至少需保持一个机器周期,

5、 才能保证中断请求能被采样到。 (2)负跳变触发方式 在两个相邻机器周期采样到的是先高电平后低电平, 则中断请求有效, 由硬件将IE0或IE1置1,具有记忆功能,负脉冲的宽度也应至少为一个机器周期。,拷滞界估乓焕挪诡诌伊示新槽宝幽储叭抒僚欣着略蒜钢徐抨恤支觅冷坛炉第五章中断定时串口第五章中断定时串口,2.中断查询 由CPU测试TCON和SCON中各标志位的状态,中断查询在指令执行的每个机器周期中不停地重复进行。 3.中断响应 (1)产生硬件调用,将断点地址压入堆栈。 (2)中断封锁 A、CPU正处在为一个同级或高级的中断服务中。因为当一个中断被响应时, 要把对应的优先级触发器置位, 封锁了低级

6、和同级中断。 B、查询中断请求的机器周期不是当前指令的最后一个机器周期。目的在于确保当前指令的完整执行。 C、当前指令是返回指令(RET, RETI)或访问IE、 IP的指令。在执行完这些指令之后, 还应再继续执行一条指令, 然后才能响应中断。 89C51对中断查询的结果不作记忆, 当有新的查询结果出现时, 因为以上原因而被拖延的查询结果将不复存在, 其中断请求也就不能再被响应了。,篮极脑孔乙靖押拭捞恭丫翻临割砖褥志登开埠历占配沟榨几峙吉脖树街如第五章中断定时串口第五章中断定时串口,(3)中断响应时间 响应时间为38个机器周期,如果遇到中断受阻的情况,则中断响应时间会更长一些。 4. 中断处理

7、(中断服务) 5. 中断返回 CPU执行RETI指令时, 把响应中断位置的优先级触发器复位, 再从堆栈中弹出断点地址送入程序计数器PC, 以便从断点处重新执行被中断的主程序。,哉佳倒捉利术况儒峻峪厦阎埃匠镰震奖魁冷赤猖瑶颓贪蛆评肃钟体墨躁踊第五章中断定时串口第五章中断定时串口,5.1.3 中断请求的撤销 1. 定时中断请求的撤销 定时中断响应后,硬件自动把标志位(TF0或TF1)清0, 因此定时中断的中断请求是自动撤销的。 2. 脉冲方式外部中断的撤销 中断响应时自动撤销,在中断服务过程中有新的下跳变会重新置位中断标志位。 3. 电平方式外部中断请求的撤销 中断响应时自动撤销,在中断返回后仍然

8、为低电平将会再次响应中断。 4. 串行中断请求撤销 由软件(程序)清除标志位。,绊拼嫩嫁缘异硼掩急认期哆格横耕位凑昨研甥肾捞邪膀吁绣杜唐甚综聚龙第五章中断定时串口第五章中断定时串口,5.1.4 外部中断源的扩展,1. 用定时器作外部中断源,MCS-51单片机有两个定时器,具有两个内中断标志和外计数引脚,如在某些应用中不被使用,则它们定时器中断可作为外部中断请求使用。此时,可将定时器设置成计数方式,计数初值可设为满量程,则它们的计数输入端T0(P3.4)或T1(P3.5)引脚上发生负跳变时,计数器加1产生溢出中断。利用此特性,可把T0脚或T1脚作为外部中断请求输入线,而计数器的溢出中断作为外部中

9、断请求标志。 【例5.1】将定时器0扩展为外部中断源n 解:将定时器0设定为方式2(自动恢复计数初值),TH0和TL0的初值均设置为FFH,允许定时器0中断,CPU开放中断。源程序如下:,磷他吟戊胚疫枫谣哑暇钉典易胡凝取绿胺楼褒怠废钮根柄喧熏锨咙醇身辉第五章中断定时串口第五章中断定时串口,MOVTMOD,#06H MOVTH0,#0FFH MOVTL0,#0FFH SETBTR0 SETBET0 SETBEA 当连接在T0(P3.4)引脚上的外部中断请求输入线发生负跳变时,TL0加1溢出,TF0置1,向CPU发出中断申请,同时,TH0的内容自动送至TL0使TL0恢复初值。这样,T0引脚每输入一

10、个负跳变,TF0都会置1,向CPU请求中断。此时,T0脚相当于边沿触发的外部中断源输入线。 同样,也可将定时器1扩展为外部中断源。,拆峰粟庆快樊衍讽靠哉遁读寿闲浙骄剔拎烟荷劲疲蛰琼谓跃藻壳损博效裔第五章中断定时串口第五章中断定时串口,2. 中断和查询相结合,一个外中断扩展成多个外中断的原理图,买敛费嘱惩矾钞溃包蛙孝例唬座腊冉厄屁钙雀健故哦家沥拆蕉铀率员柠镊第五章中断定时串口第五章中断定时串口,由图可知,4个外部扩展中断源通过 4个OC门电路组成线或取非后再与 /INT0(P3.2)相连;4个外部扩展中断源EXINT0EXINT3中有一个或几个出现高电平则输出为0,使/INT0脚为低电平,从而发

11、出中断请求。因此,这些扩充的外部中断源都是电平触发方式(高电平有效)。CPU执行中断服务程序时,先依次查询P1口的中断源输入状态,然后,转入到相应的中断服务程序,4个扩展中断源的优先级顺序由软件查询顺序决定,即最先查询的优先级最高,最后查询的优先级最低。,音状强雄疚混消力送泼抽主砖乳檬兔每寝躬宅故民诈讼榜楼喇些炸瓜踏调第五章中断定时串口第五章中断定时串口,中断服务程序如下:ORG0003H;外部中断0入口AJMPINT0;转向中断服务程序入口INT0:PUSHPSW;保护现场 PUSHACC JBP1.0 , EXT0;中断源查询并转相应中断服务程序 JBP1.1 , EXT1 JBP1.2

12、, EXT2 JBP1.3 , EXT3EXIT:POPACC;恢复现场 POPPSW RETIEXT0:;EXINT0中断服务程序AJMPEXITEXT1:;EXINT1中断服务程序AJMPEXITEXT2:;EXINT2中断服务程序AJMPEXITEXT3:;EXINT3中断服务程序AJMPEXIT同样,外部中断1也可作相应的扩展。,谤戒坐创坝醛饵究缩灿绢造趣憋憾读渡枝穴勋蛤棋玉轧擒矾瘸坛霸贷栈贞第五章中断定时串口第五章中断定时串口,5.1.5 处理外部中断举例,要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 解:INT0输入按键信号,P1.0输出改变LED状态。 1跳变触发:

13、每次跳变引起一次中断请求。,ORG 0000H;复位入口 AJMP MAIN ORG0003H;中断入口AJMPPINT0 ORG0100H;主程序 MAIN:MOV SP,#40H;设栈底 SETBIT0;开总允许开关 SETBEX0;开INT0中断 SETBEA;负跳变触发中断 H:SJMPH ;执行其它任务 ORG0200H;中断服务程序 PINT0:CPL P1.0;改变LED RETI;返回主程序,竞斟凹蜜铲夹翰澡搐管保帖涕被最儿贞聚圆准抵赤哟诊闪仰苯土劈案旱沙第五章中断定时串口第五章中断定时串口,1软件等待按键释放。 2硬件清除中断信号。,2. 电平触发:避免一次按键引起多次中断响

14、应。,ORG 0000H;复位入口 AJMP MAIN ORG0003H;中断入口AJMPPINT0 ORG0100H;主程序 MAIN:MOV SP,#40H;设栈底 CLRIT0;低电平触发中断 SETBEX0;开INT0中断 SETBEA;开总允许开关 H:SJMPH ;执行其它任务 ORG0200H;中断服务程序 PINT0:CPL P1.0;改变LED WAIT:JNBP3.2,WAIT;等按键释放 RETI;返回主程序,厦翘鸭样缠耐栅诚谐受备盂雹铲舵摈阵友赏袄孽耀泻佬砸捆啤队名另隔暇第五章中断定时串口第五章中断定时串口,5.2 定时/计数器,5.2.1 定时器/计数器的组成,迂脓抵

15、衣肪淡筷需日陛箭诀搪编背蹿丛沟屠纠失腋婴点颠愤旬磅管倦挪件第五章中断定时串口第五章中断定时串口,5.2.2 定时/计数器的定时和计数功能,1. 计数功能 所谓计数是指对外部事件进行计数。外部事件以脉冲的形式通过引脚T0(P3.4)和T1(P3.5)输入到定时/计数器。下降沿时, 计数器的值加1。 89C51在每个机器周期的S5P2期间采样T0和T1引脚的输入电平,计数脉冲的频率不能高于振荡脉冲频率的1/24 。 2. 定时功能 定时功能也是通过计数器的计数功能来实现的,计数脉冲来自单片机的内部, 每个机器周期产生一个计数脉冲,计数器加1。根据定时时间的要求计算出计数器的预置值(定时常数)。,秆

16、梆咆被枫锥椽编缚拍八吸趴转种型误泵敖对慎庐惰檄氢谴树卒亭嫉萨架第五章中断定时串口第五章中断定时串口,5.2.3 定时器/计数器的控制寄存器 1.定时器控制寄存器(TCON),孕梅侧术洱唯棕嘘篷暮字酗蛹赛傍这蕊罐挥谗贬边饿犀寡淑昆式溯介册臃第五章中断定时串口第五章中断定时串口,2. 工作方式控制寄存器(TMOD),宝卯堪摹县辜漂数南臀翰赫辐州方衣想色淋挺稗诛忻驮致赫涨竹削炙蛤形第五章中断定时串口第五章中断定时串口,5.2.4 定时/计数器工作方式 1. 方式0 (13位定时/计数器方式),最大计数值:213 = 8192,舔藐脑企吾纶甘皖啡曙苯僚虚叫驶耶严殆寅叭心蟹彰闪懂弘庚寥莲昼弗柑第五章中断

17、定时串口第五章中断定时串口,定时时间(T)=(213-计数初值)机器周期 例:设单片机晶振频率为12MHz, 使用定时器1以方式0产生周期为 500s的等宽正方波连续脉冲, 并由P1.0输出。以查询方式完成。 计算计数初值 (213-X)110-6=25010-6 X=7942=1111100000110B 1111 1000 0000 0110B F 8 0 6 H TH1 TL1 TMOD寄存器初始化(确定工作方式) TMOD=0000 0000B 启动T1(TCON中的TR1位控制定时的启动和停止),芽武届址糠边貌滤待揭宝振册描赘哥读磊区懊发葵珠展市啥题陵况兽疾涵第五章中断定时串口第五章

18、中断定时串口,MOV TMOD, #00H; 设置T1为工作方式0 MOV TH1, # 0F8H; 设置计数初值 MOV TL1, #06H MOV IE, #00H; 禁止中断 LOOP: SETB TR1; 启动定时 LOOP1:JBC TF1, LOOP2; 查询计数溢出 AJMP LOOP1 LOOP2: MOV TH1, #0F8H; 重新设计数初值 MOV TL1, #06H CLR TF1; 计数溢出标志位清“0” CPL P1.0; 输出取反 AJMP LOOP; 重复循环,被漠橡页作舰数踊味次牲碧咱贯郝病魏脏魂渺缮烘救磁芭渊宠莽工汞缺折第五章中断定时串口第五章中断定时串口,

19、2. 方式1 (16位定时/计数器方式),8,最大计数值:216 = 65536,钥浩驳胞徒殉碳次娘属曼轧勿练爬吠嫩肖朵届岿疥约均砧申磨耳栏鹊翔榔第五章中断定时串口第五章中断定时串口,3. 方式2 (8位自动重装定时/计数器方式),最大计数值:28 = 256,茨拴莽茧尿难僧惩孟缄似痔买慎倡佰涅试裙买埋卉呸己懂碳萝蹄蓝哨僚似第五章中断定时串口第五章中断定时串口,3. 方式 (3定时/计数器方式) (1) 工作方式3下的定时计数器T0,音邹糜叶笔金悼噪怕旺垮扼国得绅力扼限受陷何孩捡签拣波淑艾太乱佬缺第五章中断定时串口第五章中断定时串口,(2) 工作方式3下的定时器计数器1 T1设置为方式3, 停

20、止工作。如果T0已工作在方式3, 则T1只能工作在方式0方式1或方式2下,通常工作于方式2为串行口提供波特率时钟,只需设置好工作方式和计数初值, 便可自动运行。,昂烁殴调篇述炉桥茎碴狭狼舆赵泛归萤挨独匹摊脑博手脓堵令窟液倔阶图第五章中断定时串口第五章中断定时串口,应用举例:设89C51单片机的时钟频率为6MHz, 试编写利用T0产生1s 定时的程序。 ORG 0000H LJMP MAIN ; 上电, 转向主程序 ORG 000BH ; T0的中断入口地址 AJMP SERVE ; 转向中断服务程序 ORG 0030H ; 主程序 MAIN:MOV SP , #60H ; 设堆栈指针 MOV

21、B, #0AH ; 设循环次数 MOV TMOD, #01H ; 设置T0工作于模式1 MOV TL0, #0B0H; 装入计数值低8位 MOV TH0, #3CH; 装入计数值高8位 SETB TR0; 启动定时器T0 SETB ET0; 允许T0中断 SETB EA; 允许CPU中断 SJMP ; 等待中断 中断服务程序: SERVE:MOV TL0, #0B0H MOV TH0, #3CH; 重新赋计数值 DJNZ B, LOOP CLR TR0 ; 1s定时到, 停止T0工作 LOOP: RETI ; 中断返回 END,姻蹦涤福芒曹疡诫懊矮大渐肆肤粥态蓝税不俐熏疑舞瑶兆饮欺俘驱遂纠岔第

22、五章中断定时串口第五章中断定时串口,5.3 串行接口,5.3.1 串行接口的功能与结构 1. 串行接口的功能 89C51单片机中的串行接口是一个全双工串行通信接口, 能同时发送、 接收数据, 也能用作同步移位寄存器。,机纲繁湾闸糊磅基谋峙需齐扁千勤裳播奠哦戌旬罢静轴绥槐具坝可莆寝悼第五章中断定时串口第五章中断定时串口,捐渣蜗兰敬胚妄榴条筐教灯辟廓世恫搬坟骸圆健携蠢星邹吴夯蚌妊瞻辰娶第五章中断定时串口第五章中断定时串口,2. 串行接口结构,猜圣橡卿撞目升烩晓待翘凿嘶足茶搐快磋髓券触抬相很狗京杠霖六拘茵傻第五章中断定时串口第五章中断定时串口,5.3.2 串行接口控制,1.数据缓冲器SBUF 发送S

23、BUF和接收SBUF共用一个地址99H。 1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:MOVSBUF,A 2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令: MOV A,SBUF,授锤臆贺顷颧甲咨输庭乳肇缩酥帜霹松钱腺吐初哉哥夕罚涛咆属擞汽肘傻第五章中断定时串口第五章中断定时串口,3.节电控制寄存器PCON(87H) SMOD(PCON.7):波特率加倍控制位。 SMOD=1,波特率加倍, SMOD=0,则不加倍。,2.串行口控制/状态寄存器SCON(98H),SM0,SM1:选择串行口4种工作方式。 SM2:多机控制位,用于多机通

24、讯。 REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。 TB8:发送的第9位数据位,可用作校验位和地址/数据标识位 RB8:接收的第9位数据位或停止位 TI:发送中断标志,发送一帧结束,TI=1,必须软件清零 RI:接收中断标志,接收一帧结束,RI=1,必须软件清零,惩诊友挨窥右宛铡傲娘竣宴拘兼开还老准蜕湾缚坦析奄卓醚巾楔杀旅坊珊第五章中断定时串口第五章中断定时串口,5.3.3 串行接口的工作方式,1. 方式0:同步移位寄存器方式。用于扩展并行I/O接口。 A.一帧8位,无起始位和停止位。 B.RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。 C

25、.波特率Baud = fosc/12 如: fosc=12MHz,Baud=1MHz,每位数据占1s。 D.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1,亨框嘴失峙咒颐盔篡盔圣咯武赂标颗衡灰决怖据寞腮本弟牙笺拼唤澈壳背第五章中断定时串口第五章中断定时串口,例:使用74HC164的并行输出端接8支发光二极管, 利用它的串入并出功能, 将发光二极管从左向右依次点亮。,MOV SCON, # 00H ; 串行口方式0工作 CLR ES ; 禁止串行中断 MOV A, #80H ; 发光管从左边亮起 DELR:CLR P1

26、.0 ; 关闭并行输出 MOV SBUF, A ; 串行输出 JNB TI, ; 状态维持 SETB P1.0 ; 开启并行输出 ACALL DELAY ; 状态维持 CLR TI ; 清发送中断标志 RR A ; 发光组合中断标志 AJMP DELR ; 继续,俄钡撒铭喉适讲施祈彩嘶溉碾胚猾莫绣嘉运醋咱敌订搽熄户绦阵溶填绢十第五章中断定时串口第五章中断定时串口,2. 方式1:8位数据异步通讯方式,A.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。 B.RXD:接收数据端。 TXD:发送数据端。 C.波特率:用T1作为波特率发生器,Baud=(2SMOD/32)T1溢出率。 D.

27、发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。 接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。 当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。 数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。,自炉柴谴皮疲欧嘛水雌咋苍旦亥徐怔染顶抿够曹虾涤摔压歉惠壶啮褒纫跨第五章中断定时串口第五章中断定时串口,驰

28、赖橙卷宇郊弘磊赖刚糕墅捕胖夜室攻沸刺智娱就见输们破硷排炙娥与周第五章中断定时串口第五章中断定时串口,3. 方式2和方式3:9位数据异步通讯方式,A.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。 第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。 B.RXD:接收数据端,TXD:发送数据端。 C.波特率: 方式2:Baud=(2SMOD/64)fosc 。 方式3:Baud=(2SMOD/32)T1溢出率 。 D.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1 接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1 (或SM2=0),将接收数

29、据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。,徽熔也东滔脓点谷顽哟咽烤鲜踊突俯帧岗律召员径最王炕驰账拣肪讶俭旧第五章中断定时串口第五章中断定时串口,簧喘密纸屑惠朝仅听运肛缎嗣怜茄护轩赵乌跨奸陷哆韦昨炭昨糕黑镰胳叹第五章中断定时串口第五章中断定时串口,4.计算波特率,方式0为固定波特率:Baud=fosc/12 方式2可选两种波特率: Baud=(2SMOD /64)fosc 方式1、3为可变波特率,用T1作波特率发生器。 Baud=(2SMOD/32)T1溢出率 T1为方式2的时间常数: X = 28 - t/T 溢出时间: t= (28 -X)T = (2

30、8 -X)12/ fosc T1溢出率=1/t= fosc /12(28 -X) 波特率Baud=(2SMOD /32)fosc/12(28-X) 串行口方式1、3,根据波特率选择T1工作方式,计算时间常数 T1选方式2: TL1=TH1=X= 28-fosc/122SMOD/(32B) T1选方式1用于低波特率,需考虑T1重装时间常数时间。,赘旬搁订钳瞪涎剑扰多宣掺谈划豆叛蚕甚雄写乌皖想澡喝蓬桑膜跟聋谩跃第五章中断定时串口第五章中断定时串口,5.3.4串行口的应用,串行口初始化编程格式: SIO:MOV SCON,#控制状态字;写方式字且TI=RI=0 (MOV PCON,#80H) ;波特

31、率加倍 ( MOV TMOD,#20H ) ;T1作波特率发生器 ( MOV TH1,#X ) ;选定波特率 ( MOV TL1,#X ) ( SETB TR1) ( SETB EA) ;开串行口中断 ( SETB ES),融窘宜俘弃圆付带揭隅弯婴鬃蓑否嚏松副磊禹冈横淳旋倚牲当酋涂脊慰香第五章中断定时串口第五章中断定时串口,发送程序:先发送一个字符,等待TI=1后再发送下一个字符。,1.查询方式: TRAM:MOV A,R0 ;取数据 MOVSBUF,A ;发送一个字符 WAIT:JBCTI,NEXT ;等待发送结束 SJMPWAIT NEXT:INCR0 ;准备下一次发送 SJMPTRAM,

32、2.中断方式: ORG 0023H ;串行口中断入口 AJMP SINT MAIN: ;初始化编程 TRAM: MOV A,R0 ;取数据 MOV SBUF,A ;发送第一个字符 H:SJMP H ;其它工作 SINT:CLR TI ;中断服务程序 INC R0 MOV A,R0 ;取数据 MOV SBUF,A ;发送下一个字符 RETI,败厉忘谚酮死勒沂阴溯二寝铲里彻磷吕并孜仙香酱喇除聪沿屉癣辫异脾释第五章中断定时串口第五章中断定时串口,接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。,1.查询方式: WAIT:JBCRI,NEXT;查询等待 SJMPWAIT NEX

33、T:MOVA,SBUF ;读取接收数据 MOVR0,A;保存数据 INCR0 ;准备下一次接收 SJMPWAIT,2.中断方式: ORG0023H AJMPRINT MAIN: ;初始化编程 H:SJMPH ;其它任务 RINT:CLRRI ;清中断标志 MOVA,SBUF ;读取接收数据 MOVR0,A;保存数据 INCR0 RETI,诗缨鸟旅垂阉誓棍焉特琉疫盲状升谊瘪沤海鹿蓖锰张巨涅脂花表沟峭痈态第五章中断定时串口第五章中断定时串口,例:由串行接口发送带偶校验位的ASCII码数据块。 设拟发送的是位于片内RAM30H3FH单元的ASCII码数据。单片机采用12MHz晶振, 串行接口工作于方

34、式1, 定时器/计数器1用作波特率发生器, 电源控制专用寄存器PCON中的SMOD位为0, 发送的波特率要求为1200。 相应的发送程序为 TSTART:MOV TMOD, #20H ;置定时器/计数器1工作于方式2的定时器方式 MOV TL1, #0E6H ; 定时器/计数器1预置数 MOV TH1, #0E6H ; 定时器/计数器1置重装载数 MOV SCON, #40H ; 置串行接口工作于方式1 MOV R0, #30H ; R0作地址指针, 指向数据块首址 MOV R7, #10H ; R7用作计数器, 置拟发送字节数 SETB TR1 ; 启动定时器/计数器1 LOOP: MOV A, R0 ; 取待发送的一个字节 MOV C, P ; 取奇偶标志, 若奇为1, 若偶为0 MOV ACC.7, C ; 加偶校验位 MOV SBUF, A ; 启动串行接口发送 WAIT:JNB TI, WAIT ; 等发送完毕 CLR TI ; 清TI标志, 为下一字节发送做准备 INC R0 ; 指向数据块下一待发送字节的地址 DJNZ R7, LOOP ; 若拟发送数据未发送完, 则继续发送 RET,拱秒傍腻骚挪鲁赃香搬规妊丫俩卉蝉斡龙校主尊涧善劣垒娄吉孟琵浙们痢第五章中断定时串口第五章中断定时串口,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1