已阅读5页,还剩134页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上次课内容回顾 单片机的概念单片微型计算机 SCMSingleChipMicrocomputer 将微处理器 存储器和外围设备 接口集成到一块芯片上单片微控制器 SCMSingleChipMicrocontroller 嵌入式微控制器 EMEmbeddedMicrocontroller 微控制器单元 MCUMicrocontrollerUnit 发展历史初级阶段 74 76 还不是真正意义上的单片机低性能阶段 76 78 MCS 48 无串口 不能多机使用高性能阶段 78 83 MCS 51 应用广泛新一代阶段 83以后 复杂化 多样化 专用化 以兼容MCS 51的新型8位机 如C8051F系列 为主导 上次课内容回顾 分类 根据片内程序存储器类型的不同 单片机分为 ROM型 内容不可改EPROM型 擦写不方便无ROM型 需外接ROMOTPROM型 低成本 一次可编程E2PROM型 擦写较方便 不能ISPFlashROM MTPROM型 型 使用最方便 可以ISP典型8位单片机产品Intel MCS 51系列 8031 2 8051 2 8751 2 Ateml Flash型 E2PROM型SiliconLaboratories 混合信号SOC型其他 上次课内容回顾 应用情况智能仪表机电一体化实时控制分布式多机控制系统家用电器 发展趋势低成本高集成度的单片机片上系统 SOC 8位单片机的市场份额依然领先 2 1C8051F系列单片机的总体结构2 2C8051F020存储器组织2 3CIP 51指令系统2 4中断系统2 5端口输入 输出2 6电源管理方式2 7复位与时钟 第2章SOC单片机的结构与原理 了解 重 难点 了解 2 1C8051F系列单片机总体结构 2 1 1C8051F系列单片机简介2 1 2CIP 51内核2 1 3C8051F020单片机的片上资源 2 1 1C8051F系列单片机简介 集成的混合信号片上系统SOC Systemonchip 具有完全兼容MCS 51内核的微控制器 CIP 51 除标准8051的数字外设部件外 还集成了数据采集和控制系统中常用的模拟外设 其它数字外设及功能部件 是真正能独立工作的片上系统 SOC CPU有效地管理模拟和数字外设 可以关闭单个或全部外设以节省功耗 FLASH存储器还具有ISP的能力 既可用作程序存储器又可用作于非易失性数据存储 2 1 1C8051F系列单片机简介 片内JTAG jointtestactiongroup 调试电路允许对安装在最终应用系统上的产品进行非侵入式 不占用片内资源 全速 在系统调试 该调试系统支持观察和修改存储器和寄存器 支持断点 观察点 单步及运行和停机命令 调试环境示意图 SiliconLabs提供一个集成开发环境 IDE 包括编辑器 宏汇编器 调试器和编程器 USB 2 1 2CIP 51内核 C8051F系列单片机内核采用与MCS 51兼容的CIP 51 标准8051中 除MUL和DIV以外所有指令都需要12或24个系统时钟周期 最大系统时钟频率为12 24MHz CIP 51内核采用流水线结构 70 的指令执行时间为1或2个系统时钟周期 只有4条指令的执行时间大于4个系统时钟周期 微控制器内核峰值执行速度比较 MIPS MillionInstructionsPerSecond 2 1 3C8051F020单片机的片上资源 高速 流水线结构的与8051兼容的CIP 51内核 可达25MIPS 全速 非侵入式的在系统调试接口JTAG 片内 真正12位 100ksps的8通道ADC 带PGA和模拟多路开关真正8位 500ksps的ADC 带PGA和8通道模拟多路开关两个12位DAC 具有可编程数据更新方式64K字节可ISP的FLASH存储器存放程序用4352 4096 256 字节的片内RAM存放数据用可寻址64K字节地址空间的外部数据存储器接口硬件实现的SPI SMBus I2C和两个UART串行接口5个通用的16位定时器 计数器具有5个捕捉 比较模块的可编程计数器 定时器阵列 PCA 片内看门狗定时器 Watchdog VDD监视器和温度传感器 C8051F020芯片示意图 C8051F020原理框图 高速微控制器内核 数字I O 模拟外设 2 2C8051F020存贮器组织 MCS 51存贮器组织 哈佛结构 物理结构上可分为 片内程序存储器片外程序存储器片内数据存储器片外数据存储器按功能和寻址 使用角度 可分为 程序存储器 内部数据存储器 外部数据存储器 特殊功能寄存器和位地址空间共5大部分 2 2C8051F020存贮器组织 程序存储器 内部数据存储器 位地址空间 SFR 外部数据存储器 2 2 1程序存贮器 1 容量 64KB 地址0 x0000 0 xFFFF 类型 FLASH存储器 存储器中有512字节 0 xFE00 0 xFFFF 保留给厂商使用 不能用于存储用户程序 有一个附加的128字节的扇区 可用于非易失性数据的存储 其地址范围是0 x00 0 x7F 要访问该扇区 SFLE PSCTL 2 位必须被设置为逻辑1 通常情况下为只读的 设置程序存储器写允许位PSWE PSCTL 0 后可写 用MOVX指令 关于PSCTL可查阅数据手册 2 2 1程序存贮器 2 对程序存储器的操作类型读 使用MOVC指令实现 如查表操作 编程 使用编程工具通过JTAG接口进行 写 使用MOVX指令进行 要先设置程序存储器写允许位PSWE PSCTL 0 为1 编程 写前要先执行擦除操作 将PSEE PSCTL 1 和PSWE PSCTL 0 置1后 再往扇区的任一单元写入任一数据即可擦除 擦除实际是将数据位全置1 禁止擦除后的写操作只能写入0 擦写前还要将FLWE FLSCL 0 置1 以允许用户软件擦 写FLASH 为避免出错 对FLASH写操作之间要禁止中断 关于FLCTL可查阅数据手册 软件对FLASH编程的流程 禁止中断置位FLWE FLSCL 0 允许用户软件擦 写FLASH置位PSEE PSCTL 1 允许FLASH扇区擦除置位PSWE PSCTL 0 允许FLASH写用MOVX向待擦扇区的任一地址写任一数据 即实现擦除清PSEE 禁止FLASH擦除用MOVX写入需要的数据 实际是把不需要的1改为0 清PSWE 禁止写程序存储器清FLWE 禁止用户软件擦 写FLASH开中断 FLASH用户编程示例 C51 写Flash中pwrite开始地址 pgen指向待写数据 n为要写入的数据个数voidWFlash int pwrite int pgen unsignedcharn unsignedchari EA 0 关中断FLSCL 0 x01 FLWE FLSCL 0 置1 允许用户程序写 擦FLASHPSCTL 0 x03 将PSWE PSEE置1 pwrite 0 启动擦除过程PSCTL 0 x01 PSEE 0 PSWE 1 禁止擦除 允许写 for i 0 i n i pwrite pgen 写入n个数据PSCTL 0 x00 FLSCL 0 x00 清除相关标志EA 1 开中断 2 2 2内部数据存贮器 共256字节的RAM 地址0 x00到0 xFF 低128字节 用于通用寄存器和临时存储器 采用直接或间接寻址方式 0 x00 0 x7F0 x00 0 x1F 4个通用寄存器区 每个区有8个寄存器 R0 R7 每次只能用其中一个区的通用寄存器 主 子程序间切换区号 省去这部分现场保护 0 x20 0 x2F 既可以按字节寻址又按位寻址访问 0 x30 0 x7F 作一般存储器用 堆栈等高128字节 0 x80 0 xFF 只能用间接寻址访问 内部数据存贮器图示 只能间址 2 2 3特殊功能寄存器SFR 寄存器 CPU或接口电路中用于存储数据的部件通用寄存器专用寄存器 51单片机中称为特殊功能寄存器SFR SpecialFunctionRegisters 离散分布在0 x80 0 xFF中 采用直接寻址方式 与内部RAM高128B地址重叠 但在物理上是两个独立空间 靠寻址方式区分 字节地址是8的倍数 0 x0 0 x8结尾 的SFR可进行位寻址 CIP 51有120多个SFR 具体见P23表2 3 MCS 51只有21 26个 上次课内容回顾 C8051F单片机的总体结构简介集成混合信号片上系统 SOC 型单片机CIP 51内核兼容MCS 51 高速流水线结构 达25MIPS片上资源C8051F020存储器组织采用程序存储器和数据存储器分开的哈佛结构有片内和片外之分 按用法分为5大类 程序存储器 64KB Flash存储器 存放程序或常量 用MOVC读 MOVX写 通过JTAG接口编程 上次课内容回顾 片内数据存储器 256B 00 0FFH 低128B 00 7FH 00 1FH为4个工作寄存器区 每区8个 R0 R7 20 2FH 16B 既可以字节寻址也可以位寻址 30H 7FH 做一般数据存储器或堆栈用高128字节 80 0FFH 做一般数据存储器用 只能间接寻址特殊功能寄存器地址与片内数据存储器重叠 为了区分只能直接寻址字节地址是8倍数的可以位寻址 常用的特殊功能寄存器 ACC Accumulator 累加器 存放运算操作数和结果 在指令中常用A表示 B BRegister 寄存器 乘 除法中与ACC配合使用 SP StackPointer 8位堆栈指针 复位值为0 x07 使用时根据需要可重新赋值 数据入栈 SP加1 与80X86相反 DPTR DataPointer 16位数据指针 访问外部存储器的地址指针 用于寄存器间接寻址 可分为DPL和DPH两个8位来用 PSW ProgramStatusWord 8位程序状态字 存放程序运行的状态信息 堆栈 补充 先进后出 后进先出 的特殊存储区域有数据入栈 PUSH 和出栈 POP 两种操作只有一个操作出入口 即栈顶 每次的PUSH POP操作都在栈顶进行有一个专用寄存器指向当前栈顶 即堆栈指针SP SP的初始值为07H 可以由程序设定每压入一个字节 SP加1 每弹出一个字节 SP减1 20H 32H 45H 45H PSW的各位定义 位7 CY 进 借位标志有进 借位 减法 时 置1 位6 AC 辅助 半 进位标志向高半字节有进 借位时 置1 位5 1 F0 F1 用户标志可供用户编程使用的通用标志位 有何作用 PSW的各位定义 位4 3 RS1 RS0 寄存器工作区选择位 位2 OV 溢出标志 ADD ADDC或SUBB指令引起符号位变化溢出 MUL指令引起溢出 结果大于255 DIV指令的除数为0 位0 PARITY 奇偶标志 若ACC中有奇数个1时该位置1 有偶数个1时清0 2 2 4位寻址区 包括两部分 内部RAM中的0 x20 0 x2F单元 P24表2 4部分SFR 字节地址为8的倍数的 P23表2 3CIP 51中的布尔处理器 能对位地址直接寻址 执行置 1 清 0 取反 测试等操作 2 2 5外部RAM和片内XRAM MCS 51内部只有128或256字节的数据存储器 不够时可以在芯片外部扩展64KB的外部数据存储器 XRAM C8051F020同样有64KB的外部数据空间 但在芯片内部有属于外部数据存储器空间的4096字节RAM 还有一个外部数据存储器接口 EMIF 可用于访问片外存储器和I O接口 外部扩展数据存储器用EMIOCF寄存器进行配置 外部存储器空间用MOVX指令 通过DPTR R0或R1间接寻址方式访问 用R0或R1时高8位地址由EMIOCN提供 I O端口和外部RAM统一编址 与80X86不同 1 XRAM存储器空间的访问 用MOVX指令通过DPTR R0 R1间接寻址实现16位地址形式DPTR中存放待访问存储单元的地址 如 MOVDPTR 1234h 立即数0 x1234 DPTRMOVXA DPTR 0 x1234 A8位地址形式EMIOCN中存放待访问地址的高8位 R0或R1存放待访问地址的低8位 如 MOVEMIOCN 12h 地址高字节0 x12 EMIOCNMOVR0 34h 地址低字节 R0MOVXA R0 0 x1234 A EMI0CF寄存器 位5 PRTSEL 总线 端口选择位0 EMIF选择P0 P3 低端端口 1 EMIF选择P4 P7 高端端口 位4 EMD2 地址 数据线 复用方式选择位0 复用 1 非复用位3 2 EMD1 EMD0 工作模式选择位00 只用片内 4KB 01 不带块选择的分片方式10 带块选择的分片方式 11 只用片外位1 0 EALE1 EALE0 ALE宽度选择 仅复用时有效 00 11 1 4个SYSCLK周期 上次课内容回顾 片内数据存储器 256B 00 0FFH 低128B 00 7FH 00 1FH为4个工作寄存器区 每区8个 R0 R7 20 2FH 16B 既可以字节寻址也可以位寻址 30H 7FH 做一般数据存储器或堆栈用高128字节 80 0FFH 做一般数据存储器用 只能间接寻址特殊功能寄存器地址与片内数据存储器重叠 为了区分只能直接寻址字节地址是8倍数的可以位寻址 内容回顾 位寻址空间内部RAM中的0 x20 0 x2F单元部分SFR 字节地址为8的倍数的 外部数据存储器 XRAM 片内集成4KB提供一个扩展接口 EMIF 可扩到64KB可以用低端端口 P0 P3 也可以用高端端口 P4 P7 复用 非复用四种使用方式 只用片内 只用片外 两种分片模式读 写指令 8位方式 16位方式的MOVX指令 外部数据存储器工作模式 只用内部存储器 不带块选择的分片 带块选择的分片 只用外部存储器 外部存储器接口复用方式 复用方式16位MOVX指令的写时序 复用方式16位MOVX指令的读时序 外部存储器接口非复用方式 非复用方式16位MOVX指令的读时序 不带块选择的非复用方式8位MOVX指令的写时序 MOVEMIOCF 00010111B 无块选择的分片方式 非复用 使用低端端口MOVEMIOCN 13 EMIOCN必须设置成不属于片内XRAM空间的页地址MOVR0 F0H MOVP1 13H 高位地址直接送P1 不驱动地址总线高8位 MOVXA R0 A 13F0H 带块选择的复用方式8位MOVX指令的写时序 MOVEMIOCF 00001011B 带块选择的分片方式 复用 使用低端端口MOVEMIOCN 13 高位地址送EMIOCNMOVR0 F0H MOVXA R0 A 13F0H 2 3CIP 51指令介绍 与标准MCS 51指令集完全兼容 指令共111条 在二进制码和功能上与MCS 51产品完全等价 包括操作码 寻址方式和对PSW标志的影响 指令时序与标准8051不同 CIP 51中机器周期与时钟周期相等 MCS 51中机器周期 12 时钟周期 采用流水线结构 大多数指令执行所需的时钟周期数与指令的字节数一致 条件转移指令 不发生转移时比发生转移时少一个时钟周期 2 3 1寻址方式 1 根据指令中给出的地址码 寻找操作数真实有效地址的方式 共七种 1 寄存器寻址指令中地址码给出的是某一通用寄存器的编号 寄存器的内容为操作数 如 MOVA R0 A R0 可为R0 R7 ACC DPTR B2 直接寻址直接寻址时 指令中地址码部分直接给出操作数的有效地址 如 MOVA 4FH A 0 x4F 2 3 1寻址方式 2 3 寄存器间接寻址指令中给出的寄存器中的内容为操作数的地址 而不是操作数本身 即寄存器内容为地址指针 仅R0 R1 DPTR PC可以 如 MOVA R1 A R1 注意 为间接寻址的标志 立即寻址指令中地址码部分给出的就是操作数 如 MOVA 6FH A 0 x6F注意 不要漏掉 号 内容回顾 寻址方式立即寻址 寄存器寻址直接寻址寄存器间接寻址 R0 R1 DPTR基址 变址寻址MOVC A PC A DPTR相对寻址位寻址 2 3 1寻址方式 3 5 变址寻址操作数地址 变址寄存器的内容 偏移量 如 MOVCA A DPTR A A DPTR 又称基址 变址寻址 基址寄存器可以是DPTR或PC 变址寄存器只能是A 只能用于程序存储器的读操作 数据表 6 相对寻址转移目标地址 PC 本条指令的地址 2 偏移量rel 如 SJMPrel PC PC 2 rel7 位寻址 位地址的直接寻址方式 操作数是二进制数的某一位 位寻址区和部分SFR SETBbit bit 1 程序计数器PC 补充 存放下一条要执行的指令的地址51单片机复位后 PC 0000H 所以从地址0处开始执行程序每取出一个指令字节后会自动加1 所以一条指令取出后 PC自动指向下一条指令例如 1005HSJMP80H执行后 程序转到1005H 2 128 0F87H注 rel为8位补码数据 PC PC 1 PC 2 PC 2 rel 2 3 251指令集 共111条 按其功能可分五大类 算术运算指令逻辑运算指令数据传送指令布尔运算指令程序分支指令 1 数据传送指令 1 数据传送指令 访问数据存储器指令 访问程序存储器指令 2条 访问片内数据存储器指令 访问片外数据存储器指令 一般传送指令 8位 15条 16位 1条 特殊传送指令 堆栈指令 2条 数据交换指令 字节交换 3条 半字节交换 1条 1 数据传送指令 2 MOV 一般传送指令 共有以下16种寻址格式 MOVA Rn A Rn MOVA direct A direct MOVA Ri A Ri MOVA data A dataMOVRn A Rn A MOVRn direct Rn direct MOVRn data Rn data 以A为目的 以Rn为目的 1 数据传送指令 3 MOVdirect A direct A MOVdirect Rn direct Rn MOVdirect direct direct direct MOVdirect Ri direct Ri MOVdirect data direct dataMOV Ri A Ri A MOV Ri direct Ri direct MOV Ri data Ri dataMOVDPTR data16 DPTR data16 direct为目的 Ri为目的 1 数据传送指令 4 MOVC 查表指令 MOVCA A DPTR A A DPTR MOVCA A PC PC PC 1 A A PC 例 MOVA 03HMOVDPTR TABLEMOVCA A DPTR TABLEDB 0123456789 结果 A 33H 1 数据传送指令 5 MOVX 外部数据存储器读 写指令 也用于Flash编程 MOVXA DPTR A DPTR MOVXA Ri A Ri MOVX DPTR A DPTR A MOVX Ri A Ri A 注意 8位MOVX指令的高8位地址由EMIOCN提供 读 写 例 XRAM 1000H 2000H 方法1 MOVDPTR 1000HMOVXA DPTRMOVDPTR 2000HMOVX DPTR A方法2 MOVEMIOCN 10HMOVR0 00HMOVXA R0MOVEMIOCN 20HMOVX R0 A 数据传送指令举例 补充 1 数据传送指令 5 PUSH 压栈 将数据推进堆栈PUSHdirect SP SP 1 SP direct POP 出栈 将数据由堆栈顶端取出POPdirect direct SP SP SP 1注意 堆栈只能按字节操作 压栈指针加1 向上生成 出栈指针减1 与80 x86相反 只能用直接寻址 PUSHACC PUSHA 1 数据传送指令 6 XCH 字节交换 XCHA Rn A Rn XCHA direct A direct XCHA Ri A Ri XCHD 半字节交换 XCHDA Ri A 3 0 Ri 3 0 数据传送指令举例 补充 设内部RAM40H 41H单元中连续存放4个压缩的BCD码数据 编程将其倒序排列 MOVA 41HSWAPAXCHA 40HSWAPAMOV41H A 2 算术运算指令 加法 ADD 加法 指令 有4种寻址格式 ADDA Rn A A Rn n 0 7 ADDA direct A A direct ADDA Ri A A Ri i 0 1 ADDA data A A dataADDC 带进位加法 指令 有4种寻址格式 ADDCA Rn A A Rn CY ADDCA direct A A direct CY ADDCA Ri A A Ri CY ADDCA data A A data CY 结果影响PSW的CY AC OV 2 算术运算指令 加法 DA 十进制调整 指令 将A累加器内容作BCD码调整 DAA 若AC 1或A3 0 9 则A A 0 x06 若CY 1或A7 4 9 则A A 0 x60INC 加1 指令 INCA A A 1INCdirect direct direct 1INC Ri Ri Ri 1INCRn Rn Rn 1INCDPTR DPTR DPTR 1 加法指令举例 补充 61H 60H 63H 62H 61H 60HMOVR0 60HMOVR1 62HMOVA R0ADDA R1MOV R0 AINCR0INCR1MOVA R0ADDCA R1MOV R0 A R0 R1 R1 R0 2 算术运算指令 减法 SUBB 带借位减法指令 SUBBA Rn A A Rn CY SUBBA direct A A direct CY SUBBA Ri A A Ri CY SUBBA data A A data CY 结果影响PSW的CY AC OV DEC 减1 指令DECA A A 1DECdirect direct direct 1DEC Ri Ri Ri 1DECRn Rn Rn 1 无不带借位的减法指令SUB DECDPTR 算术运算指令举例 补充 十进制减法 BCD减法 20H 21H 22H CLCCMOVR0 20HMOVR1 21HMOVA 9AHSUBBA R1 求补 变减法为加法ADDA R0DAAINCR1MOV R1 A 无BCD码减法调整指令 应变减法为加法 补码 2 算术运算指令 乘 除法 MUL 乘法指令 MULAB A B BA若运算后B 0 则置OV 1 DIV 除法 指令 将累加器A和寄存器B作无符号相除 DIVAB A B A 商 B 余数 除法指令举例 补充 将A中的数转换成3位BCD数 百位存放在片内RAM的20H单元 十 个位存放在21H单元中 分析 A 100 商 百位 20H余数 10 商 十位 21H 余数 个位 21HMOVB 100DIVABMOV20H AMOVA BMOVB 10DIVABSWAPAADDA BMOV21H A A 11111000B 248 3 逻辑运算指令 与 ANL 逻辑与指令 共有以下6种寻址格式 ANLA Rn A A Rn ANLA direct A A direct ANLA Ri A A Ri ANLA data A A dataANLdirect A direct direct A ANLdirect data direct direct data常用于将数据的某些位清0 3 逻辑运算指令 或 ORL 逻辑或指令 共有以下6种寻址格式 ORLA Rn A A Rn ORLA direct A A direct ORLA Ri A A Ri ORLA data A A dataORLdirect A direct direct A ORLdirect data direct direct data常用于将数据的某些位置1 3 逻辑运算指令 异或 XRL 逻辑异或指令 共有以下6种寻址格式 XRLA Rn A A Rn XRLA direct A A direct XRLA Ri A A Ri XRLA data A A dataXRLdirect A direct direct A XRLdirect data direct direct data常用于将数据的某些位取反 思考 将A的低4位取反 高4位保持不变 3 逻辑运算指令 A清0 取反 移位 CLR 累加器清零指令 将累加器A内容清除为0 CLRA A 0CPL 累加器取反指令 将累加器A内容每位求反 CPLA A A 的每位求反 即0 1 1 0RL 累加器左移指令 将累加器A的内容左环移一位 RLARLC 累加器带进位左移指令 将累加器A的内容与进位左环移一位 RLCA 3 逻辑运算指令 A移位 交换 RR 累加器右移指令 将累加器A的内容右环移一位 RRA RRC 累加器带进位右移指令 将累加器A的内容与进位右环移一位 RRCA SWAP 4位互换指令 将累加器A的高4位与低4位互换 SWAPA 逻辑运算指令举例 补充 将累加器A中压缩BCD码拆成两个非压缩BCD码 低位存入30H单元 高位存入31H单元 PUSHACCANLA 0FHMOV30H APOPACCSWAPAANLA 0FHMOV31H A 05H 03H 4 布尔运算指令 1 CLR 清除 可将CY或可位寻址的位清0 CLRC CY 0CLRbit bit 0SETB 置位 可将CY或可位寻址的位置1 SETBC CY 1SETBbit bit 1CPL 取反 可将CY标志或可位寻址的位取反 CPLC CY CY CPLbit bit bit 4 布尔运算指令 2 ANL 与 ANLC bit CY CY bit ANLC bit CY CY bit ORL 或 ORLC bit CY CY bit ORLC bit CY CY bit MOV 位传送指令 MOVC bit CY bit MOVbit C bit CY 5 程序分支指令 1 JC 有进位跳转 JCrel 若CY 1则PC PC 2 rel 否则PC PC 2JNC 无进位跳转 JNCrel 若CY 0则PC PC 2 rel 否则PC PC 2JB 为1跳转 JBbit rel 若bit 1则PC PC 3 rel 否则PC PC 3JNB 为0跳转 JNBbit rel 若bit 0则PC PC 3 rel 否则PC PC 3JBC 为1跳转并清除 JBCbit rel 若bit 1则PC PC 3 rel且bit 0 否则PC PC 3 5 程序分支指令 2 JZ A为0跳转 JZrel 若 A 0则PC PC 2 rel 若 A 0则PC PC 2JNZ A为非0跳转 JNZrel 若 A 0则PC PC 2 rel 若 A 0则PC PC 2CJNE 比较不相等跳转 CJNEA direct rel 若 A direct 则跳转CJNEA data rel 若 A data则跳转CJNERn data rel 若 Rn data则跳转CJNE Ri data rel 若 Ri data则跳转 5 程序分支指令 3 DJNZ 减1不为0跳转 DJNZRn rel Rn Rn 1 若 Rn 0则PC PC 2 rel 若 Rn 0则PC PC 2DJNZdirect rel direct direct 1 若 direct 0则PC PC 3 rel 若 direct 0则PC PC 3 5 程序分支指令 4 LJMP 长跳转指令 LJMPaddr16 PC addr16AJMP 短跳转指令 AJMPaddr11 PC PC 2 PC10 0 addr11SJMP 相对跳转指令 SJMPrel PC PC 2 PC PC relJMP 散转指令 JMP A DPTR PC A DPTR 5 程序分支指令 5 LCALL 长调用指令 LCALLaddr16 PC PC 3 SP SP 1 SP PC7 0 SP SP 1 SP PC15 8 PC addr16ACALL 短调用指令 ACALLaddr11 PC PC 2 SP SP 1 SP PC7 0 SP SP 1 SP PC15 8 PC10 0 addr11 5 程序分支指令 6 RET 子程序返回 RET PC15 8 SP SP SP 1 PC7 0 SP SP SP 1RETI 中断返回 RETI PC15 8 SP SP SP 1 PC7 0 SP SP SP 1 清除相应中断优先级状态位NOP 空操作 NOP PC PC 1 作业一 P77习题2 2 3 5 6 2 4中断系统 2 4 1中断概念 中断服务程序1 CPU执行流程主程序 中断嵌套 低级中断服务程序 主程序 高级中断服务程序 2 4 1中断的概念 中断 中断系统中断源中断响应 中断服务 中断返回 断点 中断向量中断允许 中断屏蔽中断优先级中断嵌套单级中断系统 多级中断系统 2 4 2C8051F的中断系统 中断源 22个 中断允许寄存器 中断优先级寄存器 1 中断源 共22个 P41表2 5 分外部中断 串口 UART0 UART1 SPI SMBus等 定时 计数器 电压比较器 A D转换中断等 外部中断源与MCS 51兼容的外部中断0 1 INT0 INT1 边沿触发 上升沿或下降沿 的外部中断6 7 2 定时 计数器中断由内部定时器溢出产生 故它们属于内部中断C8051F020有5个16位定时 计数器 其中3个 T0 T2 与MCS 51兼容 PCA 可编程计数器阵列 中断 1 中断源 2 3 串行口中断由内部串行口产生 故也是一种内部中断 C8051F020中有2个UART串行口 UART0 UART1 发送和接收共用一个中断源 通过判断TI和RI标志 区分是发送中断还是接收中断 SPI SMBus中断源 4 其它中断源C8051F020还有电压比较器 A D转换 晶振准备好等中断源 内容回顾 指令系统mov movx movc push pop xch xchdadd addc inc daa subb dec mul divanl orl xrl clr rl rlc rr rrc swapclr setb cpl orl movjc jnc jb jnb jbc jz jnz cjne ljmp ajmp sjmp jmp lcall acall ret reti nop中断系统基本概念C8051F中断系统 内容回顾 中断源 22个 中断允许寄存器 中断优先级寄存器 中断控制 1 中断使能控制采用两级中断使能控制C8051F对所有的中断源的开放和屏蔽 总控制位EA 每个中断源都有单独的二级中断允许控制位受中断允许寄存器IE EIE1 EIE2控制 2 中断优先级别的设定每个中断源都可以设置为高优先级和低优先级 由中断优先级寄存器IP EIP1 EIP2统一管理 中断控制 内容回顾 中断源共22个 INT0 INT1 T0 T1 T2 UART0 中断使能控制两级控制 总控位EA 每个中断源的分控位 IE EIE1 EIE2 中断优先级高 低 IP EIP1 EIP2 同级的查询顺序中断响应时间 5 18个时钟周期硬件动作 置位优先级状态触发器 断点入栈 执行LCALL转中断入口 中断允许寄存器IE EA 总控位 IEGF0 通用标志位 其它为分允许位1 允许 0 禁止操作方法字节操作 如 MOVIE 82H位操作 如 SETBEASETBET0 允许T0中断 扩展中断允许寄存器EIE1 EIE2 中断允许寄存器EIE1各位的定义如下 中断允许寄存器EIE2各位的定义如下 中断优先级寄存器IP 0 低优先级 1 高优先级低优先级可以被高优先级中断嵌套 反之不能 同级中断不能实现嵌套 扩展中断优先级寄存器EIP1 EIP2 相同优先级的硬件查询顺序 中断源同级时的优先顺序外部中断0定时器0中断外部中断1定时器1中断串行口0中断定时器2中断 串行口1中断外部晶振准备好 P41表2 5 3 中断响应过程 响应时间 最快为5个时钟周期 1个周期用于检测中断 4个周期完成对ISR的长调用 LCALL 如果申请中断时CPU正在执行RETI指令 则需要再执行一条指令才能进入中断服务程序 最长为18个时钟周期 1个时钟周期检测中断 5个时钟周期执行RETI 8个时钟周期完成DIV指令 4个时钟周期执行对ISR的长调用 LCALL 3 中断响应过程 硬件动作 为实现嵌套 先置位相应优先级状态触发器 不可寻址 用于指示CPU开始处理的中断的优先级别 执行一条硬件子程序长调用指令 LCALL 转到相应ISR入口3 清除中断请求标志 有些中断源如RI TI不能自动清除 需要在中断服务程序中用软件清除 4 PC 断点 入栈 但不保护PSW 将ISR的入口 中断向量 P41表2 5 间隔8B 通常安排一条相应的跳转指令 地址送程序计数器PC 4 外部中断触发方式的选择 外部中断0 1 INT0 INT1 有两种触发方式 低电平触发方式每时钟周期采样一次 外部中断输入信号必须有效 保持低电平 至CPU响应该中断为止 同时在中断服务程序返回之前必须清除中断请求信号 否则CPU在中断返回后又会再次响应中断 负边沿触发方式外部中断标志触发器锁存外部中断输入线上的负跳变 即使暂时得不到CPU响应 中断请求标志也不会丢失 2 5端口输入 输出 并行口 C8051F020有8个8位并行I O端口 64个数字I O引脚 低端端口 P0 P3 既可以按位寻址也可以按字节寻址 高端端口 P4 P7 只能按字节寻址 可以在外部扩展时提供总线信号 AB DB CB 给片内资源 数字资源 模拟资源 提供对外引脚 仅P0 P3 所有引脚都耐5V电压 都可以被配置为漏极开路或推挽输出方式和弱上拉 端口I O单元的原理框图 1 0 1 1 推挽 PUSH PULL 输出方式 可以正常输出0和1 端口I O单元的原理框图 2 1 0 0 0 1 0 1 高阻 漏极开路 Open Drain 输出和弱上拉 有低电平和高阻状态两种输出 端口I O单元的原理框图 3 1 0 0 0 1 数字输入 0 漏极开路输出1 引脚高阻态输出 可以作输入 端口I O单元的原理框图 4 1 0 0 0 1 模拟输入 1 2 5 1优先权交叉开关译码器 C8051F020内有大量的数字资源 本身没有对外的引脚 需通过P0 P3才能使用 P0 P3中的每个引脚既可定义为通用的端口I O GPIO 引脚 又可以分配给一个数字外设或功能 例如 UART0或 INT1 引脚的分配通过优先权交叉开关译码实现的 UART0优先权最高 而CNVSTR优先权最低 通过3个特殊功能寄存器XBR0 XBR1 XBR2实现 对应使能位置1时 交叉开关将端口引脚分配给相应的外设 内容回顾 并行I O口8个8位并行口P0 P7低端端口P0 03 可位寻址 高端端口P4 P7可用于扩展存储器 对外的I O 通过交叉开关作内部资源的I O线有输出 推挽 漏极开路 输入 数字输入 模拟输入 等工作方式交叉开关用XBR0 XBR2将P0 P3的端口线按优先级顺序配给内部资源 低端I O端口的功能框图 存储器扩展 模拟量输入 优先权交叉开关译码表 UART0SPISMBusUART1PCA 高 低 点的含义 2 5 2端口I O初始化 1 1 配置端口引脚的输出方式使能交叉开关 将交叉开关使能位XBARE XBR2 6 置1 否则P0 P3的输出驱动被禁止 设置PnMDOUT中的对应位确定输出方式 1 推挽方式 0 漏极开路方式 缺省方式 如 设置P3MDOUT 7为1 则将P3 7配置为推挽方式 2 配置端口引脚为数字输入使能交叉开关 置输出方式为漏开 向端口数据寄存器写 1 如 设置P3MDOUT 7为0 并置P3 7为1即可将P3 7配置为数字输入 I O端口结构 2 5 2端口I O初始化 2 3 外部中断 IE6和IE7 P3 6和P3 7可配置为边沿触发的中断源 用IE6CF P3IF 2 和IE7CF P3IF 3 位可将其配置为下降沿或上升沿触发 4 弱上拉每个端口引脚都有一个内部弱上拉部件 在引脚与VDD之间提供阻性连接 约100k 在缺省情况下该上拉器件被使能 弱上拉可以被总体禁止 通过向弱上拉禁止位 WEAKPUD XBR2 7 写 1 实现 当任何引脚被驱动为逻辑0时 弱上拉自动取消 端口1作为模拟输入时 弱上拉也被禁止 2 5 2端口I O初始化 3 5 配置P1的引脚为模拟输入向P1MDIN对应位写0即可将端口引脚配置为模拟输入 将一个端口引脚配置为模拟输入的过程 硬件自动完成 1 禁止引脚的数字输入路径 2 禁止引脚的弱上拉部件 3 使交叉开关在为数字外设分配引脚时跳过该引脚 6 外部存储器接口引脚分配如外部存储器接口 EMIF 设置在低端口 EMIFLE XBR2 1 外部存储器低端口使能位 位应置为1 以使交叉开关跳过P0 7 WR P0 6 RD 和P0 5 ALE 复用方式时 复用方式时的交叉开关译码表 不能分配 非复用方式时的交叉开关译码表 不能分配 无ALE 2 5 3端口4 7 P4 P7的所有端口引脚都可用作通用I O GPIO 通过读和写相应的端口数据寄存器访问每个端口 这些端口数据寄存器是一组只能按字节寻址的特殊功能寄存器 与P0 P3一样有 1 配置端口引脚的输出方式2 配置端口引脚为数字输入3 弱上拉4 外部存储器接口 通知 请班长尽快到计算机楼313找包松老师安排实验具体时间 内容回顾 并行I O端口8个8位 P0 P7低端端口 P0 P3 GPIO 交叉开关 系统并行扩展 字节或位高端端口 P4 P7 GPIO 只能字节方式访问工作方式输出 推挽方式 正常输出0或1 漏极开路方式 输出1时为高阻状态 输入 数字输入 先设输出漏开 模拟输入 仅P1口 外部中断 P3 6 P3 7外部存储器扩展交叉开关配置方法 XBR0 XBR2 PnMDOUT PnMDIN P3IF 可查看该单片机的数据手册 2 5 5交叉开关引脚分配示例 按如下要求配置交叉开关 系统使用UART0 SMBus UART1 INT0和 INT1 共8个引脚 将外部存储器接口配置为复用方式并使用低端端口 将P1 2 P1 3和P1 4配置为模拟输入 以便用ADC1测量加在这些引脚上的电压 配置步骤 1 按UART0EN 1 UART1E 1 SMB0EN 1 INT0E 1 INT1E 1和EMIFLE 1设置XBR0 XBR1和XBR2 则有 XBR0 0 x05 XBR1 0 x14 XBR2 0 x06 P522 将EMIF配置为低端口复用方式 PRTSEL 0 EMI0CF 5 EMD2 EMIOCF 4 0 EMIOCF 0 x00 P263 P1 2 P1 4配置为模拟输入方式 设置P1MDIN为0 xE3 P534 设置XBARE XBR2 6 1 使能交叉开关 XBR2 0 x46 5 TX0 TX1 ALE RD WR P0 0 P0 4 7 的输出设置为推挽方式 P0MDOUT 0 xF1 6 P2 P3设为推挽方式 P2MDOUT 0 xFF P3MDOUT 0 xFF 7 禁止模拟量的输出驱动器 P1MDOUT 0 x00 P1 0 xFF BXR2 1 实例的交叉开关配置表 交叉开关配置C51代码 VoidPortInit void XBR0 0 x05 允许UART0 SMBUSXBR1 0 x14 允许 INT1 INT0XBR2 0 x46 允许UART1 使能交叉开关P1MDIN 0 xE3 P1 2 P1 4为模拟输入EMIOCF 0 x00 EMIF复用 低端口 ALE 1时钟周期P0MDOUT 0 xF1 TX0 TX1 ALE RD WR为推挽方式P1MDOUT 0 x00 P1为漏极开路输出方式P1 0 xFF P1口高阻态 禁止模拟输入引脚的输出驱动P2DMOUT 0 xFF P2位推挽方式输出 地址高8位P3MDOUT 0 xFF P3口为推挽方式输出方式 地址低8位 数据复用 也可以使用Config软件进行配置 P57 内容回顾 中断源共22个 INT0 INT1 T0 T1 T2 UART0 中断使能控制两级控制 总控位EA 每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国邮政储蓄银行2025年可持续发展报告
- 小学预防盗窃工作制度
- 工会清廉工作制度汇编
- 市政府值班工作制度
- 幼儿园法律工作制度
- 征地拆迁部工作制度
- 2026年工业废水处理工技能实操题库及答案
- 2026年实际控股合同(1篇)
- 系统性能优化方案与实施指南
- 行业产品说明书模板简化信息传达
- 医院手术室净化系统维保方案
- QES管理体系审核检查表完整范例
- JGJT341-2014 泡沫混凝土应用技术规程
- 薄膜材料与技术(全套课件)上
- EPC总承包项目采购方案
- 51单片机读写SD卡程序实例完整版
- 人教新课标曹禺和语文教师谈《雷雨》
- 情绪压力管理与阳光心态
- SB/T 10782-2012钟表销售服务规范
- GB/T 17466.24-2017家用和类似用途固定式电气装置的电器附件安装盒和外壳第24部分:住宅保护装置和其他电源功耗电器的外壳的特殊要求
- 安全风险辨识记录
评论
0/150
提交评论