版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
储器全部支持12时钟和6时钟操作P89C51X2P89C52X2/54X2/58X2128字节256RAM32I/O口线316位定时/计数器64优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至0可实现两个由软件选择的节电模空闲模式和掉电模式空闲模式冻结CPURAM定时器串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复80C51处理单4kFLASH8kFLASH16kFLASH32kFLASH128RAM256RAM12时钟操作可选6个时钟通过软件或并行编程器3个加密6个中断48I/O316位定时/计数T0T180C51T2捕获和比低EMI(ALE以及6时钟模式P89C51X24K字节FLASH温度范围(-P89C52X28K字节FLASH温度范围(---P89C54X216K字节FLASH温度范围(-P89C58X232K字节FLASH温度范围(-器1=1282=2564=2568=256下表所示为操作模式电源电压以及最大外部时钟频率之间的关6-5V12-5V DIP封装及管脚功 I地IP0.0-39-43-37-P0口P0口是开漏双向口可以写为1使其状态为悬浮用作高阻输入P0也可以在外部程序器时作地址的低字节在外部数据器时作数据总线此时通过内部强上拉输出1P1.0-1-2-40-P1口P1口是带内部上拉I/O口向P1口写1时P1口被内部上拉为高电平可用作输当作为输入脚时被外部拉低的P1口会因为内部上拉而输出电流(DC电气特性)P1口第2功能T2(P1.0)定时/计数2的外部计数输入/时钟输出(见可T2EX(P1.1)定时/计数2重装载/捕捉/方向控1-1223P2.0-21-24-18-P2口 P2口是带内部上拉的双向I/O口向P2口写入1时P2口被内部上拉为高电平可用作输当作为输入脚时被外部拉低的P2口会因为内部上拉而输出电流(见DC电气特性)在外部程序器和外部数据时分别作为地址字节和16位地址(MOVX@DPTR)此时通过内部强上拉传送1当使用8位寻址方式(MOV@Ri)外部数据器时,P2口发送P2特殊功能寄P3.0-10-P3口P3口是带内部上拉的双I/O口向P3口写13-7-时P3口被内部上拉为高电平可用作 输入脚时被外部P3口会因为内部上拉而输出流(DC电气特性)P3口还具有以下特殊功5 7 8 9 94I 当晶振在运行中只要复位管脚出现2个机器期高电平即可复位内部有扩散电阻连接到Vss仅需要外接一个电容到Vcc即可实现上电复位O地址锁存使能在外部器时输出脉冲锁存地址的低字节在正常情况下ALE输出信号恒定为1/6振荡频率并可用作外部时钟或定时注意每次外部数据时一个ALE脉冲将被忽略ALE可以通过置位SFR的 置位后ALE只能在执行MOVX指令时O程序使能当执行外部程序器代码时PSEN每个机器周期被激活两次在外部数据器时PSEN无效内部程序器时PSEN无I外部寻址使能/编程电压在整个外部程序器时EA必须外部置低如果EA为高时将执行内部程序除非程序计数器包含大于片内FLASH的地址该引脚在对FLASH编程时接5V/12V编程电压(Vpp)如果1已编程EAIO注为了避免上电时的”latch-up”效应任意管脚Vpp除外上的电压任何时候都不能高于Vcc+0.5V低于Vss-0.5V1P89C51X2/52X2/54X2/58X2殊功能寄存名定地位功能和位地辅助功能寄存辅助功能寄存器0B寄存时钟控制寄存数据指针双字节中断使P0P1P2P3电源控制寄存P2捕获2捕获串口数据缓冲堆栈指2定时器2012012 带*号的SFR可位寻带#SFR表示80C51SFR修改而来或新增加的1复位值由复位源确FLASHEPROMP89C51X2/52X2/54X2/58X2在10000次擦除和编程之后仍能可靠保存FLASH器的内容单元的设计使得擦除和编程结构最优化此外先进的沟道氧化工艺和低内部电场的结合使擦除和编程操作更内部程序器时 外部程序器最多可达XTAL1XTAL2为输入和输出可分别作为一个反相放大器的输入和输出此管脚可配置为使用内部振荡器要使用外部时钟源驱动器件时XTAL2可以不连接而由XTAL1驱动外部时钟信号无占空比的要求因为时钟通过触发器二分频输入到内部时钟电路但高低电平的最长和最短时间必须符合手册的规时钟控制寄存器CKCON该器件提供通过一个SFR位CKCON的X2位和一个Flash位块中的FX2控制选择6时钟/12时钟模X20时12时钟模式有效位置1时系统切换6能是通过SFR位实现的因此可以随时并修改需要注意的是将X2从0改为1将导致用户代码以两倍的速度执行系统时间间隔都变成原来的1/26时钟模式变12时钟模式会将运行代码的速度降低为1/2Flash时钟控制位FX2可通过并行编程器编X26时钟模式见表FX2时钟模式位只通过并行编程器X2位CKCON.0012时钟模式默16时钟模X6时钟模可从P1.050%占空比的时钟信号P1.0除了作为常I/O口外还有两个可选功能它可16MHz操作频率时1250%占空比61Hz~4MHz时钟信号6时钟模式122Hz~8MHz要将定时/计数2配置为时钟发生器C/T2(T2CON.1)必须清T2MODT20E位必须置位要启动定时器2还必须将TR2(T2CON.2)置位时钟输出频率由振荡器频率和定时2 65536n166时钟模式3212在时钟输出模式中2的翻转将不会产生中它作为波特率发生器时相时2可同时作为波特率发生器和时钟发生器但需要注意的是波特率和时钟输出频率相同在振荡器工作时将RST脚保持至少两个机器周期高电平12时钟模式为24个振荡器周期6时钟12振荡器现复位了保证上电复位的可靠RST保持高电平的时间至少为振荡器启动时间12时钟模式运行当已通过并行编程器设置为6时钟模式时除外静态设计使时钟频率可以降至0MHz(停止)当振荡器停振时RAMSFR的值保持不变该模式允许逐步应用并可将时钟频率降至任意值以实现系统功耗的降低如要实现最低功耗则建议使用掉电模式空闲模式见表3中CPU进入睡眠状态但片内的电路仍然保持工作状态正常操作模式的最后一条指令执行进入空闲模式空闲模式下CPU内容片内RAM和所有SFR保持原来的值任何被使能的中断此时程序从中断服务程序处恢复并继续执行或硬件复位与上电复位使用相同的方式启动处理器均可终止空闲模式为了进一步降低功耗通过软件可实现掉电模式(见表3)该模式中振荡器停振并且在最后一条指令2.0V内RAMSFR保持原退出掉电模式之Vcc必须升至规定的硬件复位或外部中断均可结束掉电模件复位使所有SFR不改RAM的值外部中断允许SFR和片内RAM都保持原值WUPDAUXR1.3从掉电唤醒使能或通过外部中断WUPD0WUPD=1使要正确退出掉电模式在Vcc恢复到正常操作电压范围之后复位或外部中断开始执行并且要保持足够长的时间(通常小于10ms)以使振荡器重新启动并稳定下来使用外部中断退出掉电模式时INT0INT1必须使能且配置为电平触发将管脚电平拉低使振荡器重新启动出掉电模式后将管脚恢复为高电平一旦中断被响应RETI之后所执行的是进入掉电模式指令3空闲模式和掉电模式时外部管脚的状 11110000当空闲模式被硬件复位所中止时器件在内部复位之前从停止处恢复程序正常运行时间为2个机器周期这段时间内片内硬件对内部RAM的但对I/O口的未被当Idle模式被复位所中止时为了消除可能产生的误写操作应用Idle模式指令后的指令不应执行写I/O口或写外部器操作当器件复位PSEN为高电平时将ALE置低电RST撤除时ALE保持低电当器件ONCE模式时P0口处于悬浮状态其它I/O口ALEPSEN为弱上拉振荡电路保持工作状态器件处于该模式时可用仿真器或测试CPU驱动电路执行正常复位时恢复正常操作定时0定时和计数功能由特殊功能寄存TMODC/T进行选择/计数器4种操作模式通过TMODM1M0选择两个定时/计数器的模式012都相同模式3不同如下所述0时类8048定时器8位计数32分频的预分频器2所示为此模式下定时器寄存器配置为13位寄存器当计数从全为1翻转为全为0时定时器中断TFnTRn=1GATE=0INTn=1时定时器计数置位GATE时允许由外部输INTn控制定时器这样可实现脉宽测量TRnTCON寄存器内的控制位图313位寄存器THn8TLn5TLn3位不定可将其忽略置位运行标志TRn不能清零此寄存器模式00及定时器1都是相同的GATE位TMOD.7TMOD.3分别分配给定时器0及定时器11除了使用THnTLn16位外其它与0相此模式下定时器寄存器作为可自动重装的8位计数器TLn如图4所示TLnTFnTHnTLnTHn内容由软件预置重装时THn内容不变模式2的操作对于定时器0及定时器1是相同的在模3中定时1停止计数效果与将TR1设置0相此模式下定0TL0TH0作为两个8位计数器5为模3时的定时0逻辑占用定时器0的控制位C/TGATETR0INT0及TF0TH0限定为定时器功能计数器周期占用1TR1TF1TH0控制定时器1中断3可用于需要一个额外80工作于模3时80C513个定时器/计数定时0工作于模3时器1可通过开关进入/3,它仍可用作串行端口的波特率发生器或者应用于任何不要求中断的场合 地7654321复位值0位符功器/计数器清零时置位TR1即可打开定时器/计数1用作定时器或计数器清零则用作定时器从内入置位用作计数器从Tn脚输000116位定时器/计数器无预分频108位自装载定时器当溢出时将THn存放的值装11定时0此时作为8位定时/计数器TL0作为8位定时器/通过标准定时0控制位控制TH0仅作为8位定时器由定1定时/0/1模式控制寄存器X2X2C/TX2X2C/TC/TTRn TimernGateINTn2定时/计数0/1的模013位定时/ 地址 复位值 位定时1溢出标志定时/计数器溢出时由硬件置处理时由硬清除或用软件清定时1运行控制位由软件置位/清零将定时/计数器打开/关定时0溢出标志定时/计数器溢出时由硬件置处理时由硬清除或用软件清定时0运行控制位由软件置位/清零将定时/计数器打开/关1边沿触发标志当检测到1边沿时由硬件置位中断1触发类型控制位由软件置位/清零以选择外部中断以下降沿/0边沿触发标志当检测到0边沿时由硬件置位中断0触发类型控制位由软件置位/清零以选择外部中断以下降沿/3定时器/计数器控制寄存器X2X2X2TRn TimernGateINTn4定时/计数0/1的模28位自动重X2X2X2TR0 Timer0 GatebitNT0(8X2X2X2(85定时/计数0的模38位计数216位定时/过设置特殊功能寄存T2CONC/T2定时器或计数器见图6定时器2有三种操作模式捕获自动重新装载递增或递减计数和波特率发生器这三种模式由T2CON中的位进行选择见表3在捕获模式中通过T2CONEXEN2设置两个选项EXEN20定时2作为16位定时器或计数器由T2CON中C/T2位选择溢出时置位TF2定时器2溢出标志位该位可用于产生中断通过使能IE寄存器中的定时器2中断使能位如果EXEN21与以上描述相同但增加了一个特性部输入T2EX10时将定时2TL2TH2的当前值各自捕获RCAP2LRCAP2H另外T2EX的负跳变T2CONEXF2置位EXF2TF2一样能够产生中向量与定时2溢出中断地址相同定时器2中断服务程序通过查询TF2和EXF2来确定引起中断的事件捕获模式如图2所示在该模式中TL2TH2无重新装载值甚至当T2EX产生捕获事件时计数器仍以T2EX的负跳变或振荡频率的1/1212时钟模式或1/66时钟模式计数自动重装模式递增/递减计数16位自动重装模式中定时器2C/T2配置为定时器/计数器编程控制递增/递减计数计数的方向是由DCEN递减计数使能位确定的DCEN位于T2MOD寄存器见图8中当DCEN0时定2默认为向上计数当DCEN1时定时器2T2EX确定递增或递减计数9DCEN0时定时器2自动递增计数在该模式中通过设置EXEN2位进行选择如果EXEN20定时2递增计数0FFFFH并在溢TF2置位然后将RCAP2LRCAP2H中的16位值作为重新装载值装入定时器2RCAP2LRCAP2H的值是通过软件预设的EXEN2116位重新装载可通过溢出T2EX10的负跳变实现此负跳变同时置位如果定时2中断被使能则当TF2EXF21时产生中10DCEN1时定时2可递增或递减计数此模T2EX控制计数的方向当置1时定时器2递增计数计数到0FFFFH后溢出并置位TF2还将产生中断如果中断被使 定T2EX时器2递减计数TL2TH2计数到等RCAP2LRCAP2H时定时器产生溢出定时器2溢出置TF20FFFFH重新装TL2TH2当定2递增/递减产生溢出标志EXF2翻转如果需要可将EXF217位在此模式中EXF2标志不会产生中断00116011161X1XX0关闭T2CON地址 可位寻 复位值 符 T2CON.7定时2溢出标志定时器2溢出时置位必须由软件清除TCLK1时TF2将不会置 T2CON.6定时2外部标志当EXEN21T2EX的负跳变产生捕获或重装时EXF2置位定时器2中断使能时EXF21CPU从中断向量处执行定时器2中断子程序EXF2位必须用软件清零在递增/递减计数器模式DCEN1中EXF2不会引起中断 T2CON.5接收时钟标志RCLK置位时定时器2的溢出脉冲作为串行口模1和3的接收时钟RCLK0时将定时器1的溢出脉冲作为接收时钟 T2CON.4发送时钟标志TCLK置位时定时器2的溢出脉冲作为串行口模1和3的发送时钟TCLK0时将定时器1的溢出脉冲作为发送时钟 T2CON.32外部使能标置位且2未作为串行口时钟时允许T2EX的负跳变产生捕获或重装EXEN20时T2EX的跳变对定时器2无效 T2CON.2定时2启动/停止控制位置1时启动定时 T2CON.1定时器/计数器选 定时器内部定时器OSC/12外部事件计数器下降沿触 T2CON.0捕获/重装标志置位EXEN21时T2EX的负跳变产生捕获清零 1时定时器2溢出或T2EX的负跳变都可使定时器自动重装当RCLK1或TCLK1时该位无效且定时器强制为溢出时自动重6定时器/计数2T2CON控制寄存X2X2X2C/T2=C/T2=T2(8-(8-
T2MOD地址复位值=XXXXT2MOD地址复位值=XXXX76543210不可用保留将来之用向下计数使能位定时器2可配置成向上/向下计数 保留位时或非有效状的值应0图 定时器2模式T2MOD控制寄存X2X2C/T2C/T2图 定时器2自动重装模式X2X2C/T2=C/T2=1=UP0= 图 定时器2自动重装模式
Timer1NOTE:NOTE:OSC.Freq.isdividedby2,not12or C/T2=(8-(8- C/T2=T2
Noteavailabilityofadditionalexternal图 定时器2波特率发生器模T2CONTCLK和或RCLK见表3允许从定时器12获得串行口发送和接收的波特TCLK=0时定时器1作为串行口发送波特率发生器当TCLK=1时定时器2作为串行口发送波特率发生器RCLK对串行口接收波特率有同样的作用通过这两位串行口能得到不同的接收和发送波特率一个通过定时器1产生另一个通过定时器2产生11所示为定时2工作在波特率发生器模式与自动重装模式相似当TH2溢出时波特率发生器模式使定时器2寄存器重新装载来自寄存器RCAP2HRCAP2L16位的值寄存器RCAP2H和RCAP2LR的值由软件预置时波特定时器可配置成定时或计数方式在许多应用上定时器被设置在定时方式当定2作为定时器时它的操作不同于波特率通常定时器2作为定时器它会在每个机器周期递增1/6或1/12振荡频率当定时器2作为波特率发生器时它会在每个状态周期递增例如1/2振荡频率 这样波特率公式如下
[n[65536n166时钟模式3212RCAP2H,RCAP2L)=RCAP2HRCAP2L的内容为16位无符号整如图11所示2作为波特率发生器仅当寄存器T2CON中的RCLK和或TCLK=1时定2作为波特率发生器才有TH2溢出并不置TF2也不产生中断这样当定时器2作为波特率发生器时定时器2中断不必被如果EXEN2T2外部使能标志被置位在T2EX中由1到0的转换会置位EXF2T2外部标志位但并不导致TH2TL2重装载RCAP2HRCAP2L因此当定时器2用作波特率发生器时如果需要T2EX可用作附加的外部中断当计时器工作在波特率发生器模式下,则不要对TH2和TL2进行读写每隔一个状态时间0sc/2或由T2进入的异步信号定时器2将加1在此情况下对TH2和TH1进行读写是确的可对RCAP2寄存器进行读但不要进行写否则将导致自动重装错误当对定时器2或寄存器RCAP进行时应关闭定时器清零TR25定时器2生的常用波特式外入波
[n[65536n166时钟模式3212fOSC荡器频RCAP2H,RCAP2L=65536-[fosc/(n波特率除了波特率发生器模式T2CON不包TR2位的设置TR2位需单独设置来启动定时器表66T2定时内部控制注1外部控制注27T2为计内部控制注1外部控制注216 串口为全双工结构收缓冲在第一个字节从寄存器读出之前可以开始接收第二个字节串口的发送和接收寄存器都是通过SFRSBUF进行的写入SBUF的数据装入发送寄存器对SBUF的读串行数据通RxD进出TxD输出时钟次发送或接收以LSB最低位作首位每次8位波特率固定为MCU时钟频率的1/120TxD脚发送RxD脚接收每次数据为10位一个起始 8个数据位LSB及一个0止位1当接收数据时停止位存于SCON的RB8内波特率可变由定时器1溢出速率决TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB 程第9位数据及一个停止位1发送9个数据位SCONTB8位可置为01例如将奇偶位PSW内P位移至TB8接收时第9位数据存入SCON的RB8位停止位忽略波特率可编MCU时钟频率的1/32或1/64由PCON内SMOD1位决定TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB为首位一可编程9位数据及一个停止位13除了波特率外均与模式2相同其波特率可变并在上4种模式送过程是以任意一条以SBUF作为目标寄存器的指令开始的式0时接通过R1=0REN=1初始化其它模式下REN=1则通过起始位UART23有一个专门的应用领域即多机通信些模式9位数据第9位RB8接下来为停止位UART可编接收到停止位时仅当RB8=1时串口中断才有效可通过SCONSM2位来选择这一特性下述为多机系统利用这一特性的法当主机需要发送一数据块给数台从机之一时首先发送出一个地址字节对目标从机进行识别地址与9位数据区别的第910SM2=1时数据字节不会使各从机产生中断从机可以检查接收到的数据判断是否被寻址被寻址的从机即SM2位以准备接收随后数据内被寻址的从机SM21则不理睬随后数0时SM2无效式1时SM2用于检验停止位是否有效1时如果SM2=1那么只有串行端口控制寄存器SCON串行端口控制及状态寄存器SCON12所示其中包括模式选择位以及发送和接收的位数据TB8及RB8以及串行端口中断位TI及 地址 帧错误位当检测到一个无效停止位时通过UART设置该位但它必须软件清零要使该位有效PCON寄存器中SMOD0位必须SM1定义串口操作模式要使该位有效PCON寄存器中的SMOD0必须置SM0定义串行口操作模式见下SM0 00同步移位寄存 fosc/12或fosc/6取决于时钟模018位 129位 fosc/64或fosc139位 在模23模式23中若SM2=1且接收到的9位数据RB80RI接收中断标志不会被激活在模式1中若且没有接收到有效的停止位则RI不会被激活在模式0中SM2允许接收位由软件置位或清除REN=1时允许接收REN=0时接239要由23中已接收的9位数据在模式1中或sm2=0RB8位在模式0中RB8未发送中断标志模式0中在发送完第8位数据时由硬件置位其它模式中在发送停止位之初硬件置任何模式必须由软件来清接收中断标志模式0中接收第8位结束时由硬件置位其它模式中在接收0置位(SM2所述情况除外)必须由软件12串行控制寄存器操作模0的波特率是固定的fosc/122的波特率MCU时钟/64MCU时钟/32取决于PCON寄存器中的SMOD1位的值若SMOD1=0复位值波特率为MCU时钟/64若SMOD1=1波特率为MCU时钟/3280C51中模式1和模3的波特1的溢出速率决当定1用作波特率发生器131的溢出速率SMOD1的值决1不能用作1可以工作在定时或计数3种工作模式中任何一个在最典型应用中它用作定时器方式工作自动重装载模式TMOD的高半字节为0010B它的波特率值由可以定时器1的中断实现非常低的波特率将定时器配置为16位定时器TMOD的高半字节0001B并使用中断进行16位软件重装图13列出了几个常用的波特率以及如何从定时器1获OS定时器模12-clock模6-clock模模模式016733420XXXX模式2201XXX模式132010211921105910296110590024896110590024811059002121105900211986002600212001
131产生的通用波特串行数据由RxD端出入TxD输出同步移位时钟发送或接收的是8位数据低位在先其波特率固定MCU时钟1/1214是串行口模式0的功能方框简图及相关的时序图执行任何一条SBUF作为目的寄存器的指令时就开始发送S6P2时刻的写SBUF信号1装入发送移位寄存器的第9位并通知发送控制部分开始发送写SBUF信号有效后一个完整的机器周期后SEND端有效SEND使能RxDP3.0端送出数据TxDP3.1输出移位时钟每个机器周期的S3S4S5状态内移位时钟为低电S6S1S2状态内为高在SEND有效时每一机器周期的S6P2时刻发送数据位向右移时左边添加零当数据字节最MSB移到移位寄存器的输出端时其左边是装入1的第9位再左的内容均为0,此时通知Tx控制模块进行最后一位移位处理后SEND并置位T1,所有这些步骤均在入SBUF10个机器周期S1P1时进行的REN=1及R1=0下一机器周期的S6P2RX控制单元向接收移位寄存器写11111110并在下一个时钟使RECEIVERECEIVE使能移位时钟转换P3.1功能移位时钟在每个机器周期的S3P1及S6P1跳变在RECEIVE数据从右边移入时左边移出为1当初始时置入最右端的0移至最左端时通知RX控制时钟作最后一次移位后装SBUFSCONR110个机器周期RECEIVE端被清除且置位串行口工作于模式1时传输的是10位1位起始位08位数据低位在先及一位停止位RxD接收TxD发送接收时停止位存入SCONRB880C51波特率取决于定时1的溢出速率图15所示为串行口模式1的功能简图及相应的发送/接收时序发送过程是由执行一条SBUF为目的寄存器的指令启动的写SBUF1TB8装入发送移位寄存器的9际上16分频计数器下次翻转后的那个机器周期的S1P1时刻每位的发送时序与16分频计数器同步而并不与写SBUF信号同步发送以激活SEND端开始向TxD发送一起始位一位时间以后DATA端有效使输出移位寄存器中数据得以送至TxD再过一位产生第一个移位脉冲数据向右移出左边不断填以0当数据字节的最移到移位寄存器的输出位置时其左边是装1的第9位再左的内容均为0此时通知TX控制器作最后一次移位然后SEND端并置位这都发生于写SBUF16分频计时器10次翻转RxDMCURxD不断采速率为波特率16倍当检测到负跳变时16分频计数器立即复位同时将1FFH写入输入移位寄存器复位16分频计时器确保计时器16个状态将每个位时间分为16份在第789状态时位检测器对RxD端的值采样取值为三个采样值中取多数至少2读入可以抑制噪所接收的第一0说明它摒弃复位始位如果起始位有效则被移入输入移位寄存器并开始接收这一帧中的其它位当数据位逐一由右边移入时1从左边被移出当起始位0移到最左边时模式1为9位寄存通知接收控制器进行最后一次移位将移位寄存器内容9位分别装入SBUF及RB8并置RI=1仅当最后一位移位脉冲产生时同时满足下述2个条件 SM2=0或接收到的停止位=1才会装载SBUF和RB8并且置位RI上述两个条件任一不满足,所接收到的数据帧就会丢失不再恢复两者都满足时停止位就进入RB88位数据进SBUFRI=1这时无论上述条件满足与否接收控制单元都会重新等待RxD的负跳变0模式2和3中发送通过TxD和接收通过RxD都是11位包括1位起始 8位数01位LSB在 1位可编程数据位第9位及一位停止 发送时第9位数据位TB8可置101接收时第9位存SCONRB82MCU时钟频率1/163时可由定时11617所示为模23时串行口的功能简收部分与模1相同发送部分仅发送移位发送过程是由执行一条SBUF为目的寄存器的指令启动的写SBUF同时TB8装入发送移位寄存器的9控制由于16分频计数器下一次翻转后机器周期的S1P1时刻开始发送过程由使SEND有效开始将一个起始位送到TxD端一位时间后DATA有效数据由移位寄存器TxD端再过一位后产生第一个移位脉冲第一个移位时钟将10第9位此后每次移位只把0送入第9位所以当数据位向右移出 从左边移入当TB8移至输0位置上时边就是停止位余位均为零将通知发送控制器作最后一次SEND无效并置TI这些均发生在写SBUF11次计数器翻转时MCU16倍波特率RxD脚进行采样一旦检测到负跳变16分频计数器立即复位同1FFH写入输出移位寄存在每一789状态时位检测器对RxD端值进行采样对三个采样值取多数至少2确定值以抑制噪声如若所接收的第一位不为0接收电路复位单元等待下一个负跳变的出现如果起始位有效则被移入输入移位寄存器并开始接收这一帧中的其它位数据位从右边移入1从左边移出当起始位移至寄存器模式2~3时为9位寄存器的最左端时通知接收控制器进行最后一次移装SBUFRB8RI仅当产生最后一位移位脉冲时同时满足下列2个条件RI=0,SM2=0或接收到的第9位数据为1时,才装载SBUF和RB8并置位上述两个条件任一不满足,所接收到的数据帧就会丢失不再恢复RI仍为0当两者都满足时第9位数据位就装RB88位数据则SBUF一个位时间等待RxD端的负跳变DSDSQZero1111111S4
S1....S6S1....S6S1....S6S1....S6S1....S6S1....S6S1....S6S1....S6S1....S6S1....S6
80C51InternalSMOD
SMOD
DSQ
Zero
RXClock
Bit
InputShiftRegister(9Bits)
WritetoWriteto
80C51Internal
StartBitDetector
16StopStop
1580C51InternalDSPhase2Clock(1/2f)ZeroStopBitSMODSMOD=0(SMODisBitInputShiftRegister(9Bits)ReadRead WritetoWriteto
80C51Internal
StartStopStopStopStopBitBitDetector
16
16
80C51InternalSMOD
SMOD
DSQ
Zero
RXClockR1
Bit
InputShiftRegister(9Bits)
ReadRead StartStartWritetoStopStop16 16 Bit StopBit
除了标准操作模式外UART可实现自动地址识别和通过查询丢失的停止位进行帧错误检测当使用帧错误检测失的位将会置SCONFE位FE与SM0SCON.7PCON.6SMOD0选择如果SMOD0置位SCON.7FESMOD00时SCON.7作为SM0FESCON.7只能由软件清零见图自动地址识别是这样一种特性它使UART可以通过硬件比较从串行数据流中识别出特定的地址这样就不必花费大量软件资源去检查每一个从串口输入的串行地SCONSM2置位可使能该特性9UART模式模式23下如果接收的字节中包含给定地址或广播地址接收中断标志RI将自动置位在9位模式下要求第9个信息位1以表明该信息内容是地址而非数据使用自动地址识别特性时主机通过调用特定从机地址选择与一个或多个从机通信使用广播地址时所有从机都被联系在此使用了两个特殊功能寄存器SADDR表示从机地址SADEN表示地址SADENSADDR内哪几位需使用而哪几位不予考虑SADEN可以SADDR逻辑与得出给定的地址用于对每一从机进行寻址示例如下从机 特定地址=1100从机 特定地址=1100上例SADDR相同而SADEN不同以区分两个从机从机000而忽1位从机1则100位由于从机11位必0011000010以区别由于从0011只能取独11000001以区别取地址11000000时两从机都可12而不选从从机 特定地址=1100从机 特定地址=1100从机 上述三个从地址只有3位不同从机0要求0=0它可11100110单独寻址从机11=0可通11100101单独寻址2要求2011100011单独寻址必须使地址的第2位为1以从机2因此使用地址11100100可选通从机0和1同时从机2将SADDR和SADEN每个从机的为零的位视为无况下1这样广播地址为FFH复位时SADDRSADEN00H此时产生了一个所有位都是无关位的给定地址也即广播地址这样有效地了自动寻址模式并允许微控制器使用不带有上述特性的标准UART驱动器
ONLYMODESETFEBITFOSPTBITIS0(FRAMNGERROR)SM0TOUARTMODECONTRLOSM0/SM0/
––:SCON.7=:SCON.7=18UART帧错误检 111011XNUARTMODE2ORMODE3ANDSM2=INTERRUPTIFREN=1,RB8=1AND“RECEIVEDADDRESS”=“PROGRAMMED19UART多机通信,自动地址识001010120本手册所讲述的器件6个中断源图20所示部中断INT0INT1可根据寄存TCON中的IT0IT1位状态分别设置为电平或者边沿触发实际产生的中断标志是TCONIE0IE1当触发硬件触发由外01TF0TF1分别由各自的定时/0工作在模式时除外产生当产生定时器中断时进入中断服务程序后由串口中断RITI的逻辑或产生入中断服务程标志均不能被硬件清除际上服务程序通常需要确定是由RI还是TI产生的中断然后由软件清除中断标志相同言之可由软件产生推迟或取消每个中断源可通过置位或清零寄存器IE图21中的相应位分别使能或 IE中还包含一个全局位EA可以立即所有的中断每个中断源都可通过编程中断优先级寄存器IP22IPH23单独设置优先级一个中断服务程序可响应更高级的中断但不能响应同优先级或低级中断中断服务程序不响应其它任何中断如果两个不同中断优先级的中断源同时申请中断时响应较高优先级的中断申请2个同优先级的中断源同时申请中断内部查询顺序将确定首先响应哪一个中断请求查询顺序 IE0外部中断 最TF0定时IE1TF1定时RI+TITF2,EXF2定时器 最注同级优先级只用来处理相同优先级别中断源同时申请中断的情IPIPH寄存器中包含了一些无效位由于这些位可能用于其它80C51系列产品中用户软件不应将这些位写入1中断标志在每个机器周期的S5P2时采样下一个机器周期查询该采果S5P2周期时有一个2确保正在处理的指令在进入任何中断服务程序前可以执行完3确保了如果正在处理的指令是RETI或任何IE或IP寄存器的指令那么在进入任何中断服务程序之前至少再执行一条指令查询周期在每个机器周期都会重复所查询的值是一个机器周期的S5P2出现的值需要注意的是如果一个中断标志位有效但仍然没有被响应是因为出现上面所述的情况如果当阻碍的条件撤除时中断标志不再有效将不再响应句话说实际上如果中断标志有效时没有响应中断之后将不再被位地址765432复位值 位如果EA=0;EA=1定时器2中断使能位 地址 65432复位值 地址 65432复位值 优先级位=1分配高优先 优先级位=0分配低优 符 功 无效位保留将来之 无效位保留将来之级 22中断优先地复位值 3210优先级位=1分配高优先 优先级位=0分配低优先 无效位保留将来之 无效位保留将来之23中断优先级高IPH寄存
..........
...
Are
LongCallto
Interrupt
..ThisisthefastestpossibleresponsewhenC2isthefinalcycleofaninstructionotherthanRETIoranaccess.toIEor24中断响应时序有效如图24然后根据上面的规则它会在C5,C6响应中断不执行任何低优先级中断的指处理器通过执行硬件产生LCALL志位另一些情况不清零它不会清零串口中断标志这需要用户软件来完成如果外部中断是边沿触发中断标志IE0IE1会被硬件清零硬件产生的LCALL将程序指针的内容压入堆栈但不会保PSW并根据响应的中断源重新将一个地址装入PC7所示当中断服务程序执行RETI指令时完毕装入PC继续执行被中断的程序注意RET外部中断源可配置为电平触发或边沿触发通过将寄存器TCON中的IT1IT0置位或清零实现ITx=0外部中xINTx脚的低电平触发如果ITx=1x为边沿触发该模式下对INTx脚连续采样如果在一个周期为高电平而下一个周期为低电平中断请求标志IEx将置位然后通过IEx请求中断由于外部中断脚每个机器周期采样一次输入高或低应当保持至少12个振荡周期以确保能够采样到如果外部中断为边沿触部中断源应当将中断脚至少保1个机器周期高电平然后至少保1个机器周期低电平这样就确保了边沿能够被检测到以使IEx置位当调用中断服务程序后CPUIEx清零触发求有结束之前撤除请求否则将产生另一次中断INT0INT1电平在每个机S5P2取反并锁存IE0IE1在下个周期之前该值不会被电路查询如果请求有效且应答的条件正确下个执行的指令就是硬件子程序调用请求中断CALL指令本身占用两个周期因此从中断请求有效到开始执行中断服务程序的第一条指令需要至少3个完整的机器周期图24所示为中断响应时序如果中断被前面所述的3个条件之一所阻滞中断就需要更长的响应时间如果同级或高优先级的中断已经在处理额外的等待时间就取决于其它中断服务程序所耗的时间如果正在执行的指令不是它的最后一个周期超过3个周期因为最长的指令MULDIV4个周期如果正在处理的是RETI或者任何IE或IP的指令额外的等待时间不会超过5个周期完成正在处理的指令需要一个周期再加最多4个周期完成下一条指令如果指令为MULDIV因此在一个单中断系统中响应时间总3个周期小9个周如前面所述该手册所描述的器件都具4个中断优先级结构对应的寄存器IE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业学生实习工作总结8篇
- 毕业实习心得体会15篇
- 岗前培训心得体会15篇
- 节能宣传周活动总结(12篇)
- 高二语文教师个人教学工作总结
- 环保建议书(15篇)
- 挫折不可怕作文600字叙事范文三篇
- -工商银行年终工作总结
- 金融网格化培训
- 新加坡的金融业
- 2024时事政治考试题库(100题)
- 国家开放大学《理工英语4》机考参考答案(第1-3套)
- 调机品管理规定
- 马克思主义基本原理第一章第一节
- AHP层次分析法-EXCEL表格自动计算
- 计算机基础认识键盘键盘教程 (课堂PPT)
- SOP作业指导书模板
- 小学科学实验室仪器名称汇总
- 威信旅行社团体报价单
- 企业绩效考核大全设计包装人员绩效考核
- TPRI设计常用模块说明
评论
0/150
提交评论