单片机89C51指令

合集下载

89c51芯片资料

89c51芯片资料

概述该系列单片机是采用高性能的静态80C51设计由先进CMOS工艺制造并带有非易失性Flash程序存储器全部支持12时钟和6时钟操作P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM32条I/O口线3个16位定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至0可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结CPU但RAM定时器串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复选型表特性特性y 80C51核心处理单元4k字节FLASH89C51X28k字节FLASH89C52X216k字节FLASH89C54X232k字节FLASH89C58X2128字节RAM89C51X2256字节RAM89C52X2/54X2/58X2布尔处理器全静态操作y 12时钟操作可选6个时钟通过软件或并行编程器y 存储器寻址范围64K字节ROM和64K字节RAMy 电源控制模式―时钟可停止和恢复―空闲模式―掉电模式y 两个工作频率范围6时钟模式时为0到20MHz12时钟模式时为0到33MHzy LQFP, PLCC或DIP封装y 扩展温度范围y 双数据指针y 3个加密位y 4个中断优先级y 6个中断源y 4个8位I/O口y 全双工增强型UART―帧数据错误检测―自动地址识别y 3个16位定时/计数器T0T1标准80C51和增加的T2捕获和比较y 可编程时钟输出y 异步端口复位y 低EMI (禁止ALE以及6时钟模式)y 掉电模式可通过外部中断唤醒订购信息P89C51X24K字节FLASH类型编号封装温度范围()P89C51X2BA PLCC44 0~+70P89C51X2BN DIP40 0~+70P89C51X2BBD LQFP44 0~+70P89C51X2FA PLCC44 -40~+85 P89C52X28K字节FLASH类型编号封装温度范围()P89C52X2BA PLCC44 0~+70P89C52X2BN DIP40 0~+70P89C52X2BBD LQFP44 0~+70P89C52X2FA PLCC44 -40~+85 P89C52X2FN DIP40 -40~+85 P89C52X2FBD LQFP44 -40~+85 P89C54X216K字节FLASH类型编号封装温度范围()P89C54X2BA PLCC44 0~+70P89C54X2BN DIP40 0~+70P89C54X2BBD LQFP44 0~+70P89C54X2FA PLCC44 -40~+85 P89C58X232K字节FLASH类型编号封装温度范围()P89C58X2BA PLCC44 0~+70P89C58X2BN DIP40 0~+70P89C58X2BBD LQFP44 0~+70P89C58X2FA PLCC44 -40~+85B=07040+85下表所示为操作模式电源电压以及最大外部时钟频率之间的关系操作模式电源电压最大时钟频率6-clock 5V10% 20MHz 12-clock 5V10% 33MHz框图1逻辑符号PLCC和CLCC封装及管脚功能DIP 封装及管脚功能 LQFP 封装及管脚功能管脚描述 管脚号名称 DIP LCC QFP 类型 名称和功能Vss 20 22 16I地 Vcc 40 44 38 I电源提供掉电空闲正常工作电压P0.0-0.739-32 43-36 37-30 I/O P0口 P0口是开漏双向口可以写为1使其状态为悬浮用作高阻输入P0也可以在访问外部程序存储器时作地址的低字节在访问外部数据存储器时作数据总线此时通过内部强上拉输出1P1.0-1.7 1-8 1 22-92 340-44 1-3I/O P1口 P1口是带内部上拉的双向I/O 口向P1口写入1时P1口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P1口会因为内部上拉而输出电流(见DC 电气特性)P1口第2功能T2(P1.0) 定时/计数器2的外部计数输入/时钟输出(见可编程输出)T2EX(P1.1)定时/计数器2重装载/捕捉/方向控制P2.0-2.7 21-28 24-31 18-25 I/O P2口 P2口是带内部上拉的双向I/O 口向P2口写入1时P2口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P2口会因为内部上拉而输出电流(见DC 电气特性)在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址(MOVX @DPTR)此时通过内部强上拉传送1当使用8位寻址方式(MOV@Ri)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容P3口P3口被内部上拉为高电平可用作输入口输入脚时口会因为内部上拉而输出电电气特性)串行输入口INT0(P3.2)INT1(P3.3)WR(P3.6)当晶振在运行中期高电平即可复位内部有扩散电阻连接到VssVcc输出脉冲锁存地在正常情况下ALE输出信号恒定为并可用作外部时钟或定时注意每次访问外部数据时一个ALE可以通过置位ALE只能在执行程序存储使能当执行外部程序存储器代码时个机器周期被激活两次在访问外部数据存储器时访问内部程序存储器时外部寻址使能在访问整个外部程序存储器时如果EA将执行内部程序除非程序计数器包含大于片内FLASH的地址该引脚在(Vpp)如果保密位已编程在复位时由内部锁存反相振荡放大器输入和内部时钟发生电路输入反相振荡放大器输出注: 为了避免上电时的”latch-up”效应任意管脚Vpp除外上的电压任何时候都不能高于Vcc+0.5V低于Vss-0.5V表1 P89C51X2/52X2/54X2/58X2 特殊功能寄存器双字节指针高字节*号的#80C51修改而来或新增加的表示保留位1复位值由复位源确定存储器的内容存储单先进的沟道氧化工艺和低内部电场的结合使擦除和编程操作特性y 可编程加密位y 每字节最少10000次擦除/编程周期 y 数据最少可保存10年y 从一般销售商处可获得编程支持振荡器特性XTAL1和XTAL2为输入和输出可分别作为一个反相放大器的输入和输出此管脚可配置为使用内部振荡器要使用外部时钟源驱动器件时XTAL2可以不连接而由XTAL1驱动外部时钟信号无占空比的要求因为时钟通过触发器二分频输入到内部时钟电路但高低电平的最长和最短时间必须符合手册的规定时钟控制寄存器CKCON该器件提供通过一个SFR 位CKCON 的X2位和一个Flash 位保密块中的FX2控制选择6时钟/12时钟模式当X2置0时12时钟模式有效该位置1时系统切换到6时钟模式由于该功能是通过SFR 位实现的因此可以随时访问并修改需要注意的是将X2从0改为1将导致用户代码以两倍的速度执行因为所有的系统时间间隔都变成原来的1/2从6时钟模式变为12时钟模式会将运行代码的速度降低为1/2Flash 时钟控制位FX2可通过并行编程器编程取代X2位实现6时钟模式见表2表2FX2时钟模式位只能通过并行编程器设置X2位CKCON.0CPU 时钟模式擦除 0 12时钟模式默认擦除 1 6时钟模式 编程 X 6时钟模式可编程时钟输出可从P1.0编程输出50%占空比的时钟信号P1.0除了作为常规I/O 口外还有两个可选功能它可编程为1用于定时/计数器2的外部时钟输入2使用16MHz操作频率时12时钟模式下输出50%占空比的61Hz~4MHz时钟信号6时钟模式时为122Hz~8MHz要将定时/计数器2配置为时钟发生器C/T2(T2CON.1)必须清零而T2MOD中的T20E位必须置位要启动定时器2还必须将TR2(T2CON.2)置位时钟输出频率由振荡器频率和定时器2捕获寄存器的重新装入值确定公式如下振荡器频率n65536RCAP2H,RCAP2L此处n = 166时钟模式或3212时钟模式RCAP2H,RCAP2L RCAP2H和RCAP2L的内容作为一个16位无符号整数在时钟输出模式中定时器2的翻转将不会产生中断这和它作为波特率发生器时相似定时器2可同时作为波特率发生器和时钟发生器但需要注意的是波特率和时钟输出频率相同复位在振荡器工作时将RST脚保持至少两个机器周期高电平12时钟模式为24个振荡器周期6时钟模式为12振荡器周期可实现复位为了保证上电复位的可靠RST保持高电平的时间至少为振荡器启动时间通常为几个毫秒再加上两个机器周期复位后振荡器以12时钟模式运行当已通过并行编程器设置为6时钟模式时除外低功耗模式时钟停止模式静态设计使时钟频率可以降至0MHz(停止)当振荡器停振时RAM和SFR的值保持不变该模式允许逐步应用并可将时钟频率降至任意值以实现系统功耗的降低如要实现最低功耗则建议使用掉电模式空闲模式空闲模式见表3中CPU进入睡眠状态但片内的外围电路仍然保持工作状态正常操作模式的最后一条指令执行进入空闲模式空闲模式下CPU内容片内RAM和所有SFR保持原来的值任何被使能的中断此时程序从中断服务程序处恢复并继续执行或硬件复位与上电复位使用相同的方式启动处理器均可终止空闲模式掉电模式为了进一步降低功耗通过软件可实现掉电模式(见表3)该模式中振荡器停振并且在最后一条指令执行进入掉电模式降到2.0V时片内RAM和SFR保持原值在退出掉电模式之前Vcc必须升至规定的最低操作电压硬件复位或外部中断均可结束掉电模式硬件复位使所有的SFR重新设置但不改变片内RAM的值外部中断允许SFR和片内RAM都保持原值WUPD AUXR1.3从掉电唤醒使能或禁止通过外部中断唤醒掉电WUPD0禁止WUPD=1使能要正确退出掉电模式在Vcc恢复到正常操作电压范围之后复位或外部中断开始执行并且要保持足够长的时间 ( 通常小于10ms )以使振荡器重新启动并稳定下来使用外部中断退出掉电模式时INT0和INT1必须使能且配置为电平触发将管脚电平拉低使振荡器重新启动退出掉电模式后将管脚恢复为高电平一旦中断被响应RETI之后所执行的是进入掉电模式指令的后一条指令表3 空闲模式和掉电模式时外部管脚的状态器件在内部复位之前从停止处恢复程序正常运行时间为这段时间内片内硬件禁止对内部RAM但对当Idle模式被复位所中为了消除可能产生的误写操作应用模式指令后的指令不应执行写I/O口或写外部存储器操作进入件将ALE保持低电平模式时口处于悬浮状态持工作状态器件处于该模式时可用仿真器或测试CPU驱动电路执行正常复位时恢复正常操作定时器0和1的操作定时器0和1定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择这两个定时/计数器有4种操作模式通过TMOD的M1和M0选择两个定时/计数器的模式01和2都相同模式3不同如下所述模式0将定时器设置成模式0时类似8048定时器即8 位计数器带32分频的预分频器图2所示为模式0工作方式此模式下定时器寄存器配置为13位寄存器当计数从全为1翻转为全为0时定时器中断标志位TFn置位当TRn=1同时GATE=0或INTn=1时定时器计数置位GATE时允许由外部输入INTn 控制定时器这样可实现脉宽测量TRn为TCON寄存器内的控制位图3该13位寄存器包含THn全部8个位及TLn的低5位TLn的高3位不定可将其忽略置位运行标志TRn不能清零此寄存器模式0的操作对于定时器0及定时器1都是相同的两个不同的GATE位TMOD.7和TMOD.3分别分配给定时器0及定时器1模式1模式1除了使用了THn及TLn全部16位外其它与模式0相同模式2此模式下定时器寄存器作为可自动重装的8位计数器TLn如图4所示TLn的溢出不仅置位TFn而且将THn内容重新装入TLn THn内容由软件预置重装时THn内容不变模式2的操作对于定时器0及定时器1是相同的模式3在模式3中定时器1停止计数效果与将TR1设置为0相同此模式下定时器0的TL0及TH0作为两个独立的8位计数器图5为模式3时的定时器0逻辑TL0C/T GATETR0TH0TF1此时TH0控制定时器中断可用于需要一个额外的位定时器的场合定时器时80C513个定时计数器当定时器时定时器可通过开关进入它仍可用作串行端口的波特或者应用于任何不要求中断的场合复位值2 1 0 置位时只有在计数器清零时计数器用作定时器或计数器清零则用作定时器从内部系统时钟输入置位用作计数器从脚输入定时器模式选择定时器模式无预分频器当溢出时将计数器控制位控制1控制位控制图1 定时/计数器0/1模式控制寄存器TMOD图2 定时/计数器0/1的模式013位定时/计数器InterruptTCON 地址88H 7 6 5 4 3 2 1 0 可位寻址 复位值00HTF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0位符号功能TCON.7 TF1定时器1溢出标志定时/计数器溢出时由硬件置位中断处理时由硬件清除或用软件清除TCON.6 TR1定时器1运行控制位由软件置位/清零将定时/计数器打开/关闭TCON.5 TF0定时器0溢出标志定时/计数器溢出时由硬件置位中断处理时由硬件清除或用软件清除 TCON.4 TR0定时器0运行控制位由软件置位/清零将定时/计数器打开/关闭 TCON.3 IE1 中断1边沿触发标志当检测到外部中断1边沿时由硬件置位中断处理时清零TCON.2 IT1 中断1触发类型控制位由软件置位/清零以选择外部中断以下降沿/低电平方式触发TCON.1 IE0 中断0边沿触发标志当检测到外部中断0边沿时由硬件置位中断处理时清零TCON.0 IT0 中断0触发类型控制位由软件置位/清零以选择外部中断以下降沿/低电平方式触发图3 定时器/计数器控制寄存器TCON图4 定时/计数器0/1的模式28位自动重装Interrupt通过设置特殊功能寄存器位可将其作为定时见图6定时器有三种操作模式捕获递增或递减计数和波特率发生这三种模式由T2CON 中的位进行选择见表3捕获模式 通过EXEN2设置两个选项如果定时器16位由T2CON TF2溢出标志位该位可用于产生IE 中断使能位如果EXEN21与以上描述相同即外部输入时将定时器2TL2和的当前值各自捕获到RCAP2L EXF22溢出中断地址相同定时器中断服务程序通过查询来确定引起中断的事件捕获模式如图在该模式中TL2计数器仍以的负跳变或振荡频率的1/12或6时钟模式递增递减计数器位自动重装模式中2可通过C/T2配置为定时器计数的方向是由DCEN 递减计数使能位确定的DCEN 位于T2MOD 寄存器见图8中当DCEN 0时定时器2默认为向上计数当DCEN 1时定时器2可通过T2EX 确定递增或递减计数图9显示了当DCEN 0时定时器2自动递增计数在该模式中通过设置EXEN2位进行选择如果EXEN2定时器2递增计数到0FFFFH 并在溢出后将TF2置位然后将RCAP2L 和RCAP2H 中的16位值作为重新装载值装入定时器2RCAP2L 和RCAP2H 的值是通过软件预设的如果EXEN2116位重新装载可通过溢出或T2EX 从10的负跳变实现此负跳变同时将EXF2置位如果定时器2中断被使能则当TF2或EXF2置1时产生中断在图10中DCEN 1时定时器2可递增或递减计数此模式允许T2EX 控制计数的方向当T2EX 置1时定时器2递增计数计数到0FFFFH 后溢出并置位TF2还将产生中断如果中断被使能定时InterruptInterrupt器2的溢出将使RCAP2L 和RCAP2H 中的16位值作为重新装载值放入TL2和TH2当T2EX 置零时将使定时器2递减计数当TL2和TH2计数到等于RCAP2L 和RCAP2H 时定时器产生溢出定时器2溢出置位TF2并将0FFFFH 重新装入TL2和TH2当定时器2递增/递减产生溢出时外部标志位EXF2翻转如果需要可将EXF2位作为第17位在此模式中EXF2标志不会产生中断表4 定时器2工作方式图6 定时器/计数器2T2CON 控制寄存器溢出标志定时器溢出时置位必须由软件清除当TCLK 1时TF2将不会置位外部标志当EXEN21且的负跳变产生捕获或重装时置位定时器2中断使能时EXF21从中断向量处执行中断子程序EXF2位必须用软件清零在递增式DCEN 1中EXF2不会引起中断接收时钟标志RCLK 置位时定时器的溢出脉冲作为串行口模式模式的接收时钟RCLK 0时将定时器的溢出脉冲作为接收时钟发送时钟标志TCLK 置位时定时器和的发送时钟TCLK 0时将定时器的溢出脉冲作为发送时钟外部使能标志当其置位且定时器未作为串行口时钟时允的负跳变产生捕获或重装EXEN20时T2EX 的跳变对定时无效启动停止控制位置时启动定时器计数器选择定时器20内部定时器OSC/12或OSC/61外部事件计数器下降沿触发重装标志置位EXEN21T2EX 的负跳变产生捕获清零EXEN21时定时器2溢出或的负跳变都可使定时器自动重装RCLK 1TCLK 1时该位无效且定时器强制为溢出时自动重装图7 定时器2捕获模式保留将来之用2输出使能位定时器这些位在将来8051这种情况下以后用到复位时或非有效状态时而这些位为有效状态时它的值为1从保留位读到的值是不确定的图8 定时器2模式T2MOD 控制寄存器图9 定时器2自动重装模式DCEN=0EXEN 2T imer 2InterruptEXEN 2T IME R2图10 定时器2自动重装模式DCEN=1图11 定时器2波特率发生器模式波特率发生器模式寄存器T2CON 的位TCLK 和或RCLK 见表3允许从定时器1或定时器2获得串行口发送和接收的波特率当TCLK=0时定时器1作为串行口发送波特率发生器当TCLK=1时定时器2作为串行口发送波特率发生器RCLK 对串行口接收波特率有同样的作用通过这两位串行口能得到不同的接收和发送波特率 一个通过定时器1产生另一个通过定时器2产生图11所示为定时器2工作在波特率发生器模式与自动重装模式相似当TH2溢出时波特率发生器模式使定时器2寄存器重新装载来自寄存器RCAP2H 和RCAP2L 的16位的值寄存器RCAP2H 和RCAP2LR 的值由软件预置当工作于模式1和模式3时波特率由下面给出的定时器2溢出率所决定定时器2溢出速率16定时器可配置成定时或计数方式在许多应用上定时器被设置在定时方式C/T2*=0当定时器2作为定时器时它的操作不同于波特率发生器通常定时器2作为定时器它会在每个机器周期递增1/6或1/12振荡频率当定时器2作为波特率发生器时它会在每个状态周期递增例如1/2振荡频率这样波特率公式如下模式1和模式3的波特率=(UP C OUNTING R E LOADV ALUE)T2EX PINEXEN 2RXClock TXClockT imer 1OverflowNote availability of additional external interrupt.[65536n = 166或12时钟模式RCAP2H,RCAP2L)=RCAP2H 的内容为11所示定时器作为波特率发生器仅当寄存器RCLK 和或TCLK=1定作为波特率发生器才有效溢出并不置位TF2也不产生中断这样当定时器中断不必被禁止外部使能标志被置位在中1的转换会置位EXF2T2外部标志位但并不导致TH2重装载RCAP2H RCAP2L因当定时器用作波特率发生器时如果需要可用作附加的外部中断当计时器工作在波特率发生器模式下,则不要对TH2和进行读写每隔一个状态时间或定时器在此情况下对进行读写是不准确的可对RCAP2但不要进行写否则将导致自动重装错误当对定时器进行访问时应关闭定清零表列出了常用的波特率和如何用定时器得到这些波特率表由定时器外部时钟信号由波特率为2溢出率则波特率为[n[65536(RCAP2H,RCAP2L)]]此处 n = 166时钟模式或3212时钟模式f OSC = 振荡器频率 自动重装值可由下式得到RCAP2H,RCAP2L=65536-[fosc/(n波特率)]定时器/计数器2的设置除了波特率发生器模式T2CON 不包括TR2位的设置TR2位需单独设置来启动定时器表6表7给出了T2作为定时器和计数器的设置表6 T2作为定时器T2CON模式内部控制注1外部控制注216位重装00H 08H16位捕获01H 09H波特率发生器接收和发送相同波特率34H 36H只接收24H 26H只发送14H 16H 表7 T2作为计数器TMOD模式内部控制注1外部控制注216位02H 0AH自动重装03H 0BH注1.仅当定时器溢出时进行捕获和重装2.当定时/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获和重装定时器2用于波特率发生器模式除外全双工增强型UART标准UART操作串口为全双工结构表示可以同时发送和接收它还具有接收缓冲在第一个字节从寄存器读出之前可以开始接收第二个字节但是如果第二个字节接收完毕时第一个字节仍未读出其中一个字节将会丢失串口的发送和接收寄存器都是通过SFR SBUF进行访问的写入SBUF的数据装入发送寄存器对SBUF 的读操作是对物理上分开的接收寄存器进行访问串口有4种操作模式模式0串行数据通过RxD进出TxD输出时钟每次发送或接收以LSB最低位作首位每次8位波特率固定为MCU时钟频率的1/12模式1TxD脚发送RxD脚接收每次数据为10位一个起始位08个数据位LSB在前及一个停止位1当接收数据时停止位存于SCON的RB8内波特率可变由定时器1溢出速率决定模式2TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB在前一个可编程第9位数据及一个停止位1发送时第9个数据位SCON内TB8位可置为0或1例如将奇偶位PSW内P位移至TB8接收时第9位数据存入SCON的RB8位停止位忽略波特率可编程为MCU时钟频率的1/32或1/64由PCON内SMOD1位决定模式3TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB为首位一可编程的第9位数据及一个停止位1事实上模式3除了波特率外均与模式2相同其波特率可变并由定时器1溢出率决定在上述4种模式中发送过程是以任意一条以写SBUF作为目标寄存器的指令开始的模式0时接收通过设置R1=0及REN=1初始化其它模式下如若REN=1则通过起始位初始化多机通信UART模式2及模式3有一个专门的应用领域即多机通信在这些模式时接收为9位数据第9位存入RB8接下来为停止位UART可编程为接收到停止位时仅当RB8=1时串口中断才有效可通过置位SCON内SM2位来选择这一特性下述为多机系统利用这一特性的一种方法当主机需要发送一数据块给数台从机之一时首先发送出一个地址字节对目标从机进行识别地址与数据字节通过第9位数据区别其中地址字节的第9位为1而数据字节为0SM2=1时数据字节不会使各从机产生中断而地址字节则令所有从机中断这样各从机可以检查接收到的数据判断是否被寻址被寻址的从机即可清除SM2位以准备接收随后数据内容未被寻址的从机的SM2位仍为1则不理睬随后数据继续各自工作模式0时SM2无效模式1时SM2用于检验停止位是否有效在模式1时如果SM2=1那么只有接收到有效的结束位才可产生接收中断串行端口控制寄存器SCON串行端口控制及状态寄存器即SCON如图12所示其中包括模式选择位以及发送和接收的第9位数据TB8及RB8以及串行端口中断位TI及RISCON 地址98H7 6 5 4 3 2 1 0可位寻址复位值 00H SM0/FE SM1 SM2 REN TB8 RB8 TI RI 位符号功能SCON.7 FE 帧错误位当检测到一个无效停止位时通过UART接收器设置该位但它必须由软件清零要使该位有效PCON寄存器中的SMOD0位必须置1SCON.7 SM0 和SM1定义串口操作模式要使该位有效PCON寄存器中的SMOD0必须置0SCON.6 SM1 和SM0定义串行口操作模式见下表SM0 SM1 UART模式波特率0 0 0同步移位寄存器fosc/12或fosc/6取决于时钟模式0 1 18位UART 可变1 0 29位UART fosc /64或fosc /321 1 39位UART 可变SCON.5 SM2 在模式2和3中多处理机通信使能位在模式2或3中若SM2=1且接收到的第9位数据RB8是0则RI接收中断标志不会被激活在模式1中若SM2=1且没有接收到有效的停止位则RI不会被激活在模式0中SM2必须是0SCON.4 REN 允许接收位由软件置位或清除REN=1时允许接收REN=0时禁止接收SCON.3 TB8 模式2和3中发送的第9位数据可以按需要由软件置位或清除SCON.2 RB8 模式2和3中已接收的第9位数据在模式1中或sm2=0RB8是已接收的停止位在模式0中RB8未用SCON.1 TI 发送中断标志模式0中在发送完第8位数据时由硬件置位其它模式中在发送停止位之初由硬件置位在任何模式中都必须由软件来清除TISCON. 0 RI 接收中断标志模式0中接收第8位结束时由硬件置位其它模式中在接收停止位的中间时刻由硬件置位在任何模式(SM2所述情况除外)必须由软件清除RI图12 串行控制寄存器SCON波特率操作模式0的波特率是固定的为fosc/12模式2的波特率是MCU 时钟/64或MCU 时钟/32取决于PCON 寄存器中的SMOD1位的值若SMOD1=0复位值波特率为MCU 时钟/64若SMOD1=1波特率为MCU时钟/32在80C51中模式1和模式3的波特率由定时器1的溢出速率决定使用定时器1作波特率发生器 当定时器1用作波特率发生器模式1和3中波特率由定时器1的溢出速率和SMOD1的值决定在此应用中定时器1不能用作中断定时器1可以工作在定时或计数方式和3种工作模式中任何一个在最典型应用中它用作定时器方式工作自动重装载模式TMOD 的高半字节为0010B 它的波特率值由下式给出可以定时器1的中断实现非常低的波特率将定时器配置为16位定时器TMOD 的高半字节为0001B并使用中断进行16位软件重装图13列出了几个常用的波特率以及如何从定时器1获得OS CSMOD图13 由定时器1产生的通用波特率UART 模式0串行数据由RxD 端出入TxD 输出同步移位时钟发送或接收的是8位数据低位在先其波特率固定为MCU 时钟的1/12图14是串行口模式0的功能方框简图及相关的时序图执行任何一条把SBUF 作为目的寄存器的指令时就开始发送S6P2时刻的写SBUF 信号将1装入发送移位寄存器的第9位并通知发送控制部分开始发送写SBUF 信号有效后一个完整的机器周期后SEND 端有效SEND 使能RxD P3.0端送出数据TxD P3.1输出移位时钟每个机器周期的S3S4及S5状态内移位时钟为低电平而S6S1及S2状态内为高在SEND 有效时每一机器周期的S6P2时刻发送移位寄存器的内容右移一位数据位向右移时左边添加零当数据字节最高位MSB 移到移位寄存器的输出端时其左边是装入1的第9位再左的内容均为0, 此时通知Tx 控制模块进行最后一位移位处理后禁止SEND 并置位T1, 所有这些步骤均在写入SBUF 后第10个机器周期的S1P1时进行的接收初始化条件是REN=1及R1=0下一机器周期的S6P2时RX 控制单元向接收移位寄存器写入1111 1110并在下一个时钟使RECEIVE 端有效RECEIVE 使能移位时钟转换P3.1功能移位时钟在每个机器周期的S3P1及S6P1跳变在RECEIVE 有效时每一机器周期的S6P2时刻接收移位寄存器内容向左移一位从右移位进来的值是该机器周期S5P2。

(完整)AT89C51单片机的概述

(完整)AT89C51单片机的概述

AT89C51单片机的概述(1)AT89C51单片机的结构AT89C51单片机是美国Atmel公司生产低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(EPROM)和128 bytes的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存取技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash 存储单元,功能强大[3]。

AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。

上图为AT89C51单片机的基本组成功能方块图.由图可见,在这一块芯片上,集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器、串行口等,各部分通过内部总线相连。

下面介绍几个主要部分。

外时钟源外部事件计数外中断控制并行口串行通信AT89C51 功能方块图(2)AT89C51的管脚说明ATMEL公司的AT89C51是一种高效微控制器.采用40引脚双列直插封装形式。

AT89C51单片机是高性能单片机,因为受引脚数目的限制,所以有不少引脚具有第二功能。

VCC:供电电压.GND:接地.P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FLASH编程时,P0 口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故.在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。

单片机89C51精确延时

单片机89C51精确延时

单片机89C51精确延时高手从菜鸟忽略作起之(六)一,晶振与周期:89C51晶振频率约为12MHZ。

在此基础上,计论几个与单片机相关的周期概念:时钟周期,状态周期,机器周期,指令周期。

晶振12MHZ,表示1US振动12次,此基础上计算各周期长度。

时钟周期(W sz):Wsz=1/12=0.083us状态周期(W zt) Wzt=2*Wsz=0.167us机器周期(W jq): Wjq=6*Wzt=1us指令周期(W zl): W zl=n*Wjq(n=1,2,4)二,指令周期汇编指令有单周期指令,双周期指令,四周期指令。

指令时长分别是1US,2US,4US.指令的周期可以查询绘编指令获得,用下面方法进行记忆。

1.四周期指令:MUL,DIV2.双周期指令:与SP,PC相关(见汇编指令周期表)3.单周期指令:其他(见汇编指令周期表)三,单片机时间换算单位1.1秒(S)=1000毫秒(ms)2.1毫秒(ms)=1000微秒(us)3.1微秒(us)=1000纳秒(ns)单片机指令周期是以微秒(US)为基本单位。

四,单片机延时方式1.计时器延时方式:用C/T0,C/T1进行延时。

2.指令消耗延时方式:本篇单片机精确延时主要用第2种方式。

五,纳秒(ns)级延时:由于单片机指令同期是以微秒(US)为基本单位,因此,纳秒级延时,全部不用写延时。

六,微秒(US)级延时:1.单级循环模式:delay_us_1最小值:1+2+2+0+2+1+2+2=12(US),运行此模式最少需12US,因此12US以下,只能在代码中用指定数目的NOP来精确延时。

最大值:256*2+12-2=522(US),256最大循环次数,2是指令周期,12是模式耗时,-2是模式耗时中计1个时钟周期。

延时范围:值域F(X)[12,522],变量取值范围[0,255].函数关系:Y=F(x):y=2x+12,由输入参数得出延时时间。

反函数:Y=F(x):y=1/2x-6:由延时时间,计算输入参数。

AT89C51单片机说明

AT89C51单片机说明
此外,在将程序代码烧录至 8751 内部 EPROM、89C51 内部 FALSH 时,可以利用此引 脚来输入提供编程电压(8751 为 2lV、AT89C51 为 12V、8051 是由生产厂方一次性加工好)。
PSEN 此为"Program Store Enable"的缩写。访问外部程序存储器选通信号,低电平有效。在访
(60KB)
0FFFFH
1000H
外部 程序 存储器
0FFFH
EA=0 (4KB)
0000H
0FFFFH
外 部 数 据 存 储 器
(64KB)
0000H
图 2-2 只读程序存储器
图 2-3 外部数据存储器
直接地址
2FH 7F 7E 7D 7C 7B 7A 79 78 2EH 77 76 75 74 73 72 71 70 2DH 6F 6E 6D 6C 6B 6A 69 68 2CH 67 66 65 64 63 62 61 60 2BH 5F 5E 5D 5C 5B 5A 59 58 2AH 57 56 55 54 53 52 51 50 29H 4F 4E 4D 4C 4B 4A 49 48 28H 47 46 45 44 43 42 41 40 位寻址区 27H 3F 3E 3D 3B 3C 3A 39 38 26H 37 36 35 34 33 32 31 30 25H 2F 2E 2D 2B 2C 2A 29 28 24H 27 26 25 24 23 22 21 20 23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10 21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00 1FH

at 89c51单片机延迟代码

at 89c51单片机延迟代码

让我们来深入探讨一下89C51单片机延迟代码的概念。

单片机是一种集成了微处理器、存储器和输入/输出设备的微型计算机系统,被广泛应用于各种电子设备中。

而89C51单片机是一种由英特尔生产的经典单片机产品,具有稳定可靠、功能丰富等特点。

在实际应用中,由于一些特定的需求,我们常常需要编写延迟代码来实现一些功能或者满足一些特定的需求。

了解89C51单片机延迟代码的实现方法和原理,对于深入理解单片机编程和实际应用是非常重要的。

在89C51单片机中,延迟代码的实现有多种方法,下面我将结合实际经验和专业知识,为您详细介绍几种常见的实现方式,并进行深入解析。

1. 软件延迟:软件延迟是我们在89C51单片机编程中经常使用的一种延迟实现方式。

通过在程序中增加一些空指令或者循环操作,可以实现一定的延迟效果。

在实际应用中,我们可以根据实际需求和单片机的性能来确定循环次数,从而实现精确的延迟时间。

软件延迟的优点是实现简单,适用于各种场景,但缺点是占用了CPU资源,可能影响其他任务的执行效率。

2. 硬件延迟:除了软件延迟外,我们还可以利用89C51单片机的定时器和中断功能来实现硬件延迟。

通过设置定时器的计数值和工作模式,可以精确地控制延迟时间。

可以将延迟代码放入中断服务函数中,从而实现在延迟过程中可以执行其他任务的效果。

硬件延迟的优点是精确可控,不会占用CPU资源,适用于对延迟精度要求较高的场景。

3. 外部设备延迟:在实际应用中,我们还可以利用外部设备(如晶振、定时电路等)来实现延迟功能。

通过控制外部设备的频率和工作模式,可以实现各种精确的延迟时间。

外部设备延迟的优点是可以进一步提升延迟的精度和稳定性,适用于对延迟要求非常严格的场景。

在实际应用中,我们可以根据不同的需求和场景选择合适的延迟实现方式,从而兼顾延迟时间的精确性和系统的执行效率。

我们还可以结合多种延迟实现方式,根据实际情况进行灵活应用,从而更好地满足各种复杂的需求。

教学课件PPT 89C51单片机的C51程序设计

教学课件PPT 89C51单片机的C51程序设计

程序存储器(64K字节)
对应MOVC @DPTR访问
可位寻址片内数据存储器(16字节,128位) 允许位和字节混合访问
间接寻址片内数据存储器(256字节)
可访问片内全部RAM空间
分页寻址片外数据存储器(256字节)
对应MOVX @R0访问
4.2 C51程序设计基础
C51存储类型定义举例:
unsigned char data x,y,z; /*在内部RAM区定义了3个无符号字节型变量x,y,z*/
40M/80M/100M,而且还有很多是单周期的。
4.2 C51程序设计基础
4.2.1 C51变量/常量存储类型
C51存储类型 对应89C51单片机存储器空间
data
直接寻址片内数据存储器(128字节)
xdata
片外数据存储器(64K字节)
说明 访问速度快 对应MOVX @DPTR访问
code bdata idata pdata
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4
switch/case
5
while
6
do-while
7
for
8
函数
含义 赋值语句 条件语句 条件运算符 多分支语句 循环语句 循环语句 循环语句 模块化程序设计
4.2 C51程序设计基础
表4-6 常用语句
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4.3 C51程序举例
例4:把外部数据RAM中从地址2000H单元开始的100个有符号 数逐一取出,若为正数则放回原单元,若为负数则求补后放回。

89C51单片机C语言编程

89C51单片机C语言编程

3.1.2 C语言与 语言与89C51单片机 语言与 单片机
语言编写89C51单片机程序与用汇编语言编写 用C语言编写 语言编写 单片机程序与用汇编语言编写 89C51单片机程序不一样。 单片机程序不一样。 单片机程序不一样 用汇编语言编写89C51单片机程序必须要考虑其存 用汇编语言编写 单片机程序必须要考虑其存 储器结构, 储器结构,尤其必须考虑其片内数据存储器与特殊功能 寄存器的使用以及按实际地址处理端口数据。 寄存器的使用以及按实际地址处理端口数据。 语言编写的89C51单片机应用程序,则不用像 单片机应用程序, 用C语言编写的 语言编写的 单片机应用程序 汇编语言那样须具体组织、 汇编语言那样须具体组织、分配存储器资源和处理端口 数据, 语言编程中, 数据,但在C语言编程中,对数据类型与变量的定义, 语言编程中 对数据类型与变量的定义, 必须要与单片机的存储结构相关联, 必须要与单片机的存储结构相关联,否则编译器不能正 确地映射定位。 确地映射定位。
3.2 C51的数据类型 的数据类型
C51的数据类型分为基本数据类型和组合数据类 的数据类型分为基本数据类型和组合数据类 情况与标准C中的数据类型基本相同 中的数据类型基本相同, 型,情况与标准 中的数据类型基本相同,但其中 char型与 型与short型相同,float型与 型相同, 型与double型相同,另 型相同, 型与 型相同 型与 型相同 中还有专门针对于89C51单片机的特殊功能 外,C51中还有专门针对于 中还有专门针对于 单片机的特殊功能 寄存器型和位类型。 寄存器型和位类型。
3.1.3 C51程序结构 程序结构
C51的语法规定、程序结构及程序设计方法都与标 的语法规定、 的语法规定 准的C语言程序设计相同 语言程序设计相同, 程序与标准的C程序在 准的 语言程序设计相同,但C51程序与标准的 程序在 程序与标准的 以下几个方面不一样 几个方面不一样: 以下几个方面不一样: 中定义的库函数和标准C语言定义的库函数 (1)C51中定义的库函数和标准 语言定义的库函数 ) 中定义的库函数和标准 不同。标准的C语言定义的库函数是按通用微型计算机 不同。标准的 语言定义的库函数是按通用微型计算机 来定义的, 中的库函数是按89C51单片机相应情 来定义的,而C51中的库函数是按 中的库函数是按 单片机相应情 况来定义的; 况来定义的; 中的数据类型与标准C的数据类型也有一定 (2)C51中的数据类型与标准 的数据类型也有一定 ) 中的数据类型与标准 的区别,在C51中还增加了几种针对 的区别, 中还增加了几种针对89C51单片机特有 单片机特有 中还增加了几种针对 的数据类型; 的数据类型;

单片机89c51指令及操作汇总

单片机89c51指令及操作汇总

数据传送指令以累加器A为目的操作数的指令:MOV A,Rn (Rn)→AMOV A,direct (direct)→A MOV A,@Ri (Ri)→AMOV A,#data (#data)→A以寄存器Rn为目的操作数的指令:MOV Rn,A (A)→Rn MOV Rn,direct (direct)→Rn MOV Rn,#data (#data)→Rn 以直接地址为目的操作数的指令:MOV direct,A (A)→direct MOV direct,Rn (Rn)→direct MOV direct,direct(direct)→direct MOV direct,@Ri (Ri)→direct MOV direct,#data(#data)→direct 以间接地址为目的操作数的指令:MOV @Ri,A (A)→RiMOV @Ri,direct (direct)→Ri MOV @Ri,#data (data)→Ri16位数据传送指令:MOV DPTR,#data16dataH→DPH,dataL→DPL 查表指令:MOVC A,@A+DPTR 先pc+1→pc,后A+DPTR→A,一字节MOVC A,@A+PC 先pc+1→pc,后A+PC →A,一字节累加器A与片外RAM传送指令:MOVX A,@Ri Ri→A,且使=0MOVX A,@DPTR DPTR→A, 且使=0 MOVX @Ri,A A→Ri, 且使=0MOVX @DPTR,A A→DPTR,且使=0栈操作指令:入栈 PUSH direct 先SP+1→SP,后direct→SP出栈 POP direct先SP→direct,后SP-1→SP交换指令:1)字节交换指令XCH A,Rn A←→RnXCH A,direct .XCH A,@Ri .2)低半字节交换指令XCHD A,@Ri A0~3←→Ri0~33)累加器A中高4位和低4位交换SWAP A A0~3←→A4~7算术运算指令加法类指令ADD A ,# data A ←(A)+data ADD A ,directA ←(A)+(direct)ADD A ,Rn A ←(A)+(Rn)ADD A ,@Ri A ←(A)+((Ri))带进位加法指令ADDC A ,# dataA ←(A)+ data +(CY)ADDC A ,directA ←(A)+(direct)+(CY)ADDC A ,RnA ←(A)+(Rn)+(CY)ADDC A ,@RiA ←(A)+((Ri))+(CY)带借位减法指令SUBB A ,# dataA ←(A) - data -(CY)SUBB A ,directA ←(A) -(direct)-(CY)SUBB A ,RnA ←(A) –(Rn)-(CY)SUBB A ,@RiA ←(A) -((Ri))-(CY)乘法指令MUL AB BA←(A)×(B)除法指令DIV AB A←(A)÷(B)之商,B←(A)÷(B)之余数加1指令INC A A ←(A)+ 1 INC directdirect ←(direct)+ 1 INC Rn Rn ←(Rn)+ 1 INC @Ri Ri ←((Ri))+ 1 INC DPTR DPTR ←(DPTR)+ 1 减1指令DEC A A ←(A)-1DEC direct direct ←(direct)-1 DEC Rn Rn ←(Rn)-1DEC @Ri Ri ←((Ri))-1十进制调整指令DA A 调整累加器内容为BCD数逻辑操作指令累加器清零指令:CLR A A ←0 累加器按位取反指令:CPL A循环左移 RL A循环右移 RR A带进位循环左移 RLC A带进位循环右移 RRC A逻辑与运算指令ANL A ,#data A ←(A)∧data ANL A ,directA ←(A)∧(direct) ANL A ,Rn A ←(A)∧(Rn)ANL A ,@Ri A ←(A)∧((Ri)) ANL direct ,Adirect ←(direct)∧(A) ANL direct ,#datadirect ←(direct)∧data逻辑或运算指令ORL A ,#data A ←(A)∨data ORL A ,directA ←(A) ∨(direct) ORL A ,Rn A ←(A) ∨(Rn) ORL A ,@Ri A ←(A) ∨((Ri))ORL direct ,Adirect ←(direct) ∨(A) ORL direct ,#datadirect ←(direct) ∨data逻辑异或运算指令XRL A ,#data A ←(A)dataXRL A ,direct A ←(A) ( direct) XRL A ,Rn A ←(A) (Rn) XRL A ,@Ri A ←(A) ((Ri))XRL direct ,Adirect ←(direct) (A) XRL direct ,#datadirect ←(direct) data控制转移类指令长转移指令 LJMP addr16PC ← addr16 短转移指令AJMP addr11;PC←(PC)+2,PC10~0←addr11,PC15~11不变相对转移指令SJMP rel ;PC ←(PC) + 2,PC ←(PC) + rel间接转移指令JMP @A+DPTR ; PC ←(A)+(DPTR)空操作指令NOP PC+1→PC判零转移指令JZ rel;PC+2→PC当A全为0时,PC=PC+rel,当A不为全0时,程序顺序执行。

AT89C51单片机的基本结构和工作原理

AT89C51单片机的基本结构和工作原理

A T89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:1.单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和(1)运算器运算器主要用来实现算术、逻辑运算和位操作。

其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。

ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。

算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。

暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。

ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。

累加器是CPU使用最频繁的一个寄存器。

ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。

单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。

B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。

运算结果存于AB寄存器中。

(2)控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。

单片机实用教程_8 89C51单片机并行输入输出

单片机实用教程_8 89C51单片机并行输入输出

P3 口的第二功能
口线 P3.0 P3.1 信号 RXD TXD 功 能 串行口数据输入(接收数据) 串行口数据输出(发3.5
P3.6 P3.7
INT0 INT1 T0 T1
WR RD
外部中断0输入 外部中断1输入 定时器0的外部输入(计数输入) 定时器1的外部输入(计数输入)
外部数据存储器写选通控制输出 外部数据存储器读选通输出控制
8.2 并行输入/输出端口P0、P1、P1和P3 8.2.1 P0端口 ⑴ P0口的结构: P0口有8位, 每一位由一个输出锁存器、两个三态 输入缓冲器和输出驱动电路及控制电路组成。
⑵ P0口作通用的I/O口使用

P0口是漏极开路的8位准双向I/O口. P0口为特殊功能寄存器, 既可以用直接寻址方式对P0口进行字节操作, 也可以按按位寻址方式,进行位操作。
P2端口及其各位的地址
位地址/位定义 A5H P2.5 A4H P2.4 A3H P2.3 A2H P2.2 A1H P2.1 LSB A0H P2.0 字节地址 A0H
P2口作输出时,直接用传送指令进行操作。 例如: MOV P2 ,A P2口作输入时, 要先写“1”, 然后读入(准双向口)。 例如: MOV P2 ,#0FFH MOV A ,P2
表8.1 P0端口及其各位的地址
SFR MSB 位地址/位定义 LSB 字节地址
P0
87H
P0.7
86H
P0.6
85H
P0.5
84H
P0.4
83H
P0.3
82H
P0.2
81H
P0.1
80H
P0.0
80H
P0口作输出时,直接用传送指令进行操作。 例如: MOV P0 ,A P0口作输入时,要先写“1”,然后读入(准双向口)。 例如: MOV P0 ,#0FFH MOV A ,P0

89C51单片机简介

89C51单片机简介

89C51单片机简介1 89C51单片机简介 (1)2 时序 (2)3引脚及其功能 (2)4输入/输出(I/O)引脚P0口、P1口、P2口及P3口 (4)1 89C51单片机简介目前,89C51单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。

89C51是Intel公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。

每一个单片机包括:一个8位的微型处理器CPU;一个256K的片内数据存储器RAM;片内程序存储器ROM;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O 口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。

最高允许振荡频率是12MHZ。

以上各个部分通过内部总线相连接。

下面简单介绍下其各个部分的功能。

中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令,它是由8位算术/逻辑运算部件(简称ALu)、定时/控制部件,若干寄存器A、B、B5w、5P以及16位程序计数器(Pc)和数据指针寄存器(DM)等主要部件组成。

算术逻辑单元的硬件结构与典型微型机相似。

它具有对8位信息进行+、-、x、/ 四则运算和逻辑与、或、异或、取反、清“0”等运算,并具有判跳、转移、数据传送等功能,此外还提供存放中间结果及常用数据寄存器。

控制器部件是由指令寄存器、程序计数器Pc、定时与控制电路等组成的。

指令寄存器中存放指令代码。

枷执行指令时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或I/O接口电路,完成指令功能。

程序计数器Pc 程序计数器Pc用来存放下一条将要执行的指令,共16位.可对以K字节的程序存储器直接寻址c指令执行结束后,Pc计数器自动增加,指向下一条要执行的指令地址。

单片机引脚说明(89C51为例)

单片机引脚说明(89C51为例)

T89C2051是精简版的51单片机,精简掉了P0口和P2口,只有20引脚,但其内部集成了一个很实用的模拟比较器,特别适合开发精简的51应用系统,毕竟很多时候我们开发简单的产品时用不了全部32个I/O口,用AT89C2051更合适,芯片体积更小,而且AT89C2051的工作电压最低为2.7V,因此可以用来开发两节5号电池供电的便携式产品。

本文以ATMEL公司生产的51系列家族的AT89S51和AT89C2051两种单片机来讲解,两种单片机是目前最常用的单片机,其中 AT89S51为标准51单片机,当然其功能比早期的51单片机更强大,支持ISP在系统编程技术,内置硬件看门狗。

一、AT89S51单片机引脚介绍AT89S51有PDIP、PLCC、TQFP三种封装方式,其中最常见的就是采用40Pin 封装的双列直接PDIP封装,外形结构下图。

芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见右图)左边那列引脚逆时针数起,依次为1、2、3、4。

40,其中芯片的1脚顶上有个凹点(见右图)。

在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。

1、主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线2、外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端3、控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

芯片实物图片芯片引脚功能4、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

STC_89C51单片机学习手册

STC_89C51单片机学习手册

S7通讯的编程步骤-----自由口通讯 S7-200 通讯的编程步骤---自由口通讯S7-200 自由口通讯是基于 RS485 通讯基础的半双工通讯, 因此, 发送和接收指令不能同时执行。

自由口通讯使用 SMB30(口 0)和 SMB130(口 1)来定义通讯口 的工作模式。

SMB30/SMB130 各位的定义如下:图 1:通讯口工作模式寄存器使用自有口通讯,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0) 必须分别为 1 和 0。

发送指令(XMT) 一、 发送指令(XMT) 使用 XMT 发送指令可以把存于缓冲区中的数据, 一次发送一个或1多个字节的数据,最多为 255 个。

发送完最后一个字符后还可以连接 到一个发送完中断(端口 0 为 9,端口 1 位 26,见下表) 。

图 2:中断事件表2发送缓冲区的格式如下表所示:图 3:发送缓冲区的格式 说明: T+0:发送信息的字节个数需要提前定义。

T+1~T+255:要发送的数据字节和 XMT 有关的寄存器:SMB4 的 SM4.5 和 SM4.6。

SM4.5=1 时,口 0 发送完毕;SM4.6=1 时,口 1 发送完毕。

由以上可以看出,有两种方法可以检测端口 0 或 1 的数据发送 状态:一种是利用中断,一种是利用寄存器 SMB4 的第 5 位(口 0) 和第 6 位(口 1) 。

接收指令(RCV) 二、 接收指令(RCV) 使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的 数据(最多 255 个) ,并存于数据缓冲区。

接收完最后一个字节后可 以连接到一个接收完中断(口 0 是 23,口 1 是 24,见图 2 所示) 。

接收缓冲区的格式如下表所示:3图 4:接收缓冲区的格式 说明: 说明: T+0:接收字符计数,在接收到结束字符时自动清零 T+1:起始字符,在 SMB88(口 0)或 SMB188(口 1)中定义 T+2~T+244:接收到的数据字节 T+255:结束字符,在 SMB89(口 0)或 SMB189(口 1)中定义和接收有关的寄存器及定义如下表所示:45图 5:接收有关寄存器 说明: 说明: 1、SMB86/SMB186:接收终止状态信息寄存器,含有接收终止原因的信息; 2、SMB88/SMB188:信息起始位字节(如发送的信息有起始位,将把此寄存 器的内容和接受信息的每一字节相比较来, 检测确认后续字节是否是信息。

第3章 89C51单片机 硬件结构和原理 89C51是Atmel公司在8051基础上发展的8位单片机。介绍它的硬件

第3章   89C51单片机        硬件结构和原理 89C51是Atmel公司在8051基础上发展的8位单片机。介绍它的硬件

INT0 外部中断0输入
INT1 外部中断1输入
T0 定时器0的外部输入(计数输入)
T1 定时器1的外部输入(计数输入)
WR 外部数据存储器写选通控制输出
RD 外部数据存储器读选通输出控制
4. 程序状态标志寄存器 PSW
D7
D6 D5 D4 D3 D2 D1 D0
CY AC F0 RS1 RS0 OV — P
MOVC A,@A+DPTR
MOVC A , @A+PC CPU读取片外ROM时,发出PSEN信号(程序存储允
许输出),作为读ROM的选通控制信号。
程序存储器中的保留单元
存储单元地址
保留用途
0000H—0002H 复位后初始化引导程序地址
0003H—000AH 外部中断0中断服务程序入口地址
000BH—0012H 定时器/计数器0溢出中断服务程序 入口地址
89C51单片机基本组成包括有:
一个8位的微处理器; 片内数据存储器RAM有128B,
21个特殊功能寄存器SFR; 片内程序存储器Flash ROM 有4KB;
可寻址片内外统一编址的64KB的ROM, 可寻址片外64KB的RAM; 4个8位并行I/O接口(P0—P3); 一个全双工通用异步串行接口UART; 两个16位的定时器/计数器; 五个中断源、两个优先级的中断控制系统;
R0 — R7
18H — 0FH
R0 — R7
10H — 17H
R0 — R7
18H — 1FH
R0 — R7
⑵ 位寻址区
片内RAM的 20H—2FH这16 个字节,可以 用位寻址方式 访问各位。
这128位的位地 址00H-7FH。
有专门的位操 作指令,采用位

单片机实用教程_5 89C51单片机汇编语言程序设计

单片机实用教程_5 89C51单片机汇编语言程序设计

5. DS 定义存储空间伪指令 格式: DS n 说明:从指定的地址开始,连续预留n个存储单元, 作为工作单元使用。n为常数, 例如: ORG 2000H DS 06H DB 31H,32H 汇编后,从2000H开始连续预留6个存储单元, 然后从2006H开始按DB命令给存储单元赋值, 即:(2006H)=31H,(2007H)=32H。
3. DW 定义字(双字节)伪指令

格式: DW 16位数据项或项表 说明:从当前ROM地址开始,将16位数据项或项表 的内容依次存放到连续的存储单元中。 存放时,高字节先到低地址,低字节到其后的高地址中. DW常用于定义一个地址表。 例如: 汇编后:(1500H)=12H (1501H)=34H ORG 1500H (1502H)=00H DW 1234H,5FH,20H (1503H)=5FH (1504H)=00H (1505H)=20H

汇编程序: 把汇编语言源程序翻译成机器语言的目 标程序的工具软件。这个翻译过程称为汇编。 指令语句:源程序由指令语句组成。有两种类型:
.1.2 指令语句的组成

指令语句:由CPU指令组成,运行时由CPU执行。 每条指令对应CPU的一种特定操作。 汇编中,都要翻译成机器指令,生成对应的目标代码. 指令语句的格式如下:

⑵. 操作码


操作码是语句的核心,不可缺少。 用指令的助记符表示,说明该语句所执行的操作。
⑶. 操作数

表示该语句的操作中的数据或数据所在的地址。 双操作数指令有目的和源操作数,目的在前,逗号分开. 操作数字段表示的方法有多种:
寄存器名:寄存器A、B、 R0-R7、 SFR等。 存储器地址:片内为00H-7FH, 片外为0000H-FFFFH。 标号名:指令地址标号, 其值为该指令第1字节地址。 常数:常数可以用不同进制数或字符串表示。 表达式:汇编时会自动计算出表达式的值。 符号“$”:用于转移指令,表示该指令地址,即PC的值.

89c51单片机汇编语言

89c51单片机汇编语言

89c51单片机汇编语言1.引言概述部分的内容可以介绍本文的主题:89C51单片机汇编语言。

该部分可以简要说明单片机的概念和应用领域,并强调本文将重点介绍汇编语言在89C51单片机中的应用和相关原理。

以下是一个示例:引言1.1 概述单片机是一种嵌入式系统中常用的微型计算机。

它具备微处理器、存储器、输入输出接口等核心部件,并通过时钟信号实现对不同外设的控制。

作为一种低成本、体积小、功耗低的控制器,单片机广泛应用于各个领域,如家电、通信、工业自动化等。

本文着重介绍了89C51单片机的汇编语言编程。

汇编语言是一种低级语言,直接操作底层硬件,非常适合在单片机上进行程序开发。

本文旨在帮助读者理解汇编语言在89C51单片机中的运行原理和应用场景。

首先,将会对89C51单片机进行详细介绍,包括其基本特性、内部结构和常见的应用领域。

然后,将会对汇编语言的基础知识进行解析,包括指令系统、寄存器和内存的使用方法等相关内容。

通过本文的学习,读者将能够掌握如何使用汇编语言编写简单的单片机程序,并了解如何利用89C51单片机进行各种实际应用的开发。

本文的结论将对所学内容进行总结,并对未来的学习和应用提出展望。

通过深入学习和实践,读者可以不仅仅掌握汇编语言的编程技巧,还能够开发出更加复杂和实用的单片机应用。

希望本文能够对读者在89C51单片机的汇编语言编程方面提供有价值的指导和帮助。

让我们开始探索吧!1.2 文章结构文章结构部分主要介绍了本文的组织结构和各章节的内容概述。

正文中介绍了89C51单片机的基本知识,以及汇编语言的基础知识。

结论部分总结了本文的主要观点,并展望了相关领域的发展方向。

在本文中,我们首先会在引言部分进行概述,介绍本文的总体内容和目的。

其次,在正文部分的第2.1节中,我们将详细介绍89C51单片机的基本知识,包括其特点、应用领域以及与其他单片机的比较等内容。

在第2.2节中,我们将深入讲解汇编语言的基础,包括指令集、寄存器、数据传送等重要概念和操作方法。

(完整版)STC89C51

(完整版)STC89C51

3。

1 STC89C51单片机的介绍STC系列单片机是美国STC公司最新推出的一种新型51内核的单片机。

片内含有Flash程序存储器、SRAM、UART、SPI、A\D、PWM等模块。

该器件的基本功能与普通的51单片机完全兼容。

3.1.1主要功能、性能参数1。

内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟;2.工作频率范围:0~40MHZ,相当于普通8051的0~80MHZ;3.STC89C5xRC对应Flash空间:4KB\8KB\15KB;4。

内部存储器(RAM):512B;5。

定时器\计数器:3个16位;6。

通用异步通信口(UART)1个;7.中断源:8个;8.有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器\仿真器;9。

通用I\O口:32\36个;10.工作电压:3.8~5.5V;11。

外形封装:40脚PDIP、44脚PLCC和PQFP等3。

1。

2 89C51单片机的引脚功能说明(1)VCC:电源电压(2)GND:地(3) P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时可作为高阻抗输入端用.在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复位,在访问期间激活内部上拉电阻。

(4)P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTE 逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL).与AT89C51不同之处是,P1.0和P1。

1还可分别作为定时/计数器2的外部计数输入(P 1.0/T2)和输入(P 1。

1/T2EX ),参见表4—1。

Flash编程和程序校验期间,P1接收低8位地址。

89C51单片机的组成与特点

89C51单片机的组成与特点
过位操作指令对位地址空间进行操作。位地址空间主要分布在部分内部数据 存储器和特殊功能寄存器中。在数据存储器中,位地址空间有20H~2FH, 特殊功能寄存器有寄存器B、累加器Acc、状态标志寄存器PSW、中断优先 存储器IP、中断允许寄存器IE、串行口控制寄存器SCON、定时器控制寄存 器TCON和T2CON以及4个并行输入输出口P0、P1、P2和P3。
80C51中,设有6个中断源,4优先级别;到了P89C51Rx2中 ,成为7个中断源,4优先级别。
为了降低功耗,在MCS-51单片机中,对CPU设置了休闲 工作模式和降低工作电压模式。在80C51及以后的单片机中, 采用了低电压、6/12clock机器周期和动态加速CPU技术,增 加了一种零频/降频工作模式,振荡器频率为0~33MHz。所 谓零频/降频模式是把CPU的时钟频率分级下降,直至为0,在 保持特殊功能寄存器不变的情况下降低功耗。
(7) 可编程计数器阵列PCA 在Philips的P89C51Rx2单片机中设置有可编程计数器阵列PCA,
由五个可编程计数器模块组成。各模块都可以单独编程,选择不同的工 作模式;主要有捕捉模式、软件定时器模式、高速输出模式、脉宽调制 (PWM)模式和看门狗模式。为了简化电路,五个模块共用一套定时器 /计数器系统,比较/捕捉器分别设置。相关的特殊功能寄存器有 CMOD和CCON,用来设置工作方式和进行相应的控制。
(2) 存储器 存储器分为程序存储器和数据存储器。早期MCS-51采用EPROM作
为程序存储器,从80C51开始使用快闪FLASH存储器,容量为4KB至 64KB,可支持系统中烧录程序(ISP)和在应用中烧录程序(IAP)。数据存 储器采用RAM,容量较小,一般为256,其中高位地址(80H~FFH)与 特殊功能寄存器(SFR)重叠。为了扩大内部RAM的容量,在89C51之后 新增片内RAM(即ERAM)256B/768B,在Philips的P89C51Rx2中新 增片内RAM64KB。外部程序/数据存储器均可扩展到64KB。为提高外 部数据的访问速度,在80C51之后采用了双数据地址寄存器DPTR技术 ,即有两个数据指针。

89C51中文手册

89C51中文手册

概述该系列单片机是采用高性能的静态80C51设计由先进CMOS工艺制造并带有非易失性Flash程序存储器全部支持12时钟和6时钟操作P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM32条I/O口线3个16位定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至0可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结CPU但RAM定时器串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复选型表特性特性y 80C51核心处理单元4k字节FLASH89C51X28k字节FLASH89C52X216k字节FLASH89C54X232k字节FLASH89C58X2128字节RAM89C51X2256字节RAM89C52X2/54X2/58X2布尔处理器全静态操作y 12时钟操作可选6个时钟通过软件或并行编程器y 存储器寻址范围64K字节ROM和64K字节RAMy 电源控制模式―时钟可停止和恢复―空闲模式―掉电模式y 两个工作频率范围6时钟模式时为0到20MHz12时钟模式时为0到33MHzy LQFP, PLCC或DIP封装y 扩展温度范围y 双数据指针y 3个加密位y 4个中断优先级y 6个中断源y 4个8位I/O口y 全双工增强型UART―帧数据错误检测―自动地址识别y 3个16位定时/计数器T0T1标准80C51和增加的T2捕获和比较y 可编程时钟输出y 异步端口复位y 低EMI (禁止ALE以及6时钟模式)y 掉电模式可通过外部中断唤醒订购信息P89C51X24K字节FLASH类型编号封装温度范围()P89C51X2BA PLCC44 0~+70P89C51X2BN DIP40 0~+70P89C51X2BBD LQFP44 0~+70P89C51X2FA PLCC44 -40~+85 P89C52X28K字节FLASH类型编号封装温度范围()P89C52X2BA PLCC44 0~+70P89C52X2BN DIP40 0~+70P89C52X2BBD LQFP44 0~+70P89C52X2FA PLCC44 -40~+85 P89C52X2FN DIP40 -40~+85 P89C52X2FBD LQFP44 -40~+85 P89C54X216K字节FLASH类型编号封装温度范围()P89C54X2BA PLCC44 0~+70P89C54X2BN DIP40 0~+70P89C54X2BBD LQFP44 0~+70P89C54X2FA PLCC44 -40~+85 P89C58X232K字节FLASH类型编号封装温度范围()P89C58X2BA PLCC44 0~+70P89C58X2BN DIP40 0~+70P89C58X2BBD LQFP44 0~+70P89C58X2FA PLCC44 -40~+85B=07040+85下表所示为操作模式电源电压以及最大外部时钟频率之间的关系操作模式电源电压最大时钟频率6-clock 5V10% 20MHz 12-clock 5V10% 33MHz框图1逻辑符号PLCC和CLCC封装及管脚功能DIP 封装及管脚功能 LQFP 封装及管脚功能管脚描述 管脚号名称 DIP LCC QFP 类型 名称和功能Vss 20 22 16I地 Vcc 40 44 38 I电源提供掉电空闲正常工作电压P0.0-0.739-32 43-36 37-30 I/O P0口 P0口是开漏双向口可以写为1使其状态为悬浮用作高阻输入P0也可以在访问外部程序存储器时作地址的低字节在访问外部数据存储器时作数据总线此时通过内部强上拉输出1P1.0-1.7 1-8 1 22-92 340-44 1-3I/O P1口 P1口是带内部上拉的双向I/O 口向P1口写入1时P1口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P1口会因为内部上拉而输出电流(见DC 电气特性)P1口第2功能T2(P1.0) 定时/计数器2的外部计数输入/时钟输出(见可编程输出)T2EX(P1.1)定时/计数器2重装载/捕捉/方向控制P2.0-2.7 21-28 24-31 18-25 I/O P2口 P2口是带内部上拉的双向I/O 口向P2口写入1时P2口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P2口会因为内部上拉而输出电流(见DC 电气特性)在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址(MOVX @DPTR)此时通过内部强上拉传送1当使用8位寻址方式(MOV@Ri)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容P3口P3口被内部上拉为高电平可用作输入口输入脚时口会因为内部上拉而输出电电气特性)串行输入口INT0(P3.2)INT1(P3.3)WR(P3.6)当晶振在运行中期高电平即可复位内部有扩散电阻连接到VssVcc输出脉冲锁存地在正常情况下ALE输出信号恒定为并可用作外部时钟或定时注意每次访问外部数据时一个ALE可以通过置位ALE只能在执行程序存储使能当执行外部程序存储器代码时个机器周期被激活两次在访问外部数据存储器时访问内部程序存储器时外部寻址使能在访问整个外部程序存储器时如果EA将执行内部程序除非程序计数器包含大于片内FLASH的地址该引脚在(Vpp)如果保密位已编程在复位时由内部锁存反相振荡放大器输入和内部时钟发生电路输入反相振荡放大器输出注: 为了避免上电时的”latch-up”效应任意管脚Vpp除外上的电压任何时候都不能高于Vcc+0.5V低于Vss-0.5V表1 P89C51X2/52X2/54X2/58X2 特殊功能寄存器双字节指针高字节*号的#80C51修改而来或新增加的表示保留位1复位值由复位源确定存储器的内容存储单先进的沟道氧化工艺和低内部电场的结合使擦除和编程操作特性y 可编程加密位y 每字节最少10000次擦除/编程周期 y 数据最少可保存10年y 从一般销售商处可获得编程支持振荡器特性XTAL1和XTAL2为输入和输出可分别作为一个反相放大器的输入和输出此管脚可配置为使用内部振荡器要使用外部时钟源驱动器件时XTAL2可以不连接而由XTAL1驱动外部时钟信号无占空比的要求因为时钟通过触发器二分频输入到内部时钟电路但高低电平的最长和最短时间必须符合手册的规定时钟控制寄存器CKCON该器件提供通过一个SFR 位CKCON 的X2位和一个Flash 位保密块中的FX2控制选择6时钟/12时钟模式当X2置0时12时钟模式有效该位置1时系统切换到6时钟模式由于该功能是通过SFR 位实现的因此可以随时访问并修改需要注意的是将X2从0改为1将导致用户代码以两倍的速度执行因为所有的系统时间间隔都变成原来的1/2从6时钟模式变为12时钟模式会将运行代码的速度降低为1/2Flash 时钟控制位FX2可通过并行编程器编程取代X2位实现6时钟模式见表2表2FX2时钟模式位只能通过并行编程器设置X2位CKCON.0CPU 时钟模式擦除 0 12时钟模式默认擦除 1 6时钟模式 编程 X 6时钟模式可编程时钟输出可从P1.0编程输出50%占空比的时钟信号P1.0除了作为常规I/O 口外还有两个可选功能它可编程为1用于定时/计数器2的外部时钟输入2使用16MHz操作频率时12时钟模式下输出50%占空比的61Hz~4MHz时钟信号6时钟模式时为122Hz~8MHz要将定时/计数器2配置为时钟发生器C/T2(T2CON.1)必须清零而T2MOD中的T20E位必须置位要启动定时器2还必须将TR2(T2CON.2)置位时钟输出频率由振荡器频率和定时器2捕获寄存器的重新装入值确定公式如下振荡器频率n65536RCAP2H,RCAP2L此处n = 166时钟模式或3212时钟模式RCAP2H,RCAP2L RCAP2H和RCAP2L的内容作为一个16位无符号整数在时钟输出模式中定时器2的翻转将不会产生中断这和它作为波特率发生器时相似定时器2可同时作为波特率发生器和时钟发生器但需要注意的是波特率和时钟输出频率相同复位在振荡器工作时将RST脚保持至少两个机器周期高电平12时钟模式为24个振荡器周期6时钟模式为12振荡器周期可实现复位为了保证上电复位的可靠RST保持高电平的时间至少为振荡器启动时间通常为几个毫秒再加上两个机器周期复位后振荡器以12时钟模式运行当已通过并行编程器设置为6时钟模式时除外低功耗模式时钟停止模式静态设计使时钟频率可以降至0MHz(停止)当振荡器停振时RAM和SFR的值保持不变该模式允许逐步应用并可将时钟频率降至任意值以实现系统功耗的降低如要实现最低功耗则建议使用掉电模式空闲模式空闲模式见表3中CPU进入睡眠状态但片内的外围电路仍然保持工作状态正常操作模式的最后一条指令执行进入空闲模式空闲模式下CPU内容片内RAM和所有SFR保持原来的值任何被使能的中断此时程序从中断服务程序处恢复并继续执行或硬件复位与上电复位使用相同的方式启动处理器均可终止空闲模式掉电模式为了进一步降低功耗通过软件可实现掉电模式(见表3)该模式中振荡器停振并且在最后一条指令执行进入掉电模式降到2.0V时片内RAM和SFR保持原值在退出掉电模式之前Vcc必须升至规定的最低操作电压硬件复位或外部中断均可结束掉电模式硬件复位使所有的SFR重新设置但不改变片内RAM的值外部中断允许SFR和片内RAM都保持原值WUPD AUXR1.3从掉电唤醒使能或禁止通过外部中断唤醒掉电WUPD0禁止WUPD=1使能要正确退出掉电模式在Vcc恢复到正常操作电压范围之后复位或外部中断开始执行并且要保持足够长的时间 ( 通常小于10ms )以使振荡器重新启动并稳定下来使用外部中断退出掉电模式时INT0和INT1必须使能且配置为电平触发将管脚电平拉低使振荡器重新启动退出掉电模式后将管脚恢复为高电平一旦中断被响应RETI之后所执行的是进入掉电模式指令的后一条指令表3 空闲模式和掉电模式时外部管脚的状态器件在内部复位之前从停止处恢复程序正常运行时间为这段时间内片内硬件禁止对内部RAM但对当Idle模式被复位所中为了消除可能产生的误写操作应用模式指令后的指令不应执行写I/O口或写外部存储器操作进入件将ALE保持低电平模式时口处于悬浮状态持工作状态器件处于该模式时可用仿真器或测试CPU驱动电路执行正常复位时恢复正常操作定时器0和1的操作定时器0和1定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择这两个定时/计数器有4种操作模式通过TMOD的M1和M0选择两个定时/计数器的模式01和2都相同模式3不同如下所述模式0将定时器设置成模式0时类似8048定时器即8 位计数器带32分频的预分频器图2所示为模式0工作方式此模式下定时器寄存器配置为13位寄存器当计数从全为1翻转为全为0时定时器中断标志位TFn置位当TRn=1同时GATE=0或INTn=1时定时器计数置位GATE时允许由外部输入INTn 控制定时器这样可实现脉宽测量TRn为TCON寄存器内的控制位图3该13位寄存器包含THn全部8个位及TLn的低5位TLn的高3位不定可将其忽略置位运行标志TRn不能清零此寄存器模式0的操作对于定时器0及定时器1都是相同的两个不同的GATE位TMOD.7和TMOD.3分别分配给定时器0及定时器1模式1模式1除了使用了THn及TLn全部16位外其它与模式0相同模式2此模式下定时器寄存器作为可自动重装的8位计数器TLn如图4所示TLn的溢出不仅置位TFn而且将THn内容重新装入TLn THn内容由软件预置重装时THn内容不变模式2的操作对于定时器0及定时器1是相同的模式3在模式3中定时器1停止计数效果与将TR1设置为0相同此模式下定时器0的TL0及TH0作为两个独立的8位计数器图5为模式3时的定时器0逻辑TL0C/T GATETR0TH0TF1此时TH0控制定时器中断可用于需要一个额外的位定时器的场合定时器时80C513个定时计数器当定时器时定时器可通过开关进入它仍可用作串行端口的波特或者应用于任何不要求中断的场合复位值2 1 0 置位时只有在计数器清零时计数器用作定时器或计数器清零则用作定时器从内部系统时钟输入置位用作计数器从脚输入定时器模式选择定时器模式无预分频器当溢出时将计数器控制位控制1控制位控制图1 定时/计数器0/1模式控制寄存器TMOD图2 定时/计数器0/1的模式013位定时/计数器InterruptTCON 地址88H 7 6 5 4 3 2 1 0 可位寻址 复位值00HTF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0位符号功能TCON.7 TF1定时器1溢出标志定时/计数器溢出时由硬件置位中断处理时由硬件清除或用软件清除TCON.6 TR1定时器1运行控制位由软件置位/清零将定时/计数器打开/关闭TCON.5 TF0定时器0溢出标志定时/计数器溢出时由硬件置位中断处理时由硬件清除或用软件清除TCON.4 TR0定时器0运行控制位由软件置位/清零将定时/计数器打开/关闭 TCON.3 IE1 中断1边沿触发标志当检测到外部中断1边沿时由硬件置位中断处理时清零TCON.2 IT1 中断1触发类型控制位由软件置位/清零以选择外部中断以下降沿/低电平方式触发TCON.1 IE0 中断0边沿触发标志当检测到外部中断0边沿时由硬件置位中断处理时清零TCON.0 IT0 中断0触发类型控制位由软件置位/清零以选择外部中断以下降沿/低电平方式触发图3 定时器/计数器控制寄存器TCON图4 定时/计数器0/1的模式28位自动重装Interrupt通过设置特殊功能寄存器位可将其作为定时见图6定时器有三种操作模式捕获递增或递减计数和波特率发生这三种模式由T2CON 中的位进行选择见表3捕获模式 通过EXEN2设置两个选项如果定时器16位由T2CON TF2溢出标志位该位可用于产生IE 中断使能位如果EXEN21与以上描述相同即外部输入时将定时器2TL2和的当前值各自捕获到RCAP2L EXF22溢出中断地址相同定时器中断服务程序通过查询来确定引起中断的事件捕获模式如图在该模式中TL2计数器仍以的负跳变或振荡频率的1/12或6时钟模式递增递减计数器位自动重装模式中2可通过C/T2配置为定时器计数的方向是由DCEN 递减计数使能位确定的DCEN 位于T2MOD 寄存器见图8中当DCEN 0时定时器2默认为向上计数当DCEN 1时定时器2可通过T2EX 确定递增或递减计数图9显示了当DCEN 0时定时器2自动递增计数在该模式中通过设置EXEN2位进行选择如果EXEN2定时器2递增计数到0FFFFH 并在溢出后将TF2置位然后将RCAP2L 和RCAP2H 中的16位值作为重新装载值装入定时器2RCAP2L 和RCAP2H 的值是通过软件预设的如果EXEN2116位重新装载可通过溢出或T2EX 从10的负跳变实现此负跳变同时将EXF2置位如果定时器2中断被使能则当TF2或EXF2置1时产生中断在图10中DCEN 1时定时器2可递增或递减计数此模式允许T2EX 控制计数的方向当T2EX 置1时定时器2递增计数计数到0FFFFH 后溢出并置位TF2还将产生中断如果中断被使能定时InterruptInterrupt器2的溢出将使RCAP2L 和RCAP2H 中的16位值作为重新装载值放入TL2和TH2当T2EX 置零时将使定时器2递减计数当TL2和TH2计数到等于RCAP2L 和RCAP2H 时定时器产生溢出定时器2溢出置位TF2并将0FFFFH 重新装入TL2和TH2当定时器2递增/递减产生溢出时外部标志位EXF2翻转如果需要可将EXF2位作为第17位在此模式中EXF2标志不会产生中断表4 定时器2工作方式图6 定时器/计数器2T2CON 控制寄存器溢出标志定时器溢出时置位必须由软件清除当TCLK 1时TF2将不会置位外部标志当EXEN21且的负跳变产生捕获或重装时置位定时器2中断使能时EXF21从中断向量处执行中断子程序EXF2位必须用软件清零在递增式DCEN 1中EXF2不会引起中断接收时钟标志RCLK 置位时定时器的溢出脉冲作为串行口模式模式的接收时钟RCLK 0时将定时器的溢出脉冲作为接收时钟发送时钟标志TCLK 置位时定时器和的发送时钟TCLK 0时将定时器的溢出脉冲作为发送时钟外部使能标志当其置位且定时器未作为串行口时钟时允的负跳变产生捕获或重装EXEN20时T2EX 的跳变对定时无效启动停止控制位置时启动定时器计数器选择定时器20内部定时器OSC/12或OSC/61外部事件计数器下降沿触发重装标志置位EXEN21T2EX 的负跳变产生捕获清零EXEN21时定时器2溢出或的负跳变都可使定时器自动重装RCLK 1TCLK 1时该位无效且定时器强制为溢出时自动重装图7 定时器2捕获模式保留将来之用2输出使能位定时器这些位在将来8051这种情况下以后用到复位时或非有效状态时而这些位为有效状态时它的值为1从保留位读到的值是不确定的图8 定时器2模式T2MOD 控制寄存器图9 定时器2自动重装模式DCEN=0EXEN 2T imer 2InterruptEXEN 2T IME R2图10 定时器2自动重装模式DCEN=1图11 定时器2波特率发生器模式波特率发生器模式寄存器T2CON 的位TCLK 和或RCLK 见表3允许从定时器1或定时器2获得串行口发送和接收的波特率当TCLK=0时定时器1作为串行口发送波特率发生器当TCLK=1时定时器2作为串行口发送波特率发生器RCLK 对串行口接收波特率有同样的作用通过这两位串行口能得到不同的接收和发送波特率 一个通过定时器1产生另一个通过定时器2产生图11所示为定时器2工作在波特率发生器模式与自动重装模式相似当TH2溢出时波特率发生器模式使定时器2寄存器重新装载来自寄存器RCAP2H 和RCAP2L 的16位的值寄存器RCAP2H 和RCAP2LR 的值由软件预置当工作于模式1和模式3时波特率由下面给出的定时器2溢出率所决定定时器2溢出速率16定时器可配置成定时或计数方式在许多应用上定时器被设置在定时方式C/T2*=0当定时器2作为定时器时它的操作不同于波特率发生器通常定时器2作为定时器它会在每个机器周期递增1/6或1/12振荡频率当定时器2作为波特率发生器时它会在每个状态周期递增例如1/2振荡频率这样波特率公式如下模式1和模式3的波特率=(UP C OUNTING R E LOADV ALUE)T2EX PINEXEN 2RXClock TXClockT imer 1OverflowNote availability of additional external interrupt.[65536n = 166或12时钟模式RCAP2H,RCAP2L)=RCAP2H 的内容为11所示定时器作为波特率发生器仅当寄存器RCLK 和或TCLK=1定作为波特率发生器才有效溢出并不置位TF2也不产生中断这样当定时器中断不必被禁止外部使能标志被置位在中1的转换会置位EXF2T2外部标志位但并不导致TH2重装载RCAP2H RCAP2L因当定时器用作波特率发生器时如果需要可用作附加的外部中断当计时器工作在波特率发生器模式下,则不要对TH2和进行读写每隔一个状态时间或定时器在此情况下对进行读写是不准确的可对RCAP2但不要进行写否则将导致自动重装错误当对定时器进行访问时应关闭定清零表列出了常用的波特率和如何用定时器得到这些波特率表由定时器外部时钟信号由波特率为2溢出率则波特率为[n[65536(RCAP2H,RCAP2L)]]此处 n = 166时钟模式或3212时钟模式f OSC = 振荡器频率 自动重装值可由下式得到RCAP2H,RCAP2L=65536-[fosc/(n波特率)]定时器/计数器2的设置除了波特率发生器模式T2CON 不包括TR2位的设置TR2位需单独设置来启动定时器表6表7给出了T2作为定时器和计数器的设置表6 T2作为定时器T2CON模式内部控制注1外部控制注216位重装00H 08H16位捕获01H 09H波特率发生器接收和发送相同波特率34H 36H只接收24H 26H只发送14H 16H 表7 T2作为计数器TMOD模式内部控制注1外部控制注216位02H 0AH自动重装03H 0BH注1.仅当定时器溢出时进行捕获和重装2.当定时/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获和重装定时器2用于波特率发生器模式除外全双工增强型UART标准UART操作串口为全双工结构表示可以同时发送和接收它还具有接收缓冲在第一个字节从寄存器读出之前可以开始接收第二个字节但是如果第二个字节接收完毕时第一个字节仍未读出其中一个字节将会丢失串口的发送和接收寄存器都是通过SFR SBUF进行访问的写入SBUF的数据装入发送寄存器对SBUF 的读操作是对物理上分开的接收寄存器进行访问串口有4种操作模式模式0串行数据通过RxD进出TxD输出时钟每次发送或接收以LSB最低位作首位每次8位波特率固定为MCU时钟频率的1/12模式1TxD脚发送RxD脚接收每次数据为10位一个起始位08个数据位LSB在前及一个停止位1当接收数据时停止位存于SCON的RB8内波特率可变由定时器1溢出速率决定模式2TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB在前一个可编程第9位数据及一个停止位1发送时第9个数据位SCON内TB8位可置为0或1例如将奇偶位PSW内P位移至TB8接收时第9位数据存入SCON的RB8位停止位忽略波特率可编程为MCU时钟频率的1/32或1/64由PCON内SMOD1位决定模式3TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB为首位一可编程的第9位数据及一个停止位1事实上模式3除了波特率外均与模式2相同其波特率可变并由定时器1溢出率决定在上述4种模式中发送过程是以任意一条以写SBUF作为目标寄存器的指令开始的模式0时接收通过设置R1=0及REN=1初始化其它模式下如若REN=1则通过起始位初始化多机通信UART模式2及模式3有一个专门的应用领域即多机通信在这些模式时接收为9位数据第9位存入RB8接下来为停止位UART可编程为接收到停止位时仅当RB8=1时串口中断才有效可通过置位SCON内SM2位来选择这一特性下述为多机系统利用这一特性的一种方法当主机需要发送一数据块给数台从机之一时首先发送出一个地址字节对目标从机进行识别地址与数据字节通过第9位数据区别其中地址字节的第9位为1而数据字节为0SM2=1时数据字节不会使各从机产生中断而地址字节则令所有从机中断这样各从机可以检查接收到的数据判断是否被寻址被寻址的从机即可清除SM2位以准备接收随后数据内容未被寻址的从机的SM2位仍为1则不理睬随后数据继续各自工作模式0时SM2无效模式1时SM2用于检验停止位是否有效在模式1时如果SM2=1那么只有接收到有效的结束位才可产生接收中断串行端口控制寄存器SCON串行端口控制及状态寄存器即SCON如图12所示其中包括模式选择位以及发送和接收的第9位数据TB8及RB8以及串行端口中断位TI及RISCON 地址98H7 6 5 4 3 2 1 0可位寻址复位值 00H SM0/FE SM1 SM2 REN TB8 RB8 TI RI 位符号功能SCON.7 FE 帧错误位当检测到一个无效停止位时通过UART接收器设置该位但它必须由软件清零要使该位有效PCON寄存器中的SMOD0位必须置1SCON.7 SM0 和SM1定义串口操作模式要使该位有效PCON寄存器中的SMOD0必须置0SCON.6 SM1 和SM0定义串行口操作模式见下表SM0 SM1 UART模式波特率0 0 0同步移位寄存器fosc/12或fosc/6取决于时钟模式0 1 18位UART 可变1 0 29位UART fosc /64或fosc /321 1 39位UART 可变SCON.5 SM2 在模式2和3中多处理机通信使能位在模式2或3中若SM2=1且接收到的第9位数据RB8是0则RI接收中断标志不会被激活在模式1中若SM2=1且没有接收到有效的停止位则RI不会被激活在模式0中SM2必须是0SCON.4 REN 允许接收位由软件置位或清除REN=1时允许接收REN=0时禁止接收SCON.3 TB8 模式2和3中发送的第9位数据可以按需要由软件置位或清除SCON.2 RB8 模式2和3中已接收的第9位数据在模式1中或sm2=0RB8是已接收的停止位在模式0中RB8未用SCON.1 TI 发送中断标志模式0中在发送完第8位数据时由硬件置位其它模式中在发送停止位之初由硬件置位在任何模式中都必须由软件来清除TISCON. 0 RI 接收中断标志模式0中接收第8位结束时由硬件置位其它模式中在接收停止位的中间时刻由硬件置位在任何模式(SM2所述情况除外)必须由软件清除RI图12 串行控制寄存器SCON波特率操作模式0的波特率是固定的为fosc/12模式2的波特率是MCU 时钟/64或MCU 时钟/32取决于PCON 寄存器中的SMOD1位的值若SMOD1=0复位值波特率为MCU 时钟/64若SMOD1=1波特率为MCU时钟/32在80C51中模式1和模式3的波特率由定时器1的溢出速率决定使用定时器1作波特率发生器 当定时器1用作波特率发生器模式1和3中波特率由定时器1的溢出速率和SMOD1的值决定在此应用中定时器1不能用作中断定时器1可以工作在定时或计数方式和3种工作模式中任何一个在最典型应用中它用作定时器方式工作自动重装载模式TMOD 的高半字节为0010B 它的波特率值由下式给出可以定时器1的中断实现非常低的波特率将定时器配置为16位定时器TMOD 的高半字节为0001B并使用中断进行16位软件重装图13列出了几个常用的波特率以及如何从定时器1获得OS C20 MHz X SMOD图13 由定时器1产生的通用波特率UART 模式0串行数据由RxD 端出入TxD 输出同步移位时钟发送或接收的是8位数据低位在先其波特率固定为MCU 时钟的1/12图14是串行口模式0的功能方框简图及相关的时序图执行任何一条把SBUF 作为目的寄存器的指令时就开始发送S6P2时刻的写SBUF 信号将1装入发送移位寄存器的第9位并通知发送控制部分开始发送写SBUF 信号有效后一个完整的机器周期后SEND 端有效SEND 使能RxD P3.0端送出数据TxD P3.1输出移位时钟每个机器周期的S3S4及S5状态内移位时钟为低电平而S6S1及S2状态内为高在SEND 有效时每一机器周期的S6P2时刻发送移位寄存器的内容右移一位数据位向右移时左边添加零当数据字节最高位MSB 移到移位寄存器的输出端时其左边是装入1的第9位再左的内容均为0, 此时通知Tx 控制模块进行最后一位移位处理后禁止SEND 并置位T1, 所有这些步骤均在写入SBUF 后第10个机器周期的S1P1时进行的接收初始化条件是REN=1及R1=0下一机器周期的S6P2时RX 控制单元向接收移位寄存器写入1111 1110并在下一个时钟使RECEIVE 端有效RECEIVE 使能移位时钟转换P3.1功能移位时钟在每个机器周期的S3P1及S6P1跳变在RECEIVE 有效时每一机器周期的S6P2时刻接收移位寄存器内容向左移一位从右移位进来的值是该机器周期S5P2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MOV @Ri, direct;
0101 011i direct
(direct)
(Ri)
MOV @Ri, #data ;
0111 011I data
#data
(Ri)
Back
(Ri)表示 Ri 中的内容为指定的 RAM 单 元。 MOV 指令在片内存储器的操作功能如 图 3-6 示。
图 3-6 传送指令在片内存储器的操作功能
例如:将片内RAM 65H单元内容47H送A,可执
行指令“MOV A,@R0”。其中R0内容为65H。 如图所示:
以指令中所指定 的R0内容(65H) ① 为指针
数据存储器
R0
65H
地址

② A 47H
将片内RAM 65H 单元内容47H送A
65H ┋
47H
BACK
5、变址寻址(基址寄存器+变址寄存器间接寻址)
@Ri
direct
Rn
#data
direct
将直接地址源 direct 所指出的片内存储单 元中内容传送到直接 地址目的 direct 所 指出的片内存储单元 中 将间接寻址 (Ri 为 R0 或 R1) 所得的片内RAM 单元内容传送到直接 地址 direct 所指出 的片内存储单元中 将立即数传送到直接 地址 direct 所指出 的片内存储单元中
如:(A)=78H,(R5)=47H,(70H)=F2H, 执行指令: MOV R5,A ;(A) R5, (R5)=78H MOV R5,70H ;(70H) R5, (R5)=F2H MOV R5,#A3H; A3H R5, (R5)=A3H 注意,在89C51指令系统中没有“MOV Rn”传送指令。
BACK
89C51指令系统可分为五大类
[1] [2] [3] [4] [5] 数据传送指令:28条 算术运算指令:24条 逻辑运算及移位指令:25条 控制转移指令:17条 位操作指令(布尔操作):17条
Back
§3.3.1 数据传送指令
1.以累加器A为目的操作数的指令 (4条,即4种寻址方式) 2.以寄存器Rn为目的操作数的指令(3条) 3.以直接地址为目的操作数的指令(5条) 4.以间接地址为目的操作数的指令(3条)
Back
MOV direct,direct; 1000 0101 源 direct 目的 direct
(源 direct) 目的 direct
MOV direct,@Ri;
1000 011i direct
((Ri))
direct
MOV direct,#data;
0111 0101 direct data
变址寻址:以某个寄存器的内容为基地址,
在这个基地址的基础上加上地址偏移量形成真 正的操作数地址。 89C51中采用DPTR或PC为变址寄存器,A的内 容为地址偏移量。 变址寻址只能访问程序存储器,访问范围为 64KB。
例如
BACK
例如:MOVC A,@A+DPTR;((A)+(DPTR))→A 如图所示
将 工 作 寄 存 器 Rn ( 即 R0~R7)内容传送到累加 器A中 将直接寻址所得的片内 RAM 单元内容或特殊功 能寄存器中的内容传送 到累加器 A 中
MOV A,direct;
1110 0101 direct
(direct)

Back
MOV A,@Ri;
1110 011i
((Ri))

MOV A,#data;
BACK
二、寻址方式的种类:
1、寄存器寻址 2、直接寻址 3、立即数寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
BACK
1、寄存器寻址 寄存器寻址:由指令指出寄存器组R0~R7
中的某一个或其他寄存器(A,B,DPTR等)的内 容作为操作数。
例如:MOV A,R0;(R0)→A MOV P1,A;(A)→P1口 ADD A,R0;(A)+(R0)→A
DPTR内容与A的内容之 和为程序存储器地址
ROM
DPTR
02F1H A
A 11H

+
0302H 1EH

1EH
程序存储器内容送A
BACK
6、相对寻址
相对寻址:是以当前的PC值加上指令中规定的偏移
量rel而形成实际的转移地址。
相对寻址只出现在相对转移指令中。 当前的PC值是指执行完相对指令后的PC值;相 对转移指令操作码所在地址称为源地址;转移 后的地址称为目的地址。 目的地址=源地址+相对转移指令字节数+rel rel为补码表示的有符号数。 例如:
Back
Rn,
3 、以直接地址为目的操作数的指令(5条)
汇编指令格式 MOV direct,A ;
机器码格式 1111 0101 direct
操作 (A)
direct
MOV direct,Rn;
111 1rrr direct
(Rn)
direct
注释 将累加器 A 中内容传 送到直接地址 direct 所指出的片内存储单 元中。 将工作寄存器 Rn(即 R0-R7 ) 中内 容传 送 到 直 接 地 址 direct 所指出的片内存储单 元中
BACK
2、直接寻址
直接寻址方式:在指令中直接给出操作数所在存储
单元的地址。指令中操作数部分是操作数所在地址。
直接寻址方式可访问片内RAM的128个单元以及所有 的SFR。对于SFR,既可以使用它们的地址,也可以 使用它们的名字。
例如:MOV A,3AH;(3A) →A
MOV A,P1;(P1口) →A 或: MOV A,90H; 90H是P1口的地址
BACK
7、位寻址
位寻址:采用位寻址方式的指令的操作数是8
位二进制数中的某一位,指令中给出的是位地 址。位地址在指令中用bit表示。 例如:CLR bit; 位地址的两种表示方法:直接使用位地址,如 D3H;直接用寄存器名字加位数,如PSW.3。 位寻址区域:片内RAM的20H-2FH的16个单元 中的128位;字节地址能被8整除的SFR。
BACK
3、立即数寻址
立即数寻址:指令操作码后面紧跟的是一字节
或两字节操作数,用“#”号表示,以区别直 接地址。 例如:
MOV A,3AH;(3AH)→A MOV A,#3AH;3AH→A MOV DPTR,#2000H;2000H→DPTR ;(DPH)=20H ;(DPL)=00H BACK
4、寄存器间接寻址
MOV MOV MOV MOV
A,#30H A, 30H A,@R1 A,R1
;(A)=30H ;(A)=11H ;(A)=11H ;(A)=30H
Back
2 、以寄存器Rn为目的操作数的指令(3条)
汇编指令格式 MOV Rn,A ; 机器码格式 1111 1rrr 操作 A Rn 注释 将累加器 A 中内容传 送到 工作寄存 器 Rn (即 R0-R7)中 将直接寻址所得的片 内 RAM 单元内容或特 殊功能寄存器中的内 容传送到工作寄存器 Rn(即 R0-R7)中 将立即数传送到工作 寄存器 Rn(即 R0-R7) 中
寄存器间接寻址:操作数的地址事先存放在某个寄
存器中,寄存器间接寻址是把指定寄存器的内容作为 地址,由该地址所指定的单元内容作为操作数。
89C51规定R0或R1为间接寻址寄存器,它可寻址内
部地址RAM低位的128B单元内容。还可采用DPTR作 为间接寻址寄存器,寻址外部数据存储器的64KB空间。
例如
BACK
分为机器语言、汇编语言和高级语言。
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
BACK
§3.1.2
操作码
指令格式
89C51汇编语言指令格式
[目的操作数][,源操作数][;注释]
汇编语言指令对应的二进制代码格式
0111 0100 data
#data

将间接寻址(Ri 为 R0 或 R1)所得的片内 RAM 单元内容或特殊功能积 存器中的内容传送到累 加器 A 中 将立即数传送到累加器 A中
例:设(30H)=11H (R1)=30H, 则,执行下列指令后A的内容为:
MOV MOV MOV MOV A,#30H A, 30H A,@R1 A,R1 ;(A)=30H ;(A)=11H ;(A)=11H ;(A)=30H
BACK
三、寻址空间及符号注释
1、寻址空间:见表3-2。 2、符号注释:
BACK
表3-2 操作数寻址方式和有关空间
寻址方式 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 程序存储器 ROM 片内 RAM 低 128B、特殊功能寄存器 工作寄存器 R0-R7、A、B、C、DPTR 片内 RAM 低 128B、片外 RAM 程序存储器(@A+PC,@A+DPTR) 程序存储器 256B 范围(PC+偏移量) 片内 RAM 的 20H-2FH 字节地址、部分 SFR 寻址空间
第三章 指令系统及程序设计举例 (10课时)
§3.1 §3.2 §3.3 §3.4 汇编语言 寻址方式 89C51指令系统(重点) 程序设计举例
Exit
§3.1
§3.1.1 §3.1.2
汇编语言
指令和程序设计语言 指令格式
BACK
§3.1.1 指令和程序设计语言
指令:是CPU根据人的意图来执行某种操作的命令。 程序设计语言:是实现人机交换信息的基本工具,
Back
相关文档
最新文档