分享
分享赚钱 收藏 举报 版权申诉 / 58

类型凌阳单片机讲义.pdf

  • 上传人:精品资料
  • 文档编号:11109682
  • 上传时间:2020-02-07
  • 格式:PDF
  • 页数:58
  • 大小:1.22MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    凌阳单片机讲义.pdf
    资源描述:

    1、 16 位单片机原理及应用 讲义 桂林电子科技大学 电子工程学院 黄 新 2008 年 04 月 目 录 第 1 章 SPCE061A单片机简介 . 1 1.1 凌阳 16 位单片机 . 1 1.2 SPCE061A简介 . 1 1.2.1 性能 1 1.2.2 结构概 览 . 1 1.2.3 最小系 统 . 2 1.2.4 SPCE061A开发方法 2 1.2.5 应用领 域 . 3 第 2 章 SPCE061A单片机 的硬件结构 . 3 2.1 nSP的内核结构 3 2.1.1 ALU 3 2.1.2 寄存器 组 . 3 2.1.3 数据总 线和地址总线 . 4 2.2 SPCE061A的

    2、片内存储器结构 . 4 2.2.1 SRAM 4 2.2.2 堆栈 . 5 2.2.3 FLASH 5 2.3 SPCE061A 的输入/ 输 出接口 . 5 2.3.1 I/O端口 结构 . 5 2.3.2 I/O端口 的组合控制 . 6 2.3.3 B口的特 殊功能 6 2.3.4 I/O口位 操作宏 . 7 2.4 SPCE061A的时钟电路 . 7 2.4.1 实时时 钟电路 . 7 2.4.2 锁相环 PLL振荡器 8 2.4.3 系统时 钟 . 8 2.4.4 时间基 准 . 9 2.4.5 睡眠与 唤醒 . 10 2.4.6 看门狗 . 10 2.5 定时/ 计数 器 . 11

    3、2.5.1 简介 . 11 2.5.2 结构 . 11 2.6 模/ 数转 换器ADC 14 2.6.1 ADC直 流电气特性 . 14 2.6.2 ADC的控 制 . 14 2.7 数/ 模转 换器DAC 17 2.8 电源管理 18 2.8.1 低电压 监测LVD . 18 2.8.2 低电压 复位LVR . 19 2.9 串行接口 19 2.9.1 串行设 备输入输出端口SIO 19 2.9.2 通用异步串行接口UA RT 21 2.10 中断系 统 23 2.10.1 中断 的概述 . 23 2.10.2 SPCE061A中断系统 23 2.10.2.1 中断 源 . 24 2.10.

    4、2.2 中断 控制 25 2.10.2.3 中断 响应 26 2.10.2.4 中断 服务流程 27 2.10.3 中断 系统的应用 . 28 2.10.3.1 单中 断源的应用 28 2.10.3.2 多中 断源应用 29 第 3 章 指 令系统 . 29 3.1 概述及符 号约定 29 3.1.2 指令分 类 . 30 3.1.3 寻址方 式 . 31 3.2 数据传 送指令 31 3.2.1 通用数 据传送 . 31 3.2.2 堆栈操 作 31 3. 3 算逻运 算类指令 . 32 3.3.1 加法运 算 32 3.3.2 减法运 算 32 3.3.3 比较运 算 32 3.3.4 乘

    5、法运 算 32 3.3.5 n项内积 运算 32 3.3.6 逻辑操 作 33 3.3.7 移位操 作 33 3.4 转移控制 类指令 33 3.4.1 软件中 断 33 3.4.2 子程序 调用指令 33 3.4.3 子程序 返回 34 3.4.4 有条件/ 无条件跳转 . 34 3.4.5 中断返 回 35 3.4.6 无条件 长跳转 35 3.4.7 其它控 制类指令 35 3.5 伪指令 . 35 3.5.1 概述 . 35 3.5.2 定义类 36 3.5.3 存储类 38 3.5.4 条件类 38 3.5.5 汇编方 式类 39 第 4 章C 语言 基础知识 . 39 4.1 数据

    6、与运 算 39 4.1.1 数据与 数据类型 . 39 4.1.2 常量、 变量、运算符与表达式 39 4.2 流程控制 语句 40 4.2.1 程序的 基本结构及控制语句 . 40 4.3 构造数 据类型 41 4.3.1 数组 . 41 4.3.2 指针 . 41 4.3.3 结构体和共用体 . 41 4.4 函数 42 4.4.1 函数的 定义形式 42 4.4.2 形式参 数与实际参数 42 4.4.3 函数的 返回值 42 4.4.4 函数调 用格式 42 4.4.5 函数调 用规则 42 4.4.6 C函数和 汇编函数的相互调用 43 4.5 unSP的C 语言嵌入式汇编 . 43

    7、 第 5 章 SPCE061A编程应 用 . 43 5.1 单一功能 模块程序编写的基本过程 43 5.2 各功能模 块编程应用举例 44 5.2.1 IO口应 用. 44 5.2.3 时间基 准应用 . 45 5.2.4 定时器 应用 . 46 5.2.5 ADC应用 . 46 5.2.6 DAC应用 . 46 5.3 系统编程 46 第 6 章 语音 处理应用介绍 . 49 6.1 语音基础 知识 49 6.1.1 音频概 述 49 6.1.2 音频采 样和量化 49 6.1.3 语音压 缩编码 49 6.1.4 语音识 别技术 49 6.1.5 语音合 成技术 50 6.1.6 用单片

    8、机处理语音 . 50 6.2 语音播放 50 6.2.1 单片机 实现语音播放的原理 . 50 6.2.2 语音播 放程序实例 . 50 6.3 语音录放 51 附录 SPCE061A头文件 . 52 16 位单片机原理及应用讲义 1 第 1 章 SPCE061A单片机简介 1.1 凌阳 16 位单片机 CPU 内核采用凌阳最新推出的 nsp(Microcontroller and Signal Processor)16 位微处理器芯片(以下简称nSP ) 。 nSP家族有以下特点: (1 )体积小、集成度高、可靠性好且易于扩展 各功能部件模块化地集成在一个芯片里,内部采用总线结构。 (2 )

    9、具有较强的中断处理能力 nSP 家族的中断系统支持 10 个中断向量及 10 余个中断源,适合实时应用领域。 (3 )高性能价格比 高寻址能力的 ROM、静 态 RAM 和多功能的 I/O 口,较高运算速度的 16 位 16 位的乘法运算指令和内积运算指令。 (4 )功能强、效率高的指令系统 指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持。 (5 )低功耗、低电压 弱振方式、空闲方式和掉电方式,极大地降低了其功耗。工作电压范围大,能在低电压供电时正常工作,且能用电池供电。 1.2 SPCE061A简介 1.2.1 性能 16 位n SP微处理器; 工作电压(CPU)VDD 为 2

    10、.43.6V(I/O )VDDH 为 2.45.5V; CPU 时钟:0.32MHz49.152MHz ; 2K 字 SRAM; 32K FLASH; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电仅为 2A3.6V ; 2 个 16 位可编程定时器/ 计数器(可自动预置初始计数值); 2 个 10 位 DAC(数 模转换)输出通道; 32 位通用可编程输入/ 输出端口; 14 个中断源可来自定时器 A / B,时 基,2 个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码 SACM_S240 方式( 2.4K 位/ 秒) ,能容纳 210 秒的语

    11、音数据; 锁相环 PLL 振荡器提供系统时钟信号; 32768Hz 实时时钟; 7 通道 10 位电压模 数转换器(ADC )和单通道声音模 数转换器; 声音模 数转换器输入通道内置麦克风放大器和自动增益控制(AGC )功能; 具备串行设备接口; 具有低电压复位(LVR )功能和低电压监测(LVD )功能; 内置在线仿真电路 ICE(In Circuit Emulator)接口; 具有保密能力; 具有 WatchDog 功能(由具体型号决定)。 1.2.2 结 构概览 SPCE061A的结构如 图 1 所示 16 位单片机原理及应用讲义 2 图1 SPCE061A 结构图 1.2.3 最 小系

    12、统 最小系统如 图 2 所示,在OSC0 、OSC1 端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。其它不用的电源端和地端接上 0.1F 的去藕电容提高抗干扰能力。 图2 SPCE061A 最小系统原理框图 1.2.4 SPCE061A开发方法 (1 )设计用户目标板 SPCE061A 最小系统,5V 和 3.3V 电源,外围接口电路 (2 )连接在线调试器 61 板使用 EZPROBE 接口 (3 )编写代码 分析任务要求,编写模块程序 (4 )仿真调试 下载模块程序,仿真通过,进行系统联调。 双 16位定时器/计数器7通道 10位 ADC单通道 A

    13、DC+AGCCPU时钟实时时钟FLASHRAM时基中断控制IOA15 - 0IOB15 - 0锁相环振荡器IOB0 (SCK) IOB1(SDA)低电压监测 /低电压复位 双通道10位 DAC串行输入输出接口AUD1AUD2MIC_IN32 管脚通用输入输出端口16 位微控制器unSP+ICEXI/RXOICE_SCKICE_SDAICE_ENCPVIOB7( RXD) IOB10( TXD)串行异步通讯接口Watchdog16 位单片机原理及应用讲义 3 图3 计算机、PROBE、用户目标板三者之间的连接示意图 1.2.5 应 用领域 智能家电:冰箱、空调、洗衣机 仪器仪表:电表、水表、煤气

    14、表、暖气表 工业控制:数控机床 智能家居控制器:安防系统 通讯产品:多功能录音电话、自动总机、语音信箱、数字录音系统产品 医疗设备、保健器械:电子血压计、红外体温监测仪、跑步机等 电子书籍、电教设备等 语音识别类产品:语音识别遥控器、智能语音交互式玩具等 第 2 章 SPCE061A单片机的硬件结构 2.1 nSP的内核结构 nSP的内核如 图 4 所示 ,它由总线、算术逻辑运算单元、寄存器组、中断系统及堆栈等部分组成,右边文字为各部分简要说明。 图4 nSP 的内核结构图 2.1.1 ALU nSP 的 ALU 在运算能力上很有特色,它不仅能做 16 位基本的算术逻辑运算,也能做带移位操作的

    15、 16 位算术逻辑运算,同时还能做用于数字信号处理的 16 位16 位的乘法运算和内积运算。 ( 1) 16 位算术逻辑运算 加、减、比较、取补、异或、或、与、测试、写入、读出等 16 位算术逻辑运算及数据传送操作。 ( 2)带移位操作的 16 位算术逻辑运算 操作数在经过 ALU 的算逻操作前可先进行移位处理,然后再经 ALU 完成算逻运算操作。 ( 3) 16 位 16 位的乘法运算和内积运算 内积运算:对多项乘积求和,花费 10n+6 个时钟周期,其中 n 为乘积求和的项数。 2.1.2 寄 存器组 8 个 16 位寄存器,可分为通用型寄存器和专用型寄存器两大类别。通用型寄存器包括:R1

    16、R4 ,作为16 位单片机原理及应用讲义 4 算术逻辑运算的源及目标寄存器。专用型寄存器包括 SP、 BP、 SR、 PC,是与 CPU 特定用途相关的寄存器。 ( 1)通用型寄存器 R1R4 通常可分别用于数据运算或传送的源及目标寄存器。而寄存器 R4、 R3 配对使用还可组成一个 32 位的乘法结果寄存器 MR;其中 R4 为结果的高字组, R3 为结果的低字组,用于存放乘法运算或内积运算结果。 ( 2)堆栈指针寄存器 SP SP 是在 CPU 执行压栈/ 出栈指令(push/pop )、子程序调用/ 返回指令(call/retf )以及进入中断服务子程序(ISR , Interrupt

    17、Service Routine) 或从 ISR 返回指令(reti )时自动减少(压栈)或增加(弹栈),以示堆栈指针的移动。堆栈的最大容量范围限制在 2K 字的 RAM 内,即地址为 0x0000000x0007FF 的存储器范围中。 ( 3)基址指针寄存器 BP nSP提供了一种方便的寻址方式,即变址寻址方式 BP+IM6;程序设计者可通过它直接存取 ROM与 RAM 中的各种数据,包括:局部变量(Local Variable)、函数参数(Function Parameter)、返 回地址(Return Address)等等;这在 C 语言程序中是特别有用的。 BP 除了上述用途外,也可做为

    18、通用寄存器 R5 用于数据运算或传送的源及目标寄存器。因此 BP 与 R5 是共享的,均代表基址指针寄存器。 ( 4)段寄存器 SR 有多种功能用途, SR 中有代码段选择字段(CS) 和数据段选择字段(DS) ,它们可分别与其它 16 位的寄存器合在一起形成 22 位地址线,用来寻址 4M 字容量的存储器。(注意: SPCE061A 只有 32K 字闪存,占一页存储空间,所以代码段选择字段(CS) 和数据段选择字段(DS) 在 SPCE061A 不用)。 算逻运算结果的各标志位 NZSC 亦储存于其中,即 SR 中间的 4 位(B6B9 )。CPU 在执行条件/ 无条件短跳转指令(JUMP

    19、)时需测试这些标志位以控制程序的流向。这些标志位的内容是: 进位标志 C:C=0 时表示运算过程中无进位或有借位产生,而 C=1 表示有进位或无借位产生。 零标志 Z :Z=0 时表示运算结果不为 0,Z=1 时表运算结果为 0。 负标志 N :标志位 N 是用来判断运算结果的最高位(B15 )为 0 还是为 1,N B15 符号标志 S :S=0 时表示运算结果不为负,S=1 时则表示运算结果(在二进制补码的规则下)为负。 ( 5)程 序计数器 PC( Program Counter) 作为程序的地址指针来控制程序走向的专用寄存器。CPU 每执行完当前指令,都会将 PC 值累加当前指令所要占

    20、据的字节数或字数,以指向下一条指令的地址。在nSP 里, 16 位的 PC 通常与 SR 寄存器的CS 选择字段共同组成 22 位的程序代码地址。 2.1.3 数 据总线和地址总线 nSP是 16 位单片机,它具有 16 位数据线和 22 位地址线。 22 位地址线最多可寻访 4M 字的存储容量。 2.2 SPCE061A的片内存储器结构 SPCE061A的片内存储器地址映射如 图 5 所示。单片机的存储器有 2K字的SRAM (包括堆栈区)和 32K字闪存(FL ASH)。 图5 SPCE061 内存映射表 2.2.1 SRAM SPCE061A 有 2K 字的 SRAM(包括堆栈区),其地

    21、址范围从 0x0000 到 0x07FF。前 64 个字,即 0x00000x003F地址范围内可采用 6位地址直接地址寻址方法,寻访速度为 2个 CPU时钟周期;其余 0x00400x07FF地址范围内存储器的寻访速度则为 3 个 CPU 时钟周期。 16 位单片机原理及应用讲义 5 2.2.2 堆栈 堆栈是在内存RAM 区专门开辟出来的按照“ 先进后出” 原则进行数据存取的一种工作方式如 图 6,主要用于子程序调用及返回和中断处理断点的保护及返回。 堆栈的最大容量范围限制在 2K字RAM 内,即其地址范围从 0X07FF到 0X0000 的存储器范围中。值得注意的是堆栈的生长方向,SPCE

    22、061A 系统复位后,SP初始化为 0x07FF,每执行PUSH 指令一次,SP指针减一。 图6 堆栈 2.2.3 FLASH 32K 字的内嵌式闪存被划分为 128 个页 (每个页存储容量为 256 个字),它们在 CPU 正常运行状态下均可通过程序擦除或写入。全部 32K 字闪存均可在 ICE 工作方式下被编程写入或被擦除。 2.3 SPCE061A 的输入/ 输出接口 输入/ 输出接口(也可简称为 I/O 口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。输出端口负责向外界输送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。nSP 内有

    23、并行和串行两种方式的 I/O 口。 2.3.1 I/O端口 结构 1) I/O 口特性 独立的 I/O 口逻辑电平(VDDIO):可接 VDDIO 范围: 3.35.5V。 多种输入方式:悬浮、上拉、下拉输入方式,适应不同的外围器件对接口要求。 按位设置每一位 I/O 口:可按位设置每一位的输入输出方式、状态。 2)两个并行 16 位 I/O 口 IOA 口:IOA0IOA6 :7 路普通 AD 输入端口;IOA0IOA7 :触键唤醒功能 IOB 口:外部中断输入;串行接口;PWM 输出等复用端口 A口和B 口的Data 、 Attribution和 Direction的设定值均在不同的寄存器

    24、里,用户在进行I/O 口设置时要特别注意这一点。I/O端口的组合控制设置如 表 1 所示,I/O口结构如 图 7 所示。 表1 I/O 端口的组 合控制设置 图7 I/O 结构 16 位单片机原理及应用讲义 6 ( 1) P_IOA/B_Data(读 /写 )(7000H) 读:读出是读 I/O 口管脚电平状态 写:写入是将数据写入 A 口的数据寄存器 ( 2) P_IOA/B _Buffer (读 /写 ) (7001H) 输入状态时,写入是将 A 口 Buffer 写入 A 口的 Data;读出则是从 A 口 Buffer 内读其数值。 输出状态时,写入输出数据到 A 口的数据寄存器。 对

    25、输出而言,P_IOA_Data 与 P_IOA_Buffer 是一样的。但对输入而言,P_IOA_Data 读的是 IO 的值,P_IOA_Buffer 读的是 buffer 内的值。 ( 3) P_IOA/B _Dir(读 /写 )(7002H) A 口的方向向量单元,用于用来设置 A 口是输入还是输出,即0 为输入,1 为输出。 ( 4) P_IOA/B _Attrib(读 /写 )(7003H) A 口的属性向量单元,用于 A 口属性向量的设置。 ( 5) P_IOA_Latch(读 )(7004H) 读该单元以锁存 A口上的输入数据,用于进入睡眠状态前的触键唤醒功能的启动(参见睡眠/

    26、唤醒部分)。 (6 )IOA 口特殊功能 IOA(7:0 )键唤醒:根据 IOA 低八位外接的电平状态唤醒单片机 IOA(6:0 )普通 AD 输入通道,10 位精度,此时打开的通道 I/O 口要为悬浮输入方式 2.3.2 I/O端口 的组合控制 设置端口 *P_IOA_Dir = 0xFF00; /设置 A 口的方向控制向量,IOA0IOA8 置低,IOA12IOA15 置高 *P_IOA_Attrib = 0xFF00; /设置 A 口的属性向量,IOA0IOA8 置低,IOA12IOA15 置高 *P_IOA_Data = 0x0FF0; /设置 A 口的数据向量,IOA0IOA3 与

    27、IOA12IOA15 置高 表2 I/O 口位 2.3.3 B口的 特殊功能 正如前面提到的, B口除了具有常规的输入/ 输出端口功能外,还有一些特殊的功能,如下 表 3表 3 所示: 表3 B 口的特殊功能 16 位单片机原理及应用讲义 7 注: 1、口位默认为带下拉电阻的输入管脚 2、PWM:脉宽调制(Pulse Width Modulation) P_ FeedBack(写 )(7009H) B 口工作方式的控制单元,用于控制 B 口的 IOB2(IOB3 )和 IOB4 (IOB5 )用作普通 I/O 口,或作为特殊功能口。其特殊功能包括以下两个部分: (1 )单个 IOB2 或 IO

    28、B3 口可设置为外部中断的输入口。 (2 )设置 P_ FeedBack 单元,再将 IOB2(IOB3 )和 IOB4 (IOB5 )之间连接一个电阻和电容形成反馈电路以产生振荡信号。 表4 P_FeedBack 的设置 IOB8 的控制向量 TAON 的设置 IOB8 的应用由控制向量 TAON 来进行控制。 1. TAON:TimerA 脉宽调制输出 APWMO 的允通信号(详细内容请参见定时器/ 计数器部分) 2. APWMO: TimerA脉宽调制的输出信号(详细内容请参见定时器/ 计数器部分) 图 8 为APWMO 信号输出波形 图8 APWMO 信号时序图 /将 IOB8 设置成

    29、同相低电平输出端口 *P_IOB_Dir = 0x0100; /设置 IOB8 口的方向控制向量 *P_IOB_Attrib = 0x0100; /设置 IOB8 口的属性向量 *P_IOB_Data = 0x0000; /设置 IOB8 口的数据向量 /设置 TimerA的 APWMO 信号的周期 Tapwmo=(12.288MHz / 512) / 16 = 1.5KHz, /设置信号的占空比 APWMO /Tduty= (3/16)*Tapwmo。详细内容请参见定时器/ 计数器部分 *P_TimerA_Ctrl=0x00F0; /选择计数频率(fosc/2) 与占空比(3/16) *P_

    30、TimerA_Data=0xFDFF; /设置 TimerA的计数初值 2.3.4 I/O口位 操作宏 #define Set_Bit(AB,Bit) *P_IO#AB#_Data = *P_IO#AB#_Buffer | 0x0001 VLVD 时,该位被置为“0” 。 SPCE061A具有 4 级电压监测低限:2.4V 、2.8V 、3.2 和 3.6V,可通过对P_LVD_Ctrl 单元编程进行控制,参见 图 17。假 定 VLVD=3.2V,当系统电压Vcc 低于 3.2V时,P_LVD_Ctrl 单元的第 15 位返回值为“1” ,这样,CPU可以通过可编程电压监测低限来完成低电压监

    31、测。系统默认的电压监测低限为 2.4V。 P_LVD_Ctrl(读 /写 )(7019H) 图17 低电压监测(LVD)/ 低电压复位(LVR) 16 位单片机原理及应用讲义 19 2.8.2 低电压复位 LVR 通过某种方式,使单片机内存各寄存器的值变为初始的操作称为复位。SPCE061A 复位电路如 图 18 所示, 在RESB 端加上一个低电平就可令其复位。该电路具有手动和上电复位两种功能。 图18 复位电路 当电源电压低于 2.2V时,系统会变得不稳定且易出故障。导致电源电压过低的原因很多,如电压的反跳、负载过重、电池能量不足。如果电源电压低于 2.2V时,会在 4 个时钟周期之后产生

    32、一个复位信号,使系统复位。LVR 时序如 图 19 所示。 图19 复位示意图 2.9 串 行接口 2.9.1 串 行设备输入输出端口 SIO SIO 为凌阳科技定义的同步串行通讯接口 1 位串行接口; 1 个 Clock(SCK )、1 个 Data(SDA ); 可设地址位数,或无地址模式; P_SIO_Ctrl(读/ 写 )(701EH) 用户必须通过设置 P_SIO_Ctrl (701EH) (读/ 写)单元的第 7 位,将 IOB0、 IOB1 分别设置为 SCK 管脚和 SDA管脚。如果该单元的第 6 位被设置为 “0”,串行输入/ 输出接口可以从用户指定的地址读出数据。该单元的第

    33、 3、 4 位的作用是让用户自行指定数据传输速度;而通过设置第 0、 1 位,可以指定串行设备的寻址位数。 SIO 的控制选择在 P_SIO_Ctrl 单元内进行,详见表 21。 16 位单片机原理及应用讲义 20 P_SIO_Ctrl 单元 关于CPU时钟 CPU_CLK请参考系统时钟部分。P_SIO_Data(读/ 写)(701AH) P_SIO_Data(读 /写 )(701AH) 该单元为接收/ 发送串行数据的缓冲单元 P_SIO_Addr_Low(读 /写 )(701BH) 串行设备起始地址的低字节(默认值为 00H) P_SIO_Addr_Mid(读 /写)(701CH) 串行设备

    34、起始地址的中字节(默认值为 00H) P_SIO_Addr_High(读 /写)(701DH) 串行设备起始地址的高字节(默认值为 00H) P_SIO_Start(读 /写 )(701FH) 向 P_SIO_Start(写)(701FH 如表 26)单元写入任意一个数值,可以启动数据传输。 向 P_SIO_Start单元写入任意一个数值,可以启动数据传输第一次对 P_SIO_Data (701AH)单元读写操作时会使 SIO根据地址寄存器的内容传输读 /写操作的起始地址再次读写 P_SIO_Data时,不再传送地址。 读出 P_SIO_Start(701FH)单元可获取 SIO 的数据传输状

    35、态,该单元的第 7 位 Busy 为占用标志位。 表20 P_SIO_Start P_SIO_Stop(写 )(7020H) 向 P_SIO_Stop(写)(7020H)单元写入任一数值,可以停止数据传输。通常,停止数据传输的终止指令应出现在激活数据传输的启动指令之前。但上电复位后的第一个启动命令之前不需要终止命令。 16 位单片机原理及应用讲义 21 图20 为 SIO 的读写操作时序。 2.9.2 通用异步串行接口UA RT UART 模块提供了一个全双工标准串行接口,用于完成 SPCE061A 与外设(如 PC 机)之间的串行通讯。 利用 UART IRQ 中断,可以同时完成 UART

    36、接口的接收发送数据的过程。 UART 模块的接收管脚 Rx 和发送管脚 Tx 分别与 IOB7 和 IOB10 共用。 ( 1) UART 数据帧格式 图21 UART 数据帧的格式 P_UART_Command1(写 )(7021H) UART 控制端口;控制寄偶校验;UART IRQ 中断;寄存器复位 表21 P_UART_Command1 P_UART_Command1(写)(7021H)单元的缺省值为 00H。 P_UART_Command2(写 )(7022H) 该单元写入时为 UART 数据发送/ 接收控制端口,第 6、 7 位分别控制着数据发送和接收管脚的允通/ 禁止。P_UAR

    37、T_Command2(写)(7022H) 单元的缺省值为 00H。 此时 IOB7 和 IOB10 必须分别被设置为输入和输出管脚作为 Rx 和 Tx 管脚。当发送管脚被允通时, IOB10 Tx 输出管脚将自动被置为高电平。 P_UART_Command2(读 )(7022H) 该单元读出为 UART 状态信息。第 7 位是 RxRDY 标志位,当接收到数据时该标志位被置为“1 ”,读1 0 b7 RxIntEn 允许 UART 接收中断(由 RxRDY 触发) 禁止 UART 接收中断 b6 TxIntEn 允许 UART 发送中断(由 TxRDY 触发) 禁止 UART 发送中断 b5

    38、I_Reset 内部复位信号复位 内部复位信号置位 b4 b3 Parity 激活偶校检功能 激活奇校检功能 b2 P_Check 激活奇偶校验功能 屏蔽奇偶校检功能 16 位单片机原理及应用讲义 22 P_UART_Data 单元将清除该标志位。第 6 位是 TxRDY 标志位,该标志位被置为“1 ”,表示发送器的数据缓存器为空,已准备好可以发送写入 P_UART_Data 单元的数据。 表22 读P_UART_Command2 单元 以上错误信号代表传输过程可能出现的错误。表 29 给出了出错的原因及解决方法。 表23 出错的原因及解决方法 P_UART_Data(读 /写 )(7023H

    39、) P_UART_BaudScalarLow(读 /写 )(7024H) P_UART_BaudScalarHigh (读 /写 )(7025H) P_UART_BaudScalarHigh (7025H)和 P_UART_BaudScalarLow(7024H)单元的组合控制数据的传输速率( 波特率)。UART 波特率的计算公式如下: 波特率= ( Fosc / 4 ) / Scale当 Fosc=49.152MHz, 40.960MHz 或 32.768MHz 波特率= ( Fosc / 2 ) / Scale当 Fosc=24.576MHz 或 20.480MHz 由此可得出 Scale

    40、 的值 (Scale 为 7024H 单元和 7025H 单元组成的十进制整数)。 表 30 列出当 Fosc = 24.576MHz 或 49.152MHz 时常用的波特率值。 表24 常用的波特率值 16 位单片机原理及应用讲义 23 UART 使用常见问题 1)UART 与 RS232 电平兼容问题 SPCE061A 输出的是 TTL 的 UART 信号,而 PC 端的为 RS232 电平信号,两者间要通过 232 电平转换才能实现通讯。 2)串口通讯速率匹配 当通讯双方速率不匹配时,通常接收到的可能是错误数据。 2.10 中断系 统 2.10.1 中 断的概述 中断是为处理器对外界异步

    41、事件具有处理能力而设置的,中断技术的引入把计算机的发展和应用大大地推进一步。因此中断功能的强弱已成为衡量一台计算机性能的重要指标。 ( 1)中断 中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因,而必须终止原程序的执行,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序过程。 ( 2)中断源 中断源是指在计算机系统中向 CPU 发出中断请求的来源。 ( 3)中断优先级 给众多中断源定义一个优先顺序,即所谓的优先级排队。中断优先级越高,则响应优先权就越高。 ( 4)中断嵌套 当 CPU 正执行中断服务程序时,又有中断优先级更高的中断申请产生,如果 CPU 能

    42、够暂停对原来的中断处理程序,转而去处理优先级更高的中断请求,处理完毕后,再回到原低级中断处理程序。 图22 中断嵌套示意图 ( 4)中断响应的过程 中断请求 现场保护 中断服务 清中断请求标志位 恢复现场 返回 2.10.2 SPCE061A中断系统 14 个中断源 两级中断优先级,两级嵌套 每个中断源单独设置开或关 SPCE061A 的中断类型 SPCE061A 的结构给出了三种类型的中断:软件中断、异常中断和事件中断。 1) 软件中断 软件中断是由软件指令 break 产生的中断。软件中断的向量地址为 FFF5H 2)异常中断 异常中断表示为非常重要的事件,一旦发生,CPU 必须立即进行处

    43、理。目前 SPCE061A 定义的异常中16 位单片机原理及应用讲义 24 断只有复位一种。 3)事件中断 SPCE061A 的事件中断可采用两种方式:快速中断请求即 FIQ 中断和中断请求即 IRQ 中断。这两种中断都有相应的总使能。 中断向量和中断源: 共有 9 个中断向量即 FIQ、IRQ0 IRQ6 及 UART IRQ。这 9 个中断向量共可安置 14 个中断源供用户使用,其中有 3 个中断源可安置在 FIQ 或 IRQ0IRQ2 中,另有 10 个中断源则可安置在 IRQ3IRQ6 中。还有一个专门用于通用异步串行口 UART 的中断源,须安置在 UART IRQ 向量中。 2.1

    44、0.2.1 中断 源 SPCE061A 单片机的中断系统有 14 个中断源分为两个定时器溢出中断、两个外部中断、一个串行口中断、一个触键唤醒中断、7 个时基信号中断、PWM 音频输出中断。如下表 26。 表25 中断源列表 从表中可以看到每个中断入口地址对应多个中断源,因此在中断服务程序中需通过查询中断请求位来判断是那个中断源请求的中断。 ( 1)定时器溢出中断源 定时器溢出中断由 SPCE061A 内部定时器中断源产生,故它们属于内部中断;在 SPCE061A 内部有两个16 位定时器 /计数器,定时器 TimerA/TimerB在定时脉冲作用下从预置数单元开始加计数, 当计数为“ 0xFF

    45、FF”时可以自动向 CPU 提出溢出中断请求。 ( 2)外部中断源 SPCE061A 单片机有两个外部中断,分别为 EXT1 和 EXT2,两个外部输入脚分别为 B 口的 IOB2 和 IOB3的复用脚。并允许外部中断以负跳沿触发方式来输入中断请求信号。如图 23。 图23 外部中断结构 16 位单片机原理及应用讲义 25 ( 3) UART 串行口中断源 内部事件中断;发送中断和串行口接收中断;在串行口设置寄存器中设置中断;占用 IOB7、IOB10 ;读取或写相应数据寄存器自动清中断。 ( 4)触键唤醒中断源 单片机接收到唤醒信号后接通 PLL 振荡器,同时 CPU 会响应唤醒事件的处理并

    46、进行初始化。 唤醒操作完成后,程序将会从进入睡眠后指令计数的断点处开始被继续执行。 唤醒后的操作一般会进入相应唤醒源的中断服务程序,然后从中断返回后,会从进入睡眠指令的下一条指令开始执行。 中断唤醒源:IRQ3_KEY 为触键唤醒源(IOA70) ;FIQ ;IRQ1IRQ6 ( 5)时基信号中断源 时基信号发生器的输入信号来自实时时钟 32768Hz;输出有通过选频逻辑的 TMB1、 TMB2 信号和直接从时基计数器溢出而来的各种实时时基信号。 2.10.2.2 中断 控制 SPCE061A 单片机有多个中断源,为了使每个中断源都能独立地被开放和屏蔽,以便用户能灵活使用,它在每个中断信号的通

    47、道中设置了一个中断屏蔽触发器,只有该触发器无效,它所对应的中断请求信号才能进入 CPU,即此类型中断开放。否则即使其对应的中断请求标志位置“1 ”,CPU 也不会响应中断,即此类型的中断被屏蔽。同时 CPU 内还设置了一个中断允许触发器,它控制 CPU 能否响应中断。 ( 1)中断控制寄存器 SPCE061A 对中断源的开放和屏蔽,以及每个中断源是否被允许中断,都受中断允许寄存器 P_INT_Ctrl和 P_INT_Clear 及 P_INT_Ctrl_New 控制和一些中断控制指令。 中断控制单元 P_INT_Ctrl(读/ 写) ( 7010H) P_INT_Ctrl 控制单元具有可读和可

    48、写的属性,其读写时的意义是不同的。 当写中断控制单元中的某位为“1 ”时,即允许该位所代表的中断被开放,置 0 则禁止该位所代表的中断。 当读取中断控制单元时,其主要作为中断标志,因为其每一位均代表一个中断,当 CPU 响应某中断时,便将该中断标志置“1 ”。 清除中断标志控制单元 P_INT_Clear(写) ( 7011H) 清除中断标志控制单元主要用于清除中断控制标志位,当 CPU 响应中断后,会将中断标志置位为“1 ”,当进入中断服务程序后,要将其控制标志清零,否则 CPU 总是执行该中断。 激活和屏蔽中断控制单元 P_INT_Ctrl_New(读 /写 )($702DH) 该单元用于激活和屏蔽中断。 16 位单片机原理及应用讲义 26 当写该控制单元时,与 P_INT_Ctrl 功能相似。 读该控制单元时,只作为了解激活那一中断的功能使用。与其写入值是一致的。 ( 2)中断控制配置端口 ( 3)中断控制指令 表26 中断控制指令一览表 ( 4)中断优先级 表27 SPCE061A 中断的优先级别 注:所谓中断向量即指向中断服务子程序入口地址的指针。 2.10.2.3 中断 响应 ( 1)中断响应过程 从中断请求发生到被响应,从中断响应到转向执行中断服务程序, 完成中断所要求的操作任务,是一个

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:凌阳单片机讲义.pdf
    链接地址:https://www.docduoduo.com/p-11109682.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开