470 likes | 639 Views
单片机与 PLC. 8 位 51 单片机基本结构 编者 : 胡学海. 单片机的学习重点. CPU +内存:寄存器应用,指令集和寻址方式 接口:各种可编程接口的应用特点及初始化方法。 基本接口包含:通用并行接口、串行接口、定时器、中断控制。 以上 3 点是学习的重点. 单片机的数据交换接口. 尽管外部设备多种多样,根本上来说就是数据的传输: 外部设备把指令、数据送到单片机内让单片机进行处理 单片机把处理情况和处理结果,以及需要保存的数据送到外部设备:显示;打印;保存;交换 …… 单片机还需要读取外部状态信息和输出控制信息。
E N D
单片机与PLC 8位51单片机基本结构 编者:胡学海
单片机的学习重点 • CPU+内存:寄存器应用,指令集和寻址方式 • 接口:各种可编程接口的应用特点及初始化方法。 • 基本接口包含:通用并行接口、串行接口、定时器、中断控制。 以上3点是学习的重点
单片机的数据交换接口 • 尽管外部设备多种多样,根本上来说就是数据的传输: • 外部设备把指令、数据送到单片机内让单片机进行处理 • 单片机把处理情况和处理结果,以及需要保存的数据送到外部设备:显示;打印;保存;交换…… • 单片机还需要读取外部状态信息和输出控制信息。 • 单片机接口就是完成以上数据传输任务的基本电路模块。
单片机基本接口 • 并行接口:多条线(8线)同时传输数据。一次传输一字节。 • 串行接口:单线传输,一次传输一位,分时传送。 • 定时器:产生设定的时间间隔信号,用于安排计算机的多种任务执行时间,也可以测量外部信号的宽度,周期,功能强的定时器,还可以产生多种波形输出,例如PWM等。 • 中断控制器:用于使CPU能及时响应多种外部设备申请的服务。配合外部低速设备的数据交换。 • 其他接口:DMA直接存储器存取,AD/DA数字/模拟接口等,随不同型号不同而不同。
通讯接口举例 • 并行接口:LPT打印机;内部FDD软驱;IDE光驱/硬盘…… • 串行接口:COM1/COM2串行接口;USB通用串行接口;键盘、鼠标接口;红外线接口;网络接口…… • 串行接口还有更广泛的应用:手机,数字电视,卫星通讯…… • 属串行接口的还有一些其它名称:I2C,SPI,SMBus,通讯协议有些差异。RS485,RS232等,传送的驱动方式和数据电平有些差异。
单片机的其他接口 • 扩展的其它接口如:A/D;D/A接口;I2C接口,CAN接口;SPI接口;DMA接口等 • 不同厂家的产品具有不同的特点,但基本结构框架类似,一通百通。如果使用C语言编程,只要了解对应接口的初始化代码就可以对不同型号单片机进行编程了! • 基于51单片机核,英飞凌infeineon,AD,ATMEL,PHILIPS等公司还提供了更多的接口功能,使之应用更广泛和灵活。
单片机不同型号间的主要差异 • CPU字长:4位;8位;16位;32位 • ROM容量:没有(需要外部扩展);1K;2K;4K;8K…64K,128K…,工艺上分EPROM;E2PROM;FLASH ROM • RAM容量:128B;256B;1K;2K…,基本RAM和片内扩展XRAM • 接口数量和种类:并口;串口;定时器;中断控制器。好的芯片还集成了AD/DA接口,DMA,PWM,CAN,I2C,……。同时增加更多引脚。
常见的8位16位单片机 • Intel 8051 系列和96系列 • Motolola 的MC68H系列 • Microchip的PIC系列 • ATMEL的89系列,ATMEGA系列 • PHILIPS的P89/P87C5系列 • Silicon Laborratories的C8051F..系列 • 亿恒C500/166系列(原西门子,infineon)8/16位 • 三菱740族8位,M16C/62系列16位 • TI的MSP430系列
累加器 内 部 总 线 地址寄存器 (段寄存器) ALU 程序计数器 暂存器 数据寄存器 通用寄存器 状态寄存器器 指令寄存器 指令译码 时序逻辑 总线缓冲 总线缓冲 数据总线 地址总线 控制信号 CPU的一般结构
CPU主要结构和功能 • ALU:算术逻辑单元。它是一个集:加、减、乘、除、移位、与、或、非、异或等多种功能模块的电路单元。 • 选择ALU的某项功能是通过“指令译码器”送出的控制信号决定的。 • 指令寄存器存放着从存储器读回的操作指令,它被“指令译码器”译成操作ALU的控制信号。 • 地址寄存器/程序计数器自动计算CPU要执行的下一条指令的存放地址,并产生相应地址信号用于选择程序存储器。 • 指令译码器在执行完当前指令时,发出“读指令”信号,把下一条指令读入指令寄存器。新型单片机采用“流水线”方式,执行指令的同时就可以读取新的指令。 • 状态寄存器存放着ALU运算的状态标志。 • 通用寄存器存放一些最常用的运算数据或地址。运算前,数据会转存到暂存器中 • 累加器是最常用的运算寄存器。通常,运算前是运算数据,运算后存放运算结果。它配合暂存器通过ALU进行运算。
存储器 • 数据存储器:RAM • 程序存储器:ROM • 两类存储器的编址方法有两种:线性统一编址和分区编址。 • Intel MCS-51为“分区编址”,ROM和RAM各自占用一个独立地址空间。 • Intel X86采用线性统一编址。ROM和RAM分布于同一个地址空间的不同地址段。 • 许多计算机都采用线性统一编址,称为“冯·涅曼”体系结构。例如亿恒C164CI系列单片机。 • 地址:就像门牌号或者密码锁,每一个存储单元应当具有独立的唯一的地址代码。
单片机的RAM特点 • 单片机的RAM又分为“片内”和“片外”两种。 • 片内RAM包含两种应用类型:①通用寄存器+片内RAM。②特殊功能寄存器SFR。 • SFR是特殊功能寄存器(Special Function Registers),而且是专用的!它们控制着单片机的各种接口功能,也存放着接口的输入输出数据。这些寄存器都有特定的地址。 • 片外RAM通常指外部扩展的RAM。一些性能较好的单片机片内也集成了“片外”RAM,称为:XRAM,实际上还是集成在片内。 • 片内RAM和片外RAM也分为统一编址和独立编址两种 • 51单片机RAM属于独立编址,而ROM则为统一编址。后续详细解说。
单片机的接口 • 单片机的基本接口就是前面讲过的:并行接口;串行接口;定时器和中断控制器。 • 性能好的单片机除了增加接口数量之外,还增加了许多专用接口,例如模数/数模转换器接口,USB接口,CAN接口,I2C接口,PWM接口等等。 • 所有接口的控制寄存器和数据寄存器都安排在SFR区。它们同片内RAM那样都有具体的地址安排,并有相应的寄存器名称。各生产厂家会提供“寄存器名=地址”的文件或编译器。 • 各接口引脚往往是多功能的,用软件选择它的某一功能。(配合硬件连接)特别值得注意的是:可以直接对一个引脚进行控制!这是其它计算机没有的。 • 一些并行接口常作为外部扩展时的数据线、地址线和控制线使用。(当需要时)
51系列单片机 • 最早以8031为代表,后来派生出许多型号,它们的基本结构和指令代码相同。甚至引脚也相同,可以直接互换。 • 这类系列统称为MCS-51系列,常见型号有:8031,8032,8751,8752,8051,8052…89C51,89C52,97C51,97C52,89C2051…… • 生产51系列单片机的许多厂家还推出了性能更好的型号,这些厂家有:Philips,Dallas,SIMENS,AMD,Atmel,NEC,HARRIS,WinBond,YHUNDAI,ADI,Silicon Laborratories等,产品名称变化也大,例如: Dallas的DS80C320, WinBond的W78E58, Silicon Laborratories 的C8051F0XX, Philips的P89LPCXXX等。
常见代号分析 • 80C31的C字表示CMOS工艺,通常忽略不讲。 • 第二个字:0,7,9等,表示ROM的工艺,0为PROM,7为EPROM,9为E2PROM或flash ROM。 • 第三个字:3:无ROM,5:有ROM • 第四个字n: n=1: RAM128字节,定时器2个,ROM4K n=2: RAM256字节,定时器3个,ROM=8K n>2: RAM256字节,定时器3个,ROM=n*4K 注:此方法不完全通用,可以参考。希望大家记住此方法。 例: 89C51 87C52
封装的意义 • 做PCB图,要根据封装尺寸和间距做, • 选择封装时要考虑产品的尺寸. • 不同封装的成品率和散热性能不同.
DIP40封装的51单片机引脚定义 P1.0~P1.7 并行口P1,其中P1.0和P1.1可能作为定时器T2的功能引脚。 P0.1~P0.7 并行口P0,当需要扩展存储器或接口时,可以作为数据/地址(低8位)总线。 P2.0~P2.7 并行口P2,当需要扩展存储器或接口时,可以作为地址总线高8位。 P3.0~P3.7 并行口P3,通常单独使用它们的第二功能:
P3口特殊功能 • P3.0 RXD,异步通讯接口的数据输入端。 • P3.1 TXD,异步通讯接口的数据输出端。 • P3.2 INT0,外部中断0申请的输入端。 • P3.3 INT1,外部中断1申请的输入端。 • P3.4 T0,定时器T0外部时钟输入端。 • P3.5 T1,定时器T1外部时钟输入端。 • P3.6 WR,对外部存储器/接口的“写”信号。 • P3.7 RD,对外部存储器/接口的“读”信号。
51单片机的其它引脚 • VCC 工作电源,常为+5V,某些型号可以工作在2.7~8V之间。 • VSS GND,接地端。 • XTAL1 外接晶体振荡器,当使用外部时钟时,此脚应接地。 • XTAL2 外接晶体振荡器。也作外部时钟输入。 • PSEN 读外部ROM信号。 • RST 复位输入端,高电平复位,低电平时CPU工作。 • ALE/PROG 地址锁存信号输出(正脉冲)/编程脉冲输入(负脉冲),用户一般不考虑后者。此信号控制外接的74LS373锁存器把P0口的地址分量分离出来作为扩展地址的低8位。 • EA/VPP 片内片外ROM选择/编程电压输入,用户一般不考虑后者。当接GND时,表示使用外部程序存储器;当接VCC时,使用片内程序存储器。
MCS-51单片机最小系统举例 拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为8951的芯片,下面我们就看一下如何给它连线。 1、 电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。 2、 振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按下图接上即可。
3、复位引脚:按图中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。3、复位引脚:按图中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。 • 4、EA引脚:EA引脚接到正电源端。 至此,一个单片机就接好。 • 5、编程并汇编为机器语言,写入8751片内程序存储器。 • 6、通电,单片机就开始工作了,即从地址0000开始执行程序。 如要求8个LED灯间隔轮流亮灭,程序为: MOV A, #10101010B ; LOOP: MOV P1, A ;(A)->(P1) CPL A ;A求反 SJMP LOOP ;跳转到LOOP
51单片机的“地址重叠” • 片内RAM地址:00H~7FH(52系列为00H~FFH) • 位地址:00H~7FH • 片外扩展RAM地址:0000H~FFFFH • (扩展)ROM地址:0000H~FFFFH • 单片机对其访问时,各使用不同的指令就可区别! • 片内:MOV指令等,因对象不同使用不同寄存器或寻址方式就可区分:位或者字节。 • 片外RAM用MOVX,控制信号:WR和RD • 访问ROM用MOVC,控制信号:PSEN。 • ROM以线性方式编址,无论EA脚接高电平或低电平
8051片内有128字节数据存储器RAM(不包括特殊寄存器),4K字节的程序存储器ROM。8051片内有128字节数据存储器RAM(不包括特殊寄存器),4K字节的程序存储器ROM。 • 可在片外扩展RAM和ROM,并各有64KB的寻址范围。 • 64K字节的ROM空间中,有4K字节地址对于片内ROM和片外ROM是公共的。EA控制信号用来区分内部ROM和外部ROM。
程序存储器ROM保留单元:0000~0002单元是所有执行程序的入口地址。0003~002AH单元均匀地分为五段,用作五个中断服务程序的入口。程序存储器ROM保留单元:0000~0002单元是所有执行程序的入口地址。0003~002AH单元均匀地分为五段,用作五个中断服务程序的入口。 • 数据存储器RAM 128字节 (不包括特殊寄存器):00~7FH是真正的RAM区,可以读写各种数据,分为三个区域:从00~1FH安排了四组工作寄存器;第二个区域是位寻址区,占用地址20~2FH;第三个区域就是一般的RAM,地址为30~7FH。 • 特殊寄存器RAM 128字节 :80~FFH是专门用作特殊功能寄存器(SFR)的区域。
2. CPU • CPU由运算器、控制器和若干特殊功能寄存器组成。 • 运算器可完成加、减及各种逻辑运算,还可直接完成乘除运算。 • 控制器在单片机内部协调各功能部件之间的数据传送、数据运算等操作。 • 特殊功能寄存器有ACC,B,PSW,SP和DPTR。ACC就是累加器,在乘除运算时,B寄存器用来存放一个操作数,也用来存放运算后的一部分结果。PSW为标志寄存器。SP为堆栈指针。DPTR为数据指针。 • PSW::(Program State Word)程序状态字,8位。其中存放着当前ALU的一些操作状态特征。其字节地址是D0H。
PC:(Program Counter)程序计数器,16位。它与8086CPU的IP(Instruction Pointer)意义类似。PC中存放着CPU要执行的下一条指令地址,CPU通过它产生ROM地址从而读取指令。每执行一条指令,它都会自动增加。增加的数值依照已读指令的长短而变化。只有中断、跳转和调用指令才能使其作其它变化。每当开机或者复位时,它的起始值为0000H。 • ACC:累加器,8位。51单片机大多数指令都必须使用ACC,它是使用最频繁的寄存器。它与ALU直接相连,加、减、乘、除、移位以及其它逻辑运算都要使用ACC,特别是:外部数据的读写也都必须使用ACC。ACC有两个名字:A和ACC。A表示寄存器,ACC表示用地址表达的寄存器(存储器)。除入栈出栈指令使用ACC这个名字外,其它指令中都用A。 • DPTR:数据指针16位,主要用于指出外部RAM的数据地址或ROM数据表的基地址。内存中将其分为两个8位寄存器,分别叫DPL和DPH,DPH存放地址的高8位,DPL存放低8位。
程序状态字PSW • C:也叫CY,进位标志或借位标志。当运算产生进位或借位时:C=1,否则C=0。 • C位还有一个特殊意义:它是1位计算机的“累加器”,CPU作布尔运算时,需要C的介入。同时C还可以读取一个引脚的数据或者把C的数据从引脚送出。 • AC:半进位。当AC=1时,表明运算使低4位向高4位产生了进位。 • F0:用户标志位。用户可以用于存1位数据。 • RS1和RS0:(Registers Selection)寄存器选择位。用于选择寄存器组。 • OV:溢出标志。对符号数的运算,当结果超出-128~+127时,产生溢出,此时OV=1。 • F1:用户标志位。用户可以用于存1位数据。(有些品种不支持) • P: 奇偶标志,反映ACC中数据的奇偶性。若ACC中有奇数个1,则P=1。
51单片机内部RAM 内部RAM的读写采用“MOV”指令,操作数分为:字节或位,其操作对象随之不同。 R0-R7通用寄存器部分,不用的字节也做RAM。
通用寄存器的使用 • 51单片机留了4组寄存器,它们都叫做:R0,R1~R7。它们在各种运算中起着参与运算的作用。 • 主程序只用0组寄存器。其它组用于不同的中断服务程序。目的是互不破坏数据。 • 如何切换到另一组呢?用程序改变PSW中的RS1和RS0就可。 • 记住:主程序默认使用:寄存器组0。中断服务程序开始时,先保存PSW,然后改写RS1和RS0。退出服务时恢复原来的PSW。 • 一般只要使用两组就可以了。
SFR简介地址:80H~FFH • 并口数据寄存器:P0;P1;P2;P3 • 累加器ACC和寄存器B • 定时器T0(TH0;TL0),T1(TH1;TL1) • 定时器控制寄存器:TMOD;TCON • 串行口控制SCON和数据SBUF • 中断控制:IE,IP • 电源控制:PCON • 程序状态字:PSW • 堆栈指针:SP • 数据指针:DPTR(DPH和DPL)
单片机的“位” • 单片机特色之一是使用“位”变量并可以直接操作。 • “位”存在于各个并口(引脚),累加器,PSW以及若干寄存器中;同时在RAM中也预留了“可位寻址”的空间:20H~2FH。 • 位空间占用16字节,每个字节8位共128位,用地址00H~7FH表达。 • 换算关系:字节地址=20H+(位地址/8),余数就是此字节的位号。 • “位”可以设为变量、标志、LED显示缓冲区等。
51单片机的堆栈 • SP:stack Pointer 堆栈指针,8位。用于指出当前堆栈的顶部地址,当有入栈操作时,SP自动+1,出栈时SP=SP-1。 • 堆栈:在RAM中划分一个“块”作为堆栈。 • 堆栈的作用有两个:1.用于保存子程序返回时的程序地址信息。2.数据暂存。调用子程序或者响应中断时,断点的地址被CPU自动存入堆栈,程序返回时,此地址能自动恢复,从而继续执行被打断处的程序。 • 堆栈的操作是通过“堆栈指针SP”记录的,它永远指出下一个空闲的存储器地址。 • 51单片机的堆栈为“上涨”型,入栈时SP=SP+1。 • 因为51机RAM很少,堆栈空间的预留需要精打细算。计算的依据:考虑子程序嵌套的最大可能层数,同时还要考虑中断服务程序的子程序嵌套层数,两个层数相加后乘2,再留一点余量。 • 128字节RAM空间,扣除必须使用的通用寄存器组数;堆栈;位变量占用的字节数,剩余部分才能设定为变量;缓冲区等。
3 并行接口 • 从外部来看,共有4组8位并行接口,占用32个引脚,另:两个引脚作晶振接入,电源,地各一个脚及4个控制脚共计40个引脚。 • 4组并行接口分别称为:P0;P1;P2和P3,每一个单独引脚由小数点后的数字确定。例如:P1.0;P3.2等。 • 4组并口,除P1为专门的并口外,其它3个并口还有第二功能:P0可以作为外部的数据总线和地址低8位;P2作为地址高8位。P3的每一个引脚都有不同的第2功能:串行接口的输入输出;外部中断输入;定时器外部钟输入以及外部接口存储器的读写信号。 • 单片机内部除CPU的主要结构外,还有128B(256B)的RAM,一定数量的ROM。RAM和ROM的多少随芯片型号不同而不同。
P0口和P2口可以作为外部扩展的数据总线和地址总线使用。P0口和P2口可以作为外部扩展的数据总线和地址总线使用。 • P0口分时作为数据线(8位)和地址线低8位使用,通过外部地址分离电路将其分离。 • 分离信号就是ALE • P2口作为地址线高8位使用 • P0和P2可以组合成16位地址,因而可以对外部的64KB空间进行寻址访问。他们可以同时连接ROM和RAM(访问操作各自不同)
4. 定时/计数器 • 8051内部有两个16位可编程定时/计数器,最大计数模式为216-1。 • 在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。 • 计数工作时,计数脉冲由T0和T1输入。
5. 中断系统 • 8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时/计数器中断以及一个串行口中断。 • MCS-51单片机可以设置两个中断优先级,即高优先级和低优先级。
6. 串行口 • 8051单片机内部有一个可编程的、全双工的串行接口。 • 串行收发数据存储在特殊功能寄存器中的串行数据缓冲器SBUF中,占用内部RAM地址99H。
51结构小结 • RAM128字节,地址00~7FH,可用作:1.通用寄存器R0~R7。2.堆栈区域划分。3.位变量。4.字节变量和数据暂存(缓冲区)。 • SFR,地址80~FFH。含端口控制寄存器和数据寄存器,以及其他专用寄存器如:累加器ACC,寄存器B,程序状态字PSW,堆栈指针SP,程序计数器PC等。 • 40个引脚:4×8个并行口引脚,晶振2引脚、电源2引脚、复位、PSEN、EA、ALE。 • P0,P2可扩展为地址/数据线,P3口功能最多。
习题 • (1) 堆栈的存取原则是,。 • (2) 已知[X]=+0110101,[Y]=-0010011,求[X]补+[Y]补=。 • (3) 51单片机位变量占用地址为( ),寻址范围( ),特殊寄存器占用地址为( ) • A 00H~1FH, B 20H~2FH, C 00H~FFH • D 80H~FFH E 00H~7FH F 80H~90H
(4) 微处理器或CPU主要由3部分组成,即、和寄存器组。 • (5) 存储器的编址方法有两种__________、__________。 • (6) 51单片机的堆栈入栈时SP=。 • (7) 51单片机位,如果已经使用了片内ROM,片外ROM的首地址是( ), 如果已经使用了片内RAM,片外RAM的首地址是( ) • A 0000H, B 2000H, C 4000H D 8000H