文档详情

第5章MCS-51系列单片机的片内接口及中断

s9****2
实名认证
店铺
PPT
1.36MB
约95页
文档ID:591673377
第5章MCS-51系列单片机的片内接口及中断_第1页
1/95

第第5 5章章 MCS-51MCS-51系列单片机的系列单片机的片内接口及中断片内接口及中断 主要内容主要内容ØØ并行并行并行并行I/OI/OI/OI/O接口及其应用接口及其应用接口及其应用接口及其应用 ØØ定时器定时器定时器定时器/ / / /计数器及其应用计数器及其应用计数器及其应用计数器及其应用ØØ中断系统及其应用中断系统及其应用中断系统及其应用中断系统及其应用 ØØ串行接口及其应用串行接口及其应用串行接口及其应用串行接口及其应用 MCS-51MCS-51系列单片机内部有系列单片机内部有4 4个个8 8位的并行位的并行I/OI/O接口,分别接口,分别命名为命名为P0P0、、P1P1、、P2P2和和P3P3每个并行每个并行I/OI/O接口的各位均可作为接口的各位均可作为输入或输出输入或输出由于它们都属于地址号可被由于它们都属于地址号可被8 8整除的特殊功能整除的特殊功能寄存器,故可以通过位寻址或直接寻址方式对其进行按位或寄存器,故可以通过位寻址或直接寻址方式对其进行按位或字节型的字节型的I/OI/O操作它们的映像位地址或字节地址见下表:操作它们的映像位地址或字节地址见下表:5.1 5.1 并行并行I/OI/O接口及其应用接口及其应用 5.1.1 5.1.1 并行并行I/OI/O接口的基本功能接口的基本功能接口名接口名映像字映像字节地址地址映像位地址映像位地址P P0 080H80H80H80H~~87H87HP P1 190H90H90H90H~~97H97HP P2 2A0HA0HA0HA0H~~A7HA7HP P3 3B0HB0HB0HB0H~~B7HB7H 1.P11.P1口口 准双向口准双向口 1) 1) 功能功能 ① ① 作为输入作为输入/ /输出口。

输出口 ② ② 在增强型在增强型(52(52系列系列) )和和ISP(InISP(In System System ProgrmeProgrme) )型中有如下功能型中有如下功能: : P1.0 T2P1.0 T2引脚引脚, ,定时定时/ /计数器计数器2 2外部计数脉冲输入外部计数脉冲输入 P1.1 T2EXP1.1 T2EX引脚引脚, ,定时定时/ /计数器计数器2 2触发和方向控制触发和方向控制 P1.5 MOSIP1.5 MOSI引脚引脚, ,在系统编程数据输入在系统编程数据输入 P1.6 MISOP1.6 MISO引脚引脚, ,在系统编程数据输出在系统编程数据输出 P1.7 SCKP1.7 SCK引脚引脚, ,在系统编程时钟输入在系统编程时钟输入5.1.2 5.1.2 并行并行I/OI/O接口的扩展功能及结构接口的扩展功能及结构 2) 2) 结构结构可字节操作:可字节操作:可位操作:可位操作:MOV P1,,#10HANL P1,,#53H;读;读—修改修改—写指令写指令SETB P1.5;;P1口第五位置口第五位置1 2.P32.P3口口 双功能准双向口双功能准双向口 1 1)功能)功能 ①① 与与P1P1口功能相同。

口功能相同 ②② 交替输入交替输入/ /出功能,借助出功能,借助P3P3口产生某些控制信号,口产生某些控制信号,其每位功能定义如下表所示其每位功能定义如下表所示: :RDRD((读外部数据存外部数据存储器控制信号)器控制信号)P3.7P3.7WRWR(写外部数据存(写外部数据存储器控制信号)器控制信号)P3.6P3.6T1T1(定(定时器器/ /计数器数器1 1输入入线))P3.5P3.5T0T0(定(定时器器/ /计数器数器0 0输入入线))P3.4P3.4INT1INT1(外部中断(外部中断1 1请求求线))P3.3P3.3INT0INT0(外部中断(外部中断0 0请求求线))P3.2P3.2TXDTXD(串行口(串行口发送端)送端)P3.1P3.1RXTRXT(串行口接收端)(串行口接收端)P3.0P3.0第二功能第二功能引脚引脚 2) 2) 结构结构 3.P23.P2口口 双功能双功能准双向口准双向口 1) 1) 功能功能 ① ① 与与P1P1口功能相同口功能相同 ② ② 高高8 8位地址输出口(位地址输出口(A8A8~~A15A15))------仅在访问仅在访问 外部存储器时有效外部存储器时有效 2) 2) 结构结构 4.P04.P0口口 双功能双向口双功能双向口 1) 1) 功能功能 ① ① 一般的一般的I/OI/O口(口(OC/ODOC/OD输出),加上拉电阻才能输出),加上拉电阻才能 形成高电平输出形成高电平输出 ② ② 低低8 8位地址位地址A0A0~~A7A7及数据及数据D0D0~~D7D7的分时复用口的分时复用口 (仅在访问外部存储器时有效)(仅在访问外部存储器时有效) 2) 2) 结构结构 Ø如果单片机内部有程序存贮器,不需要扩展外部存贮器如果单片机内部有程序存贮器,不需要扩展外部存贮器和和I/OI/O接口,单片机的四个口均可作接口,单片机的四个口均可作I/OI/O口使用。

口使用Ø四个口在作输入口使用时,均应先对其写四个口在作输入口使用时,均应先对其写““1 1””,以避免,以避免误读ØP0P0口作口作I/OI/O口使用时应外接口使用时应外接10K10K的上拉电阻,其它口则可的上拉电阻,其它口则可不必ØP2P2口某几根线作地址使用时,剩下的线不能作口某几根线作地址使用时,剩下的线不能作I/OI/O口线使口线使用ØP3P3口的某些口线作第二功能时,剩下的口线可以单独作口的某些口线作第二功能时,剩下的口线可以单独作I/OI/O口线使用口线使用归纳四个并行口使用的注意事项如下归纳四个并行口使用的注意事项如下:: 例例1 1::设计一电路设计一电路, ,监视某开关监视某开关K,K,用发光二极管用发光二极管LEDLED显示开显示开 关状态关状态, ,如果开关合上如果开关合上,LED ,LED 亮、开关断开亮、开关断开,LED,LED熄灭 5.1.3 5.1.3 并行并行I/OI/O接口的应用接口的应用LEDLED+5V5VVccVccRSTRST10uF 10uF 1K1KP1.0P1.05151单片机单片机+5V+5VP1.1P1.11K1K30P30P30P30PXTAL1XTAL1XTAL2XTAL2GNDGNDK KEAEA 汇编程序如下:汇编程序如下: CLR P1.0 CLR P1.0 ;;使发光二极管灭使发光二极管灭AGA:SETB P1.1 AGA:SETB P1.1 ;;先对先对P1P1口写入口写入““1 1”” JB P1.1 JB P1.1,,LIG LIG ;;开关断,转开关断,转LIGLIG SETB P1.0 SETB P1.0 ;;开关合,二极管亮开关合,二极管亮 SJMP AGASJMP AGALIG:CLR P1.0 LIG:CLR P1.0 ;;开关断,二极管灭开关断,二极管灭 SJMP AGASJMP AGAC51C51参考程序如下:参考程序如下:sfr P1= 0x90sbit P1_0=0x90;sbit P1_1=0x91;void main( ){volatile bit k;P1_0=0;P1_1=1;while(1) { k=P1_1; P1_0=~k; }} 例例2:2:用用P1.0P1.0输出输出1KHz1KHz和和500Hz500Hz的音频信号驱动扬的音频信号驱动扬声器,作报警信号,要求声器,作报警信号,要求1KHz1KHz信号响信号响100ms 100ms ,,500Hz500Hz信号响信号响200ms200ms,,交替进行,交替进行,P1.7P1.7接一开关进接一开关进行控制,当开关合上报警信号打开,当开关断开行控制,当开关合上报警信号打开,当开关断开报警信号停止,试编程实现。

报警信号停止,试编程实现P P1.01.05151单片机单片机+5V+5VP P1.71.7K K 500Hz500Hz信号周期为信号周期为2ms2ms,,信号电平为每信号电平为每1ms1ms变反变反1 1次1KHz1KHz的的信号周期为信号周期为1ms1ms,,信号电平信号电平 每每500500µ µS S变反变反1 1次,编一个延时次,编一个延时500500µ µS S子程序,延时子程序,延时1ms1ms只需调用只需调用2 2次用R2R2控制音响时间长短,控制音响时间长短,A A作音作音响频率的交换控制的标志响频率的交换控制的标志A=0A=0时产生时产生1KHz1KHz信号,信号,A=FFA=FF时产生时产生500Hz500Hz信号P1.0 波波 形形 图图 1ms 1ms100个个T (变反变反200次即次即200ms)500µS500µS100个个T (变反变反200次即次即100ms)TT分析:分析: ORG 0000H ORG 0000H  LJMP MAIN LJMP MAIN ORG 0100H ORG 0100HMAIN: CLR A MAIN: CLR A ;;A A作作1KHz1KHz,,500Hz 500Hz 转换控制转换控制 SETB P1.7 SETB P1.7 BEG: JB P1.7, BEG: JB P1.7, $$ ;;检测检测P1.7P1.7的开关状态的开关状态 MOV R2, #200 MOV R2, #200 ;;开关闭合报警,开关闭合报警,R2R2控制音响时间控制音响时间DVDV:: CPL P1.0CPL P1.0 CJNE A, #0FFH, N1 CJNE A, #0FFH, N1 ;;A≠FFHA≠FFH,,延时延时500500µ µS S ACALL D500 ACALL D500 ;;A=FFH ; A=FFH ; 延时延时1ms P1.01ms P1.0变反变反N1N1:: ACALL D500ACALL D500 DJNZ R2 DJNZ R2,,DV DV  CPL A CPL A SJMP BEG SJMP BEGD500: MOV R7, #250 D500: MOV R7, #250 ;;延时延时500500µ µ S S子程序子程序 DJNZ R7, DJNZ R7, $$ RETRET END END 小小 结结 1. 1. 四个并行口均可作为输入输出接口使用,但又有各自的特点。

因四个并行口均可作为输入输出接口使用,但又有各自的特点因POPO口是口是数据线和低八位的地址线,因此不用它作输入数据线和低八位的地址线,因此不用它作输入/ /输出接口,而是用它传输输出接口,而是用它传输数据和低八位的地址信息,除非在不接其他外围芯片的情况下才作数据和低八位的地址信息,除非在不接其他外围芯片的情况下才作I/OI/O接接口使用,此时由于内部漏极开路,需外接上拉电阻四个口的使用特点口使用,此时由于内部漏极开路,需外接上拉电阻四个口的使用特点是本章的重点是本章的重点2. 2. 当并行口作为输入口使用时,应对所用的口线写当并行口作为输入口使用时,应对所用的口线写““1 1””,使其内部的驱,使其内部的驱动场效应管截止动场效应管截止 ,防止误读写,防止误读写““1 1””以后不影响读引脚指令,因为读以后不影响读引脚指令,因为读入的信息是经缓冲器进入入的信息是经缓冲器进入CPUCPU的,而不是读的锁存器的,而不是读的锁存器3. 3. 在应用设计中应理解,计算机内由数字电路组成只存在两种在应用设计中应理解,计算机内由数字电路组成只存在两种TTLTTL电平电平TTL(5V):TTL(5V):输出输出 L L((0 0)): :<<0.0.8 8V HV H((1 1)): :>>2.4V 2.4V 输入输出噪声容限输入输出噪声容限0.4V0.4V 输入输入 L L((0 0)): :<<1.2V1.2V H H((1 1)): :>>2.0V2.0V外设的状态要通过电路转换成高、低电平,计算机才能识别外设的状态要通过电路转换成高、低电平,计算机才能识别( (如开关电路如开关电路) )。

计算机输出计算机输出的的数据数据也要转换成相应的电平电压也要转换成相应的电平电压 ,根据外设需要的电,根据外设需要的电平要求平要求 输出输出““1 1””或或““0 0””数据,这就是程序控制外设的本质数据,这就是程序控制外设的本质 5.2 5.2 定时器定时器/ /计数器及其应用计数器及其应用5.2.1 5.2.1 定时器定时器/ /计数器的结构和工作原理计数器的结构和工作原理 1 1)方式)方式0 0和方式和方式1 1区别:计数器位数不同区别:计数器位数不同启动方式启动方式——两种两种①①TRiTRi直接启动,条件直接启动,条件GATE=0GATE=0②②TRiTRi和和INTiINTi双重控制启动,要求双重控制启动,要求GATE=1GATE=1利用它可测试由利用它可测试由INTiINTi上引入的脉冲宽度上引入的脉冲宽度方式方式0 0::THiTHi高高8 8位,位,TLiTLi低低5 5位;方式位;方式1 1::1616位位5.2.2 5.2.2 定时器定时器/ /计数器的工作方式计数器的工作方式 2 2)方式)方式2 2特点:能自动重装计数初值特点:能自动重装计数初值 3 3)方式)方式3 3只允许只允许T0T0使用,此时使用,此时T1T1可工作在其他方式可工作在其他方式 1.1.工作模式寄存器工作模式寄存器TMOD(89H) TMOD(89H) TMODTMOD用于控制用于控制T0T0和和T1T1的操作模式。

其各位的定义如下:的操作模式其各位的定义如下:TMODD7D6D5D4D3D2D1D0(89H)GATEGATE C/TC/TM1M1M0M0 GATE C/T M1M0定时器定时器T0T0 定时器定时器T1T15.2.3 5.2.3 定时器定时器/ /计数器的编程计数器的编程 GATEGATE::门控信号门控信号 GATE=0GATE=0,,TRiTRi=1=1时即可启动定时器工作时即可启动定时器工作 ;; GATE=1GATE=1,, TRiTRi=1 =1 INTiINTi=1=1才可启动定时器工作才可启动定时器工作C/TC/T::定时器定时器/ /计数器选择位计数器选择位 C/T=1C/T=1,,为计数器方式;为计数器方式; C/T=0C/T=0,,为定时器方式为定时器方式M1 M0 M1 M0 工作模式选择位工作模式选择位 M1M0=00 M1M0=00 工作方式工作方式0 0((1313位方式)位方式) M1M0=01 M1M0=01 工作方式工作方式1 1((1616位方式)。

位方式) M1M0=10 M1M0=10 工作方式工作方式2 2((8 8位自动再装入方式)位自动再装入方式) M1M0=11 M1M0=11 工作方式工作方式3 3((T0T0为为2 2个个8 8位方式)位方式) 2.2.控制寄存器控制寄存器TCON(88H) TCON(88H) TR1TR1::T1T1运行控制位运行控制位 TR1=1TR1=1,,启动启动T1T1工作 TR1=0TR1=0,,停止停止T1T1工作TF1 TR1 TF0 TR0 IE1IT1IE0IT0TR0TR0::T0T0运行控制位运行控制位 TR0=1TR0=1,启动,启动T0T0工作 TR0=0TR0=0,停止,停止T0T0工作 3. 3. 计数初值计数初值 定时:定时: ((2 2N N- -计数初值计数初值TCTC))××时钟周期时钟周期= =延时时间延时时间 计数:计数: 2 2N N- -要求计数的次数要求计数的次数=TC =TC 不同的工作方式其不同的工作方式其N N取值不同:取值不同:方式:方式: 0 1 2 30 1 2 3 N N:: 13 16 8 8 13 16 8 8 4. 4. 定时时间到的查询与中断定时时间到的查询与中断 方式方式0 0(( 1313位方式):位方式): TC=2TC=21313-100=2000H-100=2000H--64H=1F9CH64H=1F9CH 1F9CH 1F9CH==0000001 1111 1001 1111 1001 11001 1100B B用指令装入计数初值:用指令装入计数初值: MOV TH0MOV TH0,,#0FCH#0FCH;; MOV TL0MOV TL0,,#1CH#1CH;;1.1.计数初值初始化计数初值初始化例例: :要计要计100100个脉冲的计数初值个脉冲的计数初值5.2.4 5.2.4 定时定时/计数器计数器应用应用 方式方式2 2((8 8位自动再装入方式)位自动再装入方式): : TC=2 TC=28 8--100=100H100=100H--64H=9CH64H=9CH 初值既要装入初值既要装入TH0TH0,,也要装入也要装入TL0TL0::用指令装入计数初值:用指令装入计数初值: MOV TH0MOV TH0,,#9CH#9CH MOV TL0 MOV TL0,,#9CH#9CH方式方式1(161(16位方式位方式):): TC=2 TC=21616-100=10000H-64H=FF9CH-100=10000H-64H=FF9CH用指令装入计数初值:用指令装入计数初值: MOV TH0MOV TH0,,#0FFH#0FFH MOV TL0 MOV TL0,,#9CH#9CH 例例1:1:如图所示,如图所示,P1P1中接有中接有八个发光二极管,要求八八个发光二极管,要求八个管轮流点亮,每个管亮个管轮流点亮,每个管亮100ms100ms,,设晶振为设晶振为6MHz6MHz。

试编程实现试编程实现2.2.应用举例应用举例若利用若利用T1T1工作于方式工作于方式1 1定时定时100ms100ms有:有:TC=2TC=2N N- -定时时间定时时间/ /机器周期机器周期 因为:机器周期因为:机器周期=2μs=2μs,,N=16N=16故有:故有:TC=65536-100ms/2μsTC=65536-100ms/2μs =65536-50000 =65536-50000 =15536=3CB0H =15536=3CB0H ORG 0000HORG 0000HLJMPLJMP MAIN MAINORG 0030HORG 0030HMAINMAIN::MOV AMOV A,,#01H #01H ;置第一个;置第一个LEDLED亮亮MOV TMODMOV TMOD,,#10H #10H ;;T1T1工作于定时方式工作于定时方式1 1NEXTNEXT::MOV P1MOV P1,,A A MOV TH1 MOV TH1,,#3CH#3CH MOV TL1 MOV TL1,,#0B0H #0B0H ;定时;定时100ms 100ms SETB TR1 SETB TR1 AGAI: JBC TF1,SHIAGAI: JBC TF1,SHI ;; 100ms100ms到转到转SHI,SHI,并清并清TF1TF1 SJMP AGAI SJMP AGAISHISHI:: RL ARL A SJMP NEXT SJMP NEXT 例例2 2:欲测量图中:欲测量图中INT0INT0((P3.2P3.2)引脚上出现的正脉冲宽度)引脚上出现的正脉冲宽度N N,并将结果存入,并将结果存入70H70H和和71H71H两个单元中,请编程实现。

设两个单元中,请编程实现设foscfosc=12MHz=12MHzGATE=1GATE=1,,TR0=1TR0=1,,C/T=0C/T=0,计数器清,计数器清0 0TMOD = 0 0 0 0 1 0 0 1 BTMOD = 0 0 0 0 1 0 0 1 BINT0INT00 00 01 11 1N NBACK1BACK1::JB P3.2JB P3.2,,BACK1 BACK1 ;等待;等待INT0INT0变低变低 SETB TR0 SETB TR0 ;为;为T0T0的启动作准备的启动作准备 BACK2BACK2::JNB P3.2JNB P3.2,,BACK2 BACK2 ;等待;等待INT0INT0引脚变高引脚变高BACK3BACK3::JB P3.2JB P3.2,,BACK3 BACK3 ;等待;等待INT0INT0变低变低T0T0停止工作停止工作CLR TR0CLR TR0MOV 70HMOV 70H,,TL0TL0MOV 71HMOV 71H,,TH0 TH0 ;存放结果;存放结果 SJMP $SJMP $ENDEND ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 0100H ORG 0100HMAINMAIN::MOV TMODMOV TMOD,,#09H#09H MOV TH0 MOV TH0,,#00H#00H MOV TL0 MOV TL0,,#00H#00H 例例3 3:利用:利用T0T0、、T1T1测某脉冲频率测某脉冲频率 foscfosc=6MHZ=6MHZT1 T1 定时定时100ms 10100ms 10次次 即即1S T0 1S T0 计数,设计数值计数,设计数值<<216T0T0::GATE=0 C/T=1 M1M0=01 TC=0000H GATE=0 C/T=1 M1M0=01 TC=0000H T1T1::GATE=0 C/T=0 M1M0=01 TC=3CB0HGATE=0 C/T=0 M1M0=01 TC=3CB0HTMOD =0 0 0 1 TMOD =0 0 0 1 0 1 0 10 1 0 1 B BRUTL EQU 70HRUTH EQU 71HCONT EQU 72H ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV TMOD,#15H MOV TH0,#00H MOV TL0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV CONT,#10 SETB TR1 SETB TR0BACK1:JNB TF1,BACK1 ;等待100ms到 CLR TF1 ;溢出标志清0 MOV TH1,#3CH MOV TL1,#0B0H ;重装时间常数 DEC CONT ;计数初值减1 MOV A,CONT JNZ BACK1 ;延时1秒等待 CLR TR0 ;1秒时间到,T0停止计数 MOV RUTH,TH0 MOV RUTL,TL0 ;存结果 SJMP $ END 小小 结结★★5151系列单片机既有两个系列单片机既有两个1616位的定时计数器,有四种不同的位的定时计数器,有四种不同的工作方式,归纳于下表:工作方式,归纳于下表:★★定时和计数实质都是对脉冲的计数,只是被计脉冲的来源定时和计数实质都是对脉冲的计数,只是被计脉冲的来源不同,定时方式的被计脉冲来源于不同,定时方式的被计脉冲来源于时钟时钟,计数方式的被计,计数方式的被计脉冲来源于脉冲来源于外部外部,定时方式的计数初值和被计脉冲,定时方式的计数初值和被计脉冲周期周期有有关,计数方式的和被计脉冲的关,计数方式的和被计脉冲的个数个数有关。

有关★★无论定时还是计数,当计满规定的无论定时还是计数,当计满规定的 脉冲个数产生溢出(计脉冲个数产生溢出(计数初值寄存器回零),置位数初值寄存器回零),置位TFxTFx , , 可以通过程序查询,如可以通过程序查询,如果允许中断,会产生中断果允许中断,会产生中断★★本章应重点掌握定时计数器的应用设计本章应重点掌握定时计数器的应用设计 28=256=100H28=256=100H216=65536=10000H213=8192=2000H 模模 值值 (计数最大值计数最大值)TL0定时,计数定时,计数占用占用TR0、、TF0 ;;TH0定时,使用定时,使用T1 的的TR1、、TF1此时此时T1作波特率作波特率发生器发生器定时、计数范围定时、计数范围小,不用重装时小,不用重装时间常数,多用于间常数,多用于串行通信的波特串行通信的波特率发生器率发生器用于用于定时时间定时时间 <65.5ms,计数脉冲计数脉冲 < 65536 个个场合场合用于用于定时时间定时时间 <8.19ms ,计数脉冲计数脉冲 < 8192 个个场合场合 应用场合应用场合(设设fosc==12MHz)同方式同方式0、、1第一次装入第一次装入,启动启动工作后工作后,每次每次TL回回零后零后,不用程序装不用程序装入入,由由TH自动装自动装入到入到TL每启动一次工作每启动一次工作,需装入一次需装入一次计数初值计数初值 同左同左 TH TL高八位高八位 TH低八位低八位 TL高高八位八位 TH低低五位五位 TL 计数初值计数初值C的装入的装入方式方式 3 3T0T0两个两个8 8位位 方式方式方式方式 2 28 8位自动位自动重装方式重装方式方式方式 116位定时位定时计数方式计数方式 方式方式 013位定时位定时计数方式计数方式 方方 式式八位八位 5.3 5.3 中断系统及其应用中断系统及其应用5.3.1 5.3.1 中断系统结构中断系统结构1 1、中断源与中断向量地址、中断源与中断向量地址 5151系列单片机有系列单片机有5 5个中断源,个中断源,5252系列有系列有6 6个中断个中断源,源,2 2个在片外,其余的中断源在片内。

个在片外,其余的中断源在片内 在程序存贮器中有固定的中断入口地址,当在程序存贮器中有固定的中断入口地址,当CPUCPU响应中断时,硬件自动形成这些地址,由此进入中响应中断时,硬件自动形成这些地址,由此进入中断服务程序断服务程序 5 5个中断源有两级中断优先级,可实现中断嵌套个中断源有两级中断优先级,可实现中断嵌套 INT0INT0INT1INT1T0T0T1T1TI/RITI/RI中断源中断源T2T2中断向量中断向量0003H0003H0013H0013H000BH000BH001BH001BH0023H0023H002BH002BH (1)(1)中断请求标志及外部中断方式选择寄存器中断请求标志及外部中断方式选择寄存器TCONTCON2 2、中断控制的有关寄存器、中断控制的有关寄存器TF1TF1TR1TR1 TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 T1 T1 T0 T0 INT1 INT1 INT0INT0触发触发方式选择方式选择下沿下沿/ /低电平低电平 INT0 INT0INT1INT1触发触发方式选择方式选择下沿下沿/ /低电平低电平ØIT0IT0和和IT1IT1若选下降沿触发则相应位置若选下降沿触发则相应位置1 1;若选低电平触发,;若选低电平触发,ITIT相应位置相应位置0 0。

Ø某中断源有中断请求,该中断标志置某中断源有中断请求,该中断标志置1 1,无中断请求,该中断标志置,无中断请求,该中断标志置0 0 ØTR0 TR0 和和 TR1 TR1 为定时器为定时器T0T0和和T1 T1 工作启工作启动和停止控制动和停止控制TCONTCON ((2 2))中断控制寄存器中断控制寄存器IEIE —— —— 中断的允许和禁止中断的允许和禁止 1 — 1 — 允许中断;允许中断; 0 — 0 — 禁止中断禁止中断EAEA —— ——ESESET1ET1 EX1EX1 ET0ET0 EX0EX0IEIEEAEA::中断允许中断允许/ /禁止;禁止;ET0ET0、、ET1ET1::定时器定时器0 0和和1 1 中断允许中断允许/ /禁止;禁止;ESES::串行口中断允许串行口中断允许/ /禁止;禁止;EX0EX0、、EX1EX1::外中断外中断INT0INT0和和INT1 INT1 中断允许禁止;中断允许禁止;TI—发送中断标志发送中断标志RI—接收中断标志接收中断标志 TI TI RI RISCONSCON —— —— —— PSPSPT1PT1 PX1PX1 PT0PT0 PX0PX0IPIP((((3 3 3 3))))中断优先级管理寄存器中断优先级管理寄存器IPIP 51/5251/52系列单片机只有两级中断优先级,对应位系列单片机只有两级中断优先级,对应位为为1 1,则该中断源为高优先级,为,则该中断源为高优先级,为0 0则为低优先级。

则为低优先级 优先级相同时,则优先响应先查询的中断请求优先级相同时,则优先响应先查询的中断请求CPUCPU查询顺序为:查询顺序为: INT0 → T0 → INT1 → T1 → TI/RIINT0 → T0 → INT1 → T1 → TI/RI MCS---51MCS---51系列单片机的中断结构图系列单片机的中断结构图 5.3.2 5.3.2 中断响应过程中断响应过程 5151单片机在每个机器周期采样中断源,在第单片机在每个机器周期采样中断源,在第二个机器周期轮询上一机器周期的采样值如果二个机器周期轮询上一机器周期的采样值如果发现有标志为发现有标志为““1”1”,则中断系统会生成一个远调,则中断系统会生成一个远调用用LCALLLCALL,,调用相应的服务程序调用相应的服务程序 1 1、中断响应的条件、中断响应的条件a.CPUa.CPU开中断且未响应中断或正在响应低级中断;开中断且未响应中断或正在响应低级中断;b.b.现行机器周期为正在执行指令的最后一个周期;现行机器周期为正在执行指令的最后一个周期;c.c.没执行没执行RETRET、、RETIRETI,,也未访问也未访问IEIE、、IPIP;; 执行这些操作后,至少执行一条其他指令后才执行这些操作后,至少执行一条其他指令后才会响应中断。

会响应中断 2 2、中断响应过程、中断响应过程 CPUCPU响应中断请求时,将响应中断请求时,将PCPC压栈,将中断服务程压栈,将中断服务程序入口地址送入序入口地址送入PCPC,,程序转向相应的中断服务程序程序转向相应的中断服务程序 51/5251/52系列单片机响应中断后,不会自动保护标系列单片机响应中断后,不会自动保护标志寄存器志寄存器PSWPSW,,不会自动保护现场,不会自动关中断,不会自动保护现场,不会自动关中断,不会自动发中断响应信号不会自动发中断响应信号 执行执行RETIRETI指令从中断服务程序返回主程序指令从中断服务程序返回主程序RETIRETI清除响应中断时被置位的优先级状态触发器清除响应中断时被置位的优先级状态触发器 3 3、中断请求的撤除、中断请求的撤除 响应中断后,应撤除该中断请求标志,否则响应中断后,应撤除该中断请求标志,否则会会再次中断再次中断a.a.定时计数器定时计数器T0T0、、T1T1的溢出中断的溢出中断 响应中断后,硬件自动清除中断请求标志响应中断后,硬件自动清除中断请求标志TF0TF0、、TF1TF1。

b.b.串行口中断串行口中断 响应中断后,必须用软件清除清除中断请求标响应中断后,必须用软件清除清除中断请求标志志TITI、、RIRI,,这是在编串行通信中断服务程序中应该这是在编串行通信中断服务程序中应该注意的 c.c.边沿触发的外部中断边沿触发的外部中断INT1INT1和和INT0INT0 CPU CPU响应中断后,硬件自动清除中断请求标志响应中断后,硬件自动清除中断请求标志IE0IE0和和IE1IE1d.d.电平触发的外部中断电平触发的外部中断INT1INT1和和INT0INT0 CPU CPU在响应中断时不会自动清除中断标志,因在响应中断时不会自动清除中断标志,因此,在此,在CPUCPU响应中断后,应立即撤除响应中断后,应立即撤除INT1INT1或或INT0INT0的的低电平信号,否则会错误地再一次引起中断过程低电平信号,否则会错误地再一次引起中断过程 外部外部电平电平中断请求的撤除中断请求的撤除 对对于于电电平平触触发发的的外外部部中中断断,,由由于于CPUCPU对对引引脚脚没没有有控控制制作作用用,,也也没没有有相相应应的的中中断断请请求求标标志志位位,,需需要要外外接接电电路路来来撤撤除除中中断断请求标志,如下图。

中断服务程序中用两条指令:请求标志,如下图中断服务程序中用两条指令: ANLANL  P1,#0FEHP1,#0FEH              ORLORL  P1,#01HP1,#01H NYYYN中断返回,断点出栈送PC中断请求.中断响应中断服务中断返回执 行 指 令CPU判别优先权 ,响应优先权高的中断断点的PC进栈, 中断服务入口地址送PC撤 除 中 断 标 志中 断 服 务中断标志置1?(中断请求?) 指令最后一个T周期?EA=1?允 许 位 = 1?N 5.3.3 5.3.3 中断的应用中断的应用 用户对中断的控制和管理,实际是对用户对中断的控制和管理,实际是对4个与中断有关的个与中断有关的寄存器寄存器IE、、TCON、、IP、、SCON进行控制进行控制 或管理这几个寄或管理这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关寄存器的有关 位进行预置在中断程序的编制中应注意:位进行预置在中断程序的编制中应注意:Ø开中断总控开关开中断总控开关EAEA,置位中断源的中断允许位。

置位中断源的中断允许位Ø对外部中断对外部中断INT0INT0、、INT1INT1应选择中断触发方式应选择中断触发方式 Ø多个中断源中断,应设定中断优先级,预置多个中断源中断,应设定中断优先级,预置IPIP Ø编写中断服务程序,并注意用保护现场和恢复现场,以免中编写中断服务程序,并注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器中的信息断返回时,丢失原寄存器、累加器中的信息Ø若要在执行当前中断程序时禁止更高优先级中断,可以采若要在执行当前中断程序时禁止更高优先级中断,可以采 用软件关用软件关CPUCPU中断.或禁止某中断源中断,在中断返回前再中断.或禁止某中断源中断,在中断返回前再开放中断开放中断 例例1 1 如图所示,欲使与如图所示,欲使与P1.0P1.0引脚相连的引脚相连的LEDLED以以2 2秒为周期秒为周期闪烁,试编程实现设闪烁,试编程实现设foscfosc=6MHz=6MHz T0T0方式方式1 1定时定时50ms50ms,在,在P1.3P1.3输出周期输出周期100ms100ms方波,方波,T1T1方式方式2 2对方波计数对方波计数1010次为次为1S,1S,然后在然后在P1.0P1.0输出周期输出周期2S2S的方波驱动的方波驱动LEDLED。

定时器定时器T0T0的时间常数的时间常数4053640536即即9E58H9E58H定时器T1T1的的时间常数为时间常数为246246即即F6HF6H T0T0、、T1T1均允许中断,均允许中断,TMOD=01100001BTMOD=01100001B ORG 0000H LJMP MAIN ORG 000BH LIMP INTT0 ORG 001BH LJMP INTT1 ORG 0100H MAIN:CLR P1.0 ;给LED一个初态 SETB P1.3 ;P1.3输出高电平 MOV TMOD,#61H ;T0、T1方式初始 MOV TH1,#0F6H ;设置T1计数初值 MOV TL1,#0F6H MOV TH0,#9EH ;设置T0计数初值 MOV TL0,#58H SETB TR0 ;启动T0 SETB TR1 ;启动T1 SETB PT0 ;设T0为高优先级 CLR PT1 ;设T1为低优先级 SETB ET0 ;开放T0中断 SETB ET1 ;开放T1中断 SETB EA ;开放CPU的中断 SJMP $ ;等待中断 ORG 0400H INTT0:MOV TH0,#9EH MOV TL0,#58H CPL P1.3 RETI ORG 0500HINTT1:CPL P1.0 RETI 例例2 2:欲测量图中:欲测量图中INT0INT0((P3.2P3.2)引脚上出现的正脉冲宽度)引脚上出现的正脉冲宽度N N,并将结果存入,并将结果存入70H70H和和71H71H两个单元中,请利用中断方式编两个单元中,请利用中断方式编程实现。

设程实现设foscfosc=12MHz=12MHzGATE=1GATE=1,,TR0=1TR0=1,,C/T=0C/T=0,计数器清,计数器清0 0TMOD = 0 0 0 0 1 0 0 1 BTMOD = 0 0 0 0 1 0 0 1 BINT0INT00 00 01 11 1N NBACK1BACK1::JB P3.2JB P3.2,,BACK1 BACK1 ;等待;等待INT0INT0变低变低 SETB TR0 SETB TR0 ;为;为T0T0的启动作准备的启动作准备SETB IT0SETB IT0 ;为;为T0T0的启动作准备的启动作准备SETB EX0SETB EX0 ;为;为T0T0的启动作准备的启动作准备SETB EA SETB EA ;为;为T0T0的启动作准备的启动作准备SJMP $ SJMP $ ;等待中断;等待中断 ORG 0200HORG 0200HINT0: CLR TR0INT0: CLR TR0 MOV 70H,TL0 MOV 70H,TL0 MOV 71H,TH0 MOV 71H,TH0 RETI RETI ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 0003H ORG 0003H LJMP INT0 LJMP INT0 ORG 0100H ORG 0100HMAINMAIN::MOV TMODMOV TMOD,,#09H#09H MOV TH0 MOV TH0,,#00H#00H MOV TL0 MOV TL0,,#00H#00H 例例3 3:利用:利用T0T0、、T1T1测某脉冲频率测某脉冲频率 foscfosc=6MHZ=6MHZT1 T1 定时定时100ms 10100ms 10次次 即即1S T0 1S T0 计数,设计数值<计数,设计数值<2 21616T0T0::GATE=0 C/T=1 M1M0=01 TC=0000H GATE=0 C/T=1 M1M0=01 TC=0000H T1T1::GATE=0 C/T=0 M1M0=01 TC=3CB0HGATE=0 C/T=0 M1M0=01 TC=3CB0HTMOD =0 0 0 1 1 0 0 1 BTMOD =0 0 0 1 1 0 0 1 BRUTL EQU 70HRUTL EQU 70HRUTH EQU 71HRUTH EQU 71HCONT EQU 72HCONT EQU 72H ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 001BH ORG 001BH LJMP INTT1 LJMP INTT1 ORG 0200HORG 0200HINITT1INITT1::MOV TH1MOV TH1,,#3CH#3CH MOV TL1 MOV TL1,,#0B0H#0B0H DEC CONT DEC CONT MOV A MOV A,,CONTCONT JNZ EXIT JNZ EXIT CLR TR0 CLR TR0 MOV RUTH MOV RUTH,,TH0TH0 MOV RUTL MOV RUTL,,TL0 TL0 EXIT: RETI EXIT: RETI ORG 0100HORG 0100HMAINMAIN:: MOV TMODMOV TMOD,,#15H#15H MOV TH0 MOV TH0,,#00H#00H MOV TL0 MOV TL0,,#00H#00H MOV TH1 MOV TH1,,#3CH#3CH MOV TL1 MOV TL1,,#0B0H#0B0H MOV CONT MOV CONT,,#10#10 SETB TR1 SETB TR1 SETB TR0 SETB TR0 SETB ET1 SETB ET1 SETB EA SETB EA SJMP $ SJMP $ 0070 1 RUTL EQU 70H0071 2 RUTH EQU 71H0072 3 CONT EQU 72H0000 4 ORG 0000H0000 020100 5 LJMP MAIN001B 6 ORG 001BH001B 020200 7 LJMP INTT10100 8 ORG 0100H0100 758915 9 MAIN: MOV TMOD,#15H0103 758C00 10 MOV TH0,#00H0106 758A00 11 MOV TL0,#00H0109 758D3C 12 MOV TH1,#3CH010C 758BB0 13 MOV TL1,#0B0H010F 75720A 14 MOV CONT,#100112 D28E 15 SETB TR10114 D28C 16 SETB TR00116 D2AB 17 SETB ET10118 D2AF 18 SETB EA011A 80FE 19 SJMP $0200 21 ORG 0200H0200 758D3C 22 INTT1: MOV TH1,#3CH0203 758BB0 23 MOV TL1,#0B0H0206 1572 24 DEC CONT0208 E572 25 MOV A,CONT020A 7008 26 JNZ EXIT020C C28C 27 CLR TR0020E 858C71 28 MOV RUTH,TH00211 858A70 29 MOV RUTL,TL0 0214 32 30 EXIT: RETI 小小 结结((1)中断技术是)中断技术是实时控制实时控制中的常用技术,中的常用技术,51系列单片机有三个内部中断,系列单片机有三个内部中断,二个外部中断。

所谓二个外部中断所谓 外部中断就是在外部引脚上有产生中断所需要的信外部中断就是在外部引脚上有产生中断所需要的信号每个中断源有固定的中断服务程序的入口地址每个中断源有固定的中断服务程序的入口地址(称矢量地址或向量地称矢量地址或向量地址址)当CPU响应中断以响应中断以 后单片机内部硬件保证它能自动的跳转到该地后单片机内部硬件保证它能自动的跳转到该地址2)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器IE,,中断优先权寄存器中断优先权寄存器IP ,必须在,必须在CPU开中断即开全局中断开关开中断即开全局中断开关EA,开各,开各中断源的中断开关,中断源的中断开关,CPU才能响应该中断源的才能响应该中断源的 中断请求,其中缺一不可中断请求,其中缺一不可((3)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程,握中断响应的过程, 才能理解中断的发生和返回,看得懂中断程序,并才能理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序能编写高质量中断程序。

((4)本章重点应掌握中断的基本概念,并能熟练编制中断程序本章重点应掌握中断的基本概念,并能熟练编制中断程序 5.4 5.4 串行接口及其应用串行接口及其应用系统计算机系统计算机单单片片机机单单片片机机单单片片机机● ● ● ● ● ●● ● ● ● ● ● 单单片片机机应应用用于于数数据据采采集集或或工工业业控控制制时时,,往往往往作作为为前前端端机机安安装装在在工工业业现现场场,,远远离离主主机机,,现现场场数数据据采采用用串串行行通通信信方方式式发发往往主主机机进进行行处处理理,,以以降降低低通通信信成成本本,,提提高通信可靠性如图所示高通信可靠性如图所示 1.1.串行口的内部结构串行口的内部结构 5.4.1 5.4.1 串行口的结构串行口的结构内内 部部 总总 线线发送发送SBUF((99H))控制门控制门88RXD(P3.0)TXD(P3.1)中中断断请请求求接收接收SBUF((99H))定定时时器器T1÷2÷2串寄串寄行存行存控器控器制制 SCON ((98H))输入移位寄存器输入移位寄存器发送控制器发送控制器接收控制器接收控制器+ +分分频频器器SMOD10TITIRIRI Ø串行控制寄存器串行控制寄存器SCONSCON 用以存放串行口的控制和状态信息。

用以存放串行口的控制和状态信息8XX518XX51串串行口正是通过对上述专用寄存器的设置、检测与行口正是通过对上述专用寄存器的设置、检测与读取读取 来管理串行通信的来管理串行通信的Ø波特率发生器波特率发生器①① 定时器定时器T1T1作波特率发生器,改变计数初值就可以作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率改变串行通信的速率,称为可变波特率②② 以内部时钟的分频器作波特率发生器,因内部时以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率钟频率一定,称为固定波特率 2.2.串行通信的传送过程串行通信的传送过程Shift时钟MOV A , SBUF串行数据串行数据CPUCPU SBUF SBUFShift时钟MOV SBUF , A并行数据并行数据甲方(发送)甲方(发送)乙方(接收)乙方(接收) TIRI ①① 甲、乙方的移位时钟频率应相同,即应具有相同的甲、乙方的移位时钟频率应相同,即应具有相同的 波特率,否则会造成数据丢失波特率,否则会造成数据丢失②② 发送方是先发数据再查标志,接收方是先查标志再发送方是先发数据再查标志,接收方是先查标志再 收数据。

收数据③③ CPUCPU通过指令和通过指令和SBUFSBUF并行交换数据,并不能控制数并行交换数据,并不能控制数 据的串行移位,它只能查询标志位来确定数据的移据的串行移位,它只能查询标志位来确定数据的移 位是否完成位是否完成 5151单片机串行口是一个可编程接口,对它的编程单片机串行口是一个可编程接口,对它的编程只用两个控制字分别写入特殊功能寄存器:只用两个控制字分别写入特殊功能寄存器:串行口控制寄存器串行口控制寄存器 SCON(98H)SCON(98H)电源控制寄存器电源控制寄存器 PCON(87H)PCON(87H) 3.3.串行口的控制寄存器串行口的控制寄存器 1.1.工作方式工作方式 根据串行通信数据格式和波特率的不同根据串行通信数据格式和波特率的不同, 51, 51系列单系列单片机的串行通信有四种工作方式片机的串行通信有四种工作方式, ,即方式即方式0 0、方式、方式1 1、方、方式式2 2、方式、方式3 31 1))方式方式0 0 移位寄存器输入移位寄存器输入/输出方式输出方式 其时序如图:其时序如图:5.2.3 5.2.3 串行口的工作方式串行口的工作方式 ● RXDRXD为串行数据的发送端或接收端为串行数据的发送端或接收端, , ● TXDTXD输出频率为输出频率为fosc/12fosc/12的时钟脉冲。

的时钟脉冲波特率固定为波特率固定为fosc/12 (fosc/12 (foscfosc为单片机晶振频率为单片机晶振频率) )●●方式方式0 0的数据格式为的数据格式为8 8位位, ,低位在前低位在前, ,高位在后高位在后 移位寄位器方式多用于接口的扩展移位寄位器方式多用于接口的扩展, ,当用单片机当用单片机构成系统时构成系统时, ,往往感到并行口不够用往往感到并行口不够用, ,此时可通过外接此时可通过外接串入并出移位寄存器扩展输出接口;通过外接并入串串入并出移位寄存器扩展输出接口;通过外接并入串出移位寄存器扩展输入接口,方式出移位寄存器扩展输入接口,方式0 0 也可应用于短距也可应用于短距离的单片机之间的通信离的单片机之间的通信 ((2 2))方式方式1 1 1010位异步通信方式位异步通信方式 每帧数据由每帧数据由1 1个起始位个起始位““0”.0”.八个数据位和八个数据位和1 1个个停止位停止位““1”1”共共1010位构成位构成. .其中起始位和停止位在发其中起始位和停止位在发送时是自动插入的送时是自动插入的. . 以以TXDTXD为串行数据的发送端,为串行数据的发送端,RXDRXD为数据的接收为数据的接收端端, ,由定时器由定时器T1T1提供移位时钟提供移位时钟, ,是波特率可变方式是波特率可变方式波特率波特率= =(2(2SMODSMOD/32)×(/32)×(T1T1的溢出率的溢出率) ) = =(2(2SMODSMOD/32)×(fosc/12(256-N))/32)×(fosc/12(256-N))根据给定的波特率根据给定的波特率, ,可以计算可以计算T1T1的计数初值的计数初值X X。

((3 3)) 方式方式2 2、、3 3 1111位异步通讯方式位异步通讯方式 每帧数据由有一个起始位每帧数据由有一个起始位““0”,90”,9个数据位和个数据位和1 1个个停止位停止位““1”1”组成组成. .发送时九个数据位发送时九个数据位, ,由由SCONSCON寄存器寄存器的的TB8TB8位提供位提供, ,接收到的第九位数据存放在接收到的第九位数据存放在SCONSCON寄存器寄存器的的RB8RB8位位. .第九位数据可作为检验位第九位数据可作为检验位, ,也可用于多机通也可用于多机通信中识别传送的是地址还是数据的特征位信中识别传送的是地址还是数据的特征位波特率固定为波特率固定为(2(2SMODSMOD/64)×fosc./64)×fosc. 方式方式3 3数据格式同方式数据格式同方式2 2,所不同的是波特率可变,,所不同的是波特率可变,计算方式同方式计算方式同方式 1 1 1.1.与串行口有关的特殊功能寄存器与串行口有关的特殊功能寄存器 ①① SBUF SBUFSBUF为串行口接收为串行口接收/ /发送数据缓冲器。

接收数据发送数据缓冲器接收数据时,它是一个串入并出移位寄存器,执行一条读时,它是一个串入并出移位寄存器,执行一条读SBUFSBUF的指令,可读得接收到的的指令,可读得接收到的8 8位数据;发送数据时,它是位数据;发送数据时,它是一个并入串出移位寄存器,由指令写入一个并入串出移位寄存器,由指令写入SBUFSBUF的数据将的数据将转换为串行数据发送出去通过转换为串行数据发送出去通过SBUFSBUF寄存器可实现对寄存器可实现对串行数据的输入串行数据的输入/ /输出操作输出操作 5.4.3 5.4.3 串行口的使用串行口的使用 SCONSCON是是串串行行口口控控制制寄寄存存器器,,专专门门用用以以设设定定串串行行口口的的工工作作方方式式、、接收接收/ /发送控制以及设置状态标志其格式及各位功能如下:发送控制以及设置状态标志其格式及各位功能如下:②② SCONTITIRIRISMSM0 0SMSM1 1SMSM2 2RENRENTBTB8 8RBRB8 8SCONSCON字节地址字节地址 98H98H接收中断标志接收中断标志发送中断标志发送中断标志接收数据第接收数据第9 9位位发送数据第发送数据第9 9位位接收控制接收控制0 0:禁止接收:禁止接收1 1:允许接收:允许接收多机通信多机通信0 0:单机对单机:单机对单机1 1:多机通信:多机通信SM0 SM1 SM0 SM1 工作方式工作方式 0 0 0 0 方式方式0 0 0 1 0 1 方式方式1 1 1 0 1 0 方式方式2 2 1 1 1 1 方式方式3 3工作方式控制位工作方式控制位 SM2SM2作用:作用:1.1.在在方方式式2 2和和3 3中中,,发发送送方方SM2=1SM2=1((程程序序设设置置))。

接接收收方方SM2=1SM2=1,,若若RB8=1RB8=1,,激激活活RIRI,,引引起起接接收收中中断断;;RB8=0RB8=0,,不不激激活活RIRI,,不不引引起起中中断断若若SM2=0SM2=0,,无无论论RB8=0RB8=0还还是是RB8=1RB8=1,,均均激激活活RIRI,,引引起起接接收收中中断断这是这是5151单片机多机通讯的基础单片机多机通讯的基础2.2.在在方方式式1 1中中,,当当接接收收时时,,SM2=1SM2=1,,则则只只有有收收到到有有效停止位才激活效停止位才激活RIRI3.3.在方式在方式0 0中,中,SM2SM2应置为应置为0 0 PCONPCON的字节地址为的字节地址为87H,87H,无位地址无位地址, , 只能字节寻址只能字节寻址, ,初始化时初始化时SMOD=0.SMOD=0.SMODXXXXXXXPCON87H PCONPCON是是电源控制寄存器电源控制寄存器, ,串行通信只用其中的最串行通信只用其中的最高位高位SMODSMOD,,其格式如下图所示其格式如下图所示SMOD:SMOD:波特率加倍位在计算串行方式波特率加倍位。

在计算串行方式 1 1、、 2 2、、 3 3 的波特率时,的波特率时, SMODSMOD==0--0--不加倍不加倍; ; SMOD SMOD==1--1--加倍加倍 ③③ PCON 2.2.串行口串行口波特率的选择波特率的选择 方式方式0 0下,波特率下,波特率= fosc/12= fosc/12,, foscfosc==6 6~~12MHz 12MHz 方式方式2 2下,波特率下,波特率=(2=(2SMODSMOD/64)×fosc /64)×fosc 方式方式1 1、、3 3下,波特率下,波特率=(2=(2SMODSMOD/32)×/32)×定时器定时器T1T1的溢出率的溢出率 定时器定时器T1T1的溢出率:单位时间秒内的溢出次数的溢出率:单位时间秒内的溢出次数T1T1的溢出率的溢出率= =T1T1定时时间间隔(秒)定时时间间隔(秒)1 1= fosc/12(256-N))= fosc/12(256-N)) 为方便,定时器为方便,定时器T1T1工作方式工作方式一般设置为一般设置为方式方式2 2,,自动重装计数常数。

自动重装计数常数 3.3.串行通信结束的查询与中断串行通信结束的查询与中断 串行通信中发送一个数据后是否可以发送下一串行通信中发送一个数据后是否可以发送下一个数据,以及此时是否可以开始接收一个数据等的个数据,以及此时是否可以开始接收一个数据等的操作可采用查询方式或中断方式来完成操作可采用查询方式或中断方式来完成①① 查询方式查询方式 方式方式1 1和方式和方式3 3查询方式的发送查询方式的发送/ /接收流程图分别接收流程图分别如图所示如图所示 T1T1初始化、启动初始化、启动T1T1工作工作设定串行通信方式设定串行通信方式置发送数据块首址置发送数据块首址数据块长度计数器数据块长度计数器清清TITI发送数据发送数据TITI==1 1??修改地址指针修改地址指针和块长度计数器和块长度计数器全部数据发送完?全部数据发送完?开开 始始结结 束束Y YN NY YN N查询方式发送流程图为:查询方式发送流程图为: 查询方式接收流程图为:查询方式接收流程图为:T1T1初始化、启动初始化、启动T1T1工作工作设定串行通信方式设定串行通信方式, ,允许接收允许接收置置接收缓冲区首址接收缓冲区首址 接收数据块长度接收数据块长度清清 RIRIRIRI==1 1?? 修改地址指针修改地址指针和块长度计数器和块长度计数器全部数据接收完?全部数据接收完?开开 始始结结 束束接收数据接收数据Y YN NY YN N ②② 中断方式中断方式 中断方式下,对中断方式下,对T1T1和和SCONSCON的初始化与查询方式的初始化与查询方式下相同法,但需增加中断逻辑初始化部分,即:要下相同法,但需增加中断逻辑初始化部分,即:要置位置位EAEA((中断总开关),置位中断总开关),置位ESES((允许串行中断),允许串行中断),中断方式的发送和接收的流程如图所示。

中断方式的发送和接收的流程如图所示 中断方式发送流程图中断方式发送流程图T1T1初始化、启动初始化、启动T1T1工作工作设定串行通信方式设定串行通信方式置发送数据块首址置发送数据块首址数据块长度计数器数据块长度计数器发送数据发送数据等待中断等待中断 1 1 EA, 1 EA, 1ESES中断服务程序中断服务程序主程序主程序全部数据发送完?全部数据发送完?发送数据发送数据中断返回中断返回0 0  EA, 0 EA, 0ESES 修改地址指针修改地址指针和块长度计数器和块长度计数器清清TITIYN 中断方式接收流程图中断方式接收流程图T1T1初始化、启动初始化、启动T1T1工作工作设定串行通信方式设定串行通信方式, , 允许接收允许接收置接收数据块首址置接收数据块首址数据块长度计数器数据块长度计数器等待中断等待中断1 1  EA, 1 EA, 1ESES中断服务程序中断服务程序主程序主程序全部数据接收完?全部数据接收完?中断返回中断返回0 0  EA, 0 EA, 0ESES 修改地址指针修改地址指针和块长度计数器和块长度计数器清清RIRI接收数据接收数据Y YN N 5.4.4 5.4.4 串行口的应用串行口的应用1.1.利用方式利用方式0 0扩展并行扩展并行I/OI/O口口 5151单片机的串行口工作在方式单片机的串行口工作在方式0 0时外接一个串入时外接一个串入并出的移位寄存器,就可以扩展一个并行输出口;外并出的移位寄存器,就可以扩展一个并行输出口;外接一个并入串出的移位寄存器,就可以扩展一个并行接一个并入串出的移位寄存器,就可以扩展一个并行输入口。

利用移位寄存器来扩展并行口,其电路简单,输入口利用移位寄存器来扩展并行口,其电路简单,扩展个数受传输速度的制约扩展个数受传输速度的制约 例例1 1:利用:利用5151单片机的串行口外接单片机的串行口外接74LS16474LS164扩展扩展8 8位位并行输出口如图所示,并行输出口如图所示,8 8位并行输出口的各位分位并行输出口的各位分别接一个发光二极管,要求发光二极管按从左到别接一个发光二极管,要求发光二极管按从左到右的顺序,以一定的时间间隔轮流依次循环发光,右的顺序,以一定的时间间隔轮流依次循环发光,试编程实现试编程实现 ORGORG 0000H 0000H LJMP LJMP MAIN MAIN ORG ORG 2000H 2000HMAINMAIN:: CLRCLR P1.0 P1.0 ;对;对74LS16474LS164清清0 0 MOV MOV SCON SCON,,#00H #00H ;设定串行口工作在方式;设定串行口工作在方式0 0 SETB SETB P1.0 P1.0 ;;允许数据串行移位允许数据串行移位 MOVMOV A A,,#80H#80H ;;预置发光二极管初态预置发光二极管初态BACK1BACK1::MOVMOV SBUF SBUF,,A A ;;启动串行口发送启动串行口发送BACK2BACK2::JNBJNB TI TI,,BACK2BACK2 ;;等待一帧发送结束等待一帧发送结束 CLRCLR TI TI ;;清发送中断标志清发送中断标志 LCALL DELAYLCALL DELAY ;;延时一段时间延时一段时间 RRRR A A ;;为发光二极管的下一次显示做准备为发光二极管的下一次显示做准备 SJMPSJMP BACK1 BACK1 例例2. 2. 利用利用5151单片机的串行口外接单片机的串行口外接74LS16574LS165扩展扩展8 8位并行输入口。

如图位并行输入口如图5.235.23所示,要求通过该所示,要求通过该8 8位位输入口读入一个字节数据存入输入口读入一个字节数据存入R2R2中 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 2000H ORG 2000HMAINMAIN:: CLR P1.0 CLR P1.0 ;允许并行置入数据;允许并行置入数据 SETB P1.0 SETB P1.0 ;允许串行移位;允许串行移位BACK: MOV SCONBACK: MOV SCON,,#10H #10H ;设串行口方式;设串行口方式0 0并启动接收并启动接收BACK1BACK1::JNB RIJNB RI,,BACK1BACK1 ;等待接收一帧数据;等待接收一帧数据 CLR RICLR RI ;清接收中断标志;清接收中断标志 MOV AMOV A,,SBUF SBUF ;读取缓冲器接收的数据;读取缓冲器接收的数据 MOV R2MOV R2,,A A ;存结果;存结果 SJMP $SJMP $ 2.2.利用方式利用方式1 1实现点对点的异步通信实现点对点的异步通信 点对点的异步通信也称双机通信,用于单片机点对点的异步通信也称双机通信,用于单片机与单片机之间的交换信息,也常用于单片机与通用与单片机之间的交换信息,也常用于单片机与通用微机间的信息交换。

如果通信间的两个单片机应用微机间的信息交换如果通信间的两个单片机应用系统相距很近,则可将它们的串口直接相连,以实系统相距很近,则可将它们的串口直接相连,以实现双机通信,如图所示现双机通信,如图所示 RXDTXDGND电电平平转转换换RXDTXDGNDRXDTXDGND电电平平转转换换RXDTXDGND微微 机机微机或其他微机或其他设备设备较远距离传送电路较远距离传送电路RS-232CRS-232C微微机机接接口口调调制制解解调调器器调调制制解解调调器器接接口口微微机机电话分分机机电话分分机机远距离传送电路远距离传送电路 美国电子工业协会(美国电子工业协会(EIAEIA))公布的一种异步通信公布的一种异步通信标准标准为电气和机械两方面标准为电气和机械两方面 电气标准:电气标准: (1) (1) 信号线的条数、定义;信号线的条数、定义;l基本数据传送线基本数据传送线 TXD:TXD:数据发送数据发送 RXD:RXD:数据接收数据接收 GND:GND:信号地线信号地线l握手信号握手信号 RTS:RTS:请求发送信号请求发送信号 CTS:CTS:清除传送清除传送, ,是对是对RTSRTS的响应信号的响应信号 DCD:DCD:数据载波检测数据载波检测( (输入输入) ) DSR:DSR:数据通信准备就绪数据通信准备就绪( (输入输入) ) DTR: DTR:数据终端就绪数据终端就绪, ,表明计算机已做好接收准备表明计算机已做好接收准备 ( (输出输出) )RSRS--232C232C (2) (2) 电气特性;电气特性;l设备之间通信的距离不大于设备之间通信的距离不大于1515米米l最大传输速率最大传输速率20KB/S20KB/Sl采用采用负逻辑负逻辑::““1”—— -5V ∽ -15V1”—— -5V ∽ -15V “0”—— +5V ∽ “0”—— +5V ∽ +15V15V 噪声容限为2V。

即 要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作为逻辑“1” l不带负载时输出电平:不带负载时输出电平:―25V ∽ +25V―25V ∽ +25Vl输出短路电流:输出短路电流: < 0.5A< 0.5Al最大负载电容最大负载电容: 2500pF: 2500pF机械标准:机械标准:包括几何尺寸、材料、强度等包括几何尺寸、材料、强度等 MAX232MAX232内内部部具具有有电电压压提提升升电电路路,,并并有有两两路路接接收收器器和和发发送送器器其其连连线线如如图图1.0TTL/CMOSTTL/CMOST1INT2INR1OUTR2OUTV+V-T1OUTT2OUTR1INR2IN+5V1.01.0 1.01.0+10V-10VRS-232RS-232VCCGNDMAX232 连线图连线图RSRS--232C232C电平转换电平转换 ①① A A机先发一个机先发一个AAHAAH呼叫呼叫B B机;机;B B机机收到收到AAHAAH后,回答后,回答A A机一个机一个BBHBBH信号,表示信号,表示同意接收同意接收。

②② A A机向机向B B机发送数据,数据包括:机发送数据,数据包括:a a、、数据个数数据个数b b、、数据本身,数据本身,x1,x2,x3,x1,x2,x3,……xnxnc c、、数据校验和数据校验和=x1⊕x2 ⊕ x3 ⊕ x4 ⊕ =x1⊕x2 ⊕ x3 ⊕ x4 ⊕ …… ⊕ xn ⊕ xn③ B③ B机收到数据后,判断数据是否有错,若有错回答机收到数据后,判断数据是否有错,若有错回答FFHFFH,,无错回答无错回答00H00H④④ 数据格式数据格式校验和nx1x2…xn例例2 2:约定::约定:A A机向机向B B机发送一组数据,波特率为机发送一组数据,波特率为24002400((foscfosc=6MHz=6MHz))设置:设置:((1 1)串行口按方式)串行口按方式1 1允许接收允许接收((2 2)定时器)定时器T1T1按方式按方式2 2工作,若取工作,若取SMOD=0SMOD=0,,则由公式:则由公式: 波特率波特率= = ,, 有:有: N=256N=256-(-(6 6××10106 6))/ /((24002400××384384))= =249249.49.49 故:计数初值为故:计数初值为F9HF9H。

1、初始化部分、初始化部分a、、T1的初始化,的初始化,T1工作在定时方式工作在定时方式2,不中断,,不中断,TC=F3HMOVTMOD,,#20HMOVTH1,,#0F9HMOVTL1,,#0F9HSETBTR1b、、串口初始化,选方式串口初始化,选方式1,,SMOD=0MOVPCON,,#0MOVSCON,,#50H 2、、发送部分(用查询方式)发送部分(用查询方式)B机允许?数据指针初始发送数据计数器初始(n+2)发送一个数据发送完?修改指针、计数器、清发送标志全部发送完?B机要求重发?结束开始NNNY向B机发AAHA A机软件机软件 FS:MOVSBUF,#0AAHFS0:JBCTI,FS1;;AA发送完转,且清发送完转,且清TISJMPFS0FS1:JBCRI,FS2;等;等B机回答机回答SJMPFS1FS2:MOVA,SBUF;读;读B机回答信号机回答信号XRLA,#0BBHJNZFS;;B机未发机未发BB转转FS3:MOVR0,#DATA;;指向指向nMOVR2,DATA;取;取nINCR2INCR2;;n+2FS4:MOVSBUF,@R0;;发一个数据发一个数据FS5:JBCTI,FS6;;该数据发送完转该数据发送完转SJMPFS5FS6:INCR0DJNZR2,FS4;;全部数据未发完转全部数据未发完转FS7:JBCRI,FS8;等;等B机回答机回答SJMPFS7FS8:MOVA,SBUFJNZFS3;;B机回答重发机回答重发RET 1 1、初始化部分(同、初始化部分(同A A机)机)a a、、T1T1的初始化,的初始化,T1T1工作在定时方式工作在定时方式2 2,不中断,,不中断,TC=F3HTC=F3HMOVMOVTMODTMOD,,#20H#20HMOVMOVTH1TH1,,#0F9H#0F9HMOVMOVTL1TL1,,#0F9H#0F9HSETBSETBTR1TR1b b、、串口初始化,选方式串口初始化,选方式1 1,,SMOD=0SMOD=0MOVMOVPCONPCON,,#0#0MOVMOVSCONSCON,,#50H #50H 2 2、、发送部分(用查询方式)发送部分(用查询方式)数据指针初始接收数据个数n,并建立数据个数计数器(n+1)修改指针,并接收一个数据接收完?清接收标志、求数据校验和校验和正确?向A机发00H结束NN是否AA?开始N等待A机询问向A机发BBH回答向A机发FFHB B机软件机软件 JS:JBCRI,JS1 ;;等待A机询问信号SJMPJSJS1:MOVA,SBUF ;;读A机询问信号XRLA,#0AAHJNZJS ;;A机未发AA转MOVSBUF,#0BBH ;;向A机发回答信号JS2:JBCTI,JS3 ;;该数据发送完转SJMPJS2JS3:MOVR0,#DATA ;;指针初始化JS4:JBCRI,JS5 ;;接收数据长度nSJMPJS4JS5:MOVA,SBUFMOVR6,A ;;接收数据个数计数器初始化MOVR5,#00H ;;校验和清零JS6:JBCRI,JS7 ;;接收完一个数据转SJMPJS6JS7:MOVA,SBUF ;;接收一个数据MOV@R0,AADDA,R5MOVR5,A ;;校验和累加DJNZR6,JS6 ;;数据未接收完转JS8:JBCRI,JS9 ;;接收完一个数据转SJMPJS8JS9:MOVA,SBUF ;;接收校验和XRLA,R5JZJS12 ;;校验和相同转MOVSBUF,#0FFH ;;校验和不等向A机发FFH回答信号JS10:JBCTI,JS11 ;;该数据发送完转SJMPJS10JS11:AJMPJS3 ;;重新接收JS12: MOVSBUF,#00H;;校验和相等向A机发00H回答信号JS13:JBCTI,JS14 ;;该数据发送完转SJMPJS13JS14:RET 3. 3. 方式方式2 2、方式、方式3 3与多机通讯与多机通讯 如图所示为多机通讯系统原理图。

串行口控制寄存器如图所示为多机通讯系统原理图串行口控制寄存器SCONSCON中的中的SM2SM2位为位为方式方式2 2、方式、方式3 3的多机通讯控制位在多机通讯中起着非常重要的作用的多机通讯控制位在多机通讯中起着非常重要的作用 当串行口以方式当串行口以方式2 2、方式、方式3 3发送时,可以通过程序改变发送时,可以通过程序改变TB8TB8的状态,的状态,TB8=1TB8=1,发送地址,,发送地址,TB8=0TB8=0,发送数据接收时,如果接收机的,发送数据接收时,如果接收机的SM2=1SM2=1,则只有接,则只有接收到的收到的RB8=1RB8=1,才能激活,才能激活RIRI如果接收机的如果接收机的SM2=0SM2=0,则无论接收到的,则无论接收到的RB8RB8的的状态如何,均能激活状态如何,均能激活RIRI利用串行口方式利用串行口方式2 2、方式、方式3 3的这个特点便可以实现的这个特点便可以实现多机通讯多机通讯 SM2=1SM2=1为从机待机状态,为从机待机状态, SM2=0SM2=0为从机接收状态为从机接收状态 小结小结Ø5151系系列列单单片片机机内内有有一一个个全全双双工工的的异异步步通通信信接接口口,,可可以以有四种工作方式,归纳如表所示有四种工作方式,归纳如表所示Ø在在串串行行通通信信编编程程中中,,如如果果是是方方式式1 1和和方方式式3 3,,必必须须对对定定时时计计数数器器T1T1进进行行初初始始化化以以选选择择波波特特率率。

发发送送过过程程是是先先发发送送后后检检查查TITI;;接接收收过过程程是是先先检检查查RIRI后后接接收收无无论论发发送送或或接接收收前前应应先先清清状状态态TITI或或RIRI,,无无论论是是查查询询方方式式或或中中断断方方式式,,发发送送或或接接收收后后都都不不会会自自动动清清状状态态标标志志,,必必须须用程序清零用程序清零TITI和和RIRI 方式方式方式方式0 0八位移位寄存器八位移位寄存器输入输出方式输入输出方式方式方式1 1十位异步通信方式十位异步通信方式波特率可变波特率可变方式方式2 2十一位异步通信方式十一位异步通信方式波特率固定波特率固定方式方式3 3十一位异步通信方式十一位异步通信方式波特率可变波特率可变一帧一帧数据数据格式格式八位数据八位数据1 1个起始位个起始位““0 0””8 8个数据位个数据位1 1个停止位个停止位1 1个起始位个起始位““0 0””,,9 9个数据位,个数据位,1 1个停止位个停止位发送第九位由发送第九位由SCONSCON的的TB8TB8提供提供接收第九位存于接收第九位存于SCONSCON的的RB8RB8位位第九位可作为校验位,亦可作为多机通信的地址第九位可作为校验位,亦可作为多机通信的地址/ /数据特征位数据特征位波特波特率率固定为固定为fosc/12fosc/12波特率可变波特率可变=(2SMOD/32)×(TI的溢出的溢出率率)=(2SMOD/32)×(fosc/12(256-x) )波特率固定波特率固定=(2SMOD/64)×fosc波特率可变波特率可变=(2SMOD/32)×(TI的溢出率的溢出率)=(2SMOD/32)×(fosc/12(256-x) )引脚引脚功能功能TXDTXD输出输出fosc/12fosc/12频率的同步脉冲频率的同步脉冲RXDRXD作为数据输入、作为数据输入、输出端输出端TXDTXD数据输出端数据输出端RXDRXD数据输入端数据输入端同方式同方式1 1同方式同方式1 1应用应用常用于扩展常用于扩展I/OI/O口口两机通信两机通信多用于多机通信多用于多机通信多用于多机通信多用于多机通信 。

下载提示
相似文档
正为您匹配相似的精品文档