版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4 4章章 MCS-51MCS-51功能模块的编程与仿真功能模块的编程与仿真 4.1 单片机的并行输入输出端口单片机的并行输入输出端口 u8051单片机有单片机有4个个8位位并行并行I/O端口,每条端口,每条I/O口线都能独立口线都能独立 地用作地用作输入或输出输入或输出。 u 在无片外扩展存储器的系统中,这四个在无片外扩展存储器的系统中,这四个I/O口都可以作为口都可以作为 通用通用I/O口使用口使用。 u 在有片外扩展存储器的系统中,在有片外扩展存储器的系统中,P2口送出高口送出高8位地址位地址,P0 口分时送出低口分时送出低8位地址和位地址和8位数据。位数据。 图图4.1 P0 的位
2、结构图的位结构图 1. 并行并行I/O的结构和原理的结构和原理 (1)P0口口 1 D CP Q Q MUX 关数码管关数码管 LOP: MOV P0, #0FFH ;读引脚前端口置读引脚前端口置1 MOV A, P0 ;读开关状态读开关状态 CPL A ;转成数据信息转成数据信息 ANL A, #0FH ;保留低保留低4位信息位信息 MOV DPTR, #TAB MOVC A, A+DPTR ;查表取得断码信息查表取得断码信息 MOV P1, A ;断码送数码管显示断码送数码管显示 AJMP LOP END C程序 #include reg51.h /包含8051单片机寄存器定义头文件 #d
3、efine LED P1 #define KEY P0 char code disp =0 xC0,0 xF9,0 xA4,0 xB0, 0 x99,0 x92,0 x82,0 xF8, 0 x80,0 x90,0 x88,0 x83, 0 x0C6,0 xA1,0 x86,0 x8E; /定义断码表 main() int i; LED=0 xFF; /关数码管 while(1) KEY=0XFF; /读引脚前端口置1 i=KEY; i=i; /转成数据信息 i=i /保留低4位信息 LED= dispi; /查表取得断码信息,断码送数码管显? 仿真实验仿真实验 u在Proteus ISIS
4、中画出设计电路,并进行电气检测。 u根据电路设计图,在Keil C中编写源程序。 u编译程序,并产生HEX文件。 u将HEX文件加入AT89c51,并仿真电路,通过拨动开关观察 发光二极管的显示状况,如图所示。 图图4.7 例例4.1的仿真图的仿真图 n例例4.2:要求对某引脚送入的脉冲进行计数,把脉冲的个要求对某引脚送入的脉冲进行计数,把脉冲的个 数送到八个发光二极管以二进制数的形式显示出来,并进数送到八个发光二极管以二进制数的形式显示出来,并进 行仿真实验。行仿真实验。 汇编语言源程序:汇编语言源程序: ORG 0000h AJMP STAR ORG 0100H STAR: MOV A,
5、#0ffh MOV P1, A CLR A ;计数器清计数器清0 L081D: JB P3.0, L081D ;P3.0为低吗为低吗? MOV R2, #10H LCALL DELY JNB P3.0, $ ;延时后再判断延时后再判断P3.0为低吗为低吗? INC A ;累加器加累加器加1 PUSH ACC CPL A ;转成驱动二极管的电平转成驱动二极管的电平 MOV P1, A ;A送送P1口口 POP ACC AJMP L081D DELY: ;延时子程序延时子程序 RET END 仿真实验:仿真实验: u在在Proteus ISIS 中画出设计电路,并进行电气检中画出设计电路,并进行电
6、气检 测。测。 u根据电路设计图,在根据电路设计图,在Keil C中编写源程序。中编写源程序。 u编译程序,并产生编译程序,并产生HEX文件。文件。 u 将将HEX文件加入文件加入AT89c51,并仿真电路,通过拨并仿真电路,通过拨 动开关观察发光二极管的显示状况,如图所示。动开关观察发光二极管的显示状况,如图所示。 图图4.8-9 例例4.2的仿真图的仿真图 4.2 中断系统中断系统 4.2.1 中断的概述中断的概述 1.中断的基本概念中断的基本概念 2.中断优先权与嵌套中断优先权与嵌套 图4.10 中断过程流程图 图4.11 中断嵌套过程图 4.2.2 MCS-51的中断系统的中断系统 8
7、051共有5个中断源。分为高级和低级两个中断优先级, 可实现2级中断服务嵌套。 1. MCS-51的中断源的中断源 8051允许5个中断源: 外部中断源外部中断源 由外部原因引起的,可以通过两个固定引脚 INT0 ( P3.2 )和INT1( P3.3 )来引入。这两个中断源的请求方 式有两种:低电平触发或下降沿触发。 内部中断源内部中断源 T0:定时/计数器0中断,由T0回零溢出引起。 T1:定时/计数器1中断,由T1回零溢出引起。 TI/RI:串行I/O中断,完成一帧字符发送/接收引起。 2、中断控制、中断控制 图图4.12 8051中断系统结构中断系统结构 IE0 PX0 EA EX0
8、1 中断 矢量地址 1 0 ET0 EX1 ET1 ES PT0 PX1 PT1 PS 1 0 1 0 1 0 1 0 自然优先级 中断 矢量地址 自然优先级 IT0= =1 IT0 =0 TF0 IE1 1 IT1=1 IT1=0 TF1 TI RI T0 T1 INT1 TX RX TCON IE IP SCON 中断标志 各中断 源允许 总允许 优先级 硬件查询 PC 低级中断请求 PC 高级中断请求 INT0 1 定时控制寄存器定时控制寄存器TCON TCON (88H) D7D6D5D4D3D2 D1 D0 TF1 TR1 TF0 TR0 IE1IT1 IE0 IT0 nTF0/TF
9、1:定时器溢出中断申请标志位(由硬件自动置定时器溢出中断申请标志位(由硬件自动置 位)。位)。 =0:定时器未溢出;:定时器未溢出; =1:定时器溢出(由全:定时器溢出(由全“1”变成全变成全“0”)时由硬件自动)时由硬件自动 置位,申请中断,中断被置位,申请中断,中断被CPU响应后由硬件自动清零响应后由硬件自动清零。 nTR0/TR1:定时器运行启停控制位 =0:定时器停止运行;:定时器停止运行; =1:定时器启动运行。:定时器启动运行。 nIE0/IE1:外部中断申请标志位(由硬件自动置位 ,中 断响应后转向中断服务程序时,由硬件自动清0 )。 =0:没有外部中断申请; =1:有外部中断申
10、请。 u IT0/IT1:外部中断请求的触发方式控制位(可由用户通 过软件设置 )。 =0: 在INT0/INT1端申请中断的信号低电平有效; =1: 在INT0/INT1端申请中断的信号负跳变有效。 u TI/RI:串行口发送串行口发送/接收中断申请标志位接收中断申请标志位 =0:没有串行口发送:没有串行口发送/接收中断申请;接收中断申请; =1:有串行口发送:有串行口发送/接收中断申请。接收中断申请。 这两位不会由硬件自动置位,所以用户必须在中断服务子这两位不会由硬件自动置位,所以用户必须在中断服务子 程序中用软件清程序中用软件清0。 例如:例如: CLR TI RE TI 串行口控制寄存
11、器串行口控制寄存器SCON SCON (98H) D7D6D5D4D3D2D1D0 SM0 SM1 SM2 REN TB8 RB8 TIRI 中断允许寄存器中断允许寄存器IE IE (A8H) D7D6D5D4D3D2D1D0 EAET2ESET1EX1ET0EX0 ES: 串行口中断允许位。 ET1 :定时器/计数器T1的溢出中断允许位。 EX1 :外部中断1中断允许位。 ET0 :定时器/计数器T0的溢出中断允许位。 EX0 :外部中断0中断允许位。 EA: 总的中断允许控制位(总开关): =0 :禁止全部中断; =1 :允许中断。 中断优先级寄存器中断优先级寄存器IP IP (B8H)
12、D7D6D5D4D3D2D1D0 PT2PSPT1PX1PT0PX0 PX0/PX1:外部中断外部中断0 /外部中断外部中断1 优先级控制位:优先级控制位: =0 :属低优先级;:属低优先级; =1 :属高优先级。:属高优先级。 PT0/PT1:T0/T1中断优先级控制位:中断优先级控制位: =0 :属低优先级;:属低优先级; =1 :属高优先级。:属高优先级。 PS1:串行口中断优先级控制位:串行口中断优先级控制位: =0 :属低优先级;:属低优先级; =1 :属高优先级。:属高优先级。 当同级的几个中断源同时发中断请求时,当同级的几个中断源同时发中断请求时, MCS-51单片机的中断系统对
13、各中断源的中断单片机的中断系统对各中断源的中断 优先级有一个统一的规定,称为自然优先级。优先级有一个统一的规定,称为自然优先级。 自然优先级的排列如下:自然优先级的排列如下: 中断源 自然优先级 外部中断 0 最高级 定时器 T0 中断 外部中断 1 定时器 T1 中断 串行口中断 最低级 3. 中断响应及处理过程中断响应及处理过程 中断响应的条件中断响应的条件 u相应的中断是开放的;相应的中断是开放的; u没有同级的中断或更高级别的中断正在处理;没有同级的中断或更高级别的中断正在处理; u正在执行的指令必须执行完最后正在执行的指令必须执行完最后 1个机器周期;个机器周期; u若当前正在执行的
14、是中断返回指令(若当前正在执行的是中断返回指令(RETI),或对),或对IE或或IP寄存器操作的指寄存器操作的指 令,则必须执行完当前指令的下一条指令才能响应中断。令,则必须执行完当前指令的下一条指令才能响应中断。 中断响应的过程中断响应的过程 中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。 u中断优先级状态触发器置中断优先级状态触发器置1。 u由硬件自动生成一条长调用指令由硬件自动生成一条长调用指令,将断点的地址压入堆栈区进行保护,将断点的地址压入堆栈区进行保护, uCPU将执行中断服务子程序,包含保护现场、执行中断主
15、体、恢复现场。将执行中断服务子程序,包含保护现场、执行中断主体、恢复现场。 u中断返回:中断子程序最后为中断返回中断返回:中断子程序最后为中断返回RETI指令,该指令使断点出栈,然指令,该指令使断点出栈,然 后开放中断允许,中断过程结束,后开放中断允许,中断过程结束,CPU返回原程序。返回原程序。 中断服务程序入口地址(中断矢量)中断服务程序入口地址(中断矢量) 中断入口地址就是中断服务子程序的起始地址,即第中断入口地址就是中断服务子程序的起始地址,即第 一条指令的第一个字节在程序存储器中的位置。单片机的一条指令的第一个字节在程序存储器中的位置。单片机的 中断入口地址由单片机硬件电路决定,各中
16、断服务子程序中断入口地址由单片机硬件电路决定,各中断服务子程序 的入口地址为:的入口地址为: 中断源中断源 入口地址入口地址 INT0 0003 T0 000BH INT1 0013H T1 001BH RI/TI 0023H 外部中断触发方式的选择外部中断触发方式的选择 n边沿触发边沿触发 当当ITx=1时,外部中断为边沿触发方式。时,外部中断为边沿触发方式。CPU在每个机器周在每个机器周 期的期的S5P2期间采样期间采样INT1 (P3.3)引脚。若在连续两个机器引脚。若在连续两个机器 周期采样到先高电平后低电平,则认为有中断申请,硬件周期采样到先高电平后低电平,则认为有中断申请,硬件 自
17、动使自动使IE0置置1,此标志一直保持到,此标志一直保持到CPU响应中断时,才由响应中断时,才由 硬件自动清硬件自动清0。在边沿触发方式下,为保证。在边沿触发方式下,为保证CPU在两个机在两个机 器周期内检测到先高后低的负跳变,输入高低电平的持续器周期内检测到先高后低的负跳变,输入高低电平的持续 时间至少要保持时间至少要保持12个时钟周期。个时钟周期。 u电平触发电平触发 当当ITx=0时,外部中断为电平触发方式。若时,外部中断为电平触发方式。若CPU检测外部中检测外部中 断请求输入引脚为低电平,硬件自动置位相应的中断标志断请求输入引脚为低电平,硬件自动置位相应的中断标志 位位IEx;若为高电
18、平,则认为无中断申请,硬件自动清除;若为高电平,则认为无中断申请,硬件自动清除 中断标志位。所以,外部中断请求输入信号,必须保持到中断标志位。所以,外部中断请求输入信号,必须保持到 CPU响应该请求为止。当响应该请求为止。当CPU响应请求后通过硬件清零响应请求后通过硬件清零 IEx,但请求信号并没有被清除,在该中断服务子程序返,但请求信号并没有被清除,在该中断服务子程序返 回之前,这个中断请求信号必须撤掉,否则,将引起再次回之前,这个中断请求信号必须撤掉,否则,将引起再次 响应。为此,用以下电路清除外部中断请求信号,并在中响应。为此,用以下电路清除外部中断请求信号,并在中 断服务程序中执行以下
19、指令断服务程序中执行以下指令: ORL P1,#01H ANL P1,#0FEH 4.2.3 MCS-51中断的应用举中断的应用举 【例例4.3】:见书:见书P85。 图图4-12 用二极管显示中断请求信号用二极管显示中断请求信号 汇编语言源程序汇编语言源程序: ORG 0000H AJMP MAIN ;转向主程序 ORG 0013H ;外部中断1入口地址 AJMP PINT ORG 0050H MAIN: SETB IT1 ;置边沿触发方式 SETB EX1 SETB EA ;开发外部中断1 LOOP: MOV A, P1 ANL A, #0FH CJNE A,#0FH , LOOP ;有外
20、部 中断请求,去LOOP ORL P1,#0FFH ;无中断请求,外部灯全灭 LJMP LOOP SJMP $ ;中断子程序;中断子程序 JB P1,0 , L2 CLR P1.4 L2: JB P1.1, L3 CLR P1.5 L3: JB P1.2 L4 CLR P1.6 L4: JB P1.3 L5 CLR P1.7 L5: RETI END C语言程序语言程序 #include reg51.h sbit P11=P11; sbit P12=P12; sbit P13=P13; sbit P14=P14; sbit P15=P15; sbit P16=P16; sbit P17=P17
21、; void extern0_IR(void) interrupt 1 p14=p10; p15=p11; p16=p12; p17=p13; void main(void) unsigned char c; IT1=1; EX0=1; EA=1; while(1) c=P1; c if(c=0 x0f) P1|0 xff; 例例4.4 平时平时LED发光二极管处于全亮状态;发光二极管处于全亮状态;INT0外外 中断控制二极管循环左移中断控制二极管循环左移8次;次;INT1外中断控制外中断控制 二极管循环右移二极管循环右移8次;并进行仿真实验次;并进行仿真实验 汇编语言源程序:汇编语言源程序:
22、 ORG 0000H LJMP START ORG 0003H LJMP PINT0 ORG 0013H LJMP PINT1 ORG 0030H START: MOV SP, #30H SETB IT0 ;外部中断1为边沿触发方式 SETB IT1 ; 外部中断1为边沿触发方式 SETB EX0 SETB EX1 SETB EA ;开放外部中断0和1 MOV IP , #04H ;外部中断1为高优先级 LOOP: MOV P1 , #00H ;灯全亮 SJMP LOOP ; 等中断 ;INT0中断服务子程序 PINT0: PUSH PSW CLR RS1 SETB RS0 MOV R1 ,
23、#8 MOV A , #0FEH ;置灯的初态置灯的初态 LP0: MOV P1 , A LCALL DELAY RL A ;循环左移;循环左移 DJNZ R1 , LP0 POP PSW RETI ;INT1中断服务子程序中断服务子程序 PINT1: PUSH PSW SETB RS1 CLR RS0 MOV R1 , #8 MOV A , #07FH ;置灯的初态;置灯的初态 LP1: MOV P1 , A LCALL DELAY RR A ;循环右移;循环右移 DJNZ R1 , LP1 POP PSW RETI ;延时子程序;延时子程序 略略 C程序程序 #include “reg51
24、.h /定定 8051接触器的头文件接触器的头文件 void pint1(void ); void pint1(void ); void delay(void); void main(void ) IT0=1; IT1=1; /外部中断外部中断0、1为边沿触发方式为边沿触发方式 EX0=1; EX1=1; EA=1; /开放外部中断开放外部中断0和和1 IP =0 x04; /外部中断外部中断1为高优先级为高优先级 while(1); P1=0 x00; delay() /灯全亮灯全亮 /INT0中断服务子程序中断服务子程序 void pint0(void ) interrupt 0 int,
25、i; P1=0 xfe ; /置灯的初态置灯的初态 for(i=0,i7,i+) delay (void); P1=P11; /循环左移循环左移 /INT1中断服务子程序中断服务子程序 void pint1(void ) interrupt 2 int,i; P1=0 x7f ; /置灯的初态置灯的初态 for(i=0,i1; /循环右移循环右移 delay (void); /延时子程序延时子程序 略略 仿真实验仿真实验 图图4.16 例题例题4.4 仿真图仿真图 4.3 定时定时/计数器的结构和原理计数器的结构和原理 8051内部提供两个十六位的定时器/计数器T0和T1 启动 控制 振荡器
26、TX端 TFX 中断 12 方式 控制 可重置初值 加1计数器 1计数功能:计数功能: 所谓计数功能是指对外部脉冲进行计数。外部脉所谓计数功能是指对外部脉冲进行计数。外部脉 冲从单片机的冲从单片机的T0(P3.4)和和T1(P3.5)两个引脚输入,两个引脚输入, 最高计数脉冲频率为晶振频率的最高计数脉冲频率为晶振频率的1/24。 2定时功能定时功能: 以定时方式工作时,计数输入信号是内部时钟脉以定时方式工作时,计数输入信号是内部时钟脉 冲,每个机器周期使计数器加冲,每个机器周期使计数器加1,所以,计数频,所以,计数频 率是振荡频率的率是振荡频率的1/12, 4.3.2定时定时/计数器的工作方式
27、选择及控制计数器的工作方式选择及控制 1.方式控制寄存器方式控制寄存器TMOD TMOD (89H) B7B7B6B6B5B5B4B4B3B3B2B2B1B1B0B0 GATEGATEC CT TM1M1M0M0GATEGATEC CT TM1M1M0M0 工作方式选择位工作方式选择位M1、M0 M1M0工作方式工作方式功能描述功能描述 00方式0初值寄存器TL的低5位与TH的8位构成13位计 数器 01方式方式116位计数器位计数器 10方式2自动重新装入初值的8位计数器 12方式方式3仅用于仅用于T0,分为两个,分为两个8位计数器,位计数器,T1停止工作停止工作 门控位:门控位:GATE。
28、 GATE=0:软件启动定时器,使软件启动定时器,使TRx置置1即可启动定即可启动定 时器。时器。 GATE=1:软件和硬件共同启动定时器,除了要使:软件和硬件共同启动定时器,除了要使 TRx置置1外,外部中断请求信号输入端外,外部中断请求信号输入端INTx还必还必 须输入高电平才能启动定时器。须输入高电平才能启动定时器。 功能选择位:功能选择位:C/T。 C/T=0时时,以定时器方式工作。,以定时器方式工作。 C/T=1时时,以计数器方式工作。,以计数器方式工作。 2.定时器控制寄存器定时器控制寄存器TCON TCON (88H(88H) 8FH8FH 8EH8EH8DH8DH8CH8CH8
29、BH8BH8AH8AH89H89H88H88H TF1TF1 TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 定时器启动控制位定时器启动控制位:TR0、TR1 TRx=0,停止定时器,停止定时器/计数器计数器1工作。工作。 TRx=1,启动定时器,启动定时器/计数器计数器1工作。工作。 该位由软件置位和复位该位由软件置位和复位 定时器溢出中断标志位定时器溢出中断标志位:TF0、 TF1 当定时当定时/计数器溢出时,由硬件自动置计数器溢出时,由硬件自动置1。使用查询方式时,。使用查询方式时, 此位做状态位供此位做状态位供CPU查询,查询有效后需由软件清零;使
30、用查询,查询有效后需由软件清零;使用 中断方式时,此位做中断申请标志位,进入中断服务后被硬中断方式时,此位做中断申请标志位,进入中断服务后被硬 件自动清零件自动清零 4.3.3 定时器定时器/计数器的工作方式计数器的工作方式 方式方式0(以定时器以定时器/计数器计数器T0为例为例) n定时寄存器由定时寄存器由TH0的的8位和位和TL0的低的低5位(高位(高3位不用)组位不用)组 成一个成一个13位计数器。位计数器。 n当当GATE=0时,只要时,只要TR0为为1,13位计数器就开始进行加位计数器就开始进行加1 计数;当计数;当GATE=1以及以及TR0=1时,是否计数还取决于时,是否计数还取决
31、于INT0 引脚信号,当引脚信号,当INT0引脚为高电平时开始计数,当引脚为高电平时开始计数,当INT0为为 低电平时停止计数。低电平时停止计数。 n当定时器溢出时,初值寄存器当定时器溢出时,初值寄存器TH0、TL0会自动清零,要会自动清零,要 对它们重新装初值,否则,下次它们将从对它们重新装初值,否则,下次它们将从0开始进行加法开始进行加法 计数。计数。 n方式方式0为定时工作方式时,定时时间计算公式为:为定时工作方式时,定时时间计算公式为: t=(213 计数初值计数初值X)晶振周期晶振周期12 振荡器 12 分频 TH0 (8 位) TL0 (5 位) TF0 1 void time0(
32、void ) p10=p10; /输出状态翻转输出状态翻转 TH0=0 xF0; /重新设置计数初值。重新设置计数初值。 TL0=0 x0C; void main(void ) TMOD=0 x00; /TMOD初始化。初始化。 TH0=0 xF0; TL0=0 x0C; /设置计数初值。设置计数初值。 EA=0; /禁止中断禁止中断。 TR0=1; /启动启动T0。 while(1) while(TF0=0);time0(); (3)用中断方式编写程序)用中断方式编写程序 汇编语言源程序:汇编语言源程序: ORG 0000H AJMP MAIN ;转向主程序。;转向主程序。 ORG 000B
33、H ;T0中断服务程序固定入口地址。中断服务程序固定入口地址。 AJMP ZD ;转向;转向T0中断服务程序。中断服务程序。 ORG 0040H MAIN: MOV SP, #30H ;设置堆栈指针。;设置堆栈指针。 MOV TMOD, #00H ;TMOD初始化初始化。 MOV TH0, #0F0H ;设置计数初值。;设置计数初值。 MOV TL0, #0CH SETB ET0 ;开放;开放T0中断。中断。 SETB EA ;开放总中断。;开放总中断。 SETB TR0 ;启动;启动T0。 HERE:AJMP HERE ;等待中断。;等待中断。 ZD: CPL P1.0 ;输出取反。;输出取
34、反。 MOV TH0, #0F8H ;重新设置计数初值。;重新设置计数初值。 MOV TL0, #06H RETI ;返回;返回。 END C语言程序语言程序 #include reg51.h /定义定义8051寄存器的头文件寄存器的头文件 sbit P10=P10; void time0(void ) interrupt 1 p10=p10; /输出状态翻转输出状态翻转 TH0=0 xF0; /重新设置计数初值重新设置计数初值。 TL0=0 x0C; void main(void ) TMOD=0 x00; /TMOD初始化初始化。 TH0=0 xF0; TL0=0 x0C; /设置计数初值
35、设置计数初值。 ET0=1 EA=1; /禁止中断。禁止中断。 TR0=1; /启动启动T0。 while(1);); (4)仿真实验)仿真实验 p1.0 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P
36、3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 X1 CRYSTAL C1 30p R1 10k C4 10uf C2 30p A B C D p1.0 V=4.99502 图图4.23 例例4.5仿真图仿真图 图图4.24 仿真中用示波器观察到的波形图仿真中用示波器观察到的波形图 4.4 串行接口
37、串行接口 4.4.1 串行通信基本知识串行通信基本知识 1、 串行通信的传送方式 单工方式单工方式 n单工方式是指甲乙双方通信时只能单向传送数据,单工方式是指甲乙双方通信时只能单向传送数据, 发送方和接收方固定发送方和接收方固定。 图4.25 单工方式 半双工方式半双工方式 半双工方式是指通信双方都有自己的发送器和半双工方式是指通信双方都有自己的发送器和 接收器,既可发送也可接收,但不能同时接收和接收器,既可发送也可接收,但不能同时接收和 发送。发送。 图图4-22 半双工方式半双工方式 全双工制式全双工制式 全双工制式是指通信双方均有发送器和接收全双工制式是指通信双方均有发送器和接收 器,并
38、且信道划分为发送信道和接收信道,因此器,并且信道划分为发送信道和接收信道,因此 全双工制式可实现甲乙双方同时发送和接收数据,全双工制式可实现甲乙双方同时发送和接收数据, 发送时能接收,接收时也能发送。发送时能接收,接收时也能发送。 图图4.27 双工方式双工方式 (2) 同步和异步通信同步和异步通信 (1)同步通信同步通信: 在数据块传送开始时先发送在数据块传送开始时先发送12个同步字符,个同步字符, 并由同时传送的时钟信号来实现发送端和接收端并由同时传送的时钟信号来实现发送端和接收端 同步,即接受方检测到规定的同步字符后,接着同步,即接受方检测到规定的同步字符后,接着 就连续按顺序传送数据。
39、就连续按顺序传送数据。 数数 据据数数 据据 同同 步步 字字 符符 1同同 步步 字字 符符 2数数 据据 流流 图图4.28 同步通信数据帧格式同步通信数据帧格式 (2)异步通信异步通信 n异步通信中,数据按字符组成字符帧。字符发送端一帧一异步通信中,数据按字符组成字符帧。字符发送端一帧一 帧地发送,接收端一帧一帧地接收。帧地发送,接收端一帧一帧地接收。 n异步通信以字符为传送单位,用起始位和停止位标识每个异步通信以字符为传送单位,用起始位和停止位标识每个 字符的开始和结束。字符的开始和结束。 n发送端和接收端可以由各自的时钟来控制数据的发送和接发送端和接收端可以由各自的时钟来控制数据的发
40、送和接 收,这两个时钟源彼此独立,并不要求同步,收,这两个时钟源彼此独立,并不要求同步, 0/10/10/10/10/1100/10/10/10/10/10/1100/1 停停 止止 位位 起起 始始 位位 8位位 数数 据据 校校 验验 位位 停停 止止 位位 起起 始始 位位 0/1 数数 据据 第第 n个个 字字 符符第第 n+1个个 字字 符符 图图4.29 异步通信数据帧格式异步通信数据帧格式 异步通信字符帧的格式异步通信字符帧的格式 起始位:起始位:发送器通过发送起始位开始一帧字符的传送。发送器通过发送起始位开始一帧字符的传送。 数据位数据位:起始位之后传送数据位。数据位中低位在前
41、,高:起始位之后传送数据位。数据位中低位在前,高 位在后。数据位可以是位在后。数据位可以是5、6、7、8位。位。 奇偶校验位:奇偶校验位:实际上是传送的附加位,若该位用于用于奇实际上是传送的附加位,若该位用于用于奇 偶校验,可校检串行传送的正确性。偶校验,可校检串行传送的正确性。 停止位停止位:标志一个字符传送的结束。停止位可以是标志一个字符传送的结束。停止位可以是1、1.5 或或2位。位。 (3)波特率()波特率(band rate) n波特率是异步通信中数据传送速率的单位,其意义是每秒波特率是异步通信中数据传送速率的单位,其意义是每秒 传送多少位二进制数传送多少位二进制数。 例如:数据传送
42、的速率为例如:数据传送的速率为120个字符每秒,每个字符由个字符每秒,每个字符由1个起个起 始位、始位、8个数据位和个数据位和1个停止位组成,则其传送波特率为:个停止位组成,则其传送波特率为: 10b120s1200bs1200波特波特 4.4.2MCS-51 串行口及控制串行口及控制 51单片机具有一个可编程的全双工串行接口,它单片机具有一个可编程的全双工串行接口,它 可用作通用异步接收和发送器可用作通用异步接收和发送器(UART),),也可也可 用作同步移位寄存器。用作同步移位寄存器。 1、 单片机串行口的结构单片机串行口的结构 8051单片机通过串行数据接收端单片机通过串行数据接收端RX
43、D (P3.0引脚引脚) 和串行数据发送端和串行数据发送端TXD(P3.1引脚引脚)与外界进行通与外界进行通 信。其中有两个物理上独立的接收、发送缓冲器信。其中有两个物理上独立的接收、发送缓冲器 SBUF,它们占用同一地址,它们占用同一地址99H,通过读写方式区,通过读写方式区 分分 图图4.30 8051 单片机串口硬件图单片机串口硬件图 2、串行数据接收:、串行数据接收: 数据通过RXD引脚输入,一位一位地存入移位寄存器中, 然后再整体8位存入接收SBUF中;同时接收中断标志位 RI自动置1,向CPU申请中断; CPU响应中断,软件清RI, 读取SBUF数据;接着又开始接收下一个数据,直至
44、全部 数据接收完毕。 3、串行数据发送:、串行数据发送: 将数据写入SBUF寄存器中,UART自动添加起始位和停 止位,数据从TXD引脚串行发送,当一个数据发送完TI自 动置1,向CPU发中断请求;CPU响应中断后,用软件清 TI位,同时将下一个数据写入SBUF中继续发送,直到所 有数据发送完毕。 例如例如 MOV SBUF,A 启动一次数据发送,可向SBUF再发送下一个数 4.串行口控制串行口控制 SCON (98H) D7D6D5D4D3D2D1D0 SM0 SM1SM2RENTB8RB8TIRI (1)串行口控制寄存器串行口控制寄存器SCON SM0 SM1串行口工作方式选择位串行口工作
45、方式选择位 SM0 SM1工作方式工作方式说明说明波特率波特率 0 0方式方式0同步移位寄存器同步移位寄存器fOSC/12 0 1方式方式110位异步收发位异步收发由定时器控制由定时器控制 1 0方式方式211位异步收发位异步收发fOSC/32或或 fOSC/64 1 1方式方式311位异步收发位异步收发由定时器控制由定时器控制 SM2-多机通信控制位多机通信控制位。在方式。在方式2和方式和方式3中,若中,若SM2=1, 且且RB8=1时,将接收到的前时,将接收到的前8位数据送入位数据送入SBUF,并置位,并置位RI, 产生中断请求;否则,将接收到的产生中断请求;否则,将接收到的8位数据丢弃。
46、而当位数据丢弃。而当 SM2=0时,则不论第时,则不论第9位数据为位数据为0还是为还是为1,都将前,都将前8位数据位数据 装入装入SBUF中,并产生中断请求。在方式中,并产生中断请求。在方式0时,时,SM2必须为必须为0。 REN-允许接收控制位允许接收控制位。REN=0,禁止接收;,禁止接收;REN=1, 允许接收。该位由软件置位或复位。允许接收。该位由软件置位或复位。 TB8-方式方式2和方式和方式3中要发送的第中要发送的第9位数据。位数据。在方式在方式2和方和方 式式3时,时,TB8是发送的第是发送的第9位数据。在多机通信中,以位数据。在多机通信中,以TB8位位 的状态表示主机发送的是地
47、址还是数据:的状态表示主机发送的是地址还是数据:TB8=0表示数据,表示数据, TB8=1表示地址。该位由软件置位或复位。表示地址。该位由软件置位或复位。TB8还可用于奇还可用于奇 偶校验位。偶校验位。 RB8-方式方式2和方式和方式3中要接收的第中要接收的第9位数据。位数据。在在 方式方式2或方式或方式3时,时,RB8存放接收到的第存放接收到的第9位数据。位数据。 TI-发送中断标志发送中断标志。当方式。当方式0时,发送完第时,发送完第8位位 数据后,该位由硬件置位。在其他方式下,遇发数据后,该位由硬件置位。在其他方式下,遇发 送停止位时,该位由硬件置位。因此送停止位时,该位由硬件置位。因此
48、TI=1,表示,表示 帧发送结束,可软件查询帧发送结束,可软件查询TI位标志,也可以请求位标志,也可以请求 中断。中断。TI位必须由软件清位必须由软件清0。 RI-接收中断标志接收中断标志。当方式。当方式0时,接收完第时,接收完第8位位 数据后,该位由硬件置位。在其他方式下,当接数据后,该位由硬件置位。在其他方式下,当接 收到停止位时,该位由硬件置位。因此收到停止位时,该位由硬件置位。因此RI=1,表,表 示帧接收结束,可软件查询示帧接收结束,可软件查询RI位标志,也可以请位标志,也可以请 求中断。求中断。RI位也必须由软件清位也必须由软件清0。 (2)电源控制寄存器电源控制寄存器PCON P
49、CON (87H) D7D6 D5D4D3D2D1D0 SMODGF1GF0PDIDL PCON中只有SMOD与串口有关: SMOD =1 时,波特率加倍 SMOD =0 时,波特率不加倍。 5. MCS-51 串行口的工作方式串行口的工作方式 (1)方式方式0: 同步移位寄存器方式,其波特率是同步移位寄存器方式,其波特率是fosc的的 1/12。 方式方式0输出输出 3 456 10 1112 13 +5V 8051 P3.0 74LS164 D2 D1 CP P3.1 P1.0 CLR 2 78 9 14 TXD RXD 1 图图4.31 串行口方式串行口方式0的输出的输出 方式方式0接收
50、接收 在在REN=1,RI=0时,串行口作为并行输入口使用时,要外时,串行口作为并行输入口使用时,要外 接并行输入串行输出的移位寄存器。如图当接收器接收完接并行输入串行输出的移位寄存器。如图当接收器接收完8 位数据后,置中断标志位数据后,置中断标志RI=1,请求中断,响应中断后,必,请求中断,响应中断后,必 须用软件将须用软件将RI清零清零。 +5V 8051 P3.0 74LS166 Q CP P3.1 P1.0 9 2 7 15 14 TXD RXD 1 P1.1 图图4.32串行口方式串行口方式0的输入的输入 例例4.6:串行口工作在方式0,将开关送来的8位数据利用 74LS165转成串
51、行数据从RxD引脚输入,并通过P1口所连 接的8个LED显示出来,如图4-29。要求用Proteus 进行仿 真实验 图4.33 例 4.6 方式0输入应用 汇编源程序汇编源程序 ORG 000h AJMP START ORG 0100H START: MOV SCON, #11H ;串口设置为方式串口设置为方式0接收接收 LOP: CLR P3.2 SETB P3.2 ;发送移位脉冲发送移位脉冲 CLR RI ;清清RI WAIT: JNB RI,WAIT MOV A,SBUF ;读取数据读取数据 MOV P1,A ;送送LED显示显示 SJMP LOP END C程序程序 sbit p32
52、=p32 void main(void) SCON=0 x11; /串口设置为方式串口设置为方式0接收接收 while(1) p32=0; p32=1; /发送移位脉冲发送移位脉冲 RI=0; /清除清除RI while(RI=0); LED=SBUF; /读取数据,送读取数据,送LED显示显示 仿真实验仿真实验 图图4.34 例例 4.6 仿真图仿真图 (2)方式方式1 方式方式1用于用于8位异步通信接口。位异步通信接口。TXD与与RXD分别用于发送分别用于发送 与接收数据此方式的传送波特率可调与接收数据此方式的传送波特率可调. 图图4.35 10位的帧格式位的帧格式 数据发送数据发送 发送
53、时只要将数据写入发送时只要将数据写入SBUF,就启动了发送器开始发,就启动了发送器开始发 送,由硬件自动加入起始位和停止位。一帧数据发送完毕,送,由硬件自动加入起始位和停止位。一帧数据发送完毕, 将将SCON中的中的TI置置1。 数据接收数据接收 接接 收时,在收时,在REN=1前提下,当采样到前提下,当采样到RXD从从1向向0跳变状跳变状 态时,就认定为已接收到起始位,启动接收器。一帧数据态时,就认定为已接收到起始位,启动接收器。一帧数据 接收完毕,必须同时满足以下两个条件:即接收完毕,必须同时满足以下两个条件:即RI=0和停止位和停止位 为为1或或SM2=0,这次接收才真正有效,接收数据进
54、入,这次接收才真正有效,接收数据进入 SBUF,停止位进入,停止位进入RB8,并置中断请求标志,并置中断请求标志RI为为1,该,该 标志也必须由用户在中断服务程子程序中由软件清零。标志也必须由用户在中断服务程子程序中由软件清零。 方式方式2和方式和方式3 串行口工作方式串行口工作方式2和方式和方式3均为每帧均为每帧11位异步通信格式,即位异步通信格式,即 1位起始位,位起始位,8位数据位位数据位(低位在前低位在前),1位可编程的第位可编程的第9数据位数据位 和和1位停止位。位停止位。 u方式方式2和方式和方式3的发送的发送 发送前,先根据通信协议由软件设置发送前,先根据通信协议由软件设置TB8
55、,可作为可作为奇,可作为可作为奇 偶校验位或多机通信中地址数据信息的标志位偶校验位或多机通信中地址数据信息的标志位, 然后将要然后将要 发送的数据写入发送的数据写入SBUF, 即可启动发送过程。即可启动发送过程。.串行口能自动串行口能自动 把把TB8取出取出,并装入到第并装入到第9位数据位位数据位的位置,的位置, 再逐一发送出去,再逐一发送出去, 发送完毕,发送完毕,使使TI=1. u方式方式2和方式和方式3的接收的接收 接收时接收时, 使使REN=1,允许接收。当检测到,允许接收。当检测到RXD端有端有1到到 0的负的负 跳变,并判断起始位有效后,开始接收跳变,并判断起始位有效后,开始接收9
56、位数据,送入移位位数据,送入移位 寄存器。当满足寄存器。当满足RI=0且且SM2=0,或接收到的第或接收到的第9位数据为位数据为1时时, 前前8位数据送入位数据送入SBUF,第第9位数据送入位数据送入RB8,置,置RI为为1;否则,;否则, 这次接收无效这次接收无效,也不置位也不置位RI,重新搜索,重新搜索RXD端的负跳变端的负跳变 图图4.36 11位的帧格式位的帧格式 6. MCS-51 串行口的波特率串行口的波特率 方式方式0的波特率的波特率 方式方式0的波特率是固定的,其值为的波特率是固定的,其值为fosc/12(fosc为主机频率为主机频率)。 方式方式2的波特率的波特率 通信波特率
57、为fosc/32或fosc/64,根据特殊功能寄存器 PCON中SMOD位的状态来决定串行口在那个波特率下工 作。选择公式为: 方式方式1和方式和方式3的波特率的波特率 在这两种方式下,串行口波特率是由定时器的溢出率决定的, 因而波特率是可变的。波特率的公式为: 溢出率即T1溢 出一次所需时间的倒数,计算公式为: OSC SMOD 64 2 f 波波特特率率 溢溢出出率率定定时时器器波波特特率率T1 32 2 SMOD ) 2 1 ( 12 T1 K OSC 初初值值 溢溢出出率率定定时时器器 f 7. 单片机多机通信原理单片机多机通信原理 单片机多机通信是指一台主机和多台从机之间的通单片机多
58、机通信是指一台主机和多台从机之间的通 信。串行口以方式信。串行口以方式2或方式或方式3接收时,若接收时,若SM21,则,则 仅当接收到的第九位数据为仅当接收到的第九位数据为1时,才将数据送入接收时,才将数据送入接收 缓冲器缓冲器SBUF,并置位,并置位RI发出中断请求信号,否则将发出中断请求信号,否则将 丢失信息;而当丢失信息;而当SM20时,则无论第九位是时,则无论第九位是0还是还是1, 都能将数据装入都能将数据装入SBUF,并产生中断请求信号。,并产生中断请求信号。 以主机向从机发送数据为例,在编程前,可先定义各从机通以主机向从机发送数据为例,在编程前,可先定义各从机通 信地址,设三个从机
59、地址分别为信地址,设三个从机地址分别为00H,01H,和,和02H。主机。主机 和从机在初始化程序中将串行口工作方式设定为和从机在初始化程序中将串行口工作方式设定为11位异步位异步 通信方式(方式通信方式(方式2或方式或方式3),且置位),且置位SM2,允许接收和开,允许接收和开 放串行口中断。放串行口中断。 在主机和某一从机通信之前,先向所有从机发出所选从机的在主机和某一从机通信之前,先向所有从机发出所选从机的 地址,接着发送数据或命令。主机在发送地址时,地址数地址,接着发送数据或命令。主机在发送地址时,地址数 据标识位据标识位TB8设置设置1,以表示是地址信息。各从机接收到主,以表示是地址
60、信息。各从机接收到主 机发来的地址信息后,则置位中断标志机发来的地址信息后,则置位中断标志RI,请求,请求CPU处理,处理, 从机在中断服务子程序中判断主机送来的地址是否与本从从机在中断服务子程序中判断主机送来的地址是否与本从 机相符。若为本地址,则将机相符。若为本地址,则将SM2位清位清0,准备与主机进行数,准备与主机进行数 据通信。据通信。 而地址不符合的从机则保持而地址不符合的从机则保持SM2为为1状态。接着状态。接着 主机发送数据帧,数据帧的第主机发送数据帧,数据帧的第9位位TB8为为0,各串行口同时,各串行口同时 收到了数据帧,而只有已选中的从机收到了数据帧,而只有已选中的从机(SM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东深圳证券交易所暑期实习生招聘备考题库完整参考答案详解
- 2026江西上饶万年县城市建设开发有限公司招聘工作人员1人备考题库附答案详解(夺分金卷)
- 2026陕西省朱雀广场管理中心招聘备考题库含答案详解(模拟题)
- 2026江苏建筑职业技术大学招聘专职辅导员备考题库有答案详解
- 2026博乐边合区金盛茂业商贸物流有限公司招聘1人备考题库含答案详解(新)
- 知识产权保护与市场准入探讨
- 2026中共宁海县委党校招聘事业编制工作人员1人备考题库含答案详解(达标题)
- 2026博乐边合区金盛茂业商贸物流有限公司招聘1人备考题库完整答案详解
- 2026重庆市长寿区菩提街道办事处公益性岗位招聘1人备考题库及答案详解(全优)
- 2025年天津市《保密知识竞赛必刷100题》考试题库及参考答案详解【典型题】
- 【实用资料】马克思主义基本原理绪论PPT
- 贝叶斯公式课件
- 污水处理设备点检表
- 刑法案例分析课件
- 城市景观设计
- GB/T 39859-2021镓基液态金属
- GB/T 22923-2008肥料中氮、磷、钾的自动分析仪测定法
- GB/T 1921-2004工业蒸汽锅炉参数系列
- GB/T 18342-2001链条炉排锅炉用煤技术条件
- 2023年怀化市城市发展集团有限公司招聘笔试模拟试题及答案解析
- 静电防护安全知识精选优秀课件
评论
0/150
提交评论