1、单片机原理及应用(单片机原理及应用(2)51单片机并口及并口应用单片机并口及并口应用51单片机时序逻辑单片机时序逻辑XC866体系结构体系结构51单片机的并行接口单片机的并行接口51单片机具有单片机具有4组,每组组,每组8位,共位,共32位位并行接口,按并行接口,按“第二功能第二功能”不同,结构不同,结构也稍有不同。也稍有不同。P0口:并口口:并口/数据地址总线数据地址总线P1口:并行接口口:并行接口P2口:并口口:并口/地址高地址高8位位P3口:并口,每个引脚还有不同功能:口:并口,每个引脚还有不同功能:RXD;TXD;INT0;INT1;T0;T1;WR;RD标准并行接口电路框图标准并行接
2、口电路框图引脚锁存器RD数据WR方向 DIR(需要设定方向需要设定方向)三态门51单片机单片机P1口口引脚锁存器读寄存器数据WRQQVCCRT读引脚51单片机单片机P0口口引脚锁存器读寄存器数据WRQQVCCT多路器MUX地址/数据控制(H)读引脚51单片机单片机P2口口引脚锁存器RD数据WRQQVCCT多路器MUX地址/数据控制(H)R读引脚51单片机单片机P3口口引脚锁存器RD数据WRQQVCCT第二输出功能第二输入功能读引脚51单片机并口应用小结单片机并口应用小结并口基本功能:只要写并口基本功能:只要写“1”到锁存器,到锁存器,就可以读取引脚数据。就可以读取引脚数据。并口第二功能随指令变
3、化:并口第二功能随指令变化:1.使用使用MOVX/MOVC指令时,指令时,P0/P2口自动切换到口自动切换到“地址、数据地址、数据”方式方式2.P3口第二功能是口第二功能是“直通直通”的,可以直接输出:的,可以直接输出:WR、RD、TXD,直接输入:直接输入:INT0、INT1、T0、T1、RXD。由程序和电路直接相应由程序和电路直接相应(预先设定功能,采用预先设定功能,采用相应指令相应指令)并口应用举例并口应用举例VCCR2kPx.xOUTVCC220LED继电器单片机的时钟单片机的时钟单片机工作的时间基准单片机工作的时间基准1内部时钟方式内部时钟方式:内部一个高增益反相放大器与片外石:内部
4、一个高增益反相放大器与片外石英晶体或陶瓷谐振器构成了一个自激振荡器。英晶体或陶瓷谐振器构成了一个自激振荡器。晶体振荡器的振荡频率决定单片机的时钟频率。晶体振荡器的振荡频率决定单片机的时钟频率。2.外部时钟方式:外部时钟方式:外部振荡器输入时钟信号。外部振荡器输入时钟信号。由于此时的外接引脚上没有晶振信号输入,内部的时钟电由于此时的外接引脚上没有晶振信号输入,内部的时钟电路将停振路将停振89C51晶振电路晶振电路电容:电容:2033pf(常:常:22pf)晶体:晶体:1.216MHZ(常:常:12M)XTL1XTL2XTL1XTL2外接时钟不接1 1振荡周期:振荡周期:为单片机提供时钟信号的振荡
5、源的周期。为单片机提供时钟信号的振荡源的周期。2.2.状态周期:状态周期:是振荡源信号经二分频后形成的时钟脉冲是振荡源信号经二分频后形成的时钟脉冲信号。信号。3 3机器周期:机器周期:通常将完成一个基本操作所需的时间称通常将完成一个基本操作所需的时间称为机器周期。为机器周期。一个机器周期由一个机器周期由1212个振荡周期组成。个振荡周期组成。4 4指令周期:指令周期:是指是指CPUCPU执行一条指令所需要的时间。执行一条指令所需要的时间。一个一个指令周期通常含有指令周期通常含有1 14 4个机器周期。个机器周期。以机器周期为单位:以机器周期为单位:单周期单周期、双周期双周期和和四周期四周期指令
6、。指令。指令的运算速度和他的机器周期数有直接的关系指令的运算速度和他的机器周期数有直接的关系各种周期之间的关系P1P2S1振荡周期状态周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2MCSMCS5151指令系统中,按他们的长度可以分指令系统中,按他们的长度可以分为单字节指令、双字节指令和三字节指令。执为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的。有下面几种行这些指令需要的时间是不同的。有下面几种形式:形式:单字节指令单机器周期单字节指令单机
7、器周期 单字节指令双机器周期单字节指令双机器周期 双字节指令单机器周期双字节指令单机器周期 双字节指令双机器周期双字节指令双机器周期 三字节指令双机器周期三字节指令双机器周期 单字节指令四机器周期单字节指令四机器周期(如单字节的乘除如单字节的乘除法指令法指令)指令时序时序要点:一个指令周期一个指令周期1,2或者或者4个机器周期个机器周期一个机器周期一个机器周期12个晶振周期个晶振周期一个机器周期输出两个一个机器周期输出两个ALE脉冲脉冲即:即:ALE的输出频率的输出频率fALE(1/6)fOSC如果使用晶振频率为如果使用晶振频率为12MHZ,则则fALE 2MHZ,指令执行时间指令执行时间1,
8、2,4微秒。微秒。地址数据扩展电路A8A15A8A15A8A15A0A7A0A7A0A7扩展后的地址数据时序P0D0D7A0A7D0D7A0A7D0D7A0A7ALEP2373出74LS373是一种是一种“透明透明”的的8D锁存器,当锁存器,当LE引脚为引脚为“高高”时,输出输入。低电平时锁定数据。时,输出输入。低电平时锁定数据。Intel8282类似,但引脚不一样。类似,但引脚不一样。不能用其它锁存器代替。不能用其它锁存器代替。P1P2P1P2P1P2P1P2P1P2P1P2S1S2S3S4S5S61个机器周期P1P2S1OSC时钟ALEPSENP2P0A8A15A8A15A8A15指令A0
9、A7指令A0A7指令MCS-51访问外部程序存储器时序图MCS-51访问外部数据存储器时序图S1S2S3S4S5S6第1个机器周期S1S2S3S4S5S6第2个机器周期ALERDP2P0A15 A8A15 A8A15 A8A0A7指令地址数据A0A7PSEN复位电路上电复位时序时间t上电电容充电复位结束,单片机工作大于24个晶振周期宽度(复位期)Vcc电容电压复位后寄存器状态PC0000 程序从程序从0000开始执行开始执行PSW=0 RS1,RS1=0,默认主程序使用寄存器组默认主程序使用寄存器组0SP=07 一般需要更改堆栈栈底值一般需要更改堆栈栈底值P0P3=FFH 引脚输出高电平引脚输
10、出高电平IE=0X000000B 所有中断被关闭所有中断被关闭IP=0X000000B 所有中断无优先级所有中断无优先级TMOD=00 定时器定时器T0,T1模式模式0TCON=00 定时器不工作定时器不工作.SCON=00 串行口默认使用方式串行口默认使用方式0PCON=0XXX0000B 无电源管理,无波特率无电源管理,无波特率2倍设置倍设置其他如其他如ACC;DPTR;TH0;TL0;TH1;TL1;SBUF等可以不关心。等可以不关心。XC866-内核特性概述(内核特性概述(1)两个时钟的机器周期结构两个时钟的机器周期结构最大最大1MB的外部数据存储器的外部数据存储器最大最大256B的内
11、部数据存储器的内部数据存储器最大最大1MB的的Flash或或ROM程序存储器程序存储器中断控制器中断控制器:15个中断,个中断,4个优先级个优先级双数据指针双数据指针 XC866-内核特性概述(内核特性概述(2)支持扩展的特殊功能寄存器(支持扩展的特殊功能寄存器(SFRs)省电模式(有效,空闲,低速,掉电)省电模式(有效,空闲,低速,掉电)两个两个16位定时器(定时器位定时器(定时器0和定时器和定时器1)全双工串行接口(全双工串行接口(UART)支持支持Flash访问的等待状态访问的等待状态程序存储器下载选择程序存储器下载选择XC866-CPU功能框图功能框图内核内核SFRALUUART 外部
12、数据外部数据存储器存储器程序程序存储器存储器内部数据内部数据存储器存储器外部外部SFR寄存器接口寄存器接口乘法器乘法器/除法器除法器定时器定时器0/定时器定时器1操作码译码器操作码译码器中断控制器中断控制器状态机状态机&省电省电16位寄存器位寄存器&存储器接口存储器接口操作码操作码&立即寄存器立即寄存器fCCLK存储器等待Reset后继外部中断(IEN0,IEN1)外部中断非可屏蔽中断XC866指令存取执行图指令存取执行图XC866外围结构外围结构XC866引脚配置引脚配置XC866的存储器结构的存储器结构内嵌内嵌FlashnXC866-4FR包含包含16KB(12KB程序程序/4KB数据数据
13、)Flash存储器存储器 nXC866-2FR包含包含8KB(4KB程序程序/4KB数据数据)Flash存储器存储器 8KB Boot ROM程序存储器程序存储器256B内部内部RAM数据存储器数据存储器512B外部外部XRAM存储器存储器n可作为程序存储器可作为程序存储器(用用MOVC指令访问指令访问)n或外部数据存储器或外部数据存储器(用用MOVX指令访问指令访问)128B SFR区域区域XC866存储器结构存储器结构FFFFHF200HF000HE000HC000HB000HA000H3000H2000H1000H0000HFFFFHF200HF000H0000HBoot ROM8KBF
14、lash Bank 34KBFlash Bank 24KBFlash Bank 14KBFlash Bank 04KBXRAM 512B程序存储空间程序存储空间外部数据存储空间外部数据存储空间内部数据存储空间内部数据存储空间7FH00HFFH80H内部RAMSFR内部RAM间接寻址直接寻址XRAM 512B用户模式下用户模式下XC866的存储器的存储器结构结构程序存储器程序存储器Boot ROM工作模式工作模式1)执行)执行0000H1FFFH的的BootROM代代码码2)地址空间切换)地址空间切换3)进程从)进程从C00XH继续执行,并检查继续执行,并检查MBC、TMS和和P0.0的值,进入
15、相应的模的值,进入相应的模式式地址空间交换示意图地址空间交换示意图XC866Flash存储器存储器主要特点:主要特点:n通过通过UART在系统编程在系统编程(ISP)n在应用编程在应用编程(IAP)n纠错码纠错码(ECC)可动态纠正一页错误可动态纠正一页错误n后台编程和擦除操作,使后台编程和擦除操作,使CPU负载最小负载最小n支持擦除终止操作支持擦除终止操作n最小编程宽度为最小编程宽度为32字节字节n最小擦除宽度为一个扇区最小擦除宽度为一个扇区n每次读取一个字节每次读取一个字节n3 x CCLK周期的读取时间周期的读取时间(包括一个等待状态包括一个等待状态)Flash存储器结构存储器结构P-F
16、lash Bank24 KbytesD-Flash Bank4 KbytesD-Flash Bank4 KbytesP-Flash Bank14 KbytesP-Flash Bank04 KbytesP-Flash Bank04 KbytesB000HA000H3000H2000H1000H0000H8 Kbytes16 KbytesXC866-2FRXC866-4FRXC866Flash存储器(续)存储器(续)一体化的一体化的16KB(XC866-4FR)或或8KB(XC866-2FR)嵌入式嵌入式Flash闪存存储器用闪存存储器用于存储程序或数据于存储程序或数据 Flash阵列模块由阵列模
17、块由4个个4KB的的Bank组成组成(8KB版版本的由两个本的由两个Bank组成组成)n前面前面3个个Bank(0,1 and 2)用于程序用于程序Flashn第第4个个Bank(Flash Bank 3)作为数据作为数据Flash被划分被划分为更多的物理扇区以提高擦除效率为更多的物理扇区以提高擦除效率XC866Flash存储器(续)存储器(续)4KB Bank的体系结构的体系结构:n130条字线条字线(包括用于配置扇区的包括用于配置扇区的2条字线条字线)n384条位线条位线n32 x 12bit写缓冲区写缓冲区n每个编程周期写每个编程周期写32个字节个字节(1条字线条字线)4KB Bank的
18、特征的特征n编程时间编程时间:2.2ms(典型值典型值)n擦除时间擦除时间:120ms(典型值典型值)n读访问时间读访问时间:100ns(最先值最先值)FlashBank分区分区扇区和页结构扇区和页结构nFlash Banks 0,1和和2的扇区划分的扇区划分(程序程序Flash)w一个一个3.75KB扇区扇区w两个两个128B扇区扇区nFlash Bank 3的扇区划分的扇区划分(数据数据Flash)w两个两个1KB扇区扇区w两个两个512B扇区扇区 w两个两个256B扇区扇区w四个四个128B扇区扇区纠错码提高了数据的完整性纠错码提高了数据的完整性(ECC)n8bits数据扩展为数据扩展为
19、12bits带纠错码数据带纠错码数据 n检测并纠正检测并纠正1位错误的能力位错误的能力n2位错误可以被检测但不能被纠正,可产生一个非可屏蔽中断位错误可以被检测但不能被纠正,可产生一个非可屏蔽中断n使用汉明码修正算法使用汉明码修正算法FlashBank分区示意图分区示意图扇区9:128-byte扇区8:128-byte扇区7:128-byte扇区6:128-byte扇区5:256-byte扇区4:256-byte扇区3:512-byte扇区2:512-byte扇区1:1-Kbyte扇区0:1-Kbyte扇区2:128-byte扇区1:128-byte扇区0:3.75-KbyteP-FlashD-
20、FlashXC866-RAM结构内部数据存储空间内部数据存储空间7FH00HFFH80H内部内部RAMSFR内部内部RAM间接寻址间接寻址直接寻址直接寻址XRAM的功能简介可做为外部程序存储器区使用可做为外部程序存储器区使用访问方式:访问方式:DPTR间址寻址间址寻址使用的指令:使用的指令:MOVC可做为外部数据存储器使用可做为外部数据存储器使用访问方式:访问方式:DPRT间址或基址间址或基址+间址寻址间址寻址基址存放在基址存放在XADDRH中,间址使用中,间址使用Ri使用的指令:使用的指令:MOVXSFR映射地址扩展映射地址扩展在系统级通过映射进行地址扩展。通过设置位在系统级通过映射进行地址
21、扩展。通过设置位RMAP将将SFR区扩展为大小相等的标准区和映区扩展为大小相等的标准区和映射区,从而使可寻址的射区,从而使可寻址的SFR个数扩展到个数扩展到256个个。选择扩展地址区不由。选择扩展地址区不由CPU 指令直接控制,指令直接控制,而是由位于地址而是由位于地址8FH 上的系统控制寄存器上的系统控制寄存器SYSCON0 中的位中的位RMAP 来控制。置位来控制。置位SYSCON0 中的中的RMAP,控制访问映射,控制访问映射SFR 区区时;然而,对时;然而,对RMAP 清零,控制访问标准清零,控制访问标准SFR 区区。RMAP 位必须由位必须由ANL 或或ORL 指令清零指令清零/置位
22、。置位。SYSCON0 的其余各位不应修改的其余各位不应修改。SFR映射地址扩展示意图映射地址扩展示意图模块1 SFRs模块2 SFRs模块n SFRsFFH80HSYSCON0.RAMP模块(n+1)SFRs模块(n+2)SFRs模块m SFRsFFH80H标准区(RMAP=0)映射区(RMAP=1)SFR数据(送至/来自 CPU)内部数据存储器地址SFR分页地址扩展分页地址扩展在模块级通过分页的方式进一步扩展地址。由在模块级通过分页的方式进一步扩展地址。由于于256个个SFR仍不能满足需求,因此某些外设仍不能满足需求,因此某些外设采用内嵌局部地址扩展机制来增加可寻址的采用内嵌局部地址扩展机
23、制来增加可寻址的SFR数目。选择扩展地址区不由数目。选择扩展地址区不由CPU 指令直指令直接控制,而是由模块分页寄存器接控制,而是由模块分页寄存器MOD_PAGE 中的位域中的位域PAGE 来控制。因此,来控制。因此,在访问目标模在访问目标模块的块的SFR 前,必须先设置位域前,必须先设置位域PAGE。根据具根据具体要求,每个模块中可能包含的页数不同,每体要求,每个模块中可能包含的页数不同,每页上页上SFR 的个数不同。的个数不同。除了正确设置除了正确设置RMAP 值来选择值来选择SFR 区之外,用户必须确保选择了有区之外,用户必须确保选择了有效的效的PAGE 指向所要的指向所要的SFR。SF
24、R分页地址扩展示意图分页地址扩展示意图SFR数据(送至/来自CPU)SFR0SFR1SFRz SFR0SFR1SFRy SFR0SFR1SFRxMOD_PAGE.PAGESFR地址(来自CPU)页0页1页q 映射映射SFRs 位位RMAP分页分页SFRs 最多最多7页页nPorts:4页页 nADC:7页页nCC6:4页页nSCU:4页页分页的保存分页的保存如果在访问分页寄存器和模块寄存器之间开始如果在访问分页寄存器和模块寄存器之间开始执行某个中断服务程序,且中断需要访问位于执行某个中断服务程序,且中断需要访问位于另一页上的寄存器,保存当前页设置,然后设另一页上的寄存器,保存当前页设置,然后设置新页,最后恢复原先页设置。可以用保存域置新页,最后恢复原先页设置。可以用保存域STx(x=0-3)来保存和恢复当前页的设置。)来保存和恢复当前页的设置。同时指出应使用哪些保存域和新页值,单独用同时指出应使用哪些保存域和新页值,单独用写操作即可完成写操作即可完成.通过这种分页机制,中断服务程序(或其他程通过这种分页机制,中断服务程序(或其他程序)无需读出并保存上次使用的页信息即可改序)无需读出并保存上次使用的页信息即可改变页的设置。仅用写操作使系统更加简单和高变页的设置。仅用写操作使系统更加简单和高速。从而显著地改善了小中断服务程序的性能。速。从而显著地改善了小中断服务程序的性能。