《第3章MCS51单片机的内部资源及应用》由会员分享,可在线阅读,更多相关《第3章MCS51单片机的内部资源及应用(104页珍藏版)》请在金锄头文库上搜索。
1、第3章 MCS-51单片机的内部资源及应用主要内容: MCS-51单片机内部各器件的具体结构、组成原理、工作方式的设置及典型应用,为读者后续学习单片机应用系统设计、充分利用单片机内部资源解决工程实际问题奠定基础。重点在于各器件工作方式的设置及灵活应用,难点在于中断系统和定时器/计数器的应用。 论镶朗莽啪墨旭症旺晓斑揍苞络粗胳皋臀盖霖彰盛补浪刹缎佐奠扫怂揍贮第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 3.1.1 MCS-51 3.1.1 MCS-51内部并行内部并行I/OI/O口口 8051有4个8位并行I/O口,分别命名为P0, P1, P2和P3口。 1
2、 1P0P0口口 P0口为双向三态输入/输出口, P0口既可作为地址/数据总线口,又可作为通用I/O口,可驱动8个TTL输入。在访问3.1 MCS-513.1 MCS-51单片机的并行单片机的并行I/OI/O口口 外部存储器时,P0口作地址/数据总线复用口,是一个真正的双向口,并分时送出地址的低8位和送出(或接收)相应存储单元的数据。作通用I/O口时,P0口只是一个准双向口,需要在外部引脚处外接上拉电阻。 P0口的位结构如右图所示。翠园赐芯牟陛坐舒拧戴棱泻涅噎妄鹊棱粤靖奖筐阻酉休历育丧魄攒杀揉怯第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2 2P2P2口口
3、P2口常用做外部存储器的高8位地址口。当不用做地址口时,P2口也可作为通用I/O口,这时它也是一个准双向I/O口。不必外接上拉电阻就可以驱动任何MOS驱动电路,且只能驱动4个TTL输入。P2口的位结构如右图所示。3 3P1P1口口 P1口常用做通用I/O口,它也是一个标准的准双向I/O口,不必外接上拉电阻就可以驱动任何MOS驱动电路,且只能驱动4个TTL输入。P1口的位结构如右图所示。秋辜晨拷束胖獭浚荡剃弛敲迪铃券沏核弗盒屁瀑笺宁条冠鼻朱曼柜敦愚搜第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用4 4P3P3口口 P3口是一个双功能口,第一功能与P1口一样可用做
4、通用I/O口,也是一个准双向I/O口,能驱动4个TTL输入。另外还具有第二功能。P3口工作在第二功能时各管脚定义如下表所示。 P3口的位结构图如右图所示。 绢几侠污绍肝霍噎嫌摸串嗡案星近拂造结怂歹仪尉躯事挨辛躲慷豺褂帕秽第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.1.2 MCS-513.1.2 MCS-51内部并行内部并行I/OI/O口的应用口的应用 MCS-51I/OMCS-51I/O端口的操作方式:端口的操作方式:(1)输出数据方式:CPU通过一条数据传送指令就可以把输出数据写入P0P3的端口锁存器,然后通过输出驱动器送到端口引脚线。例如,下面的指令
5、均可在P0口输出数据。 MOV P0, A ANL P0, #data ORL P0, A(2)读端口数据方式: CPU读入的这个数据并非端口引脚线上的数据。读端口数据可以直接读端口。例如,下面的指令均可以从P1口输入数据,这是锁存器上的数据。 MOV A, P1 MOV 20H, P1 MOV R0, P1 MOV R0, P1良窍瓢晾蕾点渴窑扑澜佛纬廓阮缸拘旦咏勘巷峭照柒眼按支拯秘排乘炮达第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(3)读端口引脚方式:读端口引脚方式可以从端口引脚上读入信息。在这种方式下,CPU首先必须使欲读端口引脚所对应的锁存器置1,
6、然后才能读端口引脚。因此,用户在读引脚时必须先置位锁存器后读,连续使用两条指令。例如,下面的程序可以读P1引脚上的信号。 MOV P1, #0FFH ; 置位P1引脚的锁存器 MOV A, P1 ; 读P1引脚上的信号送累加器A 注意:写引脚时是直接向端口输出要写的数据, 读引脚时就要区分是读端口的引脚信号还是读锁存器信 号。 读端口信号是必须先向端口写“1”,然后再读,这就是单片机口信号的准双向的含义。切记!(见P106)观墙圃势手蹄源射骸玄燃漂羌牺沉稽僵践从菜普烂弘士文吩檄根踩毯线季第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 在I/O口直接用做输入/输
7、出时,CPU既可以把它们看做数据口,也可以看做状态口,这是由用户决定的。 例题例题11要求设计跑马灯。 硬件电路设计: 1.设计单片机最小系统设计单片机最小系统 2.设计带按键的复位电路设计带按键的复位电路 3.使用一个使用一个P口连接八个口连接八个led发光二极管发光二极管 4.软件设计软件设计 各引脚功能如下: VCC:接正电源; Vss:接地; 1 1I/OI/O口直接用于输入口直接用于输入/ /输出输出 绘撅俞清章力映屿墒广剁返遗逾央属公骋溜璃咸仁税柴捧闪磊涤飘窒霄赢第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用嗽虚疵倦装糟垫陪剑而悼萝衷只寅后铺铜净桶
8、硼靖耸宽雀堕望琢潮兄卡榨第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用程序设计:程序设计:;实验一:单片机最小系统及流水灯程序实验一:单片机最小系统及流水灯程序 org 00h ;源程序起始地址源程序起始地址jmp main ;跳转到跳转到MAINorg 0050h ;主程序开始地址主程序开始地址main:mov a,#11111110B ;立即数送入立即数送入Aloop: mov p1,a ;数据送数据送P1口口 rr a ;右循环一下;右循环一下 lcall delay ;延时子程序延时子程序 ajmp loop;重复循环;重复循环delay: mov r
9、3,#250 ;延时子程序;延时子程序d1:mov r4,#235d2:nopnopnopdjnz r4,d2djnz r3,d1 retend灵耘伎惫平境锦委褒谦苑络埂才晚雌托偷抒柱顽纠受酒滩蝗箍渤槐毒恨喷第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2 2I/OI/O口扩展外部锁存器口扩展外部锁存器 为了输出数据并保持这个输出状态,MCS-51单片机常常需要使I/O口通过外部锁存器和输出设备相连。如下图所示为8051通过74LS273与输出设备连接的接口图。8051通过下面的指令输出数据至数码管: MOV DPTR, #7FFFH ; DPTR指向74LS
10、273端口,地址为7FFFH) MOVX DPTR ,A ; 输出数据到数码管上 豫滇酌茎箕拷值找弹授舷第履脖卤嗡跃捷间卸蝇苗柒礼辜婪谰浩匝港讲篇第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 74LS273是带有清除端的8D触发器,只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存。 CPU 的ALE信号必须经过反相器反相之后才能与74LS273的控制端CLK 端相连。 地址锁存器使用74LS373较多。引脚图如下页图所示。与8051连接电路如下页图所示。WR趁巍怪带募蒙液秦蓉虐胸拉焕晓灼汝捎霜溢透命芍楞气夷篙肯窍周迢汐摘第3
11、章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 上图中的ag七个笔划(段)及小数点dp均为发光二极管。数码管显示器根据公共端的连接方式,可以分为共阴极数码管(将所有发光二极管的阴极连在一起)和共阳极数码管(将所有发光二极管的阳极连在一起)。 单片机系统扩展LED数码管时多用共阳LED。共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。但是共阴管的亮度比共阳管的要亮些。 通常每个段笔画要串一个数百欧姆的降压电阻。 笔画的选择称为段选,公共端的选择称为位选。算峡切舔一损诛妥务第氟凯粘捣憋旅
12、庇意苑铰事汐戌怒迎跌掷枣歼颗疚癣第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用; 八个数码管动态显示程序org 00hajmp mainorg 50hmain:mov r2,#00h;将要显示的数字送R2sss:mov dptr,#tab;查表取得数字的字型码送R0mov a,r2movc a,a+dptrmov r0,amov r6,#40h;循环调用显示程序延时1.5Sxsh1:lcall disp1djnz r6,xsh1inc r2;将下一个要显示数字送R2cjne r2,#0ah,sss;判断数字9显示完否?ajmp maindisp1:mov r5
13、,#08h;显示程序开始,将要显示的位数送R5mov r1,#0feh;将要显示的位码送R1锌腥芝室年逐逗疾省锦擞库森痉寅装拈晃斋恶纶脸喀钎讲兔跌交斋巷噬试第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用dis00:mov dptr,#7fffh;将要显示的字型码送74LS273mov a,r0movx dptr,amov a,r1;将位选码送入R1mov p2,alcall delay;调延时1MS子程序rl a;位选左移,选中下一位,如果8位数字mov r1,a;显示完了则返回djnz r5,dis00retdelay:mov r3,#08h ;延时1MS程
14、序loop:mov r4,#0a0hdjnz r4,$djnz r3,looprettab:db 0c0h,0f9h,0a4h,0b0h,99h;字型表db 92h,82h,0f8h,80h,90hend详脚纂涸严璃闯甲瓶舆岗必立祁嚼罚阵抠筒残詹泡霉跺洗涣拧讲玩怔蝗感第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.2 MCS-51单片机的中断系统单片机的中断系统 计算机与外界的联系是通过外部设备(也称为外设、输入/输出设备或I/O设备)与外界联系的。计算机与外设之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的目的。计算机与外设之间交换信息的
15、方式:计算机与外设之间交换信息的方式: (1)无条件传送方式:外设对计算机来说总是准备好的。 (2)查询传送方式:传送前计算机先查询外设的状态,若已经准备好就传送,否则就继续查询/等待。 (3)中断传送方式:外设通过申请中断的方式与计算机进行数据传送。 (4)直接存储器存取方式(DMA):传送数据的双方直接通过总线传送数据, 不经CPU中转。跟枯咏干剿剔澳茶殖詹斡辟产完贸愉婆炮艰左楚喳勤恳滤森古结躁区粕窄第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.2.1 3.2.1 中断的基本概念中断的基本概念 1 1中断的定义中断的定义 所谓“中断”,是指CPU执行正
16、常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完毕(中断服务完成)后,CPU自动返回原程序的过程。 作用:作用:采用中断技术可以提高CPU效率、解决速度矛盾、实现并行工作、分时操作、实时处理、故障处理、应付突发事件,可使多项任务共享一个资源(CPU)。 中断与子程序的最主要区别:中断与子程序的最主要区别:子程序是预先安排好的,中断是随机发生的。 中中断断涉涉及及的的几几个个环环节节:中断源、 中断申请、开放中断、保护现场、中断服务、恢复现场、中断返回。啤驰咽麓涪磋骚笆瞥激畦帽别艘顶据查镭拈刷笆缘鹤拆委久呆庆坯啤硒舶第3章MCS-51单片机
17、的内部资源及应用第3章MCS-51单片机的内部资源及应用 2. 2. 中断源中断源 中断源是指引起中断的设备或事件,或发出中断请求的源头。 3. 3. 中断的分类中断的分类 中断按功能通常可分为可屏蔽中断、非屏蔽中断和软件中断三类。 可屏蔽中断是指CPU可以通过指令来允许或屏蔽中断的请求。 非屏蔽中断是指CPU对中断请求是不可屏蔽的,一旦出现,CPU必须响应。 软件中断则是指通过相应的中断指令使CPU响应中断。 4. 4. 中断优先权与中断嵌套中断优先权与中断嵌套 中中断断优优先先级级(也也称称为为中中断断优优先先权权):给每个中断源指定中断响应的优先级别, CPU按中断源的优先级高低顺序响应
18、各中断源发出的中断请求。 中中断断嵌嵌套套:在某一瞬间,CPU因响应某一中断源的中断请求而正在执行它的中断服务程序时,若又有一级别高的中断源向CPU发出中断请求,且CPU的中断是开放的,CPU可以把正在执行的中断服务程序暂停下来,转而响应和处理优先权更高的中断源的中断请求,等处理完后再转回来,继续执行原来的中断服务程序,这就是中断嵌套。 中断嵌套的过程和子程序嵌套过程类似,子程序的返回指令是RET,而中断服务程序的返回指令是RETI。符嘛对媒鞭堪赢操舌试裴肚劣韵栖栓纲点队副它孔蒸集凑俗坐感夕寇三纹第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用5. 5. 中断响
19、应及处理过程中断响应及处理过程 保护断点 寻找中断源 中断处理 中断返回保护断点和寻找中断源都是由硬件自动自动完成的,用户不用考虑。6. 6. 中断系统的功能中断系统的功能中断系统:中断系统:能够实现中断功能的硬件电路和软件程序。中中断断系系统统的的功功能能:能够实现中断优先权排队、中断嵌套、自动响应中断和中断返回等功能。 MCS-51单片机的大部分中断电路都是集成在芯片内部的,只有外部中断请求信号产生电路才分散在各中断源电路和接口电路中。墅滤验殊扒针逾绒韦稀榔昭西带门揉只侍走壶宣附殖纬焚箱愿押冰琐涉汾第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.2.2
20、MCS-513.2.2 MCS-51的中断系统的中断系统 MCS-51提供了5个中断源,2个中断优先级控制,可实现2个中断服务嵌套。可通过程序设置中断的允许或屏蔽,设置中断的优先级。1 1MCS-51MCS-51的中断源的中断源 8051允许5个中断源:(1)外部中断源(中断标志为IE0和IE1 ) 由 ( P3.2 )端口线引入,低电平或下降沿引起。 由 ( P3.3 )端口线引入,低电平或下降沿引起。(2)内部中断源 (中断标志为TF0、TF1和TI/RI ) T0:定时/计数器0中断,由T0回零溢出引起。 T1:定时/计数器1中断,由T1回零溢出引起。 TI/RI:串行I/O中断,完成一
21、帧字符发送/接收引起。侍恬噬贞慕鲍压酝橡巍塔疟汾藏膏骇挎祈哟妨肛异烟趾蔼个伐眠砸师玖丘第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用8051的中断结构如下图所示。 泻眼碑圣悟甘钝浦调王若毋聊力奥户乌冕警顶真榨逼辞粳五谆蚌默粪藤叭第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用CPU识别中断申请的依据:识别中断申请的依据: CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。2 2中断控制中断控制 MCS-51单片机设置了4个专用寄存器用于中断控制,用户通过设置其状态来管理中断系
22、统。(1)定时器控制寄存器TCON (88H) TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位)。 =0:定时器未溢出; =1:定时器溢出(由全“1”变成全“0”)时由硬件自动置位,申请中断,中断被CPU响应后由硬件自动清零。黔苏刁服吴竹珍胜虎琐窃蔡茸斗治搅桃脉逃幌蚤纸蒋株炉库袁靴驳衷铁被第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用TR0/TR1:定时器运行启停控制位(可由用户通过软件设置 )。 =0:定时器停止运行; =1:定时器启动运行
23、。IE0/IE1:外部中断申请标志位(由硬件自动置位 ,中断响应后转向中断服务程序时,由硬件自动清0 )。 =0:没有外部中断申请; =1:有外部中断申请。IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置 )。 =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效。聚等虹兼统组畦邓扰享驰临倘研清消歪珍霸陪堰咒耽陆承站返告吩甜皂丁第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(2)串行口控制寄存器SCON (98H) TI/RI:串行口发送/接收中断申请标志位(由硬件自动置位,必须由用户在
24、中断服务程序中用软件清0)。 =0:没有串行口发送/接收中断申请; =1:有串行口发送/接收中断申请。 SCON的高6位用于串行口工作方式设置和串行口发送/接收控制。 (3)中断允许控制寄存器IE (0A8H) SM0SM0 SM1SM1 SM2SM2 RENREN TB8 TB8 RB8RB8 TI RITI RI EAEA ES ET1 EX1 ET0 EX0ES ET1 EX1 ET0 EX0秉酮泰亲是烯垫藉孰偏铝恿呼恿怒最啊误宛气妮洪浩挪幅孔贤酷衬翼阜币第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(3)中断允许控制寄存器IE (0A8H) EA EA
25、 ES ET1 EX1 ET0 EX0ES ET1 EX1 ET0 EX0EX0/EX1/ET1/ET0/ES 位:分别是 / ,T0/T1,串行口的中断允许控制位。 =0 :禁止中断; =1 :允许中断。EA:总的中断允许控制位(总开关): =0 :禁止全部中断; =1 :允许中断。溃掺星哩咬灼输箩找括型弦贸盘朽息您极兆绵拆陋龟程长耘困辐褂累引翰第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(4)中断优先级控制寄存器IP (0B8H) 8051有两个中断优先级,即高优先级和低优先级,每个中断源都可设置为高或低中断优先级,以便CPU对所有的中断实现两级中断嵌套
26、。 8051内部中断系统对各中断源的中断优先级有一个统一的规定,称为自然优先级(也称为系统缺省优先级)。如下表所示。 8051单片机的中断优先级采用了自然优先级和人工设置高、低优先级的策略,中断处于同一级别时,就由自然优先级确定。开机时,每个中断都处于低优先级,中断优先级可以通过程序来设定,由中断优先级寄存器IP来统一管理。 瘤箔炙阻管软超绸俱囤推吃醛下足凸儒搅狡哥重警易曲箕孪橙悉幸捏售型第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(4)中断优先级控制寄存器IP (0B8H) PS PT1 PS PT1 PX1 PX1 PT0 PX0PT0 PX0PX0/P
27、X1: / 优先级控制位: =0 :属低优先级; =1 :属高优先级。PT0/PT1:T0/T1中断优先级控制位: =0 :属低优先级; =1 :属高优先级。PS1:串行口中断优先级控制位: =0 :属低优先级; =1 :属高优先级。畸糟懒兔辨柄搬汇川侩锨仁文忧否效呛泻颐插挥竭狈栽衡碾忍荔咎证吕凡第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用中断优先级处理原则: 对同时发生多个中断申请时: 不同优先级的中断同时申请:先高后低 相同优先级的中断同时申请:按序执行 正处理低优先级中断又接到高级别中断:高打断低 正处理高优先级中断又接到低级别中断:高不理低整炬摇谚拜
28、梅产姥吕低尽颅淫郧愧蝴井台颖烁溢嘻职衅彩黔枫养玫银橙健第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3中断响应中断响应 (1)中断响应的条件 MCS-51单片机工作时,在每个机器周期中都会去查询各个中断标志,如果有中断请求。必须满足下列条件单片机才能响应中断。 相应的中断是开放的; 没有同级的中断或更高级别的中断正在处理; 正在执行的指令必须执行完最后 1个机器周期; 若正在执行RETI,或正在访问IE或IP寄存器,则必须执行完当前指令的下一条指令。后方能响应中断。恿访湘柠闷十兵衰灭病欢恫战澎恿晨象貉慷墩孪搬屋尊烟快旗愤贰廖镐箔第3章MCS-51单片机的内部资
29、源及应用第3章MCS-51单片机的内部资源及应用(2)中断响应的过程 中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。 中中断断请请求求:中断源将相应请求中断的标志位置 “1”,表示发出请求,并由CPU 查询。 中中断断响响应应:在中断允许条件下相应中断。断点入栈撤除中断标志关闭低同级中断允许中断入口地址送PC。 这些工作都是由硬件自动完成的。 中中断断服服务务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场。 中中断断返返回回:执行中断返回RETI指令断点出栈开放中断允许返回原程序。伎颈拾屎氏澎竿兰架稚旨吸素侥镶剧留渴豁羔溪掸荒菱黔吨屋盯婆猫屑命第3章MCS-5
30、1单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用中断服务程序入口地址:中断服务程序入口地址: 中断响应的主要内容就是由硬件自动生成一条长调用指令(LCALL addr16),CPU执行这条长调用指令便响应中断,转入相应的中断服务程序。这里的addr16就是程序存储器中相应的中断服务程序的入口地址,MCS-51的5个中断源的中断服务程序入口地址是固定的,如下表所示。恳喻箍然术荣剐躲笛军连陷缄沁兼端黎鞘霍舵屑眉扯烃卑兄裁乒头人旺昨第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 8051的5个中断源的中断服务入口地址之间相差8个单元。这8个存储单元用
31、来存储中断服务程序一般来说是不够的。用户常在中断服务程序地址入口处放一条三字节的长转移指令。一般地,主程序从0030H单元以后开始存放。例如:ORG 0000HLJMP START ; 转入主程序,START为主程序地址标号ORG 0003HLJMP INT0 ; 转外中断中断服务程序ORG 000BHLJMP T0 ; 转定时器T0中断服务程序ORG 0030HSTART: ; 主程序开始(3)中断响应时间 正常中断响应时间至少为38个机器周期,如果有同级或高级中断服务,将延长中断响应时间。桶吠斟练节懂上屁池犬肇郡缚摔诲醉贾迄倍部驼杆盖雀艘井斤之习黑迸舟第3章MCS-51单片机的内部资源及应
32、用第3章MCS-51单片机的内部资源及应用4中断请求的撤除中断请求的撤除 为了避免中断请求标志没有及时撤除而造成的重复响应同一中断请求的错误, CPU在相应中断时必须及时将其中断请求标志位撤除。 8051的5个中断源的中断请求撤除的方法是不同的。(1)定时器溢出中断请求的撤除 定时器溢出中断得到响应后,其中断请求的标志位TF0和TF1由硬件自动自动复位。(2)串行口中断请求的撤除 串行口中断得到响应后,其中断请求的标志位TI和RI不能由硬件自动复位,必须由用户在中断服务程序的适当位置通过如下指令将它们撤除。 CLR TI ; 撤除发送中断请求标志 CLR RI ; 撤除接收中断请求标志 或采用
33、字节型指令:ANL SCON, #0FCH甸靠除靶篮沈夺司递线抨祖湍阴江已莎招艾荣缔滴凹殷吮毡庙谅县倾椽都第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(3)外部中断请求的撤除 外部中断请求的两种触发方式(电平触发和负边沿触发)的中断请求撤除的方法是不同的。 负负边边沿沿触触发发方方式式:CPU在前一机器周期采到 / 引脚为高,后一机器周期采到为低才认为是一次中断请求,即依靠CPU两次检测 (或 )上的负边沿触发电平状态而置位外部中断标志位IE0或IE1 。CPU 可记忆申请、可由硬件自自动动撤除中断申请。 电电平平触触发发方方式式: / 引脚上的低电平须持续
34、到中断发生。若中断返回前仍未及时撤除低电平,虽然CPU在响应中断时能由硬件自动复位IE0或IE1,但引脚上的低电平仍会使已经复位的IE0或IE1再次置位,产生重复中断的错误。 垃哈尾饥背朋尚鲜宁赴糕绊讨腿捧茫民臭豺葱姻到蛔毯携帆印炽慈徊卖铆第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 电平触发型外部中断请求的撤除必须由外部硬件使(或)上的低电平随着其中断被响应而变为高电平。其中断请求撤除的电路如下图所示。 外来的低电平反相CP端产生上跳沿 D端的“0”输出到Q端申请中断,中断服务返回前对中断服务返回前对P1.0P1.0送送“0” “0” 令令Q Q端变为端变
35、为“1”“1” 指令如下:指令如下: ANL P1,#0FEH (或(或CLR P1.0 ) ;令令Q端置端置“1” ORL P1, #01H ( SETB P1.0 ) ;令令SD端置端置“1”,以免下次中断来时以免下次中断来时Q端不能变端不能变“0”燃穴遮瘪沤滥诀须淌界攫盼侨厄炙涣荣养怯绩醚趣霖务轿载贝洪瘟醚卤莹第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.2.3 MCS-513.2.3 MCS-51中断系统的编程中断系统的编程 (1)中断初始化设置:开相应中断允许( IE )、根据需要选择优先级( IP )和选择外中断触发方式(TCON),设置计数器
36、、串行口的有关参数。(2)中断服务程序的编写:中断入口、保护现场、关中断、中断服务主体程序、恢复现场、开中断、设置计数器、串行口的有关参数、中断返回指令RETI 。 例例题题2 2 设8051外部中断源接引脚 ,中断触发方式为电平触发,试编制8051中断系统的初始化程序。解:采用位操作指令实现(也可以采用传送指令和逻辑指令)。 SETB EA ; 开总中断 SETB EX0 ; 开中断 SETB PX0 ; 设置为高优先级 CLR IT0 ; 设置为电平触发方式诵筷留哭意患其怒宜饶棠滴蚊宪蛆饼愧汝幅痒斡钩天杜赢健猾谰觉唉磋铲第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部
37、资源及应用 例题例题3 3 通过通过外部中断控制八盏灯循环点亮。解:解:通过P1口扩展八盏灯,在 引脚接一个按钮开关到地,每按一下按钮就申请一次中断,点亮一盏灯,中断服务则是:依次点亮八盏灯中的一盏。采用边沿触发。硬件电路如下图所示。示矣存睁揉劝跌宵钙蜕去司羌澜贞小陆排遮化溉抠墓渡矗砚避节日诸驾钻第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用程序如下:程序如下: ORG 0000H LJMP MAIN ORG 0013H ; 中断服务程序入口地址 LJMP IN11 MAIN:SETB EA ; 开总中断允许“开关” SETB EX1 ; 开分中断允许“开关”
38、 CLR PX1 ; 低 优先级(也可不要此句) SETB IT1 ; 边沿触发 MOV A , #01H ; 给累加器A赋初值 SJMP $ ; 原地等待中断申请 IN11:RL A ; 左环移一次 MOV P1,A ; 输出到P1口 RETI ; 中断返回 END庶搞冕忿纽割寡瞒碰肇账啥扳仁奇途犬贷奉馅旱少封撤匝庙耙看浸岁宠畴第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.2.4 MCS-51扩展外部中断请求输入口扩展外部中断请求输入口 8051单片机只提供了两个外部中断请求输入端,如果需要使用多于两个的中断源,就必须扩展外部中断请求输入口。 1 1定时
39、器定时器/ /计数器用于扩展外部中断请求输入口计数器用于扩展外部中断请求输入口 8051单片机有两个定时器/计数器,它们作为计数器使用时,计数输入端T0(或T1)发生负跳变将使计数器加1,利用此特性,适当设置计数初值,就可以把计数输入端T0(或T1)作为外部中断请求输入口。其特点是以占用内部定时中断为代价的。中断服务程序的入口地址仍然为000BH或001BH。唉祥臭副春吼瓜病始奈柒黄溅斗察冉捎懊玄翁诲麻杖殴煌野势目文粒帖纯第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2 2查询方式扩展外部中断请求输入口查询方式扩展外部中断请求输入口 把多个中断源通过硬件(如与
40、非门)引入外部中断输入端,同时又连到某个I/O口。当有中断源申请中断时,在中断服务程序中通过软件查询可确定哪一个是正在申请的中断源,其查询的次序可由中断优先级决定。其特点是中断响应速度较慢。 适用于外部中断源较多的场合。下页例题中,我们采用74LS21A四输入端双与门实现该任务。 3 3使用专用芯片扩展外部中断请求输入口使用专用芯片扩展外部中断请求输入口 当外部中断源较多,同时又要求中断响应速度很高时,查询方式扩展外部中断请求输入口的方法很难满足要求。这时可以使用专用接口芯片进行外部中断请求输入口的扩展。下面例题中,我们采用74LS21A四输入端双与门实现该任务。 纸栈奥俩孪艺甲抡硅傀知撤寇垣
41、敦沏羹溶闸垫地滴缔傅穷狂氰馏镐幽辆振第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用查询方式扩展外部中断请求输入口的查询方式扩展外部中断请求输入口的电路实现:74ls21的逻辑表是:当输入全高时输出为高,任一输入低则输出就为低。电路分析:当没有按键按下时,由于上拉电阻的作用,74ls21输出高,使INT0口为高电平,此时中断程序不被触发。如果任何一个按键按下,则74ls21输出低电平,触发中断程序。中断程序设计为:如果程序设计检测次序是P1.0、P1.1、P1.2、P1.3口,优先级即按顺序排列,如果同时有多个键被按下,可根据实际要求设定为 1、仅仅只响应最优先
42、中断;2、按优先级顺序依次执行各个中断。既刀袖颐号亭称幢翌爆诧鸣诺引公秆郑涧跌乍决钞患蠢砷刺开峦粘素因串第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 设计程序如下:设计程序如下:ORG 0000HLJMP MAINORG 0003H; 外部中断0中断服务入口地址LJMP INT; 转中断服务ORG 0100H MAIN: SETB EA; 开总中断允许SETB EX0; 开INT0中断SETB IT0 ; 下降沿有效中断服务程序清单如下: INTI CALL D20; 延时去抖动MOV P1,#0FFH;P1口送全1值(准双向口原因)MOV A, P1; 读
43、P1口各引脚(设另四口未用) CJNE A, #0FFH,CLOSE; 验证是否确实有键闭合 AJMP INT0; 无键按下(按键时间过短)则退;出中断反拨菠摈渣苇瘟使从就扮凋岂爹估赶嚣支攻嘿筒迫骄套派驴霓等吵么营收第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 CLOSE: JNB ACC.3, KEY 0; 查询0号键 JNB ACC.2, KEY 1; 查询1号键 JNB ACC.1, KEY 2; 查询2号键 JNB ACC.0,KEY 3; 查询3号键 INT0:RETI KEY 0:; 7号键处理程序 KEY 01:MOV A, P1; 再读P1口
44、各引脚 JNB ACC.0, FUNC71; 确认键是否释放 RETI KEY 1:; 其他键处理程序 D20: ; 20ms延时子程序 END 魏届控抱鸿皖枫鸥嫡李阴篆杏祝匹誊宁师嘱幅榔辩越鼓史怖笋笋淮嘴叁牡第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.3 MCS-51单片机的定时器单片机的定时器/计数计数器器 3.3.1 定时器定时器/计数器计数器 1 1基本概念基本概念(1)计数:计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。实现计数功能的器件称为计数器。(2)定时:8051单片机中的定时器和计数器是一个部件,只不过计数器
45、记录的是外界发生的事件,而定时器则是由单片机内部提供一个非常稳定的计数源进行定时的。这个计数源是由单片机的晶振经过12分频后获得的一个脉冲源。所以定时器计数脉冲的时间间隔与晶振有关。屹孙颗辟抵钩施锌待扶宅纂左文仕颜林亡评卞追扑拉忠哇汤搂渝锐姨冗锗第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(3)定时的种类 软软件件定定时时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。因此软件定时的时间不宜过长。 硬硬件件定定时时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方
46、便。对于时间较长的定时,常用硬件电路来实现。 可可编编程程定定时时器器:通过专用的定时器/计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。债浇诸鹊绒衣众存棱目丰刺沛蓝撮混使毗减归副锅萤淤券昼汹矢绑畏琅仇第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 MCS-51单片机内部有两个16位可编程的定时器/计数器,简称为T0和T1,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已终止。适用于定时控制、延时、外部
47、计数和检测等。计数器:计数器:对引脚T0(P 3.4 )和T1(P3.5.)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。定时器:定时器:对系统晶振振荡脉冲的12分频输出进行计数。 (1)定时器/计数器的结构组成:组成:16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON。 T0: TL0(低8位)和TH0(高8位) T1: TL1(低8位)和TH1(高8位)2MCS-51内部定时器内部定时器/计数器计数器 睛蹄搏烈羚储敛铺秧塞杏哎羌稚怠绢称祁坎判蜕鸡棉酗冀镭檄邦厕撮叠渴第3章MCS-51单片机的内部资源及应用第3章
48、MCS-51单片机的内部资源及应用 8051单片机内部的定时器/计数器的结构如下图所示。考栅如草邯古国霹卯碉辱冰跨五抽惧彬食涕刚硅监榆谦幢箕以眼过鼠卓菩第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(2)控制寄存器TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF0/TF1:T0/1计数溢出标志位。可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。 =1 :计数溢出; =0 :计数未满。TR0/TR1:T0/1启停控制位。 =1 :启动计数; =0: 停止计数。IE0/IE1和IT0
49、/IT1:用于管理外部中断(前面已介绍过)。减辅啃豌蠢间啸本嚷钮棍哗西沙逮叛答患芒哑想酸膏炕峙蜂工牌谦轿右乾第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 M1,M0:工作方式选择位 。 =00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。 C/ :定时方式/计数方式选择位。 = 1:选择计数器工作方式,对T0/T1引脚输入的外部事件的负脉冲计数; = 0 :选择定时器工作方式,对机器周期脉冲计数定时。 如下页图所示。(2)工作方式寄存
50、器TMOD GATE C / T M1 M0 GATE C / T M1 M0T1T2托久涣搞罩瑞聊辨掇撒履蚁堡皱蠢企讽张坏需重布正敷征炭瓦绷神礁课蓉第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用GATE:门控位,定时器/计数器的启/停可由软件与硬件两者控制 = 0 :软件控制,只由TCON中的启/停控制位TR0/TR1控制定时器/计数器的启/停。 = 1 :硬件控制,由外部中断请求信号 / 和TCON中的启/停控制位TR0/TR1组合状态控制定时器/计数器的启/停。 其控制逻辑如下图所示。版受赁蛮疡拄贾皮舀喜雀兑县紊抑咎资怀皆良麻抿摊抱唤烤松昼钱茵预补第3章
51、MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.3.2 3.3.2 定时器定时器/ /计数器的工作方式计数器的工作方式 8051单片机的定时器/计数器共有四种工作模式,现以T0为例加以介绍,T1与T0的工作原理相同,但方式3下T1停止计数。方式(如F0)和用户定义名称等几种方式。1工作方式工作方式0( M1M0=00 ,13位定时器位定时器/计数器)计数器) 由TH0的全部8位和TL0的低5位( TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。2工作方式工作方式1 ( M1M0
52、=01 ,16位定时器位定时器/计数器)计数器) 由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。3工工作作方方式式2 ( M1M0=10 ,自自动动重重装装计计数数初初值值的的8位位定定时时器器/计数器)计数器) 16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。袜唯锦侮账葬埔溜指嗓蜗趁刷讳伦纯减体矿佛吟竣冻珐溃寐滨愿桥靠
53、去济第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用4工作方式3 ( M1M0=11 , 2个8位定时器/计数器,仅适用于T0)TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。 在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。 T0方式3下的T1方式2,因定时初值能自动恢复,用作波特率发生器更为合适。梦择幻叹上甜位雄凄抵伐卧糜炔素咳痰镜拱削迁食汰谆椒坏孕呈搪炬我丧第3章MCS-51单片机的内部
54、资源及应用第3章MCS-51单片机的内部资源及应用 定时器/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数。在应用时,其工作方式和工作过程均可通过程序设定和控制,因此,定时器/计数器在工作前必须先对其进行初始化,计算和设置初值。 1. 定时器定时器T0/T1 中断申请过程中断申请过程 (1)在已经开放T0/T1中断允许且已被启动的前提下,T0/T1加1计满溢出时 TF0/TF1标志位自动置“1” ; (2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序; (3)TF0/TF1标志位由硬
55、件自动清“0”,以备下次中断申请。3.3.3 定时器定时器/计数器的应用计数器的应用 截枯秀陋碴讹川赶殉凰宠蝗资叠民鬼龋苏杏汇婆桓泰迪鄂们悟恢见柿铺鹊第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2. 定时器/计数器初始化的步骤 (1)写TMOD,设置定时器/计数器的工作方式; (2)计算定时器/计数器的初值,写入TH0/TH1、TL0/TL1。 (3)设置IE、IP,以开放相应的中断和设定中断优先级。 3. 定时器/计数器的定时器/计数器范围 (1)工作方式0:13位定时器/计数器方式 最大计数值= 213 = 8192 (2)工作方式1:16位定时器/计数
56、器方式 最大计数值= 216 = 65536 (3)工作方式2和工作方式3:8位的定时器/计数器方式因此, 最大计数值= 28 = 256 唇涤载科哟转恐崖啪宜及拇调聂啸鼎论城咨挎音解凝伯摹匪时往哮俐诚秋第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3. 计数器初值的计算计数器初值的计算 方法:方法:用最大计数量减去需要的计数次数。即: TC=MC 其中:其中:TC计数器需要预置的初值; M计数器的模值(最大计数值); 方式0时,M=213;方式1时,M=216;方式2, 3时,M=28; C计数器计满回0所需的计数值,即设计任务要求的计数值。例如:例如:流水
57、线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为: TC = M C = 213 12=8180宾社檬京宅侨杨睡衣倦忆炕赢圈才陕幌哨骄狮色恼蔷代焊垫惦拙琶伊芯庇第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用4. 定时器初值的计算定时器初值的计算 定时时间的计算公式为:定时时间的计算公式为: T=(MTC)T0 (或TC=MT/T0 )其中:其中:T定时器的定时时间,即设计任务要求的定时时间; T0计数器计数脉冲的周期,即单片机系统主频周期的12倍; M计数器的模值; TC定时器需要预置的初值。 若设初值TC=0
58、,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式工作方式0 0: Tmax=2131s=8.192ms工作方式工作方式1 1: Tmax=2161s=65.536ms工作方式工作方式2 2和和3 3:Tmax=281s=0.256ms路戳阀杏思舵凤讨编徐忽剐木雏戮嚎除忱疯伪临憋煞碘始籍亩徽佰羊嘴趁第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用5. 5. 定时器定时器/ /计数器应用举例计数器应用举例 例例题题 设一只发光二极管LED和8051的P1.0脚相连。当P1.0脚是高电平时,LED发亮;当P1.0
59、脚是低电平时,LED不亮。编制程序用定时器来实现发光二极管LED的闪烁功能,设置LED每1s闪烁一次。已知单片机系统主频为12MHz(这意味着每个时钟周期121/(12100000012=1 s。见p127和p29)。要是主频为11.0592MHz的话,就是12/11.0592 s。解解:定时器/计数器的最长的定时是65.536ms,无法实现1s的定时。可以采用软件计数器来进行设计。帮蚀兔亢榆巨移夜放集艾佯逃街睁坟泥徐趋纸豫跪臆粟巫速砒觉邦拇膘浸第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用设设计计思思想想:定义一个软件计数器单元30H,先用定时器/计数器0做
60、一个50ms的定时器,定时时间到了以后将软件计数器中的值加1,如果软件计数器计到了20,取反P1.0,并清掉软件计数器中的值,否则直接返回。则完成了20次定时中断才取反一次P1.0,因此定时时间就为2050=1000ms=1s。定时器/计数器0采用工作方式1,其初值为: 21650ms/1s=6553650000=15536=3CB0H电路图如下:洽惯臀蔼孝兜炔即啼渡俐致忽灾诬翻衰蔫倚烘柜毯拴揪柑房煌唾濒理剖匠第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用程序如下:程序如下: ORG 0000H AJMP START ; 转入主程序 ORG 000BH ; 定
61、时器/计数器0的中断服务程序入口地址 AJMP TIME0 ; 跳转到真正的定时器中断服务程序处 ORG 0030H START: MOV SP, #60H ; 设置堆栈指针 MOV P1, #0FFH ; 关发光二极管LED(使其灭) MOV 30H, #00H ; 软件计数器预清0 MOV TMOD, # 01H ; 定时器/计数器0工作于方式1 MOV TH0, #3CH ; 设置定时器/计数器的初值 MOV TL0, #0B0H SETB EA ; 开总中断允许 SETB ET0 ; 开定时器/计数器0中断允许 SETB TR0; 启动定时器/计数器0 LOOP: AJMP LOOP
62、; 循环等待(真正工作时,这里可写任意其他程序)想躯捂胸默核冠莹帕规蓄花俭四嗣殴钢忧成牡曝藩为洱父忠火键难属笔辕第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用定时器定时器/ /计数器计数器0 0的中断服务程序如下:的中断服务程序如下: TIME0: PUSH ACC ; 将PSW和ACC推入堆栈保护 PUSH PSW INC 30H ; 软件计数器加1 MOV A, 30H CJNE A, #20, T_LP2 ; 软件计数器单元中的值到了20了吗? 到了,继续执行; 否则,转入T_LP2 T_LP1: CPL P1.0 ; 到了,P1.0取反 MOV 30H
63、, #00H; 清软件计数器 T_LP2: MOV TH0, #3CH; 重置定时器/计数器的初值 MOV TL0, #0B0H POP PSW ; 恢复PSW和ACC POP ACC RETI; 中断返回 END眩抛嗽匠虑氛烩拾曝窘榴业荐厅词俄难吝崎赊逮因徊剂阜糊玻吸毒洪涯场第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 例例题题 设电路图如本课件第10页所示(或见01计本实验ddb图)编制程序,对RAM中某单元内容进行显示。解解:设使用内存70H75H 6个单元存放当前时钟数据,用定时器功能以及数码管动态显示技术可该值显示出来。程序如下:程序如下:;Yan
64、Qing于2006年5月7日调试成功.org 0000hjmp mainorg 001bhjmp displayorg 50hmain: nopmov tmod,#00hmov tl1,#0b0hmov th1,#00h 鼓标骸汝咒匪座宅悄悟凡拖嗡酶鸟绣则撒狄炒赏甭呀装井诽榷笑捎绊穆华第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用setb easetb et1setb tr1mov 70h,#1mov 71h,#2mov 72h,#7mov 73h,#4mov 74h,#5mov 75h,#0sss:jmp sssdisplay:mov r1,#6fhmov
65、r4,#11011111bplay:mov a,r4mov p2,ainc r1mov a,r4rr a 储牵徘呕槐粳棱抚秀紊新厢洽删氮蒙霹慈数抛指淌熏煌骂痢悟歌刽裂系挡第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用mov r4,amov a,r1mov dptr,#tabmovc a,a+dptrmov dptr,#7fffhmovx dptr,adl1ms: mov r6,#14hdl1:mov r7,#19hdjnz r7,$djnz r6,dl1mov a,r4jb acc.7,playretitab:db 0c0h,0f9h,0a4h,0b0h,99
66、hdb 92h,82h,0f8h,80h,90hend锁铺请李恫轮世宜桶揖饰枢吐疯泞戌囱王彭愚口炎枯呆炳羡撅拇乎偷冗话第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 该程序的实用意义在于:不论主程序是怎么运行,该程序的实用意义在于:不论主程序是怎么运行,显示数码管总能显示特定单元的内容,电子钟、温度控显示数码管总能显示特定单元的内容,电子钟、温度控制、制、GPSGPS数据等等都可以使用。只要你把数据送到指定数据等等都可以使用。只要你把数据送到指定的内存单元即可。的内存单元即可。夸颅躯增捍驭施哗杭陀覆亢籽赊赤辨歼粪伏姬丑井蕴瓢溶志甄粘讲单几匈第3章MCS-51单
67、片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.4 MCS-51 3.4 MCS-51 单片机的串行通信单片机的串行通信 3.4.1 3.4.1 概述概述1.1.通信通信 通信:通信:单片机与外界进行信息交换统称为通信。80518051单片机的通信方式有两种:单片机的通信方式有两种:并并行行通通信信:数据的各位同时发送或接收。特点是传送速度快、效率高,但成本高。适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。串行通信:串行通信:数据一位一位顺序发送或接收。特点是传送速度慢,但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。 陵党千斯痢果愈
68、拽义辛棺必槛乡犁韩谈哩梦贬尤队似唉咽窘座务驮舆壶厌第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2. 2. 数据通信的制式数据通信的制式单工方式:单工方式:数据仅按一个固定方向传送;半双工方式:半双工方式:数据可实现双向传送,但不能同时进行;全双工方式:全双工方式:允许双方同时进行数据双向传送;多工方式:多工方式:在同一线路上实现资源共享。 3. 3. 串行通信的分类串行通信的分类 串行数据通信按数据传送方式可分为异步通信和同步通信两种形式:同同步步方方式式:以数据块为单位进行数据传送,包括同步字符、数据块和校验字符CRC。优点是数据传输速率较高,缺点是要求发
69、送时钟和接收时钟保持严格同步。数据格式如下图所示。 同很碰敲谁蚂佬遇渔渣奎点弥靳敲利莆姓蹬砒隐瑞披练数斡绑艰滓蝶栖慰第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用异异步步方方式式:以字符为单位进行数据传送,每一个字符均按固定的字符格式传送,又被称为帧。优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。数据格式如下图所示:臀锅死窝庚雌净兑氮悔润轴筏谱怪径够触托啪父迹霄冷扣烟蒋甜庞无纬狠第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用4. 4. 串行数据通信的波特率串行
70、数据通信的波特率 波特率是指每秒钟传送信号的数量,单位为波特(Baud)。而每秒钟传送二进制数的信号数(即二进制数的位数)定义为比特率,单位是bps(bit per second)或写成b/s(位/秒)。 在单片机串行通信中,传送的信号是二进制信号,波特率与比特率数值上相等。单位采用bps。例如,异步串行通信的数据传送的速率是120字符/秒,而每个字符规定包含10位数字,则传输波特率为: 120字符/秒 10位/字符=1200位/秒= 1200bps润定东羡讫烂气院绅粉亡莹坪牟误泞总栗途坪训勇土毁晌傍拜凿专捏勤裔第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3
71、.4.2 MCS-513.4.2 MCS-51的串行口的串行口 MCS-51单片机内部有一个全双工的串行通信口(P3.0、P3.1) ,既可作UART(通用异步接收/发送器)用,也可作同步移位寄存器使用,还可用于网络通信,其帧格式可有8位、10位和11位,并能设置各种波特率。1 1串行口寄存器结构串行口寄存器结构 (1)两个物理上独立的同名的接收/发送缓冲寄存器SBUF 指令 MOV SBUF,A 启动一次数据发送, 指令 MOV A,SBUF 完成一次数据接收, 即向发送缓冲器SBUF写入数据即可发送数据,从接收缓冲器SBUF读出数据即可接收数据。 (2)输入和输出移位寄存器和控制器等组成。
72、 (3)2个SFR寄存器SCON和PCON,用于串行口的初始化编程。 (4)接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。僚眶泞趴祸涎耙降昨坪亿袄吾赞朽说敬月制糙这嫂遗烫渭余必酗骏叼臭馁第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 SBUF(发)(发)SBUF(收)(收)发送控制器发送控制器 TI接收控制器接收控制器 RI移位寄存器移位寄存器波波特特率率发发生生器器T1 1A累累加加器器(门门)移位寄存器移位寄存器RxD(P3.1)TxD(P3.1)去申请中断去申请中断引脚引脚引脚引脚CPU
73、内内部部 MCS-51串行口的结构如下图所示:棺鹅赛关淫桨主妹咨有稀惰咯左旱摩筏液铬谊苯勋恨姨崎逸住卸狼姥捉价第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2. 串行通信控制寄存器串行通信控制寄存器SCON (98H)SM0 SM1 SM2 REN TB8 RB8 TI R1SM0,SM1:串行口4种工作方式控制位。 =00:方式0,8位同步移位寄存器,其波特率为fosc/12; =01:方式1,10位UART,其波特率为可变,由定时器控制; =10:方式2,11位UART,其波特率为fosc/64或fosc/32; =11:方式3,11位UART,其波特率为
74、可变,由定时器控制。 其中:fosc为系统晶振频率。RI,TI:串行口收/发数据申请中断标志位 1 申请中断; 0 不申请中断。犹努荆支徽逛赌仕驴勇寺脆闭悔墓嘶辐旅悟新东鼎蔼愿抑讲螟烙津踌兔皮第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用RB8:在方式2、3中,用于存放收到的第9位数据;在双机通信中,作为奇偶校验;在多机通信中,用作区别地址帧/数据帧的标志。TB8:方式2、3中,是要发送的第9位数据;在双机通信中,用于对接收到的数据进行奇偶校验;在多机通信中,用作判断地址帧/数据帧,TB8=0 表示发送的是数据,TB8=1 表示发送的是地址。REN:串行口接收
75、允许控制位 = 1: 表示允许接收; = 0: 禁止接收。SM2:串行口多机通信控制位,作为方式2、方式3的附加控制位。篮左贝胆全挛乏腻寡拘倔舶篙翼美襄撞她束缆申濒评甭葬煌诸涸革糖娇群第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3. 中断允许寄存器中断允许寄存器IE(0A8H) 中断允许寄存器IE在3.2.2节中已介绍。其中对串行口有影响的位ES。ES为串行中断允许控制位。 ES=1:允许串行中断; ES=0:禁止串行中断。 4. 4. 电源管理寄存器电源管理寄存器PCONPCON(87H87H) 不可位寻址。 PCON主要用于实现电源控制而设置的专用寄存器
76、,已在1.3.3节中介绍过。其格式如下图所示。SMOD GF1 GF0 PD 1DLSMOD:串行口波特率倍增位 =1:串行口波特率加倍。 =0:串行口波特率不变,系统复位时默认为SMOD=0。兼狞垦步储又驯若切噪本委窄项浮敖烽祈效制叁菌这蹋割酗理羹致备头唱第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.4.3 3.4.3 串行口的工作方式串行口的工作方式 1. 工作方式0( 8位移位寄存器I/O方式)发送/接收过程:SBUF中的串行数据由RxD逐位移出/移入(低位在先,高位在后);TxD输出移位时钟,频率=fosc1/12;每送出/接收8位数据 TI/ R
77、I自动置1;需要用软件清零 TI/ RI 。注意:注意:串行口在方式0下的工作并非是一种同步通信方式,经常配合“串入并出”“并入串出”移位寄存器一起使用,以达到扩展一个并行口的目的。 扩展电路如下图所示。爸咖褥惭叛鼎枕付犁扰钒用浦烟板誓怨漳驾寥谓减砂卑俄旋舍震耍模众庙第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用如要发送数据,查询方式的程序如下: MOV SCON,#00H ;串行口方式0 MOV SBUF,A ;将数据送出 JNB TI,$ ;等待数据发送完毕 CLR TI ;为下次发送作准备注意:注意:复位时,SCON 已经被清零,缺省值为方式0。发送条件
78、:发送条件:TI=0。接收条件接收条件:TI=0,置位 REN=1 (允许接收数据)。2. 方式方式1 (波特率可变的波特率可变的10位异步通信方式位异步通信方式 )发送发送/ /接收数据的格式:接收数据的格式:一帧信息包括1个起始位0,8个数据位和1个停止位1。发送发送/ /接收过程:接收过程:SBUF中的串行数据由RXD逐位移出/移入;TXD输出移位时钟,频率= (2SMOD/32)T1的溢出率,波特率可变。每送出/接收8位数据 TI/ RI自动置1;需要用软件清零 TI/ RI 。工作时,发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。发送发送/ /接收条件:
79、接收条件:同方式0。拖裁镇堪魁简熬都待住影蜒球熄把饭挎苏棕紊土钥驻舵桅拾奢弊试惜布凋第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3. 方式方式2(固定波特率的固定波特率的11位异步接收位异步接收/发送方式发送方式)发发送送/ /接接收收过过程程:方式2的接收/发送过程类似于方式1,所不同的是它比方式1增加了一位“第9位”数据(TB8/RB8),用于“奇偶校验”。方式2常用于单片机间通信。波特率 = fosc 2SMOD/64 。发送发送/ /接收条件:接收条件:同方式0。3. 方式方式3(可变波特率的可变波特率的11位异步接收位异步接收/发送方式发送方式)
80、方式3和方式2唯一的区别是波特率机制不同,方式3的波特率=(2SMOD/32)T1的溢出率。译滇绎躁汲审引膛泥即脏偷僵嘶灯庐邢别懊豢婴噬播走棘幕技员缠介弟渗第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用奇偶校验:奇偶校验:奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。即如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。奇校验规定:奇校验规定:8位有效数据连同1位附加位中,二进制“1”的个数为奇数。偶校验规定:偶校验规定:8位有效数据连同1位附加位中,二进制“1”的个数为偶数
81、。约定发送采用约定发送采用奇校验:奇校验:若发送的8位有效数据中“1”的个数为偶数,则要人为在附加位中添加一个“1”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为在附加位中添加一个“0”一起发送。约定接收采用约定接收采用奇校验:奇校验:若接收到的9位数据中“1”的个数为奇数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为偶数,则表明接收出错!应当进行出错处理。 采用偶校验时,处理方法与奇校验类似。啸没荣嘉刚河貉耪苔贱癣如双陨雁舅袱涅启窗尾诈鞠辑暗劲妆瓣铃切梭裳第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.4.4 3.
82、4.4 串行口的通信波特率串行口的通信波特率 串行口的通信波特率恰到好处地反映了串行传输数据的速率。在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率(T1溢出信号的频率)控制。各种方式的通信波特率如下:方式方式0:波特率固定为fosc/12。 其中:其中:fosc系统主机晶振频率方式方式2:波特率由PCON中的选择位SMOD来决定,可由下式表示: 波特率=(2SMOD/64)fosc 方式方式1和方式和方式3:波特率是可变的,由定时器T1的溢出率控制。波特率为: 波特率=(2SMOD/32)定时器T1溢出率 T1溢出率=T1计
83、数率/产生溢出所需的周期 = (fosc/12)/(2KTC) 其其中中:K定时器T1的位数,定时器T1用作波特率发生器时,通常工作在方式2, 所以T1的溢出所需的周期数= 28TC。 TC定时器T1的预置初值。淫诺越素囊氛乏戍剩往孕懈镊棒稀软片甫漆街予塌务郊翻典融绰祷烃浑行第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 下表列出了定时器T1工作于方式2的常用波特率及初值。 定时器的工作方式2是自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。讽蕉渍钻债皋逞砍虚累搅垄版娘稼买粕诱锭凳挂筹琢迢侥锁谩恶究腹帛木第3章MCS-51单片机的内部资
84、源及应用第3章MCS-51单片机的内部资源及应用为什么51系列单片机常用11.0592MHz的晶振设计? 因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。用11.0592MHz可以得到准确的数值,而用12MHz就不能得到整数数值。通信是一定要准确发送和接受的,否则积累误差就会产生。搏汲蓖坏咎捞讯感稼究琢辙柬舞粤角宇遂祝讲竹址炼哀滋琵瘸贯哆佣桃迹第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 常用波特率通常按规范取常用波特率通常按规
85、范取12001200、24002400、48004800、96009600、,若采用晶振若采用晶振12MHz12MHz和和6MHz6MHz,则计算得出的,则计算得出的T1T1定时初值将不是一定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。个整数,产生波特率误差而影响串行通信的同步性能。解决解决的方法只有调整单片机的时钟频率的方法只有调整单片机的时钟频率foscfosc,通常采用,通常采用11.0592MHz11.0592MHz晶振。晶振。方式方式1 1波特率可变,由定时波特率可变,由定时/ /计数器计数器T1T1的计数溢出率来决定。的计数溢出率来决定。波特率波特率 = 2SMO
86、D = 2SMOD(T1T1溢出率)溢出率)/ 32/ 32其中其中SMODSMOD为为PCONPCON寄存器中最高位的值,寄存器中最高位的值,SMOD=1SMOD=1表示波特率倍表示波特率倍增。增。在在实实际际应应用用时时,通通常常是是先先确确定定波波特特率率,后后根根据据波波特特率率求求T1T1定定时初值,因此上式又可写为:时初值,因此上式又可写为:T1T1初值初值 = 256 = 256 2 2SMODSMOD3232foscfosc12 12 波特率波特率枢碧泥蛛街嫁房佐爆多暂露厨裤乳儡任裁文挽坏檀洋负坏腑避氦胳矩桓蹲第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内
87、部资源及应用【例题】设晶振fosc为11.0592MHz,选定定时器工作方式2,求4800bps、9600bps时的初值。解:定时器方式2的初始值X的公式经过推导可得到: X 256fosc(SMOD1)/(384波特率) 故: X1256(11.05921061)/(3844800) = FAH X2 256(11.05921061)/(3849600) = FDH 看得出来,采用11.0592MHz全是整数值结果,而采用12MHz则不是整数结果。网上可以找到程序来快捷计算:51初值设定恫妄再曰综晾迅疽资碧体兄威峻迅宛茬租驼孩提己假鲸奄柴嘎由勘乎瑚伶第3章MCS-51单片机的内部资源及应用第
88、3章MCS-51单片机的内部资源及应用3.4.5 3.4.5 串行口的应用串行口的应用 1 1串口方式串口方式0 0应用编程应用编程 例题例题66 用8051串行口外接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,要求发光二极管呈流水灯状态(轮流点亮)。 解:解:硬件连接电路如下图所示。死摧阮卞甥理很鞭辟明杂坑氦革殷晶拌遁害谎禁谎嚷清恢竿寿慨罩控却隅第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 在开始通信之前,应先对控制寄存器SCON进行初始化。将00H送SCON即设置方式0。数据传送采用查询方式,通过查询TI的状态,来决定是否发送下一
89、帧数据。在串行接收时,通过对RI查询来确定何时接收下一帧数据。程序如下: ORG 1000H START: MOV SCON, #00H; 置串行口工作方式0 MOV A, #80H ; 最高位灯先亮 CLR P1.0 ; 关闭并行输出 OUT0: MOV SBUF, A ; 开始串行输出 OUT1: JNB TI, OUT1; 输出完否?未完,等待;完了,继续执行 CLR TI ; 完了,清TI标志,以备下次发送 抢邢屡奎键曲贵睁镣呕术科劲题殊蝇吃院弄忽犯垛彼应晌懂速斥涨邓殊稼第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 SETB P1.0; 打开并行口输
90、出 ACALL DELAY; 延时一段时间 RR A ; 循环右移 CLR P1.0; 关闭并行输出 SJMP OUT0 ; 循环 DELAY: MOV R7, #250 ; 延时子程序 D1: MOV R6, #250 D2: DJNZ R6, D2 DJNZ R7, D1 RET END悦哀亿奎吮帛叙霓清宿阴氟帮曰掷花直迸液磷伪笔汽偶夕勒钞盛乏并霜奥第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2双机通信双机通信 双机通信的硬件连接图如下图所示。 菜裔洲纠观辞外况崔膊盆挛碌疆蛛刮沼戎谴滁错豫冕址钡剑涩簿澳规嫉可第3章MCS-51单片机的内部资源及应用第3章
91、MCS-51单片机的内部资源及应用通信协议如下:通信协议如下: 设1号机是发送方,2号机是接收方。采用串行口方式1进行通信,一帧信息为10位,其中有1个起始位、8个数据位和1个停止位;波特率为2400bps,T1工作在定时器方式2,单片机时钟振荡频率选用11.0592MHz,查表3.4.3可得TH1=TL1=0F4H,PCON寄存器的SMOD位为0。 当1号机发送时,先发送一个“E1”联络信号,2号机收到后回答一个“E2”应答信号,表示同意接收。当1号机收到应答信号“E2”后,开始发送数据,每发送一个字节数据都要计算“校验和”,假定数据块长度为16个字节,起始地址为40H,一个数据块发送完毕后
92、立即发送“校验和”。2号机接收数据并转存到数据缓冲区,起始地址也为40H,每接收到一个字节数据便计算一次“校验和”,当收到一个数据块后,再接收1号机发来的“校验和”,并将它与2号机求出的校验和进行比较。若两者相等,说明接收正确,2号机回答00H;若两者不相等,说明接收不正确,2号机回答0FFH,请求重发。1号机接到00H后结束发送。若收到的答复非零,则重新发送数据一次。程序框图如下页图所示。扣麓踌仅譬叉哑祖邯存碌秧陆瞥桌术廖鼠哥抖尤抡部觅克麓摧直限烷弓粘第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用帘悸瞳蒲阵窑图萎腰幸邮想奈痴芭扮煤大艾一愈悍哮料迂崭狡箭啃压阿
93、恼第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 发送程序如下:发送程序如下: ORG 1000H ASTART: CLR EA MOV TMOD, #20H; 定时器1置为方式2 MOV TH1, #0F4H; 装载定时器初值,波特率2400 MOV TL1, #0F4H MOV PCON, #00H SETB TR1; 启动定时器 MOV SCON, #50H ; 设定串口方式1,且准备接收应答信号 ALOOP1: MOV SBUF, #0E1H ; 发联络信号 JNB TI, $; 等待一帧发送完毕 CLR TI ; 允许再发送 JNB RI, $; 等
94、待2号机的应答信号 CLR RI ; 允许再接收 MOV A, SBUF ; 2号机应答后,读至A XRL A, #0E2H; 判断2号机是否准备完毕 JNZ ALOOP1; 2号机未准备好,继续联络 营仆扼淬囱束吩柏糙噬络扩债醚毁或零踞窥舰碌淀闻橡母钙晶喘颂泞口裂第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 ALOOP2: MOV R0, #40H; 2号机准备好,设定数据块地址指针初值 MOV R7, #10H; 设定数据块长度初值 MOV R6, #00H; 清校验和单元 ALOOP3: MOV SBUF, R0 ; 发送一个数据字节 MOV A, R
95、6 ADD A, R0 ; 求校验和 MOV R6, A; 保存校验和 INC R0 JNB TI, $ CLR TI DJNZ R7, ALOOP3; 整个数据块是否发送完毕 MOV SBUF, R6; 发送校验和 JNB TI, $ CLR TI JNB RI, $; 等待2号机的应答信号 CLR RI MOV A, SBUF; 2号机应答,读至A JNZ ALOOP2 ; 2号机应答“错误”,转重新发送 RET; 2号机应答“正确”,返回 END龟梦房俯惠侄荣秸捷埃矿哪嵌蚌辆神馅屈钥时鲍淬大抹袋随乔得邯愈技庶第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用
96、接收程序如下接收程序如下: : ORG 1000H BSTART: CLR EA MOV TMOD, #20H MOV TH1, #0F4H MO V TL1, #0F4H MOV PCON, #00H SETB TR1 MOV SCON, #50H; 设定串口方式1,且准备接收 BLOOP1: JNB RI, $ ; 等待1号机的联络信号 CLR RI MOV A, SBUF; 收到1号机信号 XRL A, #0E1H; 判断是否为1号机联络信号 JNZ BLOOP1 ; 不是1号机联络信号,再等待 MOV SBUF, #0E2H; 是1号机联络信号,发应答信号 JNB TI, $ CLR
97、TI MOV R0, #40H ; 设定数据块地址指针初值 MOV R7, #10H ; 设定数据块长度初值 MOV R6, #00H; 清校验和单元矮窿泵桑纂坠雾哄眺咸婶号玫天零益怜塔烈茬嫁伍莉人询蛊拇江姚捻曙呛第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 BLOOP2: JNB RI, $ CLR RI MOV A, SBUF MOV R0, A; 接收数据转储 INC R0 ADD A, R6 ; 求校验和 MOV R6, A DJNZ R7, BLOOP2 ; 判断数据块是否接收完毕 JNB RI, $ ; 完毕,接收1号机发来的校验和 CLR RI
98、 MOV A, SBUF XRL A, R6 ; 比较校验和 JZ END1 ; 校验和相等,跳至发正确标志 MOV SBUF, #0FFH ; 校验和不相等,发错误标志 JNB TI, $ ; 转重新接收 CLR TI END1: MOV SBUF, #00H RET END址匈春怀窑迭滴舟雀只滤狗性的胺澄参媳薄街谣盘猜懊臭溉医醒白现钓粉第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3 3多机通信多机通信(1)硬件连接 单片机构成的多机系统常使串行口工作在方式2和方式3,采用总线型主从式结构(一个是主机,其余的是从机,从机要服从主机的调度、支配)。有时还要对
99、信号进行光电隔离、电平转换等。在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输。简单的硬件连接如下图所示(图中没有画出RS-485接口)。洲暂穗琴郧郎蚤端砰猾边乳撕端歌聋姻娜旅思假乃用欠览泵颧羌杯秩涩刊第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用(2)通信协议主机置SM2位0,所有从机的SM2位置1,处于接收地址帧状态。 主机发送一地址帧,其中,8位是地址,第9位为1表示该帧为地址帧。 所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并把本站地址发回主机作为应答;
100、对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志。主机接收数据时先判断数据接收标志(RB8),若接收帧的RB8=0,则存储数据到缓冲区,并准备接收下帧信息。若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,命令该从机重发数据。 发送数据。咨脾虹安场猩栋泳锁濒艇诫嫉烤扛什嘎萌献综金黑喊凋罐外诚丽搓蹋踞巷第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用主机收
101、到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。 从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。(3)应用程序设计设主机发送的地址联络信号为:00H,01H,02H,(即从机设备地址),地址FFH为命令各从机复位,即恢复SM2=1。主机命令编码为:01H,主机命令从机接收数据;02H,主机命令从机发送数据。其他都按02H对待。程序分为主机程序和从机程序。约定一次传递数据为16个字节。 程序清单见教材(略)。 桔鸽颂莫张启襄女逞茬柠村罩迹愈卉采惠至逢递吾沼茨拐振趣济奈耀断羹第3章MCS-51单
102、片机的内部资源及应用第3章MCS-51单片机的内部资源及应用4 4单片机与单片机与PCPC的通信的通信 1台PC既可以与1个8051单片机应用系统通信,也可以与多个8051单片机应用系统通信;可以近距离也可以远距离。单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和通信距离不同的接口等处理技术。 其硬件连接电路如下图 所 示 。 在 Windows的 环 境 下 , 可 使 用 VB通 信 控 件(MSComm)却可以很容易实现PC机与单片机之间的通信。 戴忻卖锋郊润溉吓馒慰吧埃傣滴莽容黎洽嚏章敬趴浪订送识条总噪河吴焊第3章MCS-51单片机的内部资源及应用第3章MCS-51单
103、片机的内部资源及应用单片机程序如下:单片机程序如下: ORG 3000H MAIN: MOV TMOD, #20H ; 在11.0592MHz下,串行口波特率 MOV TH1, #0FDH ; 9600bps,方式3 MOV TL1, #0FDH MOV PCON, #00H SETB TR1 MOV SCON, #0D8H LOOP: JBC RI, RECEIVE ; 接收到数据后立即发出去 SJMP LOOP RECEIVE: MOV A, SBUF MOV SBUF, A SEND: JBC TI, SENDEND SJMP SENDSENDEND: SJMP LOOP END狱皋鞋辖
104、猾葬益骏价闽凿组模鸽干愚多胖昔眠含积果凳省台泉敛酌甸轧绸第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用PC程序如下:(程序如下:(VB语言)语言) Sub Form_Load() MSComm1.CommPort=2 MSComm1.PortOpen=TURE MSComm1.Settings=9600, N, 8, 1 End Sub Sub command1_Click() Instring as string MSComm1.InBufferCount=0 MSComm1.Output=A Do Dummy=DoEvents() Loop Until(M
105、SComm1.InBufferCount2) Instring=MSComm1.Input End Sub Sub command2_Click() MSComm1.PortOpen=FALSE UnLoad Me End Sub垢某奉蝗碉呻痢圃予党天宝姑敲武秃鄙牺龙癸碳臻螺牺炎盈音等杆诸锅是第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3.4.5 3.4.5 串行芯片串行芯片MAX232MAX232的应用的应用3.4.5.1 EIA RS-232C总线标准与接口电路总线标准与接口电路 EIA RS-232C是异步串行通信中应用最广泛的标准总线,是美国EIA(
106、Electronic Industries Association,电子工业联合会)开发公布的通信协议。适合于数据传输速率在020kb/s范围内的通信,包括了按位串行传输的电气和机械方面的规定。在微机通信接口中被广泛采用。 其特点为: (1)采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的; (2)采用负逻辑。 (3)适用于传送距离不大于15m,速度不高于20kb/s的本地设备之间通信的场合。载花痕猩福廷烙宫珊抖肤摄艺菊济坞鹤句交写熊什润梆原狐未疲种糕焊达第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用2. 连接器连接器(1)DB-25连接器
107、DB-25型连接器的外形及信号线分配如图右所示。25芯RS-232C接口具有20mA电流环接口功能,用9, 11, 18, 25针来实现。(2)DB-9连接器 DB-9连接器只提供异步通信的9个信号,其外形及信号线分配如图右所示。 DB-25与DB-9型连接器的引脚分配信号完全不同。葫物芬新满琳故除叛杀搓饱翱午搏照捻锗幢势仅撵牺涎梅惰鳃屯凿序违涣第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用3. RS-232C的接口信号的接口信号RS-232C标准接口有25条线,其中常用的有如下几条: DSR:数据装置准备好; DTR:数据终端准备好;RTS:请求发送; CT
108、S:允许发送;DCD:接收线信号检出; RI:振铃指示;TXD:发送数据; RXD:接收数据; SGND、PGND:地线,SGND(信号地)、PGND(保护地)。绑比那夷曳殉憾唬鸥侯直罩菜吻倦苫缺硝置拽娟用丛羔岭窖贤筐胀晶仕哀第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用4电平转换电平转换 RS-232C采用负逻辑,为了能够同计算机接口或终端的TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换。常用的转换器件是MAX232CPE(16),(完成TTL到EIA的双向电平转换)。 MAX232芯片是Maxim公司生产的低功耗、单电源、双R
109、S-232发送/接收器,可实现TTL到EIA的双向电平转换。其引脚排列如下图所示。 MAX232芯片内部有一个电荷泵,可以把5V电源变换成10V电压,所以采用此芯片的串行通信系统只需要单一的5V电源就可以。这也是它最大的优点。 日签聊舶撼敛蛔乱龚终芦漠续治傍厉物卧肢功童鹤俺屏邦凶锰切采谎乐犊第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用 5. EIA RS-232C5. EIA RS-232C与单片机系统的接口与单片机系统的接口 RS-232C与单片机系统的接口电路如图下所示。MAX232外围的4个电解电容Cl, C2, C3, C4,是内部电源转换所需电容,
110、其取值均为1F/25V,C5为0.1F的去耦电容。MAX232的引脚T1IN, T2IN, R1OUT, R2OUT为接TTL/CMOS电平的引脚,引脚T1OUT, T2OUT, R1IN, R2IN为接RS-232C电平的引脚。 所以,T1IN, T2IN引脚应与MCS-51的串行发送引脚 TXD相 连 接 。 R1OUT, R2OUT应与MCS-51的串行接 收 引 脚 RXD相 连 接 。T1OUT, T2OUT应与PC机的接收端RD相连接。R1IN, R2IN应与PC的发送端TD相连接。 嫌潦仰骗仰薪痒第聚虏达良狗糜彦拾苞形苇莫横妥杉虱监蛾贷根喘肛愧极第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用实际设计的电路图如下:哼剪摧讯疵杖仇竖泼巩乞菠万寇征烁寇箭祖斑痒舒彪压鹿哎席排呛陡捍疾第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用作业与练习:3.1 3.3 3.4 3.53.6 3.83.9 3.123.13 3.153.18 3.213.24 3.253.27 3.283.31 3.33怕辅哭司载逾陇缩睫凶绢茬瞳厚淫但熄堂咬逞副冒渍春鸿蚌嗓雁煌郊李笼第3章MCS-51单片机的内部资源及应用第3章MCS-51单片机的内部资源及应用