
第四章单片机的其他片内功能部件L详解.ppt
74页第四章第四章 单片机的其他片内单片机的其他片内 功能部件功能部件4-14-1 并行并行I/OI/O口口 4-24-2 定时器定时器/ /计数器计数器 4-44-4 中断系统中断系统 4-34-3 串行通信接口串行通信接口 1I/O I/O 接口的作用接口的作用1.实现和不同外设的速度匹配实现和不同外设的速度匹配2.改变数据传送方式改变数据传送方式3.改变信号的性质和电平改变信号的性质和电平2端口与接口端口与接口l端口:端口:常指常指I/O接口中带有端口地址的寄存器接口中带有端口地址的寄存器或缓冲器,或缓冲器,CPU通过端口地址就可以对端口通过端口地址就可以对端口中信息进行读写中信息进行读写l接口:接口:指指CPU与外设间的与外设间的I/O接口芯片,一个接口芯片,一个外设通常需要一个外设通常需要一个I/O接口,但一个接口,但一个I/O接口可接口可以有多个以有多个I/O端口,传送数据字的端口称数据端口,传送数据字的端口称数据口,传送命令字的称命令口,传送状态字的口,传送命令字的称命令口,传送状态字的称为状态口称为状态口。
3外部设备的编址外部设备的编址 即给所有即给所有I/O接口中的端口编址,接口中的端口编址,CPUCPU通过这些端通过这些端口地址与外设交换信息口地址与外设交换信息1.对外设端口单独编址对外设端口单独编址(如:如:Z80)专门的专门的I/O指令:指令: IN A, (N) ; A¬A¬N端口中的数端口中的数 OUT (N),A2.外设端口和存储器统一编址外设端口和存储器统一编址(如:如:MCS-51)将一部分地址空间让给外设端口,存储器不再使用将一部分地址空间让给外设端口,存储器不再使用统一编址的优点:统一编址的优点:((1)一切指令均适用于)一切指令均适用于I/O端口的访问,增强了端口的访问,增强了CPU对外围设备的处理能力对外围设备的处理能力2))CPU本身不需要专门的本身不需要专门的I/O指令3)外设端口地址安排灵活,数量不限外设端口地址安排灵活,数量不限44-1 4-1 并行并行I/OI/O口口v四个四个8位并行位并行I/O端口:端口:P0P0、、P1P1、、P2P2和和P3P3v每个端口都是每个端口都是8位准双向口,包含一个八位数据位准双向口,包含一个八位数据输出锁存器输出锁存器、、一个输出驱动器和一个八位数据输一个输出驱动器和一个八位数据输入缓冲器。
入缓冲器v四个并行四个并行I/OI/O口都可以作准双向通用口都可以作准双向通用I/OI/O口,既可口,既可以作输入口,又可以作输出口,还可以作双向口以作输入口,又可以作输出口,还可以作双向口输出有锁存功能;输入有三态缓冲但无锁存功能输出有锁存功能;输入有三态缓冲但无锁存功能( (各引脚上的数据必须一直保存到各引脚上的数据必须一直保存到CPUCPU读走为止读走为止) ) 它们既可以以字节寻址,也可以按位独立输入它们既可以以字节寻址,也可以按位独立输入/ /输出 5三种三种I/O端口操作方式端口操作方式1.数据输出方式(写端口)数据输出方式(写端口) 通过一条指令将数据写入通过一条指令将数据写入P0-P3的数据锁存器,的数据锁存器,然后通过输出驱动器送到端口引脚然后通过输出驱动器送到端口引脚 MOV P0,A ;累加器累加器A中内容送中内容送P0口口2.读端口读端口 对端口锁存器数据进行读入,这个数据并非端对端口锁存器数据进行读入,这个数据并非端口引脚上的数据口引脚上的数据 MOV A,P1 ;P1锁存器中数据送锁存器中数据送A63.读引脚读引脚 从端口引脚上读数据,先使对应端口锁存器置从端口引脚上读数据,先使对应端口锁存器置位,使位,使T管截止,然后打开数据缓冲器,使引脚管截止,然后打开数据缓冲器,使引脚数据输入数据总线。
数据输入数据总线 MOV P1,#0FH ;使使P1口低四位锁存器置位口低四位锁存器置位 MOV A,P1 ;读读P1口低四位引脚线信号口低四位引脚线信号7P1口的位结构口的位结构4-1-1 4-1-1 P1P1口口lP1口的内部结构口的内部结构8l通用通用I/O口口可以采用字节操作也可以采用位操作,可以采用字节操作也可以采用位操作,CPU既可以把它们看作数据口也可以看既可以把它们看作数据口也可以看作状态口作状态口CPU复位后,口锁存器为复位后,口锁存器为“1”,对于作,对于作为输入的口线(读引脚),相应位的口为输入的口线(读引脚),相应位的口锁存器不能写入锁存器不能写入“0”9例例4--1读读P1.4~P1.7口状态送指示灯显示口状态送指示灯显示 字节操作参考程序字节操作参考程序:: ORL P1, #0F0H ;P1.4~P1.7口锁存器置口锁存器置1 MOV A, P1 ;;读读P1.4~P1.7引脚状态引脚状态 SWAP A ;; ORL A, #0F0H ; 保持保持P1.4~P1.7口锁存器为口锁存器为1 MOV P1, A ;; RET10 P2口有口有两种功能两种功能:: 对于内部有程序存贮器的单片机,对于内部有程序存贮器的单片机,P2口既口既可以作为输入可以作为输入/输出口使用,也可以作为输出口使用,也可以作为系统扩展的地址总线口,输出高系统扩展的地址总线口,输出高8位地址位地址A8~~A15。
对于内部没有程序存贮器的单片机,必须对于内部没有程序存贮器的单片机,必须外接程序存贮器,外接程序存贮器,一般情况下一般情况下P2口只能作口只能作为系统扩展的高为系统扩展的高8位地址总线口,而不能位地址总线口,而不能作为外部设备的输入/输出口作为外部设备的输入/输出口 4-1-2 4-1-2 P2P2口口11P2口作通用口作通用I/O口口 (支持字节操作和位操作支持字节操作和位操作)例例4-3 XRL P2,,#01H ;;P2.0取反取反CPL P2.0 ;;P2.0取反取反 P2口的位结构口的位结构12P2口作地址总线口作地址总线((1 1)若片外数据存储器的容量)若片外数据存储器的容量≤256≤256B B 这时这时P2P2口不输出地址,仍可作为口不输出地址,仍可作为I/OI/O口使用口使用例例4-44-4 将将5656H H写写入入外外部部RAMRAM的的3838H H单单元元,,CPUCPU执执行行下下面面的的程序段不影响程序段不影响P2P2口状态:口状态: MOV R0MOV R0,, #38H #38H MOV A MOV A,, #56H #56H MOVX @R0 MOVX @R0,, A A ((2)若片外数据存储器的容量)若片外数据存储器的容量≥256B MOVX A,@DPTR MOVX @DPTR,A 134-1-3 4-1-3 P0P0口口 P0口既可作通用口既可作通用I/O口(用口(用8051时)使用,时)使用,又可作地址/数据分时复用总线使用。
又可作地址/数据分时复用总线使用 14 P3口除了作口除了作为准双向通为准双向通用用I/O接口使接口使用外,每一用外,每一根线还具有根线还具有第二种功能第二种功能 4-1-4 4-1-4 P3P3口口 引脚引脚第第 二二 功功 能能P3.0RXD((串行输入口)串行输入口)P3.1TXD((串行输出口)串行输出口)P3.2INT0INT0((外部中断外部中断0请求输入端)请求输入端)P3.3INT1INT1((外部中断外部中断1请求输入端)请求输入端)P3.4T0((定时器定时器/计数器计数器0计数脉冲输入端)计数脉冲输入端)P3.5T1((定时器定时器/计数器计数器1计数脉冲输入端)计数脉冲输入端)P3.6WR(片外片外RAM写选通信号输出端写选通信号输出端)P3.7RDRD((片外片外RAM读选通信号输出端)读选通信号输出端)15 MCS-51内部具有的定时内部具有的定时/计数器,在检测、计数器,在检测、控制等应用中发挥重要作用,用定时器作实时控制等应用中发挥重要作用,用定时器作实时时钟,可实现定时检测、控制;计数器用于外时钟,可实现定时检测、控制;计数器用于外部事件计数,用作分频器和事故处理来用。
部事件计数,用作分频器和事故处理来用1、定时、定时/计数器可以分为定时器模式和计数器模计数器可以分为定时器模式和计数器模式两种每种模式可单独设定为方式式两种每种模式可单独设定为方式0、、1、、2和方式和方式3工作2、定时器模式下的定时时间或计数器模式下的、定时器模式下的定时时间或计数器模式下的计数值可由计数值可由CPU通过程序设定,但不能超过所通过程序设定,但不能超过所设定的工作方式下的最大值设定的工作方式下的最大值3、定时、定时/计数器内部是一个二进制加计数器内部是一个二进制加1计数器,计数器,当计数器计满回零时能自动产生溢出中断请求,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已中止表示定时时间已到或计数已中止4-24-2 定时器定时器/ /计数器计数器162 2个可独立控制的个可独立控制的1616位定时器位定时器/ /计数器:计数器:T0T0、、T1T1原理:原理:1、定时模式、定时模式每一个机器周期计数器加每一个机器周期计数器加1,直至计满溢出产生中断请,直至计满溢出产生中断请求对于一个求对于一个N位的加位的加1计数器,若计数时钟的频率计数器,若计数时钟的频率f是已知的,是已知的,则从初值则从初值a开始加开始加1计数至溢出所占用的时间为:计数至溢出所占用的时间为:当当N=8N=8、、a=0a=0、、t=1/ft=1/f时,最大的定时时间为:时,最大的定时时间为: T=256t T=256t 2 2、计数模式、计数模式外部输入信号是加到外部输入信号是加到T0T0((P3.4P3.4))或或T1T1((P3.5P3.5))端,端,CPUCPU每个机器周期对每个机器周期对T0(T0(或或T1)T1)检测一次,只有在前一次检测为检测一次,只有在前一次检测为1 1后后一次检测为一次检测为0 0时才使计数器加时才使计数器加1 1。
所以,对外部输入信号的最高所以,对外部输入信号的最高计数速率是晶振的计数速率是晶振的1/241/2417一一. .定时器方式、控制定时器方式、控制/ /状态寄存器状态寄存器1.1.TMTMOD D定时器定时器方式寄存器方式寄存器((8989H H))1 1)功能选择位)功能选择位C/TC/T::=0=0,,定时功能,计数内部机器周期脉冲;定时功能,计数内部机器周期脉冲;=1=1,计数功能,计数引脚,计数功能,计数引脚T0(T1)T0(T1)输入的脉冲下降沿输入的脉冲下降沿2 2)方式选择位)方式选择位M1M1、、M0M0::4 4种工作方式:种工作方式:13/16/813/16/8位位3 3)门控方式选择位)门控方式选择位GATE GATE :: =0=0,,非门控方式非门控方式( (内部启动内部启动) )::TRx=1TRx=1,,启动定时器工作;启动定时器工作;TRx=0TRx=0,,停止定时器工作停止定时器工作1=1,门控方式,门控方式( (外部启动外部启动) )::TRx=1TRx=1且引脚且引脚INTx=1INTx=1才启动T1T018 M MOV VTMTMOD D,,#1101 0010B#1101 0010B 或或 M MOV VTMTMOD D,,#0D2H#0D2H注:只能字节寻址注:只能字节寻址 TMTMOD D确定定时器工作方式指令:确定定时器工作方式指令:M MOV TMV TMOD D,,# #方式字方式字例:例:设设T0T0用方式用方式2 2非门控定时,非门控定时,T1T1用方式用方式1 1门控计数。
门控计数192 2. .TCTCTCTCOON N N N定时器控制定时器控制定时器控制定时器控制/ / / /状态寄存器状态寄存器状态寄存器状态寄存器((((88888888H H H H))))1 1)启动控制位)启动控制位TR0TR0、、TR1TR1=0=0,,停止定时器工作;停止定时器工作; =1=1,启动定时器工作启动定时器工作例:启动例:启动T0T0::SETBSETBTR0 ;TR0 ;注:可以位寻址注:可以位寻址2 2)溢出中断标志位)溢出中断标志位TF0TF0、、TF1TF1定时器溢出使定时器溢出使TFx=1TFx=1中断方式:中断方式: TFx=1 TFx=1引起中断请求,引起中断请求,CPUCPU响应响应TxTx中断后,自动对中断后,自动对TFxTFx清清0 0 软件查询方式:软件查询方式: 可用软件检测可用软件检测TFxTFx,,必须软件清必须软件清0 0WAITWAIT::JBC TF0JBC TF0,,NEXTNEXT;;检测检测T0T0是否溢出是否溢出SJMPSJMPWAITWAIT ;;未溢出,继续检测未溢出,继续检测NEXTNEXT:: … … ;;溢出,溢出,TF0TF0清清0 0,处理溢出,处理溢出203 3.可预置初值的.可预置初值的1616位加位加1 1定时计数器定时计数器 属于属于SFRSFR中的一种,中的一种,T0T0由由TH0TH0、、TL0TL0组成,组成, T1T1由由TH1TH1、、TL1TL1组成。
通过预设初值来定时通过预设初值来定时预置预置T0T0初值指令:初值指令:M MOV VTH0TH0,,#X#XH HM MOV VTL0TL0,,#X#XL L21二、二、二、二、定时器工作方式定时器工作方式定时器工作方式定时器工作方式由方式选择位由方式选择位由方式选择位由方式选择位M1M1M1M1、、、、M0M0M0M0设定设定设定设定1.1.1.1.方式方式方式方式0 0 0 01313位定时位定时/ /计数器计数外部脉冲个数:计数外部脉冲个数:1 1~~8192(28192(21313) )定时时间定时时间(12(12MHzMHz,,即:即:T=1T=1 s)s)::1 1 s s ~~8.192ms8.192ms振荡器振荡器÷12THxTLxTFx8位位 5位位Tx脚脚&TRx 1GATE启动启动控制控制INTxC/T=0C/T=1中断中断申请申请22THx THx 高高8 8位和位和TLx TLx 低低5 5位组成位组成1313位加位加1 1计数器计数器例:计算得初值为例:计算得初值为76927692,,1313位定时器位定时器T0T0应装初值应装初值多少?多少?76927692化为化为1616进制数进制数1 1E0CH,E0CH,则则TH0TH0==0FOH,TL0=0CH0FOH,TL0=0CH232.2.2.2.方式方式方式方式1 1 1 11616位定时位定时/ /计数器。
计数器 THx8THx8位和位和TLx8TLx8位组成位组成1616位加位加1 1计数器计数器计数外部脉冲个数:计数外部脉冲个数:1 1~~65536(265536(21616) )定时时间定时时间( (T=1T=1 s)s)::1 1 s s ~~ 65536×T= 65.54ms 65536×T= 65.54ms振荡器振荡器÷12THxTLxTFx8位位 8位位Tx脚脚&TRx 1GATE启动启动控制控制INTxC/T=0C/T=1中断中断申请申请243. 3. 方式方式方式方式2 2 2 2自动恢复初值自动恢复初值8 8位定时位定时/ /计数器TLxTLx为为8 8位加位加1 1计数器,计数器,THxTHx为为8 8位初值暂存器位初值暂存器无需重装初值,用于需要重复定时无需重装初值,用于需要重复定时和计数的场合和计数的场合最大计数值:最大计数值:256 (2256 (28 8) )最大定时时间最大定时时间( (T=1T=1 s)s):: 256 256 s s振荡器振荡器÷12TLxTHxTFx8位位 Tx脚脚&TRx 1GATE启动启动控制控制INTxC/T=0C/T=1中断中断申请申请重重装装25 方式方式2下,当定时器计满回零时,一方面向下,当定时器计满回零时,一方面向CPU发出溢出中断请求,另一方面从发出溢出中断请求,另一方面从TH中重新获得初值并启动计数。
中重新获得初值并启动计数 而方式而方式0、、1、、3下,定时器必须通过重装初下,定时器必须通过重装初值来重新启动计数值来重新启动计数264.4.方式方式方式方式3 3(只适用(只适用(只适用(只适用T0T0))))T0T0分成分成2 2个独立的个独立的8 8位定时器:位定时器:TL0TL0定时定时/ /计数器和计数器和TH0TH0定时器定时器TL0TL0占用占用T0T0控制位:控制位:C/TC/T,,TR0TR0,,GATEGATE;;TH0TH0占用占用T1T1控制位控制位T1T1不能使用方式不能使用方式3 3工作工作, ,一般当一般当T1T1作为波特率发生器时作为波特率发生器时, ,T0T0选方选方式式3 3振荡器振荡器÷12TL0TF08位位 T0脚脚&TR0 1GATE启动启动控制控制INT0C/T=0C/T=1中断中断申请申请TH0TF18位位 启动启动控制控制中断中断申请申请振荡器振荡器÷12TR1274-2-3 4-2-3 4-2-3 4-2-3 定时器定时器定时器定时器/ / / /计数器的初始化计数器的初始化计数器的初始化计数器的初始化 1.初始化步骤.初始化步骤 1 1)给定时器方式寄存器)给定时器方式寄存器TMOD写一个方式控写一个方式控制字。
制字 2 2)给定时器送定时初值给定时器送定时初值 3 3)给中断允许寄存器)给中断允许寄存器IEIE选送中断控制字和中选送中断控制字和中断优先级寄存器断优先级寄存器IPIP选送中断优先级字,以开放选送中断优先级字,以开放相应中断和设定中断优先级相应中断和设定中断优先级 4 4)给定时器控制寄存器)给定时器控制寄存器TCON送命令字,以送命令字,以启动或禁止定时器启动或禁止定时器/ /计数器的运行计数器的运行 28 2.计数器初值的计算.计数器初值的计算 TC=M--C 方式0时M为方式0时M为2^132^13;方式1时M;方式1时M为为2^162^16;方式2和方式3时M为;方式2和方式3时M为2^82^8TCTC为计数初值为计数初值C C为计满所需要的计数个数为计满所需要的计数个数293.定时器初值的计算3.定时器初值的计算T=(MT=(M--TC) TTC) T计数计数上式也可写成:上式也可写成:TC=MTC=M--T/ TT/ T计数计数 式中,M为模值,和定时器的工作方式式中,M为模值,和定时器的工作方式有关;有关;T T计数计数是单片机时钟周期T是单片机时钟周期TCLKCLK的的1212倍;倍;TCTC为定时器的定时初值。
为定时器的定时初值 30 例例4-7 若单片机时钟频率为若单片机时钟频率为12MHz,,请计算定时请计算定时2ms所需的定时器初值所需的定时器初值解解::由由于于定定时时器器工工作作在在方方式式2 2和和方方式式3 3下下时时的的最最大大定定时时时时间间只只有有0.2560.256msms,,因因此此要要想想获获得得2 2msms的的定定时时间定时器必须工作在方式时时间定时器必须工作在方式0 0或方式或方式1 1若采用方式若采用方式0 0,则根据公式可得定时器初值为:,则根据公式可得定时器初值为:TC= TC= M M--T/ TT/ T计数计数= = 2^132^13 --2*10^3/1=6192=1830H2*10^3/1=6192=1830H即:即:TH0TH0应装#应装#0 0C1HC1H;;TL0TL0应装应装#10#10H H((高三位为高三位为0 0))若采用方式若采用方式1 1,则根据公式可得定时器初值为:,则根据公式可得定时器初值为:TC= TC= 2^12^16 6--2*10^3/1=63536=F830H2*10^3/1=63536=F830H 即:即:TH0TH0应装应装#0#0F8HF8H;;TL0TL0应装应装#30#30H H。
31例:例:设设8031时钟频率为时钟频率为12MHz,,要求定时器要求定时器T0定时定时50ms,,写出初始化程序写出初始化程序TC=M-T/T计数=计数=2^16-50ms/1us=15536=3CB0HSTART:MOV TMOD #01H START:MOV TMOD #01H ;;方式方式1 1 MOV TH0,#3CH MOV TH0,#3CH ;;装初值装初值 MOV TL0,#0B0H MOV TL0,#0B0H SETB TR0 SETB TR0 ;;启动启动T0T0计数计数WAITWAIT::JBC TF0JBC TF0,,TT0 TT0 ;;检测检测T0T0是否溢出是否溢出 SJMP WAITSJMP WAIT ;;未溢出,继续检测未溢出,继续检测TTO: MOV TH0, #3CH TTO: MOV TH0, #3CH ;;重装初值重装初值 MOV TL0,#0B0H MOV TL0,#0B0H … … 324-34-3 串行通信接口串行通信接口一一. .数据通信的基本方式数据通信的基本方式Ø并行通信并行通信Ø数据有多少位就需多少根传送线,传送距离短,数据有多少位就需多少根传送线,传送距离短,传送速度快。
传送速度快Ø串行通信串行通信Ø只需一对传送线,传送距离相对较远,但传送只需一对传送线,传送距离相对较远,但传送速度慢33二二. .串行通信的基本方式串行通信的基本方式( (一一) )异步通信异步通信 以字符为传送单位用起始位和停止位标识每个以字符为传送单位用起始位和停止位标识每个字符的开始和结束,字符间隔不固定,只需字字符的开始和结束,字符间隔不固定,只需字符传送时同步符传送时同步 34( (二二) )同步通信同步通信 每一数据块开头时发送一个或两个同步字符,每一数据块开头时发送一个或两个同步字符,使发送与接收双方取得同步数据块的各个字使发送与接收双方取得同步数据块的各个字符间取消了起始位和停止位,所以通信速度得符间取消了起始位和停止位,所以通信速度得以提高 三三. .串行数据传送方向串行数据传送方向单工通讯:数据单向传送单工通讯:数据单向传送半双工通讯:数据可分时双向传送半双工通讯:数据可分时双向传送全双工通讯:可同时进行发送和接收全双工通讯:可同时进行发送和接收发送器接收器发送器接收器35四四. .串行接口的基本结构串行接口的基本结构1.1.发送器:发送器:并并串数据格式转换,添加标识位和校验位,串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。
一帧发送结束,设置结束标志,申请中断2.2.接收器:接收器:串串并数据格式转换,检查错误,去掉标识并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断位,保存有效数据,设置接收结束标志,申请中断3.3.控制器:控制器:接收编程命令和控制参数,设置工作方式:接收编程命令和控制参数,设置工作方式:同步同步/ /异步、字符格式、波特率、校验方式、数据位与同异步、字符格式、波特率、校验方式、数据位与同步时钟比例等步时钟比例等36五、五、MCS-51的串行接口控制器的串行接口控制器1.1.数据缓冲器数据缓冲器SBUFSBUF(发送器和接收器)(发送器和接收器)发送发送SBUFSBUF和接收和接收SBUFSBUF共用一个地址共用一个地址9999H H 1 1))发送发送SBUFSBUF存放待发送的存放待发送的8 8位数据,写入位数据,写入SBUFSBUF的的同时同时 启动发送启动发送 发送指令:发送指令:M MOV V SBUFSBUF,,A A2 2))接收接收SBUFSBUF中存放已接收成功的中存放已接收成功的8 8位数据,供位数据,供CPUCPU读取。
读取 读取串行口接收数据指令:读取串行口接收数据指令: M MOV AV A,,SBUFSBUF372.2.串行口控制串行口控制/ /状态寄存器状态寄存器 SCON(98H)SCON(98H)((控制器)控制器)SM0SM0,,SM1SM1::选择串行口选择串行口4 4种工作方式种工作方式382.2.串行口控制串行口控制/ /状态寄存器状态寄存器 SCONSCON (98H)(98H)SM2SM2::方式方式2 2和方式和方式3 3的多机通信控制位的多机通信控制位. .RENREN::允许接收控制位,允许接收控制位,REN=1REN=1,,允许接收;允许接收;REN=0REN=0,,禁禁 止接收止接收. .TB8TB8::发送的第发送的第9 9位数据位,可用作校验位和地址位数据位,可用作校验位和地址/ /数据数据 标识位标识位. .RB8RB8::接收的第接收的第9 9位数据位或停止位位数据位或停止位. .TITI:: 发送中断标志,发送一帧结束时由硬件置位,发送中断标志,发送一帧结束时由硬件置位, TI=1TI=1,,须软件清零须软件清零. .RIRI:: 接收中断标志,接收一帧结束时由硬件置位,接收中断标志,接收一帧结束时由硬件置位, RI=1 RI=1,,须软件清零须软件清零. .39SMOD(PCON.7) )::串行通信串行通信波特率加倍控制位。
波特率加倍控制位SMOD=1,,串行通信串行通信波特率加倍,波特率加倍, SMOD=0,,则不加倍则不加倍波特率:波特率:每秒钟传送二进制数码的位数(每秒钟传送二进制数码的位数(bit 数),单位是数),单位是bps(bit per second)若波特率为若波特率为1200bps,,字符的实际传送速率字符的实际传送速率为为1200/10=120帧帧/秒3.3.节电控制寄存器节电控制寄存器 PCON (97H)PCON (97H)40六、六、六、六、 串行接口的工作方式串行接口的工作方式串行接口的工作方式串行接口的工作方式(由(由(由(由SM0SM0SM0SM0、、、、SM1SM1SM1SM1选择设定)选择设定)选择设定)选择设定)( (1)1)方式方式0 0::同步移位寄存器方式同步移位寄存器方式用于串行扩展用于串行扩展I/I/O接口1.1.一帧一帧8 8位,无起始位和停止位位,无起始位和停止位2.2.RXDRXD::数据输入数据输入/ /输出端 TXDTXD::同步移位脉冲输出端,每个脉冲对应一个数据位同步移位脉冲输出端,每个脉冲对应一个数据位3.3.波特率波特率B = fosc/12B = fosc/12若:若: fosc=12MHzfosc=12MHz,, B=1MHzB=1MHz,,每位数据占每位数据占1 1 s s。
4.4.发送过程:发送过程:先对先对TITI清零,写入清零,写入SBUFSBUF,,同时启动发送,一帧发同时启动发送,一帧发 送结束,送结束,TI=1TI=1从低位开始串行输出,在外部的移位寄存从低位开始串行输出,在外部的移位寄存 器器7474LS164LS164((串入并出)中,数据的低位在右,高位在左串入并出)中,数据的低位在右,高位在左 接收过程:接收过程:REN=1REN=1且且RI=0RI=0,,启动接收,一帧接收完毕,启动接收,一帧接收完毕,RI=1RI=1 外部接有移位寄存器外部接有移位寄存器7474LS166LS166((并入串出)并入串出) 41串行输入、并行输出移位寄存器内部结构串行输入、并行输出移位寄存器内部结构RXDTXD42(2) (2) (2) (2) 方式方式方式方式1 1 1 1:::: 8 8 8 8位数据异步通讯方式位数据异步通讯方式位数据异步通讯方式位数据异步通讯方式1.1.一帧一帧1010位:位:8 8位数据位,位数据位,1 1个起始位个起始位(0)(0),,1 1个停止位个停止位(1)(1)。
2.2.RXDRXD::接收数据端接收数据端 TXDTXD::发送数据端发送数据端3.3.波特率:波特率:用用T1作为波特率发生器,作为波特率发生器, B=(2 B=(2SMOD/32)×/32)×T1T1溢出率溢出率4.4.发送:发送:先对先对TITI清零,清零,写入写入SBUFSBUF,,同时启动发送,一帧同时启动发送,一帧 发送结束,发送结束,TI=1TI=1 接收:接收:REN=1REN=1且且RI=0RI=0,,允许接收接收完一帧允许接收接收完一帧,,将接收将接收 数据装入数据装入SBUFSBUF,,RI=1RI=143接收原理:接收原理:当当REN=1REN=1,,CPUCPU开始采样开始采样RXDRXD引脚负跳变信号,若出现负引脚负跳变信号,若出现负跳变,才进入数据接收状态即先检测起始位,若第一位跳变,才进入数据接收状态即先检测起始位,若第一位为为0 0,继续接收其余位;否则,停止接收,重新检测采样,继续接收其余位;否则,停止接收,重新检测采样RXDRXD引脚的负跳变。
引脚的负跳变CPUCPU数据采样速率为所选波特率数据采样速率为所选波特率1616倍频,在数据位中间,倍频,在数据位中间,对第对第7 7、、8 8、、9 9个脉冲采样到的值进行位检测,并以个脉冲采样到的值进行位检测,并以3 3中取中取2 2(次相同)的原则确定采样值,防止干扰次相同)的原则确定采样值,防止干扰44接收和发送时序图接收和发送时序图写入写入SBUF采样((a)) 发送时序图发送时序图TXD数据输出数据输出TID0D1D2D3D4D5D6D7停止位停止位起始位起始位RXD数据输入数据输入 ((b)) 接收时序图接收时序图D0D1D2D3D4D5D6D7停止位停止位起始位起始位RI检测负跳变45(3)(3)(3)(3) 方式方式方式方式2 2 2 2和方式和方式和方式和方式3 3 3 3:::: 9 9 9 9位数据异步通讯方式位数据异步通讯方式位数据异步通讯方式位数据异步通讯方式1.1.一帧为一帧为1111位:位:9 9位数据位,位数据位,1 1个起始位个起始位(0)(0),,1 1个停止位个停止位(1)(1) 第第9 9位数据位在位数据位在TB8/RB8TB8/RB8中,常用作奇偶校验位和多机通讯标中,常用作奇偶校验位和多机通讯标 识位。
识位2.2.RXDRXD::接收数据端接收数据端 TXD TXD::发送数据端发送数据端3.3.波特率:波特率: 方式方式2 2::B=(2B=(2SMOD/64)×fosc /64)×fosc 方式方式3 3::B=(2B=(2SMOD/32)×T1/32)×T1溢出率溢出率4.4.发送:先装入发送:先装入TB8TB8,,写入写入SBUFSBUF并启动发送,发送结束,并启动发送,发送结束,TI=1TI=1 接收:接收:REN=1REN=1且且RI=0RI=0,,允许接收接收完一帧,若允许接收接收完一帧,若RI=0RI=0且且 SM2=0 SM2=0或或RB8=1,RB8=1,将接收数据装入接收将接收数据装入接收SBUFSBUF,,第第9 9位装入位装入 RB8 RB8,,使使RI=1RI=1;;否则丢弃接收数据,不置位否则丢弃接收数据,不置位RIRI46((((4 4 4 4)计算波特率)计算波特率)计算波特率)计算波特率方式方式0 0为固定波特率:为固定波特率:B=fB=fosc/12/12方式方式2 2可选两种波特率:可选两种波特率: B=(2B=(2SMOD /64)×fosc /64)×fosc 方式方式1 1、、3 3为可变波特率,用为可变波特率,用T1T1作波特率发生器。
作波特率发生器B=(2B=(2SMOD/32)×T1/32)×T1溢出率溢出率T1T1通常选用可自动重装初值模式通常选用可自动重装初值模式( (工作方式工作方式2)2),设计数初值为,设计数初值为X X,,则溢出周期则溢出周期=(2=(28 8-X)×12/f-X)×12/fosc ,,T1T1溢出率为溢出周期的倒数,所以有溢出率为溢出周期的倒数,所以有 波特率波特率=(2=(2SMOD/32)×f/32)×fosc/[12×(2/[12×(28 8-X)]-X)]反之,可根据串行口方式反之,可根据串行口方式1 1、方式、方式3 3的波特率选择的波特率选择T1T1工作方式,计工作方式,计算初值算初值X X::若若T1T1选方式选方式2 2,则,则计数器初值计数器初值X(X(在在TH1TH1中中) )==2 28 8-(-(f fosc/12)×2/12)×2SMOD/(32×/(32×波特率波特率) )474-3-5 4-3-5 4-3-5 4-3-5 单片机双机通信和多机通信单片机双机通信和多机通信单片机双机通信和多机通信单片机双机通信和多机通信 1.双机通信双机通信48串行口的应用串行口的应用串行口初始化编程格式:串行口初始化编程格式:SIO::MOV SCON,,#状态字状态字 ;;写方式字,且写方式字,且TI=RI=0 MOV PCON,,#80H ;;波特率加倍波特率加倍 MOV TMOD,,#20H ;;T1作波特率发生器作波特率发生器,方式方式2 MOV TH1,, #X ;;T1置初值置初值 MOV TL1,, #X SETB TR1 SETB EA ;;CPU开中断允许开中断允许 SETB ES ;;允许串行口中断允许串行口中断49发送程序:发送程序:发送程序:发送程序:先发送一个字符,等待先发送一个字符,等待先发送一个字符,等待先发送一个字符,等待TITITITI置置置置1 1 1 1后再发送下一个字符。
后再发送下一个字符后再发送下一个字符后再发送下一个字符1.1.查询方式:查询方式:TRAM:: MOV A,,@R0 ;;取数据取数据 MOV SBUF,,A ;;发送一个字符发送一个字符WAIT::JBCTI,,NEXT ;;等待发送结束等待发送结束SJMP WAITNEXT::INCR0 ;;准备下一次发送准备下一次发送SJMP TRAM(一)串行口(一)串行口(一)串行口(一)串行口方式方式方式方式0 0 0 0( ( ( (用于扩展单片机的用于扩展单片机的用于扩展单片机的用于扩展单片机的I/I/I/I/OO接口接口接口接口) ) ) )502.中断方式:中断方式: ORG 0023H ;;串行口中断入口串行口中断入口 AJMP SINT ORG 0300H MAIN:: … ;;初始化编程初始化编程TRAM:: MOV A,,@R0 ;;取数据取数据MOV SBUF,,A ;;发送第一个字符发送第一个字符 H:: SJMP H ;;等待等待 SINT:: … ;;入栈入栈 CLR TI ;;发送中断标志发送中断标志TI清零清零INC R0MOV A,,@R0 ;;取下一个数据取下一个数据MOV SBUF,,A ;;发送下一个字符发送下一个字符 … ;;出栈出栈RETI51接收程序:接收程序:接收程序:接收程序:REN=1REN=1REN=1REN=1、、、、RI=0RI=0RI=0RI=0等待接收。
若等待接收若等待接收若等待接收若RI=1RI=1RI=1RI=1,则从,则从,则从,则从SBUFSBUFSBUFSBUF读取数据读取数据读取数据读取数据1.1.查询方式:查询方式: WAIT::JBCRI,,NEXT;;查询等待查询等待SJMP WAITNEXT::MOV A,,SBUF ;;读取接收数据读取接收数据MOV @R0,,A;;保存数据保存数据INCR0 ;;准备下一次接收准备下一次接收SJMP WAIT522.2.中断方式:中断方式: ORG 0023H AJMP RINT ORG 0300HMAIN:: … ;;初始化编程初始化编程 H:: SJMP H ;;等待等待 RINT:: … ;;入栈入栈 CLRRI ;;清接收中断标志清接收中断标志MOV A,,SBUF ;;读取接收的数据读取接收的数据MOV @R0,,A;;保存数据保存数据INCR0 … ;;出栈出栈RETI53(二二)异步通讯程序举例异步通讯程序举例 1.1.发发送送程程序序::将将片片内内RAM RAM 50H50H起起始始单单元元的的1616个个单单元元的的数数据据由由串串行行口发送。
口发送要求发送波特率为系统时钟的要求发送波特率为系统时钟的32分频,并进行奇偶校验分频,并进行奇偶校验MAINT:: MOV SCON,,#80H ;;串行口初始化,方式串行口初始化,方式2 MOV PCON,,#80H ;;波特率,波特率,SMOD=1 SETBEA SETBES ;;开串行口中断开串行口中断MOV R0,,#50H ;;设数据指针设数据指针MOV R7,,#10H ;;数据长度数据长度 LOOP:: MOV A,,@R0 ;;取一个字符取一个字符MOV C,,P ;;加奇偶校验加奇偶校验MOV TB8,,CMOV SBUF,,A ;;启动第一次发送启动第一次发送 WAIT:: JBCTI,,NEXT ;;等待发送结束等待发送结束SJMP WAIT NEXT:: INCR0 ;;准备下一次发送准备下一次发送DJNZ R7,,LOOP ;;是否发送完?是否发送完? END542. 2. 接收程序:接收程序:接收程序:接收程序:串行接收串行接收串行接收串行接收1616个字符,存入片内个字符,存入片内个字符,存入片内个字符,存入片内RAMRAM的的的的5050H H起始单元,起始单元,起始单元,起始单元,串行口波特率为串行口波特率为串行口波特率为串行口波特率为2400(2400(设晶振为设晶振为设晶振为设晶振为11.059211.0592MHz)MHz),,,,进行奇偶校验。
进行奇偶校验进行奇偶校验进行奇偶校验MAIN:: MOV SCON,,#0D0H ;;串行口方式串行口方式3允许接收允许接收MOV TMOD,,#20H ;;T1方式方式2定时定时MOV TL1,, #0F4H ;;写入写入T1时间常数时间常数MOV TH1,, #0F4HSETB TR1 ;;启动启动T1MOV R0,, #50H ;;设数据指针设数据指针 MOV R7,, #10H ;;接收数据长度接收数据长度 WAIT: JBC RI,,NEXT ;;等待串行口接收等待串行口接收 SJMP WAIT55NEXT: MOV A,,SBUF ;;取一个接收字符取一个接收字符 JNB P,,COMP ;;奇偶校验奇偶校验 JNB RB8,,ERR ;; P为为1、、RB8为为0,数据出错,数据出错 SJMP RIGHT ;;P=RB8=1,,数据正确数据正确COMP: JB RB8,,ERR ;; P为为0、、RB8为为1,数据出错,数据出错RIGHT: MOV @R0,,A ;;保存一个字符保存一个字符 INC R0 ;;修改指针修改指针 DJNZ R7,,WAIT ;;全部字符接收完全部字符接收完? CLR F0 SJMP QUIT ;;F0 =0,,接收数据全部正确接收数据全部正确ERR:: SETB F0 ;;F0 =1,,接收数据出错接收数据出错QUIT: RET ;;就停止接收就停止接收56 2.多机通信多机通信574.4.1 4.4.1 4.4.1 4.4.1 中断系统概述中断系统概述中断系统概述中断系统概述一、中断的概念一、中断的概念一、中断的概念一、中断的概念 中央处理器中央处理器CPUCPU正在处理某正在处理某事件的时候,外部发生了更为紧事件的时候,外部发生了更为紧急的事件,请求急的事件,请求CPUCPU暂停当前的暂停当前的工作,转入处理所发生的事情,工作,转入处理所发生的事情,处理完后,再回到被中断的地方,处理完后,再回到被中断的地方,继续原来的工作继续原来的工作, ,这样的过程称这样的过程称为中断。
为中断日日常常事事务务程程序序中中断断服服务务程程序序4-44-4 中断系统中断系统58l中断技术的优点:中断技术的优点:– 提高提高CPU的效率– 提高实时数据的处理时效提高实时数据的处理时效 被被控控对对象象的的实实时时参参数数、、越越限限数数据据和和故故障障信信息为计算机及时采集,以便应急处理息为计算机及时采集,以便应急处理– 故障处理故障处理 如掉电中断如掉电中断59l中断系统的功能:中断系统的功能:– 中断优先权排队中断优先权排队 根根据据轻轻重重缓缓急急排排队队,,优优先先处处理理最最紧紧急急事事件件的的中断请求中断请求– 实现中断嵌套实现中断嵌套 CPU处处理理中中断断时时,,发发生生另另一一个个优优先先级级更更高高的的中中断断请请求求,,CPU转转而而响响应应优优先先级级更更高高的的中中断断请求,处理完之后再回到原来中断服务程序请求,处理完之后再回到原来中断服务程序– 自动响应中断自动响应中断– 实现中断返回实现中断返回60二、中断系统结构二、中断系统结构二、中断系统结构二、中断系统结构2 2个外部中断源信号:个外部中断源信号:INT0INT0、、INT1INT12 2个定时器个定时器T0T0、、T1T1溢出中断请求:溢出中断请求:TF0TF0、、TF1TF11 1个串行口数据发送、接收结束中断请求:个串行口数据发送、接收结束中断请求:TITI、、RIRI61三、中断控制寄存器三、中断控制寄存器三、中断控制寄存器三、中断控制寄存器62四、中断控制寄存器中的各中断标志四、中断控制寄存器中的各中断标志四、中断控制寄存器中的各中断标志四、中断控制寄存器中的各中断标志1.中断标志位中断标志位:: TF1、、TF0、、IE1、、IE0、、RI 、、TI SCONTCON登记各中断源请求信号:登记各中断源请求信号:=1=1,有中断请求;,有中断请求;=0=0,无中断请求。
无中断请求CPUCPU响应中断后,各中断标志响应中断后,各中断标志TF1、、TF0、、IE1、、IE0均由硬件均由硬件自自动清零注意:动清零注意:TITI,,RIRI中断中断标志必须软件清零标志必须软件清零2.外部中断外部中断触发方式选择位:触发方式选择位:IT0、、IT1=1=1,负边沿触发中断请求,负边沿触发中断请求(需检测(需检测两次:先高后低两次:先高后低));; =0=0,低电平触发中断请求,低电平触发中断请求((CPU只需检测外部引脚只需检测外部引脚一次一次)) 63五、中断控制寄存器中各控制位五、中断控制寄存器中各控制位五、中断控制寄存器中各控制位五、中断控制寄存器中各控制位=1=1,开中断;,开中断;=0=0,关中断例:例:允许允许CPUCPU响应响应T0T0的中断请求的中断请求M MOV IE,#82H OV IE,#82H 或者或者 SETB ET0 SETB ET0 SETB EA SETB EA2 2级优先级:级优先级:=1=1,为高优先级;,为高优先级;=0=0,为低优先级。
为低优先级 同一优先级别按内部硬件查询顺序排列优先级:同一优先级别按内部硬件查询顺序排列优先级: 高高 INT0INT0、、T0T0、、INT1INT1、、T1T1、、SISIO 低低3. .中断允许控制位:中断允许控制位:EA、、ES、、ET1、、EX1、、ET0、、EX0IEIP4 4.中断优先级控制位:.中断优先级控制位:PSPS、、PT1PT1、、PX1PX1、、PT0PT0、、PX0PX064注意:注意:注意:注意:l低优先级中断可以被高优先级中断所中低优先级中断可以被高优先级中断所中断,反之不能断,反之不能l一种中断一旦得到响应,与它同级的中一种中断一旦得到响应,与它同级的中断不能再中断它断不能再中断它654.4.2 4.4.2 4.4.2 4.4.2 中断处理过程中断处理过程中断处理过程中断处理过程1.1.1.1.中断响应中断响应中断响应中断响应(一)中断响应条件(一)中断响应条件 1. 1.有中断源发出中断请求;有中断源发出中断请求; 2. 2.中断总允许位中断总允许位EAEA==1 1,,即即CPUCPU开中断;开中断; 3. 3.相应的中断允许位为相应的中断允许位为1 1,即没有屏蔽。
即没有屏蔽二)(二) 响应过程响应过程1.阻断同级或低级中断;阻断同级或低级中断;2.PC指针内容压栈保护;指针内容压栈保护;3.相应中断入口地址装入相应中断入口地址装入PC,程序转移到该程序转移到该 中断入口地址单元中断入口地址单元66(三)(三)发生下列情况,发生下列情况,中断响应中断响应会受到会受到阻断阻断:1 . 当当CPUCPU正在执行的一条指令还没有完成正在执行的一条指令还没有完成2..当有同级或当有同级或高优先级高优先级中断中断正在进行中正在进行中3..在在执执行行RETIRETI或或访访问问IEIE、、IPIP等等指指令令后后,,不不会会立立即即响响应应中中断断,,至至少少要要再再执执行行一一条条其其它它指指令令之之后后才才会会响响应应672.中断处理中断处理注意:注意: ((1))各各中中断断源源的的入入口口矢矢量量地地址址之之间间,,相相隔隔8个个单单元元,,通通常常是是在在中中断断入入口口矢矢量量地地址址单单元元处处存存放放一一条条无无条条件件转转移移指指令令,,转转至至存存储储器器其其他的任何空间去执行中断服务程序他的任何空间去执行中断服务程序。
((2))若若要要在在执执行行当当前前中中断断程程序序时时禁禁止止更更高高优优先先级级中中断断,,应应用用软软件件关关闭闭CPU中中断断,,或或屏屏蔽蔽更更高高级级中中断断源源的的中中断断,,在在中中断断返返回回前前再再开放中断开放中断 ((3))在在保保护护现现场场和和恢恢复复现现场场时时,,为为了了不不使使现现场场信信息息受受到到破破坏坏或或造造成成混混乱乱,,一一般般在在此此情情况况下下,,应应关关CPU中中断断,,使使CPU暂暂不不响响应应新新的中断请求的中断请求 683.中断返回中断返回中断返回指令:中断返回指令: RETI= RET指令指令 + + 通知通知CPUCPU中断服务已结束中断服务已结束694.4.3 4.4.3 4.4.3 4.4.3 中断系统应用中断系统应用中断系统应用中断系统应用中断服务程序的中断服务程序的—般格式如下:般格式如下: CLREA;;关中断关中断PUSH PSW ;;保护现场保护现场PUSH A…SETB EA;;开中断,允许开中断,允许CPU响应高级中断响应高级中断CLREA;;关中断关中断POP A POP A ;;恢复现场恢复现场POP PSWPOP PSW……SETB EA;;开中断开中断RETI;;中断返回中断返回 … ;服务程序;服务程序701 1.定.定时器器/ /计数器的数器的应用和用和编程程 例例4--10 产生产生2ms的方波的方波 ORG0000HRESET::AJMPMAIN ;;转主程序转主程序 ORG 000BH ;;转中断处理程序转中断处理程序 AJMPIT0P ORG 0100HMAIN:: MOV SP,,#60H ACALL PT0M0HERE::SJMP HERE ;;等待中断等待中断PT0M0: MOVTL0,,#0CH ;;T0置初值置初值 MOVTH0,,#0F0H SETBTR0 SETBET0 ;;允许允许T0中断中断 SETB EA ;;CPU开放中断开放中断 RET71 IT0P: MOVTL0,,#0CH;;T0重新置初值重新置初值 MOVTH0,,#0F0H CPLP1.0 ;;P1.0取反取反 RETI722 2..串行口的串行口的应用和用和编程程 例例4-12 4-12 MAIN:: MOV TMOD,,#20H ;;T1,,方式方式2,产生波特率,产生波特率 MOV THl,, #0FDH ;;T1装初值装初值 MOV TL1,, #0FDH SETB TRl MOV SCON,,#52H ;;选串行口方式选串行口方式l,,允许接收,允许接收, MOV R4,,#0 ;;R4作字符串表指针作字符串表指针 MOV DPTR,,#TSABMLPl:: MOV A,,R4 MOVC A,,@A+DPTR JZ MLP6 ;;字符串以字符串以0表示结束表示结束MLP3:: JBC TI,,MLP2 ;判断上一位是否发送完判断上一位是否发送完 SJMP MLP3MLP2:: MOV SBUF,,A ;;发送下一位发送下一位 INC R4 ;;位指针加一位指针加一 SJMP MLP173MLP6: JBC RI,,MLP5 ;;上一位接收完则接收下一位数上一位接收完则接收下一位数 SJMP MLP6 ;;未接收完则等待未接收完则等待MLP5: MOV A,,SBUFMLP8: JBC TI,,MLP7 ;;上一位发送完则发送下一位数上一位发送完则发送下一位数 SJMP MLP8 ;;未发送完则等待未发送完则等待MLP7: MOV SBUF,,A SJMP MLP6TSAB: DB ‘MCS-51 Microcomputer’ DB 0AH,,0DH,,074。












