单片机教学SP-28USB单片机开发系统j3_第1页
单片机教学SP-28USB单片机开发系统j3_第2页
单片机教学SP-28USB单片机开发系统j3_第3页
单片机教学SP-28USB单片机开发系统j3_第4页
单片机教学SP-28USB单片机开发系统j3_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,第三讲:I/O,中断,定时与串口,本讲重点: 接口概念,单片机的编址与译码方法; 中断概念,响应条件,处理原则,中断服务; 定时器/计数器工作方式1,2的用法; 串行通讯的波特率, 4种工作方式.,一步一步教你学单片机之:3, TEL第五章 I/O,中断,定时与串行通信,I/O接口的作用/功能/定义,数据性质不同,数据协议/格式不同,速度不一致,所需功率/电平不匹配,所需测控点数量不匹配,计算机/单片机与外设之间起桥梁作用的 电路或部件接口(interface)。 协调两者间的差异。,本课程中讲到的接口可以是,口地址 可寻址的寄存器/端口 地址由选用的地址线条数与

2、地址线名决定,接口与端口,地址线条数n决定:寻址范围 = 2n MCS-51寻址范围 = 216 = 65536 = 64K字节 地址线在地址总线中的序名决定具体地址 一个端口可能有多个口地址; 一个口地址只能唯一地指向某个端口。,器件,功能模块,电路板卡,设备/装置 ,站在单片机/计算机一侧来看待上述过程叫编址。 站在单片机/计算机外侧来看待上述过程叫译码。,接口地址的编址/译码/寻址概念(P125): 通过适当的地址线(或控制线,或I/O线), 物理上形成某个或某些片选/使能等信号, 实现与接口对象的一一对应的过程。,通过软件与译码电路硬件实现对外设的片选或使能控制过程叫寻址。,编址是设计

3、过程(在先) 译码和寻址是应用过程(在后),对I/O与存储器编址通常有两种方式: 独立编址方式: I/O与存储器分别编址 (例如IBM-PC) 统一编址方式: I/O与存储器合在一起编址(单片机应用系统),编址有两种方式,单片机对外部器件实现一一对应的“片选”通常要用单片机的地址总线A15A0中的部分或全部,甚至也可以用某些I/O线。,A15 A14 A13 A12 A11 A10 A9 A8,P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0,P0口是低8位地址与数据复用口,线选寻址与译码寻址 (P109),A7/D7 A6/D6 A5/D5 A4/D4 A3/D

4、3 A2/D2 A1/D1 A0/D0,P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0,P2口是高8位地址口。,P2.7,P2.5,P2.6,P0口,/CE,/CE,/CE,P2.2-2.0,RAM (2K),A10 A9 A8,P2.5 做 RAM 片选线 (0000H07FFH) P2.2,P2.1,P2.0与P0口共同寻址 2K字节存储单元 地址范围: XX0X X000 0000 0000 XX0X X111 1111 1111, 线选寻址:用一条或几条地址线对外寻址,MCS-51单片机,AD7-0,D7-0,D7-0,Q7-0,Q7-0,P2.7,P2

5、.5,P2.6,P0口,/CE,/CE,/CE,P2.2-2.0,RAM (2K),A10 A9 A8,P2.7 做输出锁存器的片选线 地址范围:0XXX XXXX XXXX XXXX,MCS-51单片机,AD7-0,D7-0,D7-0,Q7-0,P2.6 做输入缓冲器的片选线 地址范围:X0XX XXXX XXXX XXXX,锁存器,缓冲器,(例:7FFFH),(例:0BFFFH),P2.7,P2.5,P2.6,/CE,/CE,/CE,常用译码器件: 74LS138:3-8译码器, 译码寻址:用地址线加译码器件对外寻址,P0.7-P0.0,74LS138,Y0,A,B,C,G G2A G2B

6、,0#,1#,2#,7#,+5V,MCS-51,Y1,Y2,Y7,/CE,74LS139:双2-4译码器,单片机的中断系统,数据的输入/输出传送方式,查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待,中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送,无条件传送方式: 一方对另一方来说总是准备好的,直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转,第五章 I/O,中断,定时与串行通信,数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意

7、传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。,中断功能强弱是计算机性能优劣的重要标志 提高CPU效率 解决速度矛盾 实现并行工作 应付突发事件,中断传送方式特点 (P.128),中断源 中断申请 开放中断 保护现场 中断服务 恢复现场 中断返回,中断涉及的几个环节,(前面提到的甲方) (甲方发出信号提出申请) (乙方同意传送) (安排好当前的工作) (响应乙方的要求) (完事后,回去) (继续做打断前的工作),单片机的中断源及TCON,CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。,51子系列允许5

8、个(52子系列6个)中断源: 2个外部中断请求:INT0,INT1 2个片内定时器/计数器T0和T1中断请求: TF0,TF1,(TF252子系列有T2) 1个串行口中断请求:TI/RI,CPU识别中断申请的依据:,单片机的中断源及TCON,CPU 在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。,CPU识别中断申请的依据:,Tc,Ts,Tm,Tm,Tc=1/fosc Ts=6Tc Tm=12Tc=6Ts,S5,S6,S4,S3,S2,S5,S6,S4,S3,S2,S1,此图见P.40,定时器控制寄存器TCON (88H),TF1 TR1 TF

9、0 TR0 IE1 IT1 IE0 IT0,TCON,TF0/TF1:定时器溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,进中断后自动清零。,TR0/TR1:定时器运行启停控制位: =0:定时器停止运行; =1:定时器启动运行。,TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断),定时器控制寄存器TCON (88H),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON,IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。,IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0

10、/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效.,TCON:Timer控制寄存器,低4位管理外部中断,在CPU已经开放了外部中断允许的前提下: 在INT0/INT1引脚输入一个负脉冲或低电平, TCON寄存器中的IE0/IE1标志位自动变“1”, 检测到IE0/IE1变“1”后,将产生指令: LCALL 0003H(/0013H)执行中断服务程序, 并将IE0/IE1标志位自动清“0”,以备下次申请。,外部中断(INT0,INT1)申请过程,单片机的中断矢量与优先级 (P.130),中断矢量: MCS-51单片机的 5 个中断源分别对应有各自的中断

11、服务程序入口地址中断矢量,最高优先级 最低优先级, PT2 PS PT1 PX1 PT0 PX0,IP,PX0/PX1:INT0/1优先级控制位: =0 时属低优先级; =1 时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位: =0 时属低优先级; =1 时属高优先级。 PS1:串行口中断优先级控制位: =0 时属低优先级; =1 时属高优先级。,中断优先级控制寄存器IP (0B8H),对同时发生多个中断申请时: 不同优先级的中断同时申请(很难遇到) 先高后低 相同优先级的中断同时申请(很难遇到) 按序执行 正处理低优先级中断又接到高级别中断 高打断低 正处理高优先级中断又

12、接到低级别中断 高不理低,中断优先级处理原则,(P.131),没有同级的中断或更高级别的中断正在处理;,在中断源提出了中断申请且CPU此前已经允许中断的前提下,还须满足以下三个条件:,正在执行的指令必须执行完最后 1个机器周期;,若正在执行RETI,或正在访问IE或IP寄存器,须执行完上述指令和下一条指令以后方能响应中断。,EA ET2 ES ET1 EX1 ET0 EX0,IE,中断允许寄存器IE (0A8H),EX0/EX1/ET1/ET0/ES 位: 分别是INT0/1,Timer0/1,串行口的中断允 许控制位: =0 时禁止中断; =1 时允许中断。 ET2:T2中断允许控制位(仅5

13、2子系列有) =0 时禁止中断; =1 时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。,中断系统硬件结构 (P.132),注:各中断允许控制位=0,开关断开; =1,开关接通,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,外部中断 请求0,外部中断 请求1,内部 定时器0,内部 定时器1,内部 串行口,T,R,RI,IE寄存器,EA位,IP寄存器,各单路开关,总开关,中断源标志位查询机构,高中断级中断请求,低中断级中断请求,中断入口,中断源标志位,INT0,INT1,中断入口,中断源标志位,外部中断及中断请求的撤除 (

14、P.133),低电平/负脉冲INT0/INT1引脚可触发中断,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON (88H),IT0/IT1:INT0/1的触发方式选择位: IT0/IT1 =0 时,INT0/INT1是低电平有效; IT0/IT1 =1 时,INT0/INT1是负跳变有效。,低电平触发 引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,将再次中断。,负脉冲触发 CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU 可记忆申请、可自动撤除中断申请。,外部低电平中断的撤除,外来的低电平反相CLK端

15、产生上跳沿 D端的“0”打到Q端申请中断,INTx,P1.0,CLK,S,Q,D,外来中断申请信号(低电平),MCS-51,74LS74,S=0 则 Q=1,中断返回前对P1.0送“0” 令Q端变为“1” 指令如下: ANL P1,#0FEH = CLR P1.0 ;令Q端置“1” ORL P1, #01H = SETB P1.0 ;令S端置“1”,以免下次中断来时Q端不能变“0”,中断应用前后要做的几项工作,中断前 开中断允许:必须 选择优先级:根据需要选择,可有/可无 设置控制位:INTx触发方式(ITx) TxTCON,TMOD,TRx,初值 RI/TISCON,REN,RB8,TB8,

16、中断后 进入中断服务后:保护现场,关中断, 退出中断服务前:恢复现场,开中断,设Tx的初 值,清TI/RI, 中断服务程序的最后一条指令必是 RETI,中断应用程序举例:,P134例2:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。,此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。,中断应用程序举例:,P134例2:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。 已知: (B)=01h,要求采用边沿触发,低优先级。,此例的实际意义:在INT1引脚接一

17、个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。,P1.0 P1.7,INT1,300,ORG 0000H (P.134) LJMP MAIN ORG 0013H ;中断矢量 LJMP INT MAIN:SETB EA ;开总中断允许“开关” SETB EX1 ;开分中断允许“开关” CLR PX1 ;0 优先级(也可不要此句) SETB IT1 ;边沿触发 MOV B,#01H ;给 B 寄存器赋初值 HERE:SJMP HERE ;原地等待中断申请,INT:MOV A,B ;自B寄存器中取数 RL A ;左环移一次 MOV B,A ;存回B,备下次取用 (

18、MOV P1,A) ;输出到P1口 RETI ;中断返回,中断服 务程序,单片机的定时/计数器,2个16位定时器/计数器 (52系列有3个16位Timer) 定时器:对片内机器时钟(周期方波)进行计数 计数器:对Tx引脚输入的负脉冲进行计数,与Timer工作有关的特殊功能寄存器: TCON 和 TMOD,第五章 I/O,中断,定时与串行通信 P.135,Timer的2个特殊功能寄存器(TCON,TMOD),TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,定时器控制寄存器TCON (88H) P.137,TFx: Timer0/1计数溢出标志位。 =1 计数溢出; =0 计数未满

19、 TFx标志位可用于申请中断或供CPU查询。 在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。,TRx: Timer0/1运行控制位。 =1 启动计数; =0 停止计数,TR0/TR1:Timer0/1运行控制位: TR0/TR1 =0 时,Timer0/1停止计数 TR0/TR1 =1 时,Timer0/1启动计数,定时器T0/T1 中断申请过程, 在已经开放T0/T1中断允许且已被启动的前提下: T0/T1加满溢出时 TF0/TF1标志位自动置“1” 检测到TCON中TF0/TF1变“1”后,将产生指令: LCALL 000BH/LCALL 001BH 执行中断服务程序, T

20、F0/TF1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON (88H),GATE C / T M1 M0 GATE C / T M1 M0,定时器方式寄存器TMOD (89H) P.137,T1,T0,M1,M0:工作方式定义位 ( 定义4 种方式 ):,C/T :计数器/定时器选择位 = 1 外部事件计数器。对Tx引脚的负脉冲计数; = 0 片内时钟定时器。对机器周期脉冲计数定时,0 0:13位 Timer用它无益,不要记它! 0 1:16位

21、 Timer经常用到 1 0:可自动重装的 8位 Timer经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 因为没有带来甚麽好处,几乎无用,GATE C / T M1 M0 GATE C / T M1 M0,T1,T0,GATE门控位: Timer可由软件与硬件两者控制 GATE = 0 普通用法 Timer的启/停由软件对TRx位写“1”/“0”控制,定时器方式寄存器TMOD(续),(89H), GATE = 1 门控用法 Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制,阅读书上定时器应用程序举例:,P.140例1: 晶振

22、=6MHz,估算Timer的定时时长 (max,min) P.141例2: 要求对T0产生100mS定时进行初始 化。 (晶振=6MHz) P.141例3: 产生T=2mS方波(改为方式2) P.142例4: 请改为方式1或2再阅读,务请大家 不要陷入方式0的困惑之中! P.143例5: 定时1 秒 P.144例6: 方式3(双8位定时器)的应用,定时器结构与工作方式 P.139,工作方式1:16位的定时/计数器,振荡器,12,TLx THx (8位) (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,选 T0 方式 1 MOV TH0, #3CH ;赋初值高8位 MO

23、V TL0, #0B0H ;赋初值低8位 SETB TR0 ;启动 T0定时 若需要定时器0产生中断还应当写如下语句: SETB ET0 ;开T0中断允许 SETB EA ;开总中断允许 以及相应的中断服务程序。,工作方式2:8 位自动重装的定时/计数器,振荡器,12,TLx (8位),TFx,申请中断,Tx端,TRx位,GATE位,INTx端,1,P.143例5 AJMP MAIN ORG 001BH AJMP TINT ;见下一页 MAIN: MOV TMOD,#10H ;选T1方式1 MOV TH1, #3CH ;赋初值3CB0H=15536(只能定100mS) MOV TL1,#0B0

24、H MOV 30H,#10 ;软件计数单元30H 初值=10 CLR F0 ;芯片复位时已经是“0”,此句可有可无 SETB ET1 ;开T1中断 SETB EA ;开总中断 SETB TR1 ;启动T1 HERE: JBC F0,TIMEUP ;原地等待“1秒到”的标志 F0 AJMP HERE TIMEUP:(do something) ;定时1秒到了以后要做的事情 AJMP HERE,中断服务在主程序中,长定时举例(续):,ORG 0000H AJMP MAIN ORG 001BH AJMP TINT MAIN: TINT:DJNZ 30H,RTN ;若中断不到10次就返回 SETB F

25、0 ;已经中断够10次了“置1”标志位 MOV 30H,#10 ;为下一个1秒定时做准备 RTN: MOV TH1,#3CH ;再赋定时100mS的初值3CB0H MOV TL1,#0B0H RETI ;中断返回 END,将此例的中断服务改写在中断服务程序中:,ORG 0000H AJMP MAIN ORG 001BH AJMP TINT ;见下一页 MAIN: MOV TMOD,#10H ;选T1方式1 MOV TH1,#3CH ;赋初值3CB0H=15536(只能定100mS) MOV TL1,#0B0H MOV 30H,#10 ;软件计数单元30H 初值=10 CLR F0 ;芯片复位时

26、已经是“0”,此句可有可无 SETB ET1 ;开T1中断 SETB EA ;开总中断 SETB TR1 ;启动T1 HERE: AJMP HERE ;原地等待中断,长定时举例(续):,ORG 0000H AJMP MAIN ORG 001BH AJMP TINT MAIN: TINT:DJNZ 30H,RTN ;若中断不到10次就返回 MOV 30H,#10 ;为下一个1秒定时做准备 (do something);定时1秒到了以后要做的事情) RTN: MOV TH1,#3CH ;再赋初值 MOV TL1,#0B0H RETI ;中断返回 END,中断服务,定时器小结: (2个16位加法计数

27、器),运行/停止由TRx位控制,(当GATE=1时: 由TRx位和Tx引脚上的信号共同控制),工作方式由TMOD决定; 计数/定时由C/T位决定 工作方式0(13位) 永远不用 工作方式3(T0拆为双8位) 几乎无用 工作方式1(16位) 经常用到 工作方式2(8位自动重装) 经常用到,从初值按机器周期或外部脉冲递加,溢出位 TFx申请中断;中断允许由ETx位和EA位控制,,串行口与串行通信,串行通信的基本特征是数据逐位顺序进行传送 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。 常见的有: 通用异步收发器(UART)本课程介绍

28、的串口 通用串行总线(USB) I2C总线 CAN总线 SPI总线 RS-485,RS-232C,RS422A标准等等,第五章 I/O,中断,定时与串行通信(P.144),全双工串行接口(UART),数据通信的几个术语: 并行:数据各位同时进行传送 串行:数据逐位顺序进行传送,全双工:(串行通信)收/发可同时进行 半双工:(串行通信)收/发不可同时进行,异步串行通信:以字符为单位进行传送 同步串行通信:以数据块为单位进行传送 波特率(bps.):单位时间传送的位数,51单片机的串行接口 (P.151),SBUF(发),SBUF(收),发送控制器 TI,接收控制器 RI,移位寄存器,波特率发生器

29、T1,1,A累加器,(门)移位寄存器,RxD,TxD,去申请中断,引脚,引脚,CPU内部,串行口的结构,两个同名的接收/发送缓冲寄存器SBUF 指令 MOV SBUF,A 启动一次数据发送,可向SBUF 再发送下一个数 指令 MOV A,SBUF 完成一次数据接收,SBUF可再 接收下一个数,接收/发送数据,无论是否采用中断方式 工作,每接收/发送一个数据都必须用指 令对 RI/TI 清0,以备下一次收/发。,串行口相关的SFR(SCON,PCON),SM0 SM1 SM2 REN TB8 RB8 TI R1,SCON, SM0,SM1:串行口4种工作方式的选择位。 0 0 方式0:8位移位寄

30、存器I/O,波特率固定为 fosc/12 0 1 方式1:8位UART(1+8+1位), 波特率可变,按公式计算 1 0 方式2:9位UART(1+8+1+1位), 波特率固定=fosc x1/32或1/64 1 1 方式3:9位UART(1+8+1+1位), 波特率可变,按公式计算, SM2:串行口多机通信控制位 (作为方式2、方式3的附加控制位),串行口控制寄存器SCON(98H) P.151, RI,TI:串行口收/发数据申请中断标志位 1 申请中断; 0 不申请中断, TB8:方式2、3中,是要发送的第9位数据。 多机通信中,TB8=0 表示发送的是数据; TB8=1 表示发送的是地址

31、。(奇偶校验), RB8:在方式2、3中,是收到的第9位数据。 在多机通信中,用作区别地址帧/数据帧的 标志。(奇偶校验),SM0 SM1 SM2 REN TB8 RB8 TI R1, REN:串行口接收允许控制位 = 1 表示允许接收; = 0 禁止接收。,SCON,SMOD GF1 GF0 PD 1DL,电源控制寄存器 PCON(97H) P.152 特殊功能寄存器PCON不能按位寻址, SMOD:在串行口工作方式 1、2、3 中, 是波特率加倍位 =1 时,波特率加倍 =0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关), GF1,GF0:用户可自行定义使用的通用标志位,PC

32、ON, PD:掉电方式控制位 =0:常规工作方式。 =1:进入掉电方式: 振荡器停振 片内RAM和SRF的值保持不变 P0P3口维持原状。 程序停止 只有复位能使之退出掉电方式。,SMOD GF1 GF0 PD IDL,PCON, IDL:待机方式(空闲方式)控制位 =0:常规工作方式。 =1:进入待机方式: 振荡器继续振荡 中断、定时器、串口功能继续有效 片内RAM和SRF保持不变 CPU状态保持、P0P3口维持原状 程序停顿。 中断和复位能退出待机,继续后面的程序。,SMOD GF1 GF0 PD 1DL,PCON, PD:掉电控制位 =0:常规方式。 =1:掉电方式: 振荡器停振 片内R

33、AM和SRF不变 P0P3口维持原状 程序停止 只有复位能退出掉电, IDL:待机控制位 =0:常规方式。 =1:待机方式: 振荡器继续振荡 中断,定时器,串口有效 片内RAM和SRF不变 CPU状态,P0P3维持原状 程序停顿。 中断和复位能退出待机,继续后面的程序。,SMOD GF1 GF0 PD 1DL,PCON,串行口工作方式 0 P.153,工作方式0:8位移位寄存器I/O方式,发送:SBUF中的串行数据由RxD逐位移出; TxD输出移位时钟,频率=fosc1/12; 每送出8位数据 TI就自动置1; 需要用软件清零 TI。,接收:串行数据由RxD逐位移入SBUF中; TxD输出移位

34、时钟,频率=fosc1/12; 每接收 8位数据RI就自动置1; 需要用软件清零 RI。,经常配合“串入并出”“并入串出”移位 寄存器一起使用扩展接口(第六章)。,方式0工作时,多用查询方式编程: 发送:MOV SBUF,A 接收:JNB RI,$ JNB TI,$ CLR RI CLR TI MOV A, SBUF,工作方式0:8位移位寄存器I/O方式(续),复位时,SCON 已经被清零,缺省值: 方式0。,接收前,务必先置位 REN=1 允许接收数据。,串行口方式0的扩展应用经常用到,串行口常用工作方式0扩展出并行I/O口, 工作方式1、2、3则常用于串行通信,AB,CLK,h g f e

35、 d c b a,CLR,AB,CLK,CLR,AB,CLK,CLR,+5V,74LS164,74LS164,74LS164,74LS164是串入并出芯片;74LS165是并入串出芯片,h g f e d c b a,h g f e d c b a,+5V,共阳LED 数码管,VCC,TxD,RxD,51单片机,共阳极,h g f e d c b a,a,b,c,d,g,e,f,h,共阳LED数码管 公共端(字位) 接高电平, 笔划(字段) 置为低电平 就被点亮了,h g f e d c b a,累加器 A,1 1 0 0 0 0 0 0,0C0H = “0”,比如要显示“0” 须令a b c

36、 d e f 为“0” 电平,g h为“1”电平。,再比如要显示“3” 须令a b c d g 为“0” 电平,e f h为“1”电平。,1 0 1 1 0 0 0 0,0B0H = “3”,例:利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示09。,AB,CLK,h g f e d c b a,CLR,+5V,VCC,TxD,RxD,51单片机,74LS164,共阳LED数码管,根据上图编写的通过串行口和 74LS164 驱动共阳LED数码管 (查表)显示0-9数字的子程序: DSPLY:MOV DPTR, #TABLE MOVC A, A+DPTR MOV SBUF,

37、A JNB TI, $ CLR TI RET TABLE:DB 0C0H,0F9H,0A4H DB 0B0H,99H,92H DB 82H,0F8H,80H,90H,h g f e d c b a,累加器 A,1 1 0 0 0 0 0 0,0C0H = “0”,1 0 1 1 0 0 0 0,0B0H = “3”,共阳极,h g f e d c b a,a,b,c,d,g,e,f,h,常用于串行通讯。除发/收8位数据外,还 在D0位前有一个起始位“0”; 在D7位后有一个停止位“1”。,方式1工作时: 发送端自动添加一个起始位和一个停止位; 接收端自动去掉一个起始位和一个停止位。,工作方式1

38、:8位UART(1+8+1位)波特率可变 P.153-154,波特率可变 用定时器T1作波特率发生器: 公式:波特率 =(2SMOD/32)T1的溢出率,波特率=(2SMOD/32)T1的溢出率 (P155), 溢出率:T1溢出的频繁程度 即:T1溢出一次所需时间的倒数。, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定时器初值, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 例P157中计算波特率的部分: 题目要求用T1工作于方式2来产生波特率1200, 已知晶振频率=6M

39、Hz。要求出T1的初值:,初值 X = 28 -,20 6106 32 1200 12,= 256 - = 256 - 13.02,6106 460800, 243 = 0F3H 结果后面要用到,表格有多种, 晶振也不止一种,常用波特率和T1初值查表 P.156表(部分),RxD引脚为接收端,TxD引脚为发送端,由波特率 发生器T1控制发送速度,不同于方式0:收/发都 需要由TxD送出移位时钟。,T1作波特率发生器时初始化包括: 选定时器工作方式2(TMOD选8位自动重装); 将计算(或查表)出的初值X赋给TH1,TL1; 启动T1 (SETB TR1); 对T1不要开中断 !,工作方式1的接

40、收/发送 P.153-154,串行口的初始化包括: 对SCON选工作方式 对PCON设波特率加倍位“SMOD”(缺省值=0) 如果是接收数据,仍要先置“1”REN位,MAIN: ORG 0023H MOV TMOD,#20H SBR1:JNB RI,SEND MOV TL1,#0F3H LCALL SIN MOV TH1,#0F3H SJMP NEXT SETB TR1 SEND:LCALL SOUT MOV SCON, #50H NEXT:RETI SETB EA SIN: SETB ES RET LCALL SOUT SOUT: SJMP $ RET,P157例:串行通信方式1应用 用T1

41、工作于方式2,产生波特率1200bps,SM0 SM1 SM2 REN TB8 RB8 TI R1,SCON, SM0,SM1:串行口工作方式选择位。 0 1 :方式1,8位UART(1+8+1位), REN:串行口接收允许位。 REN=1 允许接收,串行口控制寄存器SCON,0 1 0 1 0 0 0 0, TB8,RB8,TI,RI等位由运行中间的情况 决定,可先写成 “0”, SM2:串行口多机通信控制位,作为方式2、3 的附加控制位,此处不用,可写成“0”,MAIN: ORG 0023H MOV TMOD,#20H SBR1:JNB RI,SEND MOV TL1,#0F3H LCAL

42、L SIN MOV TH1,#0F3H SJMP NEXT SETB TR1 SEND:LCALL SOUT MOV SCON, #50H NEXT:RETI SETB EA SIN: SETB ES RET LCALL SOUT SOUT: SJMP $ RET,P157例:串行通信方式1应用 用T1工作于方式2,产生波特率1200bps,发送子程序 接收子程序 SOUT: SIN: MOV A,R0 MOV A,SBUF MOV C,P MOV C, P CPL C CPL C MOV ACC.7, C ANL A, #7FH INC R0 MOV R1, A MOV SBUF, A IN

43、C R1 CLR TI CLR RI RET RET,P157例 (续),删除,删除,由于波特率固定,常用于单片机间通讯。 数据由8+1位组成,通常附加的一位 (TB8/RB8)用于“奇偶校验”。,工作方式2: P.154 9位UART(1+8+1+1位)两种波特率,方式2的波特率 = fosc 2SMOD/64 即: fosc 1/32 或 fosc 1/64 两种,奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。 换言之:如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。,奇校验:8位有效数据连同1位附加位中, 二进制“1”的个数为奇数 偶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论