450 likes | 600 Views
第一章 单片机原理与应用. 吴振宇. 什么是单片机( MCU ). 将微处理器( CPU )、数据 存储器、程序存储器、 I/O 接口电路和相应的实时控制器件集成在一块芯片上 ,形成一个单芯片的微型计算机,称为单片机,也称微控制器( MCU )。 单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上 想想 PC 的结构, CPU 、内存、硬盘 ,以及 键盘 、 鼠标 、 显示器等输入 / 输出设备。 二者 组成 结构类似,差别在体积、性能、价格,这也决定了其不同的用途。. 单片机的特点. 功能强: 可编程, 实时性好 体积小 ,功耗低
E N D
第一章 单片机原理与应用 吴振宇
什么是单片机(MCU) • 将微处理器(CPU)、数据存储器、程序存储器、I/O接口电路和相应的实时控制器件集成在一块芯片上,形成一个单芯片的微型计算机,称为单片机,也称微控制器(MCU)。 • 单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上 • 想想PC的结构,CPU、内存、硬盘,以及键盘、鼠标、显示器等输入/输出设备。 • 二者组成结构类似,差别在体积、性能、价格,这也决定了其不同的用途。
单片机的特点 • 功能强:可编程,实时性好 • 体积小,功耗低 • 可靠性高:高度集成,大量数据都在芯片内部传送 • 开发方便:外围电路简单,资料丰富 • 价格低廉,性价比高 • 研制周期短,易产品化
主流单片机 • 8051 最普及,多种新型高性能51 • MSP430 低功耗,抗干扰,工业仪表 • AVR RISC,高速,高可靠性 • PIC 体积小,抗干扰,成本低 • Freescale 产品线丰富,汽车电子 • ARM 32位,高性能,外设丰富
时钟源 T0 T1 时钟电路 SFR和RAM ROM 定时/计数器 系 统 总 线 CPU 并行端口 串行端口 中断系统 TXD RXD P0 P1 P2P3 INT0 INT1 51单片机的基本结构 • 一个8位微处理器(CPU) • 数据存储器RAM和特殊功能寄存器SFR • 内部程序存储器ROM • 四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出 • 一个串行端口,用于数据的串行通信 • 两个定时/计数器,用以对外部事件进行计数,也可用作定时器。 • 中断控制系统 • 内部时钟电路
程序存储器 • 存放用户程序、数据、查找表等信息 • 51可寻址64KB地址空间,AT89S51片内有4KB Flash • 复位后程序计数器(PC)内容为0000H • EA引脚对程序存储器的控制作用 • EA接高电平时,CPU先从内部程序存储器中读取程序,当PC值超过内部ROM容量时,自动转向外部ROM读取程序。 • EA接低电平时,CPU始终从外部程序存储器读取程序。
程序存储器 • 程序存储器中的特殊地址: • 0000H~0002H复位后的PC值为0000H,一般在此安排跳转指令 • 0003H ~ 002AH为中断向量表 • C语言中的const数据类型,以及code关键字,都将变量存储于程序存储器
数据存储器 • 保存程序中的变量,以及一些不怕断电后消失的数据 • 51具有256B内部数据存储器,并可寻址64KB外部存储器 • 低128B为用户数据RAM • 高128B为特殊功能寄存器
数据存储器 • 30H~7FH用户自由使用,一般把堆栈设置于此 • 20H~2FH该16字节(128位)存储单元具备按位寻址能力,即可以以位单位进行数据操作,而其他位置都必须以字节为单位操作。 • 位地址为00H~7FH • 00H~1FH共32个字节,被分为4个块(Bank),每个Bank包括8个寄存器(R0~R7),称为通用寄存器。通过PSW的RS0和RS1位组合,来选中每个Bank
51单片机存储器的一些特殊点 • 地址重叠:采用不同的指令、信号来区分重叠地址 • 片内RAM用MOV,片外RAM用MOVX,故片内、外低地址可以重叠 • 片内、外ROM都用MOVC指令,但可以靠EA区分 • 片外RAM和ROM具有相同地址,且共用地址、数据总线,但选通片外RAM的信号为RD和WE,选通片外ROM的信号是PSEN • 位操作能力:片内RAM中的20H ~ 2FH及SFR中的位地址;有专门的位操作指令 • 堆栈区:复位时SP = 07H,可任意设置到其他地址
51单片机时序 • CPU是一个复杂的同步时序电路,在时钟脉冲推动下工作。 • 执行指令时,CPU先从程序存储器中取出指令码,并译码,然后由时序部件产生一系列控制信号去完成指令的执行。这些控制信号在时间上的相互关系就是CPU时序。 • 标度时序信号的尺度有: • 时钟周期:时钟的震荡周期,是单片机时序中的最小单位 • 机器周期:51的1个机器周期固定为12个时钟周期 • 状态(S):每个机器周期分为6个状态(S1~S6) • 节拍(P):每个状态分为P1和P2两个节拍 • 指令周期:执行一条指令所需的时间 1个机器周期的12个时钟周期可表示为S1P1,S1P2,S2P1,……,S6P2 51单片机分为单周期指令、双周期指令和四周期指令 只有乘法和除法两条指令为四周期,其余均为单周期和双周期
指令时序 • 以采用12MHz晶振为例 • 1个时钟周期为? • 1/12 us • 1个机器周期为? • 1 us • 1个状态为? • 1/6 us • 1个节拍为 • 1/12us • NOP为单周期指令,耗时? • 1 us • DJNZ为双周期指令,耗时? • 2 us
AT89S51引脚 • 电源引脚(2): • VCC • GND • 控制引脚(6): • ALE:地址锁存允许,平时输出1/6时钟频率的方波 • EA:外部程序存储器访问允许 • PSEN:片外ROM选通,执行MOVC时自动产生一个负脉冲来选通片外ROM • RST:复位维持2个机器周期以上高电平,使单片机复位 • XTAL1/2:时钟输入/输出
AT89S51引脚 • 端口(32): • P0.7~P0.0: • 输入输出端口0 • 片外存储器地址总线低8位 • 片外存储器数据总线 • P1.7~P1.0: • 输入输出端口1 • P2.7~P2.0: • 输入输出端口2 • 片外存储器地址总线高8位 • P3.7~P3.0: • 输入输出端口3 • 外围部件信号线:串口收/发,外部中断输入,计数器计数输入,外部RAM读写选通
AT89S51最小系统设计 • 以单片机为主、外围电路为辅组成的系统称为单片机系统。 • 最少外围电路组成、可使单片机工作的系统,称为单片机最小系统 • 最小系统包括: • 电源 • 复位 • 时钟 • ISP(可选)
电源及复位电路 • AT89S51工作电压4.0~5.5V,典型工作电压5V,最大6.6V。 • 工作在12MHz时,电流25mA。 • 可使用7805供电。 • 采用阻容复位电路,RST维持2个机器周期以上高电平即可。 • 右图上电时RST的高电平时间? • 想增加按键复位,按键加在哪?
单片机的复位源 • 上电复位 POR • 欠压复位 BOR:当电源电压低于某规定值时,单片机复位;当恢复到规定值时,启动欠压定时器,定时时间到时,欠压复位结束。BOR的作用是当电源低于某值时,停止单片机运行,以免造成运行错误或输出不确定电平,使外围电路工作异常。 • 外部复位:由单片机复位引脚的电平变化引起的复位,据此可以进行人工复位。 • 看门狗定时器复位 WDT:看门狗用于监测程序的运行,一旦程序跑飞、死锁,就不能定时清零看门狗定时器(即不能及时喂狗),则看门狗定时器产生溢出,引起单片机复位。 • AT89S51可进行外部复位和看门狗定时器复位。 • 对于没有欠压复位的单片机,为保证可靠性,需要外接专用复位芯片。
时钟电路 • X1和X2分别是内部用于构成振荡器的反相放大器的输入/输出端 • 反相放大器与晶体、电容共同构成自激振荡电路 • 电容值的选取 • 电容兼作去耦,不能太小 • 电容值过大,则振荡器启动太慢 • 典型值为30pF±10pF • 正常情况下,X2脚输出一个平滑的正弦波 • AT89S51最高工作频率33MHz
什么是中断 • 当计算机执行正常程序时,系统中出现某些急需处理的异常情况或特殊情况,CPU暂时中止现行程序,转去对随机发生的更紧迫事件进行处理;处理完毕后,CPU自动返回原来的程序继续执行。 • 中断是CPU自动执行中断服务程序(ISR)并返回原程序执行的过程。
中断的作用 • 提高CPU的工作效率 和外设交换信息时避免不必要的等待和查询。 • 提高系统的实时性 被控系统的实时数据和故障信息等可以通过中断立即通知CPU,远较系统查询及时。 • 一种I/O数据传送方式的基础
中断处理流程 • 1. 检测中断 CPU在每条指令的最后状态对中断请求进行一次检测,故从产生中断到它被CPU检测到不会超过一条指令的时间。如8051在S5P2和S6P1检测中断。 • 2. 响应中断 (1) 自动关闭中断,防止被其他中断干扰本次中断。 (2) 保护现场,转入执行中断服务程序前,保存当前程序断点,以及有关寄存器的内容,即将其压入堆栈。 (3) 按中断向量表自动转入相应的中断服务程序执行。 (4) 系统自动或通过指令手动清除中断请求标志,避免再次响应本次中断请求。 • 3.中断返回 中断服务程序执行结束,从堆栈中恢复现场,返回中断前的原程序继续执行。
8051中断源 1. 外部中断 • 8051具有INT0和INT1两条外部中断请求输入线 • 触发方式可设置为低电平触发或下降沿触发 • 电平触发检测1次,边沿触发需要检测2次 2. 定时器溢出中断 • 8051内部有2个定时/计数器 • 对内部定时脉冲或T0/T1引脚输入的外部定时脉冲计数。 • 计数到最大值时发生溢出,产生中断。 • 通常用于需要进行定时控制的场合。 3. 串口中断
中断标志 • 8051在S5P2时检测中断并使相应的中断标志位置位,在下一个机器周期检测这些标志位以决定是否响应中断。 • 开发时要尤其注意中断的产生条件,以及清除方式。 • 8051的中断标志位集中安排在TCON和SCON中。
中断使能 • 中断的开放和关闭通过中断允许寄存器IE进行两级控制 • 中断允许总控EA和各中断源独立控制位 • 复位时,IE = 0,即所有中断关闭。
中断优先级 • 8051具有高、低2个优先级,每个中断源都可设置为高或低。 • 低级中断的ISR可以被高级中断打断,而不会被同一优先级中断打断。 • 若几个同级中断并发,则按CPU查询顺序响应:INT0 -> T0 -> INT1 -> T1 -> UART • 复位后,所有中断均为低优先级
中断向量表 • 某中断请求被响应后,CPU会自动跳转到一个特定地址执行ISR,中断向量表即该入口地址表。 • 8字节不足以存放ISR。 • 一般在此处安排跳转指令,如 ORG 0003H LCALL 2000H
中断系统的初始化 • 若要使用某个中断源 …. (1) 针对该模块的设置(外部中断触发方式、定时器初值、串口通信参数等) (2) 设置中断优先级 (3) 使能总中断 (4) 使能该中断 • 已使能的中断必须有对应的ISR!
概述 • 输入/输出(I/O)接口是CPU和外设间信息交换的桥梁,实现和不同外设的速度、电平等的匹配。 • I/O可分为并行接口和串行接口 • 8051单片机具有4个8位的并行接口,分别为P0、P1、P2和P3,均为带有锁存输出的双向端口。 • 8051为外设端口和存储器统一编址,并行接口地址分别为80H、90H、A0H和B0H。
P0口简介 • 功能: • 通用数据I/O端口 • 地址、数据复用总线 • 作为通用数据I/O端口时,具有较强的驱动能力(8个TTL负载),输出需要外加上拉电阻。 • 作为地址、数据复用总线时,P0口先作为地址总线,输出外部存储器的低8位地址。然后再作为数据总线,进行数据的输入或输出。此时,P0口不能再作为通用I/O口。
P0口的位结构图 Vcc Vcc Vcc • 1个输出锁存器(D触发器) • 2个三态门(控制读引脚或读锁存器) • 与门和多路开关构成的输出控制电路 • 一对FET构成的输出电路 读锁存器 控制(=0时) 地址/数据 1/0 内部总线 P0.x 引脚 D Q 锁存器 CL /Q 写锁存器 MUX (控制=0时) 读引脚
P0作为通用I/O的操作 • 在P0口作为通用I/O端口时,控制电路中的“控制”为低电平,多路开关MUX接入下方的锁存器的/Q端。 • 由于与门的一个输入端为“0”,所以它使上端的FET截止。这就是P0口在做I/O口时输出为“漏极开路(OD)” 结构的原因。 • 输出操作:在执行以口为目标的指令时,数据送到锁存器的“D”端,经“/Q”端送场效管应输出极。如:送“1”时,/Q=“0”,使下端的FET截止。这样出现输出极的两个FET全部截止。在这种情况下必须在端口线上外加上拉电阻,这样在上拉电阻的作用下,使端口为高电平。同理,若总线向口送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET仍然截止),这样端口呈现“0”电平。
开漏/开集(OD/OC)输出结构 • 改变输出电平 • 实现“线与”逻辑
P0作为通用I/O的操作 • 输入操作: • a.读引脚:读外部送到端口引脚的电平,即通常所说的输入操作。此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线。 • b.读锁存器:将读取锁存器数据并进行处理,最后再写回锁存器的操作称之为: “读—修改—写”操作。在这种情况下, 读入的数据不是来自引脚,而是端口内部的锁存器的内容。 • 当前面完成一次端口的输出后,要再将前面输入的状态取回来,进行再处理,然后重新输出。在8051的指令系统中,这种“读—修改—写”的操作有: ORL 、XRL 、JBC 、CPL 、INC 、DEC 、DJNZ 、MOV Px,y 、 CLR Px,y和SET Px,y。
P0作为通用I/O的操作 • c.读引脚前先写“1”:在端口电路中,可以发现一个问题:端口在输入(读引脚)时,原来锁存器的状态可能要影响引脚电平的输入。例如:原来锁存器的状态为“0”态,即输出极的下端FET是饱和导通状态,这样如果外电路向引脚输入高电平时,电路将不能正确读入。 • 解决方法就是让下端的FET截止,既事先向端口写一个“1”。
P0作为总线的操作(扩展了外部存储器时) • 控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号。在这种情况下,输出极的两个FET都处于正常的工作状态 。 • 访问外部存储器的指令MOVX、MOVC ,就是使用P0口来输出外部存储器的低八位地址和输入、输出存储器的数据。 • 在进行单片机的硬件系统的设计中,如果使用了外部存储器,P0口成为整个系统的地址/数据复用总线。也就是说,P0口不能再作为通用的I/O端口与外部设备连接。
P0口特点总结 • 作通用数据端口时,输出级上端的FET处于截止状态,所以与外围器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平。 • 在输入操作前,为了保证正确性,必须先向端口写“1”。 • “读引脚”与“读锁存器”是不同的两个数据通道。凡是“读—修改—写” 的操作,CPU读的都是端口锁存器中的数据。 • 为了提高电路的可靠性,端口引脚不要直接与三极管一类的器件直接连接,应加隔离电路或与三极管之间加一个电阻。 • 在总线方式时,P0口不能再做通用的I/O端口。分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。
Vcc 读锁存器 内部上拉电阻 P1.x 引脚 D Q 锁存器 CL /Q 内部总线 写锁存器 读引脚 P1口结构 • P1口为单纯的通用I/O端口,负载能力为3个TTL输入。与P0口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。
地址/数据 1/0 Vcc 控制 读锁存器 内部上拉电阻 内部总线 P2.x 引脚 D Q 锁存器 CL /Q MUX (地址/数据=0) 写锁存器 读引脚 P2口结构 • 通用I/O端口 • 在扩展存储器系统中,作为外部存储器的高8位地址线
Vcc 读锁存器 替代输出功能 P3.x 引脚 内部总线 D Q 锁存器 CL /Q 写锁存器 MUX (地址/数据=0) 读引脚 P3口结构 • 通用I/O端口: “替代输出功能”端为高电平,以保证与门打开。 • 多用途端口:在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,锁存器Q端为“1”电平以保证与门是打开的。
拉电流方式 输出高电平 点亮LED Vdd Vdd Vdd Px.y Px.y 灌电流方式 输出”0”点 亮LED 拉电流与灌电流输出 • “拉”和“灌”是从外围电路的角度描述 • 拉电流是单片机输出高电平,即电流被外围电路“拉走”。 • 灌电流是单片机输出低电平,即外围电路向其“灌入”电流。 • 51拉电流约为4mA,灌电流约为20mA。