首页资源分类嵌入式系统 > 9s12系列单片机资料

9s12系列单片机资料

已有 445500个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:9S12

    分    享:

    文档简介

    单片机寄存器描述详细

    文档预览

    为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 专业飞思卡尔技术支持 9S12D 系列 MCU 开发室套件 作 (MC9S12DG128 标配) 使用指技南工 科 子 电 信 飞 版权所有 淘宝飞思卡尔技术服务第一店 飞信电子科技 1 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 飞信电子科技店铺介绍 我们是飞思卡尔单片机嵌入式应用专业研发团队,致力于小型仪器仪表、汽车电子、无线通信应 用领域的研发和技术推广。 店铺宗旨 交四海好友,推飞思卡尔先进技术,为中国嵌入式技术的发展尽微薄之力!!! 服务嵌入式研发工程师!服务单片机爱好者!服务大学生! 质优价廉,诚心服务,信誉第一!!! 店铺主营 室 专业研发和销售飞思卡尔 08、S08、S12(X)系列单片机开发板、评估板、学习板,以及 08、S08、 作 S12(X)系列单片机编程器和调试器。小店根据三类不同的客户需求提供针对性的产品和服务: 工 (1)针对嵌入式开发工程师,小店提供 8 位/16 位多种开发板;对于初步接触飞思卡尔单片机的 工程师,这些开发板帮助他们快速掌握飞思卡尔的技术;对于熟悉飞思卡尔技术的工程师,这些开发 技 板将成为开发平台,同时提供丰富的资源。具体如小店提供了:针对仪器仪表开发工程师需求的“飞思 科 卡尔Freescale S08GB60 开发板GB60 学习板S08 应用开发平台”,针对汽车电子工程师、通信电子工程 师、仪表控制工程师需求的“飞思卡尔Freescale S12XDP512 开发板S12XDP512 学习板”、“飞思卡尔 子 Freescale 9S12XDP512 评估板汽车电子CAN/LIN总线开发板”,这些开发板能够有效提高不同应用的工 电 程师的开发效率,保证开发质量; (2)针对即将毕业的大学生,为其提供毕业设计项目原型,以及提供免费技术持和咨询; 信 (3)为参加各级各类创新项目比赛、车模比赛等的大学生提供开发板,以及免费的技术支持和咨 飞 询。 店铺副业 欢迎单片机爱好者和嵌入式开发人员进店交流。 所有产品均提供技术支持。 对外承接飞思卡尔系列开发板的维修服务。 承接外包合作开发项目。 1 宝贝描述 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! MC9S12DG128 是飞思卡尔公司推出的 16 位高性能单片机,在汽车电子领域广泛应 用,如:宝马、奔驰等大厂商,教育部在国内已举办了五届飞思卡尔车模大赛,参赛学校 已经超过 200 所,该项赛事一直选用该型号单片机,很多参赛学生需要开发工具和开发板, 飞信电子科技从第一届比赛开始即为众多学校提供开发板和技术支持,根据用户需要,飞 信电子科技于 07 年研发了该开发板。 9S12DG128 开发套件采用子、母板的方式设计,核心子板包含启动主 MCU 的主要 电路,母板扩展了 4*4 键盘、LCD 和 LED 显示、SPI 扩展 8 位 IO 口、蜂鸣器、RS232 和 RS485 通信接口、两路电位器仿真模拟输入等常见外设接口电路,此外,主 MCU 的内 室 部功能资源的全部 IO 被悉数引出,以支持各种扩展,为了方便用户进行原型设计,母板 上还提供了大片原型设计区,使开发设计更随意。 作 本开发系统母板支持 112 脚的 9S12DG128 核心板(标配)、9S12DG256 核心板(选 工 配)、9S12DP512 核心板(选配),用户也可以根据标准接口自行设计核心板。 适用于学习 S12 MCU 的初学者 适用于参加车模大赛的大学生调试程序 技 适用于 S12 MCU 的开发人员进行开发 科 适用于高校单片机教学 子 便于开发人员评估单片机性能 电 该开发套件可与本使用指南和下面的推荐书配套使用,两者相互结合将会从很大程度上降低 S12 信 单片机的入门难度,本平台也是 S12 系列单片机开发的一个基础平台。 推荐书 飞 《单片机嵌入式应用的在线开发方法》 邵贝贝编著; 清华大学出版社 书号:ISBN 7-302-09658-9/TP.6692 定价:39 元 技术支持联系方式 QQ:1294640526 Tel:13783895425 E-mail:taxue819@163.com 店铺网址:http://shop59512616.taobao.com/ 1 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 目录 第一章 9S12D系列 MCU开发套件概述 ..................................................................................4 1.1 传统的嵌入式应用开发方法 ............................................................................................................... 4 1.2 新型的MCU优势.................................................................................................................................. 4 1.3 MC9S12DG128 内部结构..................................................................................................................... 4 1.4 MC9S12DG128 的寄存器..................................................................................................................... 5 1.5 DG128 内部存储空间 ........................................................................................................................... 6 1.6 开发套件使用优势 ............................................................................................................................... 6 1.7 9S12 系列MCU开发板使用方法与注意事项...................................................................................... 7 第二章 9S12D系列MCU开发套件硬件说明 ..........................................................................10 室 2.1 DG128 核心板 ..................................................................................................................................... 10 作 2.2 扩展板................................................................................................................................................. 10 2.3 BDM调试器..........................................................................................................................................11 工 2.4 其它模块及配件................................................................................................................................. 12 技 第三章 开发工具使用说明.......................................................................................................14 3.1 编译环境使用说明 ............................................................................................................................. 14 科 3.1.1 概述........................................................................................................................................... 14 3.1.2 CodeWarrior S12 4.6 使用方法 ................................................................................................ 14 子 3.2 S12 BDM调试器使用说明.................................................................................................................. 23 3.2.1 BDM调试器概述...................................................................................................................... 23 电 3.2.2 S12 BDM使用方法................................................................................................................... 23 3.3 通过超级终端调试程序的方法 ......................................................................................................... 26 信 3.3.1 超级终端软件及其工作原理 ................................................................................................... 26 3.3.2 超级终端的设置与使用 .......................................................................................................... 26 飞 第四章 串行监控程序...............................................................................................................29 4.1 串行监控程序的工作原理 ................................................................................................................. 29 4.2 串行监控占用系统资源情况 ............................................................................................................. 30 4.3 系统调用............................................................................................................................................. 31 4.4 串行监控对用户程序的影响 ............................................................................................................. 31 4.5 串行监控支持的调试命令 ................................................................................................................. 32 第五章 开发套件配套示例.......................................................................................................34 示例 1 熟悉软件开发环境CodeWarrior S12 V4.6 ................................................................................ 34 示例 2 用超级终端和监控程序调试程序 ............................................................................................. 35 示例 3 SCI串行口通信示例................................................................................................................... 36 2 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 示例 4 SPI串行口通信示例 ................................................................................................................... 42 示例 5 Keyboard模块示例 ..................................................................................................................... 45 示例 6 LED显示示例 ............................................................................................................................. 47 示例 7 LCD显示模块示例 ..................................................................................................................... 49 示例 8 定时器模块示例 ......................................................................................................................... 53 示例 9 A/D转换模块示例 ...................................................................................................................... 55 示例 10 PWM模块示例 ......................................................................................................................... 59 附录A ............................................................................................................................................63 附录B ............................................................................................................................................64 附录C ............................................................................................................................................65 附录D ............................................................................................................................................66 室 作 工 技 科 子 电 信 飞 3 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 第一章 9S12D系列 MCU开发套件概述 本开发套件采用最新的嵌入式应用开发方法的研发而成,它将有效的降低嵌入式 16 位单片机爱好者和学习者的入门难度。本章主要介绍 9S12DG128 MCU 的基本特性,开 发套件的特点以及使用方法。 1.1 传统的嵌入式应用开发方法 传统的嵌入式应用开发方法主要是使用仿真器模拟目标系统中 MCU 的运行情况,希 望达到在目标系统硬件尚未定型与制版情况下,先行调试目标系统的硬件、软件设计,为 目标系统的研制提供前期基础。 室 缺点:难以实现 100%的实时仿真,即:有些功能在用仿真器调试时十分正常,而到 作 了实际应用系统却不能顺利运行;其一些调试功能仅适用于初学者,对于具有一定开发经 验并拥有通用功能模块经验的开发者,严重增加了开发时间。 1.2 新型的MCU优势 工 技 目前,随着计算机制造技术的发展,许多公司新推出的 MCU 具有片内 Flash 存储器, 科 Flash 存储器具有电可擦除、无需后备电源保护数据、可在线编程等特点。 在线编程(In-Circuit Program)允许单片机内部运行的程序去改写 Flash 存储器的内 子 容,不仅可以在运行过程中修改某些运行参数,也为研制新型嵌入式应用开发工具提供了 电 技术基础。 飞思卡尔 Freescal 的 MC9S12 系列 MCU 是以高速 CPU12 内核为基础的微控制器系列, 信 简称 S12 系列。S12 系列具有低成本调试功能。S12 系列微控制器具有单引脚接口的背景 飞 调试(BDM)方式。该方式为实时、无干扰、100%电路内仿真,解决了传统背插式仿真器 在兼容性、仿真速度、电平和机械接口方面普遍存在的问题。 注:典型的 HC12 总线频率为 8MHz,而典型的 S12 总线频率为 25MHz,HC12 与 S12 指令完全 兼容,故在很多场合统称为 HCS12 系列微控制器。HCS12 系列微控制器的在线可编程功能,是专门 为用户在生产阶段和远程升级时可灵活编程而设计的。 1.3 MC9S12DG128 内部结构 MC9S12DG128 MCU 是 Freescale 公司 MC9S12 系列 16 位单片机中的一种,其内部结构 4 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 主要有单片机基本部分和 CAN 功能模块组成。 (1)基本结构包括:中央处理器单元 S12(CPU)、2 个异步串行通信口 SCI、2 个 同步串行通信口 SPI、8 通道输入捕捉/输出比较定时器、1 个 8 通道脉宽调制模块以及 49 个独立数字 I/O 口(其中 20 个具有外部中断及唤醒功能),在片内还拥有 128KB 的 Flash ROM、8KB 的 RAM 和 2KB 的 EEPROM; (2)CAN 功能模块包括两个兼容 CAN2.0A/B 协议的 MSCAN 控制器组成。 这些丰富的内部资源和外部接口资源可以满足 MCU 对各种数据的处理、CAN 网络数据 的发送和接收要求,芯片集成了两个 MSCAN12 模块,能够实现高低速 CAN 网络的网关节点 功能。 1.4 MC9S12DG128 的寄存器 (1)8 位累加器 A、B 或 16 位的累加器 D; 室 作 (2)16 位变址寄存器 X 和 Y 是用来处理操作数的地址。可分别用于源地址和目的地址 的指针型变量运算; (3)堆栈指针 SP 是 16 位寄存器; 工 技 (4)程序计数器 PC 是 16 位寄存器,它表示下一条指令或下一个操作数的地址; (5)条件码寄存器 CCR。 子科 MC9S12DG128 的寄存器组如图 1 所示如下: 电 信 飞 图 1 MC9S12DG128 的寄存器组 5 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 1.5 DG128 内部存储空间 MC9S12DGl28 安排了内部寄存器、RAM、EEPROM 和 FLASH/ROM 等资源,占据 空间分别为 1 KB、8 KB、2 KB 和 128 KB,每个存储单元对应一个地址,共有 64K 个地 址,用 4 位十六进制数表示,即地址为$0000—$FFFF。 微控制器内部不同的存储器占用不同的存储空间,也就是说,不同的地址范围,它们 均占据特定的地址空间。 复位后的地址应为:  $0000~$03FF:1 KB 寄存器空间。  $0400~$0FFF:3KB 传统的 EEPROM 地址空间。实际上,DG128 内部 EEPROM 室 2KB,地址为$0000~$07FF,默认设置 EEPROM 地址空间被 RAM 掩盖。  $1000~$3FFF:12KB 为 RAM 的地址空间,其中$0400~$1FFF(7KB)是 DG128 内部 作 RAM 模块默认实际使用的地址空间,一般编程时,只能使用这 7KB 的 RAM,DG128 工 未使用$2000~$3FFF(8KB)空间。  $4000~$FFFF:是 Flash 的地址空间,分成 3 个 16KB 空间,其中中断向量区存放 地址为:$FF00~$FFFF。 技 1.6 开发套件使用优势 科 子 本开发套件采用子、母板设计形式,把与单片机直接相关的外围电路设计在一块单独 的子板上,该子板便可构成启动 MCU 的基本系统,MCU 的内部引脚用欧式插孔座引出; 电 母板部分则扩充了常见的各种外围电路,并通过欧式插针座与子板连接。 信 与所有电路都做在一块板子上的设计方案相比,子、母板的设计方案兼容性更好:只 须更换子板而无须更改母板,便可实现多种单片机的开发,具有更好的适应性。 飞 同时,用户可以简便地利用该开发板对主 MCU 的各个外设模块进行一些示例测试。 开发板配套提供了良好的软件和硬件模块接口,用户可以直观地从母板上观察程序运行的 结果,也可以从 PC 机查询主 MCU 当前的状态。 母板上的 LED 电路原理图见附录 D。 整套 9S12D 系列 MCU 开发套件外观图如图 2 所示: 6 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 作 工 技 科 子 电 信 飞 图 2 整套 9S12D 系列 MCU 开发套件外观图 1.7 9S12 系列MCU开发板使用方法与注意事项 1.开发板硬件连接及注意事项 (1)通过 BDM 调试下载监控程序、用户自立程序接线图如图 3 所示。 7 该串口使用的是 USB 转 串 口 的 电 缆,适用于笔记本, 不是标配产品。 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 5V 电源供电,所有 接线完成后,接通 电源;完成试验后, 先断电,再拆除其 它接线。 室 作 工 图 3 开发套件硬件连接图 (2)通过超级终端调试程序的硬件连接图如图 4 所示。 技 科 子 电 信 飞 图 4 开发套件硬件连接图 注:1、建议只使用 5V 电源供电,不建议 BDM 和电源同时供电,解决方法:我们提供的 BDM 上两个跳线是都跳上的,您在使用时,只需将 BDM 调试器上的给目标板供电的跳线去掉即可。 2、BDM 连接线红色标注的对应连接核心板与 BDM 的“1”脚。 8 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 3、确认串口线接 PC 端的 COM1 或 COM2。 4、开发板切忌放于金属物上,使用时,可在板子下面垫一本书,以免意外短路引起板子烧坏。 5、所有接线完成后,接通电源,在给开发板供电的情况下,切忌带点拔插任何接线、显示模块或 跳线。 (2)使用步骤简述 1、将 BDM 调试和核心板连接; 2、将核心板或目标板串口与 PC 连接; 3、接通电源,进行程序的编译下载(后文详细介绍); 4、调试程序结束后,先断电; 5、将其它接线小心拔出放入盒中,妥善保管。 室 作 工 技 科 子 电 信 飞 9 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 第二章 9S12D系列MCU开发套件硬件说明 本章介绍 9S12D 系列 MCU 开发套件硬件组成,详细硬件设计原理图参见对应附录。 2.1 DG128 核心板 又名核心子板,它实际上是 MC9S12DG128 单片机的构成的最小系统,它已经是一 个能独立工作的小系统,其电路原理图见附录 A。核心板实物图如图 5 所示: 室 作 工 技 图 5 核心板实物图 核心板是一个最小系统,包含复位电路、晶体振荡器、时钟电路、串行接口的 RS-232 科 驱动电路及+5V 电源供电电路。核心板上还包含从 PORTB 上接出 8 个发光二极管,其并 子 非构成最小系统所必需,但对调试程序非常有用,另外,印刷板上还有两个 CAN 总线的 驱动电路和引出端,必要时用户可以自行焊上驱动芯片。 电 主 MCU 的所有 I/O 端口通过 2*64 针的欧式插头全部引出,用户可以自行设计自己 的目标板,然后将核心板插在目标板上进行开发。 信 我们发货前,已在 MC9S12DG128 单片机中写入串行监控程序,只需配上 RS232 串 飞 口通信电缆和 5V 电源适配器,即可构成一个最小的软件调试开发平台,当然,调试时还 需要一台 PC 和相关调试软件。 2.2 扩展板 本套开发套件的开发平台简称“扩展板”,扩展板与核心板通过匹配的两对欧式插座 相连,构成一个完整的开发平台,其电路原理图见附录 B。扩展板实物图如图 6 所示: 10 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 作 工 图 6 扩展板实物图 我们知道每一款单片机是由许多标准的模块组成,即其采用“模块化”的设计方式, 技 故本平台也借用该设计思想开发而成。本扩展板提供资源如下: 1、欧式插槽连接核心子板; 2、RS232 串口调试; 3、5V 电源供电模块; 科 子 电 4、8 位离散输入/输出模块; 信 5、两路电位器仿真模拟输入; 6、4*4 矩阵键盘; 飞 7、1602 LCD 液晶显示模块; 8、6 位 LED 数码管显示模块; 9、主 MCU 引脚通过两个双排插全部引出; 10、蜂鸣器; 11、电路原型设计区; 后续提供的示例程序均在该扩展板上设计实现,本扩展板的硬件功能模块均可直接嵌 入到用户的各种实际系统之中,成为开发者降低开发难度,缩短开发时间的有利开发工具。 2.3 BDM调试器 配合扩展板上的外围硬件功能模块,您可以选用新型 BDM(Background Debug Model) 11 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 后台调试方式,也可选用固化在 MCU 中的监控程序来开发调试。通过 BDM 调试方式能 实现 100%的在线实时仿真,用户可以在调试软件上方便地查询到芯片状态,修改寄存器 内容和用户程序。 采用 USB 接口与 PC 通讯的 BDM 调试器不仅支持热拔插、USB 供电,并支持高性 能的调试工具(如下文叙述的 CodeWarrior 软件),可取得更好的调试效果,提高调试效 率,其电路原理图见附录 C。 开发板适合初学者使用,配备采用 RS232 串口与 PC 通信,使用超级终端调试已经足 够。 BDM 实物图如图 7 所示: 室 作 工 技 图 7 BDM 实物图 2.4 其它模块及配件 子科 本开发套件配套的两种显示器实物图如图 8 所示: 电 信 飞 图 8 开发套件配套的两种显示实物图 本开发套件配套使用的标准 5V 电源和各种通信电缆的实物图如图 9 所示: 12 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 图 9 标准 5V 电源和各种通信电缆的实物图 室 作 工 技 科 子 电 信 飞 13 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 第三章 开发工具使用说明 本章介绍 9S12D 系列 MCU 开发套件使用中涉及到得软硬件工具,包含实现编译、 连接、调试等强大功能的集成开发环境软件,实现后台调试的 BDM 调试工具,以及借助 PC 实现人机交互的超级终端软件。 3.1 编译环境使用说明 3.1.1 概述 9S12 系列 MCU 开发套件使用 Freescale 公司专用的集成开发工具“Freescale CodeWarrior S12 4.6”,它包括集成开发环境 IDE、处理器专家库、全芯片仿真,可视化参 数显示工具、项目工程管理器、C 交叉编译器、汇编器、连接器以及调试器。 3.1.2 CodeWarrior S12 4.6 使用方法 室 下面将以通过创建一个名为“SY”仅用汇编语言的工程来简单说明 CodeWarroir S12 作 4.6 如何使用。 工 (1)项目创建 技 第一步:打开 CodeWarrior S12 4.6,点击 file,选 new,弹出如下窗口,选择 HC(S)12New 科 Project Wizard ,在工程名中填入工程名,例为“SY”,选择要存放的路径,然后单击“确 定”。 子 电 信 飞 第二步:弹出如下图所示的窗口,单击“下一步”。 14 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 第 三 步 : 弹 出 如 下 图 所 示 的 窗 口 , 选 择 要 模 拟 的 单 片 机 环 境 , 我 们 选 择 MC9S12DG128B,单击“下一步”。 作 工 技 科 子 电 信 飞 第四步:弹出如下图所示的窗口,该对话框中,选择要所用的编写语言,可以有多种 选择。本实验指导书以汇编语言为主,所以我们这里选择使用:“ASSEMBLY”。单击“下 一步”。 注:这里的选择根据您程序中使用的语言而定。 15 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 第五步:弹出如下图所示的窗口,选择所要的汇编语言的寻址方式,我们这里选择 “ABSOLUTE ASSEMBLY”,单击“下一步”。 作 工 技 科 子 电 信 第六步:弹出如下图所示的窗口,保持默认选项,单击“完成”。此为全芯片仿真模 飞 式,若还想用 BDM 调试该程序,还应将“TBDML”项选中。 16 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 第七步:弹出下图所示的窗口,新建工程完成。 室 作 工 技 科 子 电 信 飞 上图为构建成功后的窗口,打开列表框中的“SOURCE”文件夹,双击 main.asm 文 件,将看到 codewarrior 自动生成的 MAIN.ASM 文件: ;***************************************************************** ;* This stationery serves as the framework for a * ;* user application (single file, absolute assembly application) * ;* For a more comprehensive program that * ;* demonstrates the more advanced functionality of this * 17 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! ;* processor, please see the demonstration applications * ;* located in the examples subdirectory of the * ;* Freescale CodeWarrior for the HC12 Program directory * ;***************************************************************** ; export symbols XDEF Entry ABSENTRY Entry ; export 'Entry' symbol ; for absolute assembly: mark this as application entry point ; include derivative specific macros INCLUDE 'mc9s12dg128.inc' ROMStart EQU $4000 ; absolute address to place my code/constant data ; variable/data section ORG RAMStart ; Insert here your data definition. Counter DS.W 1 FiboRes DS.W 1 室 作 工 ; code section 技 Entry: mainLoop: couterLoop: ORG ROMStart 科 LDS #RAMEnd+1 CLI 子; initialize the stack pointer ; enable interrupts LDX #1 电; X contains counter 信 STX Counter BSR CalcFibo 飞 STD FiboRes LDX Counter ; update global. ; store result INX CPX #24 ; larger values cause overflow. BNE couterLoop BRA mainLoop ; restart. CalcFibo: ; Function to calculate fibonacci numbers. Argument is in X. LDY #$00 ; second last LDD #$01 ; last DBEQ X,FiboDone ; loop once more (if X was 1, were done already) FiboLoop: LEAY D,Y ; overwrite second last with new value EXG D,Y ; exchange them -> order is correct again 18 FiboDone: 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! DBNE X,FiboLoop RTS ; result in D ;************************************************************** ;* Interrupt Vectors * ;************************************************************** ORG $FFFE DC.W Entry ; Reset Vector 从最简单的情况开始,除了 XDEF Entry, main 和 INCLUDE 'mc9s12dg128.inc'其它都 可以删除。接下来,插入我们自己的代码。以下是要输入代码:(不包括行号) main: Entry: SHIFT: LOOP: LDAA #$ff STAA DDRB SEC LDAA #$FE STAA PORTB BRA DELAY ROLA BRA SHIFT 室 作 工 技 DELAY: LDX #$0200 科 DELAY1: LDY #$0500 DELAY2: DEY 子 BNE DELAY2 DEX BNE DELAY1 电 信 BRA LOOP 飞 (2)项目编译连接 代码输入完毕后,单击“PROJECT”菜单的“MAKE”命令完成编译过程,下图为 编译完成后 SY 工程所在的文件夹信息。 19 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 打开 bin 文件夹,有一个 Simulator.abs.s19 文件,即,编译生成的 S19 文件,它可用 “记事本”查看,可用 BDM 调试器或是串行监控程序下载到核心板的主 MCU 中。 室 (3)软件调试及程序分析方法 1、编译连接通过后,单击“PROJECT”菜单的“DEBUG”命令,将会调用实时仿 真器来模拟程序。 作 工 技 科 子 电 信 飞 在上图中,有一个调试工具栏: 它用来实现“单步/连续” 运行。按钮名称从左至右依次为:“START\CONTINUE”,“SINGE STEP”,“STEP OVER”, “STEP OUT”,“ASSEMBLY STEP”,“HALT”,“RESET TARGET”。 该图中还有七个命令窗口,从左到右依次为 : (1)“SOURCE”:显示程序源代码。 20 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! (2)“DATE”:显示程序所用到的数据。 (3)“COMMAND”:显示当前的所使用的命令,例如“STEPPED”,它就是“SINGE STEP”。 (4) “ASSEMBLY”:显示当前的程序的汇编语言,因为源程序本身已经是汇编语言, 所以,效果不太明显。该例中,只是把“EQU”语句定义的端口给替换出来;将十六进 数转换为立即数(十进制数)。 (5)“REGISTER”:显示当前 CPU 寄存器的各值。 (6)“PROCEDURE”:显示当前所运行的程序所在程序入口,因为是程序入口为 ENTRY(),所以为“ENTRY()”。 (7) “MEMORY”:显示内存中的值,第一行显示 4 个单元,左边为该段内存的起始 室 地址。中间部分将十六进制数的值显示出来。在最右边,应该将这些数值的 ASCII 码中 代表的字符显示出来。不能显示的字符,包括数值小于$20 的 ACSII 码控制字符,和大于 作 $7F 的非 ASCII 码字符,用“. ”显示出来。 工 关于模拟调试器的使用方法可以参考它的相关帮助文档,本处不再详细说明。使用“帮 技 助”的方法是单击“True-Time Simulator & Real-Time Debugger”实时仿真器菜单栏中的 科 “HELP”中的“HELP TOPICS”。 2、CodeWarrior S12 4.6 IDE 脱离开发板时支持反汇编,在打开源程序的情况下,只 子 需单击“PROJECT”菜单的“DISASSEMBLE”命令,即可打开反汇编.Lst 文件。 电 信 飞 通过上图可分析机器代码及其分配的地址,具体说明如下: 21 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 最左边一列 Abs.为源代码的绝对行地址; 第二列 Rel.为源代码的相对行地址; 第三列 Loc 为目标代码的分配地址(16 进制表示); 第四列 Obj.code 为目标代码(16 进制); 第五列 Source line 为源代码行。 室 作 工 技 科 子 电 信 飞 22 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 3.2 S12 BDM调试器使用说明 3.2.1 BDM调试器概述 BDM(Backgroud Debug Mode)是后台调试模式,该调试模式不仅允许调试单片机,还 能往单片机中下载程序,更重要的是,它属非侵入式的调试模式,特别适合嵌入式实时系 统调试,是近年来逐渐流行起来的先进调试模式,采用这种调试模式来调试程序需要专门 的 BDM 调试器,调试器调试目标单片机时与其采用单线半双工串行通信,因此,只占用 目标单片机一根 IO 线,另外该调试模式允许调试器给目标单片机供电。 飞思卡尔公司的 S08、S12(X)系列单片机均采用这种先进的调试模式。飞思卡尔原装 的 BDM 调试器虽然支持 S08 与 S12(X)两种系列,但是价格昂贵(近千元),损坏后难以 维修。本店的 S12 BDM 调试器,采用开源方案,使用飞思卡尔公司的 8 位带 USB 接口 室 单片机 JB16 制作,性能可与原装 BDM 媲美,支持飞思卡尔 S12(X)全系列单片机。 作 S12 系列支持芯片有:9S12A、9S12B、9S12D、9S12DG、9S12DT 等系列芯片。 工 S12X 系列支持芯片有:9S12XDP512、9S12XDT256、9S12XS128、9S12XEQ512 等 技 系列芯片。 BDM 调试器用于初次向目标板下载程序,也可用于擦除目标板 MCU 的 FLASH 中 科 的旧程序,简单的说,就是 BDM 调试器的 FLASH 写入、擦除功能,也称为编程功能。 子 其还支持大量的调试命令,不过要看单片机本身的 BDM 接口是否接受调试命令。S12 单 片机的 BDM 接口可以提供很多调试信息,包括 CPU 运行时的动态信息。实际上,与之 电 通信的 BDM 调试器内部有一个单片机。 3.2.2 S12 BDM使用方法 信 (1)安装 S12 BDM 驱动程序 飞 将 USB 电缆连接好 BDM 与 PC,确定驱动程序存放位置,通过硬件安装向导安装驱 动。 注:CodeWarrior S12 4.7 集成开发环境已经包含 BDM 的驱动,可只用 4.7 版本的软件,即可免去 该步骤。 (2)通过 hiwave 使用 BDM for S12(TBDML) 1)启动 hiwave.exe 打开位于 Codewarrior for HC12 V4.6 的安装目录下的 Prog 文件夹,打开 hiwave.exe, 其是用来向单片机下载程序和调试单片机的程序。启动后界面如下图所示: 23 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 作 2)选择 BDM 接口标准 在上图的窗口中选择【Component】菜单的【Set Connection】选项,其过程如下图所 示: 工 技 科 子 此时将弹出如下图所示对话框: 电 信 飞 在对话框中,上一个栏选择 HC12,下个栏选择 TBDML 后单击 OK。 3)选择 TBDML HCS12 菜单,可利用其不同选项执行目标单片机的程序下载、设置 断点、调试等操作,首先,选择 FLASH,即操作过程如下图所示: 24 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 其次,将弹出如图所示,点击“全选”,然后“擦除”,最后单击“下载”选择要下载 的.S19 或.abs 文件。 室 作 工 全选 技 科 擦除 子 下载 电 注:使用 BDM 擦除 FLASH 意味着将 MCU 内部的监控程序同时擦除,下载进去什么程序,MCU 信 中就是什么程序。 最后,完成程序的装载,显示如下图,此时单击“复位”后再单击“运行”命令。 飞 运行 复位 25 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 3.3 通过超级终端调试程序的方法 3.3.1 超级终端软件及其工作原理 超级终端是通用的串行交互软件,嵌入式开发板内一般都含串行通信程序,只要该程 序采用标准 ASIIC 码通信协议,其就可实现与嵌入式开发板交互,成为嵌入式开发板的 “显示器”或人机交互界面。 超级终端的工作原理:将用户的键盘输入的 ASIIC 码即时发向串口(采用 TCP 协议 时是发往网口,这里只说串口的情况),但并不显示输入,它在 CRT 上显示的信息是从串 口接收到 ASIIC 的字符。 3.3.2 超级终端的设置与使用 室 (1)打开“超级终端”,路径为:开始-→程序-→附件-→通讯-→超级终端。键 作 入名称,例如:9s12dg128,如下图所示,然后单击“确定”。 工 技 科 子 电 (2)“连接时使用”选“COM5”,如下图所示,由于本人是笔记本设置为 COM5, 飞信 这个需要根据具体的 PC 机而定,一般 PC 一般选 COM1、COM2,然后,单击“确定”。 (3)串口设置如下图,简便方法:直接单击“还原为默认值”,然后,单击“确定”。 26 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 (4)事先需用 RS232 串行通信电缆将 PC 的 COM5 与已写入串行监控程序核心板接 好,且核心板已接通 5V 供电。此时,请按下核心板的“S1 复位键”,敲下“回车键”, 可看到超级终端显示如下图: 作 工 技 科 子 电 信 飞 此时,键入“H”即可显示帮助信息,如下图所示: 27 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 注:监控程序的命令用法在下一章将详细介绍,这里主要介绍超级终端。 此时,通过 MCU 内部的监控程序与基于 PC 的超级终端相结合构建起单板(核心板) 作 调试环境。 工 (5)保存名为“9s12dg128”的超级终端,点击超级终端的“文件”菜单,选“保存”。 技 这样您刚配置的信息就被保存,以后可以直接使用该客户端,无需再次新建和配置,当然, 科 如果需要修改客户端程序的配置,您就必须重新根据具体情况创建新的超级终端客户端。 注:只要是超级终端采用的通信协议(包括速度、奇偶校验、停止位、流控等)与远程主机采用 子 的通信协议相同,通信即可正常进行。有关超级终端的详细信息可以参考其帮助文档。 电 信 飞 28 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 第四章 串行监控程序 串行监控调试程序是初学者进行嵌入式学习和进一步开发的基本软件,俗称: “bootloader”。本章介绍串行监控程序的工作原理、占用系统资源情况、系统调用、对用 户程序的影响及支持的调试命令详解。 声明:本章讲解的串行监控程序由清华大学飞思卡尔单片机应用研究中心研发,其程序源码已对 外开源,给 9S12 系列单片机开发人员带来极大的方便,感谢清华大学飞思卡尔单片机应用研究中心 为飞思卡尔先进的单片机技术在中国的应用普及做出的巨大贡献。 4.1 串行监控程序的工作原理 串行监控对应用系统硬件及底层软件进行调试,也称为 DEBUG 程序,是最基本的调 室 试工具。为了完成硬件尤其是软件的调试,在理论上,监控程序应具备三项功能: 作  使用户可以查看单片机内的各种存储资源,包括寄存器、程序存储器、数据存储 器、I/O 等; 工  使用户可以修改单片机内的各种存储资源,包括寄存器、程序存储器、数据存储 技 器、I/O 等;  使用户可以控制单片机的运行与停止程序(实质上是运行程序的切换)。 科 此外,为了调试程序,需将程序的机器码下载的单片机存储器中,而将程序以逐个字 子 节的方式写入存储器是调试人员不能接受的(效率太低),为此监控程序还需要提供机器 码程序下载写入功能。 电 利用以上四项功能,用户即可以将程序装入到单片机存储器中,并将单片机的存储资 信 源状态设置成需要的状态,之后控制程序从需要的地方运行,并在需要的部位停止,程序 停止后可以运用查看手段查看资源状态,以确定程序运行结果符合设计要求,如果不符则 飞 寻找原因并修改程序,再次调试,直到程序满足要求为止。 为此,监控程序要能够与用户交互(命令行和图形均可),接收用户发出的查看存储 资源的指令,并将存储资源的状态信息反馈给用户;接收用户发出的修改存储资源的指令, 并将存储资源的状态更改为所需;接收并按照用户发出的程序指令来运行程序(从监控程 序切换到用户程序),并在需要的程序部位停止(从用户程序切换到监控程序)。通常,串 行监控与用户的交互需要利用串行接口,以及 PC 和超级终端,允许在超级终端上使用的 命令包括:程序下载命令、寄存器查看和修改命令、存储器查看和修改命令、FLASH 擦 除和写入命令,断点设置和清除命令,以及程序运行命令等。 29 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 4.2 串行监控占用系统资源情况 监控程序本身是固化在单片机内部的一个特殊软件,它不可避免的要占用一部分系统 资源,包括“时间”资源和“空间”资源,一个好的监控程序应该占用最小的资源,由于 本开发套件的监控程序在用户程序运行时并不运行,它占用微处理器的时间资源几乎可以 忽略不计,其占用的空间资源包括以下几个方面: (1)I/O 空间:包括 SCI0 串行口 0 和 PROTB 端口 B,监控程序以此作为与用户交 互的手段。 (2)ROM 空间:范围在$F000~$FDFF 的 3.5KB 的 Flash 存储器空间,监控程序固 化在此。为防止在调试过程中反覆地擦除、下载程序过程中误将监控程序擦除,对监控程 室 序$F000 到$FFFF 的 4K 空间加了写保护。 (3)静态 RAM:范围在$3FE8~$3FFF 的 24B 的 RAM 存储器空间,监控程序将堆 作 栈指针初始化为$3FE7,以此保留了该 24B 的 RAM,用于存储自身使用的全局变量。 工 (4)堆栈 RAM:监控程序将堆栈指针初始化在$3FE7,在用户程序运行期间会使用 一定深度的堆栈,监控程序工作其间也会使用一定深度的堆栈,在程序调试期间,监控程 技 序和用户程序会频繁切换,此时用户堆栈和监控堆栈混合在一起,一般情况下用户可以忽 略监控堆栈对用户程序的影响,除非用户程序使用 RAM 太多或是使用了靠近堆栈的 科 RAM; 子 (5)Flash 命令占用 RAM 空间 323B。由于对 FLASH 的擦除和写入期间 FLASH 是 电 禁止读的,故对 FLASH 操作的 F、E、P 和 Q 命令要将执行这些命令的代码复制到 RAM 信 中进行。代码的命令缓冲区从$3FE0 开始,其中 F 命令代码最长,为 323 字节($143 字 节)。 飞 (6)中断矢量:中断向量区从$FF80 开始到$FFFF,共可存放 64 个复位、中断向量。 MC9S12DP256 用了 58 个向量,从$FF80 到$FF8B 的 6 个没有用。如前文(2)所述, 为了保护监控程序,该区域也被保护起来,故中断向量表就得移到没有保护的区域。在监 控程序中,已经将中断向量表中 58 个中断向量从$FF8C 到$FFFD 移到$EF8C 到$EFFF。 用户只要填写转移了的中断向量表即可,例如,IRQ 中断向量本来应该在$FFF2 和$FFF3 中,监控程序将其移到$EFF2 和$EFF3,故用户使用 IRQ 中断时只要将中断向量写到 $EFF2 和$EFF3 就可以了。用户的复位向量可以写在$EFFE 和$EFFF,但复位后要等 4 秒钟才能运行用户程序。这是因为复位后要先进入监控程序对系统做初始化,然后检查 RS-232 口有没有字符输入,若 4 秒内没有,则进入用户程序。 30 4.3 系统调用 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 系统调用是监控程序中可提供给用户使用的子程序。 入口地址 $FE80 $FE83 $FE86 $FE89 $FE8C $FE8F $FE82 功能 热启动地址 输出一个字符 输出字符串 输入一个字符 输入一个字符并回显 检查键盘输入状态 输出一个字符 注解 回监控程序 将A 寄存器中的ASCII 码输出到RS232 口 X寄存器指向字符串,字符串以$04结尾 由RS232 口输入字符,字符在A 寄存器中 由RS232 口输入字符,显示字符,字符在A 中 Z标志为1,无字符输入;Z 标志为0,有字符输入 将A寄存器中的ASCII码输出 4.4 串行监控对用户程序的影响 对于 MC9S12 单片机,FLASH 一般比较大,有几十到几百 KB,RAM 一般也有 2-12KB。 监控程序占用少量资源是可以接受的,不过,监控程序对用户程序仍有一定的影响,整体 室 来说,用户应避免使用监控程序已经占用的资源,对于 I/O 来说,也存在分时共享的可能, 作 下面具体说明: 工 (1)监控程序已经将 SCI0 初始化为一定的方式,即采用查询方式完成输入/输出, 技 默认的通信波特率为 9600,用户可以直接改变波特率寄存器的值选择通讯的波特率。波 特率的寄存器地址为$00C9。默认的值为$9C,它对应默认的波特率 9600。以下是波特率 寄存器的值和波特率的对应关系: 科 子 波特率寄存器的值 $9c $4e 波特率 9600 19200 电 $27 $1a 38400 57600 信$d 115200 用户可以下文叙述的监控命令:M 命令修改地址为$00C9 寄存器的内容,以改变 飞 SCI0 串口通信速率,当然与之通讯的超级终端的通讯速率也必须随之调整,否则将无法 正常通信。 用户可以和监控程序分时共享 SCI0,在用户程序运行时,用户可以利用超级终端与 用户程序交互,这对调试程序有很大的帮助。建议用户程序不再重新设置 SCI0,而采用 监控程序已经设置好的工作方式。 (2)用户可以重新初始化和使用 PROTB,接在开发子板 PROTB 上的 8 个 LED 对 接到 PROTB 上的其他电路没有影响。 (3)用户的 RAM 数据空间应安排在$2000~$3FFF 内,但要注意避开监控程序全局 变量占用的静态 RAM $3FE8~$3FFF,而且还需要考虑为监控堆栈和 FLASH 相关的监控 31 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 命令预留一定的 RAM 空间,建议用户程序不初始化堆栈指针,而是使用监控程序初始化 好的堆栈位置。 (4)用户的程序空间只要避开$F000~$FFFF 即可,对于调试几 KB 的小程序,建议 用户也将其安排在$2000~$3FFF 的 RAM 内,待调试完毕后将其搬家到$4000~$FFFF 的 FLASH 空间中,这种方法使得频繁的程序下载更为方便(不需要擦除 FLASH)。 (5)用户程序调试完成后需简单修改使其“自立”,即脱离监控程序的支持而自主运 行,这需要做几件事情:  在程序的开始部位增加堆栈指针初始化指令,将堆栈设置到合适的 RAM 部位;  如果需要使用 SCI0,在用户程序的初始化部分添加串口初始化程序;  如果需要,修改 ORG 指令,将程序搬家定位到合适的 FLASH 中;  修改中断矢量存放的位置,使其搬家的$FF80—$FFFF。 室 4.5 串行监控支持的调试命令 作 工 超级终端与监控程序配合起来才能完成程序调试,所有命令均在超级终端上输入由超 级终端传送给监控程序,监控程序将需要反馈的信息由串口发送给超级终端,超级终端将 技 信息发送到显示器,往来的通信全部采用 ASIIC 码。一般情况下,串行通信程序(串行 监控)应完成任务总结为: 科 (1)将自身的启动信息、过程信息通过“超级终端”主动发到主机; 子 (2)将接收到的字符返回到主机,同时发送需要显示的字符(如命令的响应等)到 电 主机。此时,超级终端真正意义上成为嵌入式开发板的人机交互界面。 信 下面介绍串行监控程序支持的全部命令。 (1)H 命令:该命令用来显示各种命令信息。 飞 (2)^A,^B,^X,^Y,^C,^P:分别为改变 A 寄存器、B 寄存器、X 寄存器、Y 寄存器、 CC 寄存器或者 PC 寄存器的值。 (3)D 命令:用来显示一段内存的内容。按下 D 键后要填入需要显示的内存的起始 地址和终止地址,然后回车后就会显示这一段地址的内容。 (4)M 命令:(Memory Modify)用来改变 RAM 内容中的内容。按 M 键后填入要改 变的 RAM 内存地址。然后会显示 RAM 地址的内容,接着用户可以填入希望改成的内容。 如果修改成功,用户可以修改下一个地址的内容;如果修改失败,显示“?”。如果需要 停止修改,直接输入回车就可以了。按“^”键,回到上一个内存地址。 (5)C 命令:(change)用来改变 FLASH 页面寄存器 PPAGE 的值。按 C 键后显示 32 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! PPAGE 寄存器的值。然后用户可以填入希望改成的值。 (6)F 命令:下载程序到 FLASH 中,可识别 S1 或 S2 格式的 S19 文件。按 F 键后, 开发板上的单片机等待接收来自串行口的数据文件。然后执行“传送”|“发送文本文件” 命令,在弹出的对话框中找到要下载的*.S19 文件,并按下“打开”按钮,就把文件下载 到 FLASH 中去了。注意,文件类型应选“所有文件”。 (7)E 命令:(Erase)用来擦除 FLASH 中的$4000~$7FFF 和$C000~$DFFF 两处。 FLASH 的$8000~$BFFF,PPAGE 页由 C 命令选择。 (8)Q 命令:首先要用 P 命令选择你想擦除的 FLASH 页,然后用 Q 命令擦除这一 页。 (9)G 命令:从 PC 寄存器的地址处,开始运行程序。可以用 Ctrl+P 命令修改 PC 指针到拟运行程序的的起始地址。 室 (10)L 命令:把程序下载到片内 RAM 中,也就是$1000~$3FFF 处。可识别 S1 格 作 式的 S19 文件。按 L 键后,开发板上的单片机等待接收来自串行口的数据文件。然后执 工 行“传送”|“发送文本文件”命令找到要下载*.S19 文件,按下“打开”按钮,这样,就 技 把文件下载到 RAM 中去了。注意,文件类型应选“所有文件”。 科 (11)S 命令:显示堆栈指针 SP 寄存器中值,并显示 SP 地址附近的内容,即堆栈中 的内容。 子 (12)R 命令:显示所有 CPU 寄存器的内容。 电 (13)B 命令:可以设置两个硬件断点。设置断点首先要设断点的 PPAGE,然后设断 点的地址。如果是$3E、$3F 页,地址可以是$4000~$7FFF 或$C000~$FFFF 之间。程序运 信 行到断点时程序停止,显示寄存器内容,同时两个断点自动清除,断点模块被禁止。请特 飞 别注意,CPU 可看到的 64kb 寻址空间中,FLASH 存储器地址$4000~$7FFF 的页面地址 是 $3E, 地 址 $C000~$FFFF 的 页 面 地 址 是 $3F , 而 地 址 $8000~$BFFF 的 页 面 地 址 对 MC9S12DP256 单片机来说可以是$30~$37。设置断点时 PPAGE 地址一定要设对。当 CPU 的运行在某一点停下来时,两个断点同时被清除了。需要的话,下面两个可能的断点要重 新设置。设置两个断点的意图在于,用户不知道所设的断点是否是指令的操作码时,可以 设两个连续的地址,或者用户不知道程序可能走向那个分支时,设定到两个不同的分支。 (14)Z 命令用于清除断点。Z 命令让断点模块禁止,断点清除。内存 0028~002F 是 硬件断点寄存器。执行 Z 命令后,硬件断点寄存器都清零。 33 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 第五章 开发套件配套示例 示例 1 熟悉软件开发环境CodeWarrior S12 V4.6 示例任务 1.掌握最基本的调试手段,学会利用程序给出的调试信息来修改程序中出现的错误 (error)和警告(warning)。 2.熟练掌握用 CodeWarrior S12 v4.6 新建一个汇编工程,编译连接生成.s19 文件,掌 握.S19 文件格式(参考其它资料分析该文件,本店推荐《单片机嵌入式应用的在线开发 方法》一书),察看和分析项目中的全部文件,其中从反汇编文件中读出:程序的起始地 址,各条指令的地址。 室 3.通过运用 CodeWarrior S12 v4.6 的模拟功能对该程序进行模拟仿真调试,观察实验 现象。 作 工 示例分析 CodeWarrior S12 v4.6 编译开发环境是软件调试的一个平台,在本示例中,您应该熟 技 练掌握其如何创建一个汇编工程,在程序中如何设置断点很重要,本示例给的程序很简单, 只是简单的定量输出,不过,由于输出量间没有延时,我们最后看到的是 LED 等显示为 科 最后输出量的数值,中间两次的输出量信息我们可以通过设置断点来查看。 子 程序开始地址为:C000。 电 本程序调试手段:通过超级终端来实现,需要修改程序开始地址,ctrl+p 进行修改, 信 其中输出量的查看可通过设置断点命令实现。 也可选用 BDM 调试器来实现,其中输出量的查看可通过程序单步运行来实现。 飞 示例结语 本程序看似简单,但是本示例包含很大的基本知识需要您掌握,其中上文中叙述的第 三、四章的信息需要完全把握,这样才能在调试示例程序时遇到问题不会不知其所以然。 34 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 示例 2 用超级终端和监控程序调试程序 示例任务 在本示例中熟练掌握利用超级终端和串行监控调试用户程序。掌握超级终端的配置, 串行监控程序具备的功能,了解 DG128 的硬件资源影射情况,监控占用的硬件资源对调 试用户程序的影响。 示例分析 本示例程序建立在第 1 个示例的基础上,是对其的一个延伸,示例 1 主要掌握软件开 发环境,调试只是结合上文叙述初步使用,调试本示例时需对示例 1 的任务要求进行温习, 养成良好的调试习惯。 室 本示例是在示例 1 的基础上加上延时程序,逐步壮大程序,.S19 文件下载到核心板 运行后,核心板上的 LED 灯实现跑马灯效果。通过超级终端来实现,需要修改程序开始 作 地址,ctrl+p 进行修改,程序开始地址为:C000。 工 示例结语 技 通过本示例进一步熟悉编译环境的使用和通过超级终端和监控的调试方法,由于本示 例是对示例 1 的一个延伸,您也可以思考一下:如何使该程序脱离监控程序,在系统复位 子科 后自动运行?即使其成为“自立”程序,又需要如何修改? 电 信 飞 35 示例 3 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! SCI串行口通信示例 示例任务 1.掌握 S12 单片机串行口的基本应用方法。 2.掌握 SCI 串行口相关寄存器的设定方法。 3.掌握用 C 语言编写嵌入式软件的方法。 4.实现 S12 单片机与 PC 机之间串行通信的方法。 5.PC 机通过串口给单片机发送一个字符,核心板上的 LED 灯将显示 PC 机输入数 值的 ASCII,同时在超级终端上显示输入的字符。 示例相关 室 为了实现 PC 机与 DG128 单片机的通信,首先要对与其 SCI 相关的寄存器进行初始 化。下面我们先了解一下 SCI 通信涉及到的寄存器,这些寄存器不用刻意的去记忆,只 作 需使用的时候来查看,然后进行设置,使用的多了也就能自然而然的记住: 工 (1)波特率寄存器(SCIBDH/L) 技 波特率寄存器分为高 8 位和低 8 位。SCIBDH 的高 3 位为 0,SCIBDH 的低五位与 科 SCIBDL 一 起 给 出 了 13 位 的 串 行 通 信 分 频 系 数 BR , 其 取 值 范 围 是 1~8191 (SCIBDH:SCIBD)不能为 0,复位时为 4。 SCIBDH 的位定义如下: 子 数据位 D7 定义 X D6 X 电D5 D4 X SBR12 D3 SBR11 D2 SBR10 D1 SBR9 D0 SBR8 复位 0 信0 0 0 0 0 0 0 飞 SCIBDL 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 SBR7 SBR6 SBR5 SBR4 SBR3 SBR2 SBR1 SBR0 复位 0 0 0 0 0 1 0 0 串行通信模块在时钟源为内部总线时钟,设fSCI为串行通信时钟源频率,则fSCI=fBUS。 DG128data sheet给出的计算SCI波特率Bt的公式为:Bt= fBUS/(16×BR) 一般情况下,内部总线频率fBUS 是已知的,波特率Bt是编程者希望设定的,然后根 据fBUS和Bt求出BR值:BR= fBUS /(16×Bt) 当 BR 被设置为 0 时,波特率发生器被禁止。 (2)SCI 控制寄存器 1(SCICR1) 36 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! SCICR1 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 LOOPS SCISWAI RSRC M WAKE ILT PE PT 复位 0 0 0 0 0 0 0 0 LOOPS:循环选择位,设置为 1 表示允许循环操作,设置为 0 表示普通状态。 SCISWAI:等待模式下 SCI 停止位,设置为 1 表示等待模式下 SCI 被禁止,设置为 0 表示仍被允许。 RSRC:接收源选择位,当 LOOPS 被设置为 1 时,RSRC 设置为 1 表示接收输入端 与发送端外部连接,设置为 0 表示接收输入端与发送端内部连接。 下表是 LOOPS 与 RSRC 两位的状态表: LOOPS 0 1 1 RSRC x 0 1 Function Normal operation 室 作 Loop mode with Rx input internally connected to Tx output Single-wire mode with Rxinput connected to sci_tx_ind 工 M:数据格式模式位,设置为 1 表示有 1 位起始位,9 位数据位,1 位停止位,设置 技 为 0 表示有 1 位起始位,8 位数据位,1 位停止位。 WAKE:唤醒条件位,设置为 1 表示由 Address mark 唤醒,设置为 0 表示由 Idle line 唤醒。 科 子 ILT:空闲模式位,置为 1 表示空闲计数从停止位开始,置 0 表示空闲计数从起始位开 始。 电 PE:奇偶校验选择位,置 1 表示允许插入奇偶校验位,置 0 禁止。 信 PT:奇偶校验形式位,置 1 表示为奇校验,置 0 表示为偶校验。 (3)SCI 控制寄存器 2(SCICR2) 飞 SCICR2 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 TIE TCIE RIE ILIE TE RE RWU SBK 复位 0 0 0 0 0 0 0 0 TIE:传输中断选择位,置 1 表示允许中断,置 0 表示禁止中断。 TCIE:传输完成中断选择位,置 1 表示允许中断,置 0 表示禁止中断。 RIE:接收寄存器满中断选择位,置 1 表示允许中断,置 0 表示禁止中断。 ILIE:空闲线中断选择位,置 1 表示允许中断,置 0 表示禁止中断。 TE:传输发送允许位,置 1 表示允许传输发送,置 0 表示禁止。 37 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! RE:接收允许位,置 1 表示允许接收,置 0 表示禁止。 RWU:接收唤醒位,设置为 1 表示普通操作,设置为 0 表示允许唤醒操作且在此期 间禁止接收中断请求,实验时设置为 1 即可。 SBK:发送断点位,置 1 表示发送断点特征,置 0 表示不发送。 (4)SCI 状态寄存器 1(SCISR1) 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 TDRE TC RDRF IDLF OR NF FE PF 复位 0 0 0 0 0 0 0 0 SCISR1 的位定义如下: TDRE:发送数据寄存器空标志位,状态为 1 表示数据已送到发送寄存器中,状态为 0 表示发送寄存器为空。 室 作 TC:发送完成位,状态为 1 表示没有发送进程,状态为 0 表示正在发送。 RDRF:接收数据寄存器标志位,状态为 1 表示接收寄存器中数据可用,状态为 0 表 示数据寄存器中没有数据。 工 技 IDLE:空闲线标志位,状态为 1 表示接收端空闲,状态为 0 表示接收端正在活动。 OR:Overrun 位,状态为 1 表示有过运行情况发生,状态为 0 表示没有。实验中用 不到。 科 NF:噪声标志位,状态为 1 表示数据中有噪声,状态为 0 表示没有。 子 FE:帧错误标志位,状态为 1 表示有帧错误发生,状态为 0 表示没有。 电 PF:奇偶错误标志位,状态为 1 表示有错误发生,状态为 0 表示没有。 信 (5)SCI 状态寄存器 2(SCISR2) 飞 SCISR2 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 BK13 TXDIR RAF 复位 0 0 0 0 0 0 0 0 BRK13:中断传输特征长度位,置 1 表示 13 或 14 位的长度,置 0 表示 10 或 11 位 的长度。 TXDIR:单方向状态下 TxD 引脚方向位,置 1 表示 TxD 作为输出端,置 0 表示作为 输入端。 RAF:接收器活动标志位,状态为 1 表示有接收进程,状态为 0 表示没有接收进程。 (6)SCI 数据寄存器(SCIDRH/L) 38 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! SCIDRH 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 读操作 R8 0 0 0 0 0 0 写操作 T8 复位 0 0 0 0 0 0 0 0 SCIDRL 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 读操作 R7 R6 R5 R4 R3 R2 R1 R0 写操作 T7 T6 T5 T4 T3 T2 T1 T0 复位 0 0 0 0 0 0 0 0 这两个寄存器是数据寄存器,R 表示接收,T 表示发送,T8,R8 的有效与否与 SCICR1 里的 M 有关,当 M 置 1 时有效,M 置 0 是则无效。 室 示例分析 作 1.在建立开发板的 SCI 与 PC 的串口通信,主要是通过超级终端来实现,PC 机端通 工 过超级终端软件很容易设置波特率、数据位、奇偶校验位、停止位、流量控制的相关参数, 技 而对于 DG128 而言,其内部 SCI 也设置了相关寄存器,这些寄存器的设置直接影响到单 片机与 PC 机能否通信。故本示例的主要问题之一就是如何设置单片机端得波特率、数据 科 位、奇偶校验位、停止位、流量控制的相关参数。 子 2.掌握编译开发环境建造 C 工程的过程,由于本示例第一次使用 C 语言编程,在第 三章介绍的项目创建过程的基础上,在第四步时选择 C,其如下图所示: 电 信 飞 之后默认均单击“下一步”,直到出现如下图所示: 39 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 室 选择“Small”单击“下一步”之后选择完成,将弹出如下图所示,双击 main.C 将可 以参照参考程序输入代码。 作 工 技 科 子 电 信 飞 3.程序的链接与定位跟系统的硬件有关,所以需要通知编译器系统的硬件情况,如 ROM 在哪里?RAM 在哪里?CodeWarrior 自动生成 .prm 文件,但是该文件不一定与用 户的实际情况相符,因此,要使定位后的程序能适应用户的硬件环境,应仔细核对自动生 成的.prm 文件与实际硬件情况是否相符。 MC9S12DG128 单片机运用的监控程序已经将 RAM 定位在 0x2000~0x3FFF;使用 E 命令进行擦除时,将擦除 0x4000~0x7FFF 和 0xC000~0xFEFF,所以,需要修改默认自动 生 成 的 .prm 文 件 , 定 位 后 的 程 序 才 能 运 行 , 即 , 将 prm 文 件 下 的 40 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! Full_Chip_Simulation_linker.prm 的内容修改为如下图所示,然后,点击“Make”进行编 译。 室 作 工 示例结语 SCI 模块提供的示例程序编译生成的.S19 下载到核心板运行后,在 PC 机上输入的字 技 符将在超级终端上显示出来,并且核心板上的调试灯将显示输入字符的 ASCII 值(如输 入 1 则显示 0x31)。 科 子 电 信 飞 41 示例 4 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! SPI串行口通信示例 示例任务 1.掌握 S12 单片机 SPI 主从接口的工作原理。 2.掌握 SPI 串行口相关寄存器的设定方法。 3.学会运用 C 语言编写 SPI 串行口模块的方法。 4.了解扩展板上芯片 74HC165 和 HCT595 的功能。 5.实现通过开关来控制扩展板 LED 灯的亮灭。 示例相关 SPI 模块有 5 个 8 位寄存器:数据寄存器 SPIDR,控制寄存器 SPICR1、SPICR2,波 特率寄存器 SPIBR 以及状态寄存器 SPISR。 室 下面简单介绍 DG128 单片机的 SPI 模块的寄存器: 作 (1)数据寄存器 SPIxDR(SPIx Data Register) 工 SPIxDR 由两个独立的数据寄存器组成:只能写入的发送数据寄存器和只能读出的接 收数据寄存器,它们共用一个地址$00DD。 技 科 写入时,为待发送的 8 位数据,记为:T7~T0; 读出时,为接收的 8 位数据,记为:R7~R0。 子 (2)控制寄存器 SPIxCR1(SPIx Control Register 1) 电 SPIx 控制寄存器 1,一般况下只能复位时写一次,以后无须再对其写入,不能更改对 SPI 的设置,SPIxCR1 的地址为$0X00D8 。 数据位 D7 信 D6 D5 D4 D3 D2 D1 D0 定义 复位 飞 SPIE SPE 0 0 SPEIE 0 MSTR 0 CPOL 0 SPHA 0 SSOE 0 LSBFE 0 SPIxCR1 的位定义如下: SPIE 位:SPI 中断允许位,SPIE=1,允许 SPI 中断;SPIE=0,禁止 SPI 中断。 SPE 位:SPI 允许位,SPE=1,允许 SP;,SPE=0,禁止 SPI SPEIE 位:SPI 发送中断允许,SPEIE=1,SPI 允许发送中断;SPIEIE=0,禁止该中 断。 MSTR 位:SPI 主机/从机模式选取择位,MSTR=1,为主机方式,反之为从机方式。 CPOL 位:SPI 时钟极性选择位,COPL=1,时钟选择低有效,SPSCK 空闲时为高电 平;CPOL=0,时钟选择高有效,SPSCK 空闲时为低电平。 42 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! SPHA 位:为 SPI 时钟相位选择位。 SSOE 位:为从机输出选择位。 LSBFE 位:低字节先传输允许位。为 1 则数据从最低位开始传输。为 0 数据从最高 位开始传输。在读/写时,该位对数据寄存器数据的最低位和最高位不会产生影响。 (3)控制寄存器 SPIxCR2(SPIx Control Register 2) SCIBDH 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 MODFEN BIDIROE SPISWAI SPC0 复位 0 0 0 0 0 0 0 0 MODFEN 位:模式错误标志位。MODFEN=1,允许 MODF 标志的设置;MODFEN=0, 禁止 MODF 标志的设置。 室 作 BIDIROE 位:双向工作模式输出允许位。为 1 则输出缓冲区允许;为 0 则禁止。 SPISWAI 位:等侍模式 SPI 停止位。为 1 则在等侍模式下 SPI 停止产生时钟信号; 为 0 则在等侍模式下 SPI 时钟信号正常。 工 技 SPCx 位:为串行控制位。 (4)波特率寄存器 SPIxBR(SPIx Baud Rate Register) 其地址为:$00DA 科 SPIxBR 的位定义如下: 数据位 D7 D6 D5 子D4 D3 定义 电 SPPR2 SPPR1 SPPR0 信 复位 0 0 0 0 0 SPPR2~SPPR0 位:为波特率预分频选择位。 飞 2~SPR0 位:为波特率选择位。 D2 SPR2 0 D1 SPR1 0 D0 SPR0 0 (5)状态寄存器 SPIxSR(Status Register) SPIxSR 的位定义如下: 数据位 D7 D6 D5 D4 D3 D2 D1 D0 定义 SPIF SPIEF MODF 复位 0 0 0 0 0 0 0 0 SPIF 位:SPIF 中断标志位。SPIF=1,说明新的数据到达 SPI 数据寄存器;SPIF=0, 说明数据没有传输结束。 SPTEF 位:SPI 发送空的中断标志位。 43 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! MODF 位:模式错误标志位。 示例分析 74HC165 和 HCT595 的功能参考芯片资料,本示例是在单片机内部 SPI 总线接口的 该两种芯片,实现 SPI 的 MOSI、MISO 等特性。 示例结语 程序描述:将编译生成的.S19 文件下载在核心板上运行后,拔动扩展板上的开关, 对应的 LED 灯将显示。 室 作 工 技 科 子 电 信 飞 44 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 示例 5 Keyboard模块示例 示例任务 1.了解键盘结构,学习扫描法和行反转法判断按键的方法。 2.了解用 8 个 I/O 设计更多的按键的方法。 3.学会运用 C 语言编写键盘模块,并能体现 SCI 模块的功能。 示例分析 1.键盘硬件 本开发板上使用的矩阵式键盘,参考如下的电路图: 室 作 工 技 科 子 在扩展板电路原理图上:PORTA 0—>3 接 Y1—>Y4;PORTA 4—>7 接 X1—>X4;可 电 用 PORTB 接的八个发光二极管作为按键状态指示灯(即哪个键按下)。 2.键盘去抖问题分析 信 (1)识别键盘上的闭合键,通常采用行扫描法或行反转法。 飞 为描述方便,将与行线相接的端口称为行线端口,与列线相连的端口称为列线端口。 (2)采用行扫描法识别闭合键时,使行线端口工作在输出方式,列线端口工作在输 入方式。 先将键盘的第 0 行输出低电平,其余各行输出高电平,然后读出取列值,如果列值中 某位为低电平,则表明行列交叉处的键被按下,若列值全为高电平则继续扫描下一行,知 道扫描到某列值有低电平或扫描完所有的行为止。可据扫描的结果判断是否有键按下和按 下的时哪一行哪一列的交点处的按键。 (3)采用行反转法识别闭合按键时,需在识别过程中改变行线端口和列线端口的工 作状态。 首先使行线端口工作在输出方式,列线端口工作在输入方式,通过、输出口向行线全 45 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 部输出 低电平,然后通过输入口读取列线值,如果此时有某一键按下,则必定会有某一 列线值为低电平。然后改变两端口的工作状态,使行线端口工作在输入方式,列线端口工 作在输出方式,将前一次读得的列线值通过列线端口输出,再通过行线端口读取行线值, 其中闭合键所在行线的值必定为低电平。当一个键被按下时,必定可读取到一对唯一的列 值和行值。据这一对列值和行值就可以判断按下的是哪一行哪一列交点处的键。 (4)为消除由于键内部机械簧片再键按下和释放时产生抖动,保证 MCU 对键的一 次闭合仅作一次处理,可在程序中加入一定延时,延时到键状态稳定后再读取键的状态。 3.本示例 4*4 矩阵键盘的默认接线方法为 PORTA 0—>3 接 X1—>X4;PORTA 4— >7 接 Y1—>Y4;在程序设计时,采用行反转法识别闭合键。 思考:如果 PORTA 0—>3 接 X4—>X1 上,接线与程序应该怎么设计。 示例结语 室 作 程序描述:将.S19 下载到核心板,在扩展板上的键盘按下键,其 KeyPress(按下键) 工 将在超级终端显示出来,而其 KB_Value 将在核心板调试灯上对应显示。 思考:如何利用 8 个 I/O 设计多于 16 个键的方法。 技 科 子 电 信 飞 46 示例 6 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! LED显示示例 示例任务 1.了解 LED 模块物理器件的相关信息。 2.掌握 LED 模块的使用方法。 3.学会使用 C 语言来编写显示 LED 程序。 4.用 C 语言引编写一段程序,其功能使 8 位动态数码管上分别从左向右开始逐一单 独显示 0~9,且向右边移动,呈现跑马灯效果。 示例分析 1.8 位动态数码管一般由 8 个发光二极管(Llight-emitting diode,LED)组成,每一 室 个位段就是一个发光二极管。一个 8 位动态数码管分别由 a、b、c、d、e、f、g 位段,外 作 加上一个小数点的位段 h(或记为 dp)组成,实物外型见下图: 工 a f 技b 科g 子e c d h 电 2.8 位动态数码管可分为共阳极和共阴极两种,如下图所示: 共阴极 8 位动态数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可 信 使相应的位段发光;共阳极的 8 段数码管则相反,在相应的位段加上低电平即可使该位段 飞 发光。本示例使用的 8 位动态数码管为共阴极。 a b c d e f g dp a b c d e f g dp (b) 共阳极 Vcc (a) 共阴极 GND 3.连排数码管,利用 CS5、CS4、CS3、CS2、CS1、CS0 控制各个数码管的位选信 号,每个时刻只能让一个数码管有效,即 CS5 、CS4、CS3、CS2、CS1、CS0 只能有一 个为 0,例如令 CS3=0,其它的全为 1,则数据线上的数据体现在第一个数码管上,其他 则不受影响。要让各个数据管均显示需要的数字,则必须逐个使相应位选信号为 0,其他 47 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 位选信号为 1,并将要显示的一位数字送到数据线上。这种方法叫“位选线扫描法”。虽 然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的“视觉暂留效应”(约 100ms 左右),看起来则是同时显示的。 示例结语 对于数码管的显示点亮只是显示模块的一种,不过它对于仪器仪表的控制显示很重 要。 室 作 工 技 科 子 电 信 飞 48 示例 7 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! LCD显示模块示例 示例任务 1.掌握 LCD 模块的使用方法。 2.了解 LCD 模块在扩展板上与各端口相连信息。 3.学会利用 C 语言对 LCD 模块进行编写简单程序。 4.定义一段字符,通过 LCD 模块显示定义的字符。 示例相关 1.1602 型液晶显示器性能概述 本开发套件使用日立公司的 HD44780 芯片为模块控制器的 LCD 模块。HD44780 是 室 专门的 LCD 模块控制器,加上字符型液晶显示屏 LCD、扩展驱动电路以及少量阻、容元 件等装配在 PCB 板上就构成了一个完整的 LCD 模块,选用 1602 型可以显示 16 列*2 行 作 字符。 工 2.1602 型液晶显示器接口工作原理 技 HD44780 液晶显示屏是以若干个 5*8 点阵块组成的显示字符群。每个点阵块为一个 科 字符位,字符间距和行距都为一个点的宽度;其字符发生器 ROM 可显示 192 种字符;具 有 64 个字节的自定义字符 RAM,可自定义 8 个 5*8 点阵字符;具有 80 个字节的 RAM, 子 可以显示多达 80 个字符。基于 HD44780 的 LCD 模块可以直接与任何 4 位或者 8 位的数 电 据总线进行接口连接,也可以通过一个 I/O 设备与微处理器连接,需要非常小的电流(低 于 1mA)。HD44780 的 LCD 模块和微处理器的接口如图下所示: 信微 数据 8 位 D7~D0 字符 飞处 理 寄存器选择 RS LCD 模块 器 或 E 4 行、 每行 I/O R/#W 设 20 个 HD44780 的 LCD 模块的主要引脚功能说明如下: ◆ RS 输入寄存器选择:1 数据寄存器,0 指令寄存器; ◆ R/W 输入读写操作选择:1 读,0 写; ◆ E 输入使能信号,R/W= 0,E 下降沿有效,R/W= 1,E 高电平有效; ◆ DB0~DB7 八条数据总线。 49 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 所显示的字符写到数据寄存器中,控制命令写到控制寄存器中。控制寄存器允许软件 控制模块的操作方式,如:清除显示、设置光标位置、将显示设置为开或关等等。 HD44780 花费一定的时间处理发送给它的命令或数据。由于这个原因,本软件发送 一个命令或数据后,在发送下一个命令或数据前,至少需要等待指定的时间。注意, HD44780 本身允许微处理器读“忙(BUSY)”的状态。微处理器读出该状态以便确定 HD44780 是否准备接收另一个命令或更多的数据。如果能够的话,应该使用 HD44780 的 这个功能,因为它提供了 HD44780 是否正准备接收另一个命令或更多数据的真正的信息。 在发送下一个命令或数据前,至少等待一个指定的时间。HD44780 的写时序图见下 图: RS S/W E D0--D7 室 作 2.2v 0.6v Tas 2.2v 0.6v Th 工 0.6v 技0.6v 科 Pweh Tef 2.2v 2.2v 0.6v Ter 子Tdsw 0.6v Th 0.6v 电2.6v 2.6v Valid Data 信 0.6v 0.6v 飞 Tcyc 3.点阵字符型液晶显示模块的基本特点  液晶显示屏是以若干 5*8 或 5*11 点阵块组成的显示字符群。  主控制电路为 HD44780(HITACHI)及其它公司的兼容电路。  内部具有字符发生器 ROM,可显示 192 种字符(160 个 5*7 点阵和 31 个 5*10 点阵字符)。  具有 64 字节的自定义字符 RAM,可以定义 8 个 5*8 点阵和 4 个 5*11 点阵字符。  具有 64 字节的数据显示 RAM。 50 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐!  标准接口特性,与 H68HC08 系列 MCU 容易接口。  模块结构紧凑、轻巧、装配容易。  单+5V 电源供电。  低功耗、高可靠性。 4.HD44780 的引脚 HD44780 的外部接口信号一般有 14 条,有的型号显示器使用 16 条,其中与 MCU 的 接口有 8 条数据线、3 条控制线。 管脚号 符号 电平 方向 引脚含义说明 1 Vss 电源地 2 Vdd 电源(+5V) 3 V0 液晶驱动电源(0~5V) 4 RS H/L 5 R/W H/L 输入 输入 室 寄存器选择;1-数据寄存器 0-数据寄存器 读写操作选择:1-读操作 0-写操作 6 H/L E H→L 输入 作 使能信号:R/W =0,E 下降沿有效, R/W=1, E=1 有效 7~10 DB0~ DB3 三态 工 8 位数据总线的低 4 位,若与 MCU 进行 4 位 传送时,此 4 位不用 11~14 15~16 DB4~ DB7 E1~E2 三态 输入 5.HD44780 的编程结构 技 8 位数据总线的高 4 位,若与 MCU 进行 4 位 传送时,只用此 4 位 科上下两行使能信号,只用于一些特殊型号 子 从编程角度看,HD44780 内部主要由指令寄存器(IR)、数据寄存器(DR)、忙标志(BF)、 电 地址计数器(AC)、显示数据寄存器(DD RAM)、字符发生器 ROM(CG ROM)、字符发生器 RAM(CG RAM)及时序发生电路构成。 信 6.HD44780 的指令集 飞  清屏(Clear Display)  归位(Return Home)  输入方式设置(Entry Mode Set)  显示开关控制(Display ON/OFF Control)  光标或画面移位(Cursor or Display Shift)  功能设置(Function Set)  CG RAM 地址设置(CG RAM Address Set)  DD RAM 地址设置(DD RAM Address Set)  读“忙”标志 BF 和 AC 值(Read Busy Flag and Address Count)  写数据到 DDRAM 或 CGRAM(Write Data to DDRAM or CG RAM) 51 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐!  读 DDRAM 或 CGRAM 数据(Read Data from DDRAM or CGRAM) 了解更多请阅读 1602 LCD 相关的资料。 示例结语 程序描述:将编译生成的 S19 文件下载到核心板上运行后将显示: yiqiqingzhu..... Beijing20080808! 室 作 工 技 科 子 电 信 飞 52 示例 8 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 增强型定时器模块示例 示例任务 1.了解 S12 单片机的定时器结构。 2.掌握使用定时器模块的方法。 3.学会使用定时输入捕捉、定时输出比较、脉冲累加器、模数递减计数器的功能。 示例相关 1.S12 系列 MCU 的定时器模块在 HCl2 的标准定时器模块(Standard Timer Module, TIM)基础上增加了一些新的功能,加强了原来的输入捕捉及脉冲累加器的一些功能,扩 大了应用范围,因此 S12 的定时器模块称为增强型定时器模块(Enhanced Capture Timer 室 Module,ECT),其结构框图如下图所示。ECT 功能相当于高速的 I/O 口,由一个 16 位自 由运行计数器、8 个 16 位的输入捕捉/输出比较通道、2 个 16 位脉冲累加器以及一个 16 工作 位模数递减计数器(MDC)组成。 总线时钟 模块计数中断 定时器溢出中断 定时器通道0中断 预分频因子 技 16位计数器 科 16位模数计数器 通道 0 输入捕捉 输出比较 子 寄存器 IOC0 定时器通道7中断 PA溢出中断 PA输入中断 PB溢出中断 电16位脉冲累加器A 信 16位脉冲累加器B 通道 7 输入捕捉 输出比较 IOC7 飞 2.S12 增强型定时器模块 ECT 具有如下特点:  8 个具有 16 位缓冲寄存器的输入捕捉通道;  4 个 8 位脉冲累加器可以通过级联形成 2 个 16 位的脉冲累加器;  1 个具有 4 位预分频器的 16 位递减模数计数器;  4 个可选的延迟计数器用来增强输入抗干扰能力。 ECT 实际上是一个 16 位的可编程计数器,它的基本时钟频率可以通过预分频器设置, 用于产生波形输出、测量输入波形、统计脉冲或边沿个数以及作为时间基准。它也可以在 不需 S12 MCU 干预的情况下产生脉宽调制输出。它不仅具有一个 16 位递减模数计数器, 53 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 而且是一个功能完善的定时器,具有自动重装载和中断能力,又可为 IC、PAL 寄存器向 保持寄存器的传送提供定时控制信号。MDC 还可作为具有定时中断功能的独立时钟基准。 了解更多关于定时器模块,请阅读相关资料介绍。 示例分析 (1)用输入捕捉功能来监视外部的输入信号。用导线将 PT0 与 JP5 对应的开关相连, 拔动开关产生电平变化时,PT0 将捕捉发生的跳变(上升沿,下降沿都捕捉),利用中断 处理将得到电平发生变化的时刻。 设置定时器时钟=总线时钟/128,电平发生变化的时刻为:溢出次数*($FFFF*定时 器时钟周期)+此时 TC0 的值*定时器时钟周期。 室 (2)在规定时刻输出需要的电平,实现对 LED 灯的闪熄控制。 设置定时器时钟=总线时钟/128,当 TC 设置为 FFFF 时(与自由计数器比较),电平 作 输出时刻为$FFFF*定时器时钟周期,相当 0.35S,故调试灯将隔 0.35S 发生变化。 工 (3)利用脉冲累加器记录输入引脚上发生的有效边沿事件的次数,用导线将 PT7 与 JP5 对应的开关相连,当拔动开关产生的低电平到高电平时(上升沿有效)将触发脉冲 技 累加器计数加 1,其触发的次数将在超级终端上显示出来。 (4)利用模数递减计数器作为时基定时产生中断,从而实现对 LED 灯定时的控制。 科 设置模数递减计数器输出的时钟分频系数为 16,这样定时器时钟=总线时钟/16;当 子 MCCNT=0XFFFF 时,时基定时时间为 0XFFFF*定时器时钟周期*中断次数,相当于 0.87S, 电 故调试灯将隔 0.87S 发生变化。 示例结语 信 (1)按要求连好导线,通过超级终端将.S19 文件下载到核心板,此时,将不断的显 飞 示溢出的次数,当拔动开关后,超级终端将显示此时的 TC0 值,计算后得出此时电平发 生变化的时刻。 (2)通过超级终端将.S19 文件下载到核心板,实现对调试灯的闪熄控制。 (3)按要求连好导线,通过超级终端将.S19 文件下载到核心板,当拔动开关产生的 低电平到高电平时(上升沿有效)将触发脉冲累加器计数加 1,脉冲累加器记录输入引脚 上发生的有效边沿事件的次数,并将记录的次数在超级终上显示出来。 (4)通过超级终端将.S19 文件下载到核心板,模数递减计数器作为时基定时产生中 断,使用调试灯每隔 0.87S 状态发生变化。 54 示例 9 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! A/D转换模块示例 示例任务 1.掌握 A/D 模块的功能。 2.了解 S12 单片机 A/D 模块的使用方法。 3.学会使用 C 语言对 A/D 模块进行编程,用 S12 的 ADC 模块将一路(或多路)模拟 电平转换成数字量,并将转换结果通过 SCI 发送到 PC 终端显示出来。 注:在使用到 A/D 转换器的输入引脚时 DG128 芯片的 Vrh、Vrl 引脚必须分别接参考电压的正、 负极,通常就是接电源的正、负端,连接时请仔细对照芯片原理图才进行连接。 示例相关 S12 的 AD 模块的相关寄存器描述如下: 室 作 1.ATDCTL2(控制寄存器 2),其地址为$0082 R ADPU AFFC AWAI ETRIGLE ETRIGP ETRIGE ASCIE ASCIF W 工 ADPU:ATD 启动控制位。ATD=1,允许 ATD 正常工作;反之禁止 ATD。 技 AFFC:ATD 标志快速清除允许位。ATD=1,将所有 ATD 转换结束标志设为快速清 科 除方式,这时对结果寄存器的任何访问将自动清除相关的 CCF 位。ATD=0,ATD 标志通 子 过正常方式清除(读取转换结果前,通过读状态寄存器清除相关的 CCF 位)。 AWAI:中断等待状态下 ATD 运行禁止位。AWAI=1,MUC 进入中断等待状态后, 电 ATD 停止运行,以降低功耗;AWAI=0,MCU 进入中断等待状态后,ATD 继续运行。 信 ETRIGLE:外部触发的边沿控制位。 ETRIGP:外部触发的极性。 飞 ETRIGLE 0 ETRIGP 0 外部触发的敏感度 上升沿 0 1 下降沿 1 0 低水平 1 1 高水平 ETRIGE:外部触发模式使能位。ETRIGE=1,未决的 ATD 中断完成序列;ETRIGE=0, 没有 ATD 中断发生。 ASCIE:ATD 转换序列结束中断允许位。ASCIE=1,转换序列结束时允许中断;反 之禁止 ATD 中断。 ASCIF:ATD 转换序列结束中断标志。ASCIF=1,ATD 转换序列结束;反之未发生 ATD 中断。 55 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 2.ATDCTL3(控制寄存器 3),其地址为$0083 R 0 S8C S4C S2C S1C FIFO FRZ1 W FRZ0 S8C、S4C、S2C、S1C:转换序列长度位。 S8C S4C S2C S1C 转换序列每位号 0 0 0 0 8 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 0 1 1 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 室 1 X X X 8 FIFO:结果寄存器的 FIFO 模式。FIFO=1,转换的结果被放置在连续的结果寄存器 作 中;FIFO=0,转换的结果被放置在相应的结果寄存器选择序列长度中。 FRZ1-0:背景调试允许位。 FRZ1 FRZ0 工 ATD 的响应 0 0 0 1 技继续转换 保留 1 1 科 0 1 完成转换,然后冻结 立即冻结 子 3.ATDCTL4(控制寄存器 4),其地址为$0084 R SRES8 SMP1 SMP0 PRS4 PRS3 PRS2 PRS1 PRS0 电 W SRES8:ATD 转换模式允许位。SRES8=1,转换按 8 位进行;SRES8=0,转换按 10 位进行。 信 飞 SMP1-0:采样时间选择位。 SMP1 SMP0 最终采样时间 0 0 2 个 AD 转换时钟周 0 1 4 个 AD 转换时钟周 1 0 8 个 AD 转换时钟周 1 1 16 个 AD 转换时钟周 PRS4-0:ATD 定标器除数选择位。 分频因子 00000 00001 00010 00011 00100 总分频系数 2 4 6 8 10 最高允许频率 4 MHz 8 MHz 12 MHz 16 MHz 20 MHz 最低允许频率 1 MHz 2 MHz 3 MHz 4 MHz 5 MHz 56 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 00101 12 24 MHz 6 MHz 00110 14 28 MHz 7 MHz 00111 16 32 MHz 8 MHz 01000 18 36 MHz 9 MHz 01001 20 40 MHz 10 MHz 01010 22 44 MHz 11 MHz 01011 24 48 MHz 12 MHz 01100 26 52 MHz 13 MHz 01101 28 56 MHz 14 MHz 01110 30 60 MHz 15 MHz 01111 32 64 MHz 16 MHz 10000 34 68 MHz 17 MHz 10001 36 72 MHz 18 MHz 10010 38 76 MHz 19 MHz 10011 10100 40 42 80 MHz 84 MHz 室20 MHz 21 MHz 10101 10110 44 46 作 88 MHz 92 MHz 22 MHz 23 MHz 10111 11000 48 50 工 96 MHz 100 MHz 24 MHz 25 MHz 11001 11010 52 54 技104 MHz 108 MHz 11011 11100 56 58 科 112 MHz 116 MHz 11101 11110 子 60 62 120 MHz 124 MHz 11111 64 128 MHz 电 4.ATDCTL5(控制寄存器 5),其地址为$0085 26 MHz 27 MHz 28 MHz 29 MHz 30 MHz 31 MHz 32 MHz R W DJM 信DSGN SCAN MULT 0 CC CB CA 飞 DJM:对齐方式位。DJM=1,结果寄存器采用右对齐方式;DJM=0,结果寄存器采 用左对齐方式。 DSGN:结果寄存器中采用有符号或无符号方式。DSGN=1,结果寄存存器采用有符 号的存储;反之采用无符号的存储。 SCAN:通道连续扫描允许位。SCAN=1,连续进行以转换序列为单位的转换;CAN=0, 每启动一次完成一个转换序列。 MULT:多通道转换允许位。MULT=1,ATD 每个转换序列中的 4 或 8 次转换分别依 次对应指定的几个输入通道;MULT=0,ATD 将每个转换序列中的 4 或 8 次转换限定在单 一输入通道,该通道由 CD-CA 选定。 CC、CB、CA:转换通道选择位。 57 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! CC CB CA 被转换的通道 0 0 0 AN0 0 0 1 AN1 0 1 0 AN2 0 1 1 AN3 1 0 0 AN4 1 0 1 AN5 1 1 0 AN6 1 1 1 AN7 5.ATDSTAT(状态寄存),其地址为$0086 R SCF W 0 0 ETORF FIFOR CC2 CC1 CC0 SCF:转换完成标志。SCF=1,转换已经完成;SCF=0,转换没有完成。 室 ETORF:外部触发溢出标志。ETORF=1,外部触发引起了一个错误的事件;ETORF=0, 没有外部触发而引起错误的事件。 FIFOR:FIFO 标志。 作 CC2、CC1、CC0:当前转换通道号。 工 示例分析 技 扩展板留出了 2 个模拟电平输入通道,分别是 POT1、POT2。其中 POT1 属于 AD0, 科 POT2 属于 AD1,注意设置与采样通道相对应的寄存器。 子 模拟电平由 5V 电源经变阻器分压产生,范围 0~5V。模拟电平产生电路如下: 电 3 +5V 3 +5V 信JP3 AD0 2 POT1 5K AD1 2 POT2 5K 1 1 飞PAD1 PAD0 1 3 2 4 HEADER 2X2 AD1 AD0 示例结语 程序描述:通过超级终端将.S19 文件下载到核心板,超级终端和 LED 将同时显示此 时 A/D 转换的电压,当对扩展板上的 POT2 变阻器进行调节时,超级终端和 LED 的显示 将相应的变化。 58 示例 10 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! PWM模块示例 示例任务 1.掌握 PWM 模块的功能。 2.学会使用 PWM 模块。 3.了解 PWM 用作 D/A 转换的原理。 4.使用单片机内部 PWM 模块调制产生不同的脉宽的方波,通过 LM324 运算放大电 路观察方波经过低通滤波器的 D/A 转换效果。 示例相关 PWM 模块共有 28 个寄存器,其中 8 个为系统保留寄存器,具体介绍如下: (1)PWM 启动寄存器(PWME) 室 R W RESET: 7 PWME7 0 6 PWME6 0 5 PWME5 0 4 PWME4 0 作 3 2 1 PWME3 PWME2 PWME1 工 0 0 0 0 PWME0 0 技 本寄存器的 8 个 bits 分别用来开关 8 路 PWM 的通道。 (2)PWM 极性寄存器(PWMPOL) 科 7 6 5 4 3 2 1 0 R W PPOL7 PPOL6 子 PPOL5 PPOL4 PPOL3 PPOL2 PPOL1 PPOL0 RESET: 0 0 0 0 0 0 0 0 电 本寄存器的 8 个 bits 分别用来设定 8 路 PWM 的通道输出波形的起点电平。 信 (3)PWM 时钟选择寄存器(PWMCLK) R 飞 7 6 5 4 3 2 1 0 PCLK7 PCLK6 PCLK5 PCLK4 PCLK3 PCLK2 PCLK1 PCLK0 W RESET: 0 0 0 0 0 0 0 0 本寄存器的 8 个 bits 分别用来设定 8 路 PWM 通路的时钟来源。 (4)PWM 预分寄存器(PWMPRCLK) 7 6 5 4 3 2 R 0 PCKB2 PCKB1 PCKB0 W RESET: 0 0 0 0 0 PCKA2 0 0 本寄存器用来设定 Clock A 和 ClockB 的预分频因子。 1 PCKA1 0 0 PCKA0 0 (5)PWM 波形对齐寄存器(PWMCAE) 59 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 7 6 5 4 3 2 1 0 R CAE7 W RESET: 0 CAE6 0 CAE5 0 CAE4 0 CAE3 0 CAE2 0 CAE1 0 CAE0 0 本寄存器的 8 个 bits 用来分别选择 8 路 PWM 通路输出是中心对称还是左对称。 (6)PWM 控制寄存器(PWMCTL) 7 6 5 4 3 2 1 0 R 0 0 CON67 CON45 CON23 CON01 OSWA1 PFRZ W RESET: 0 0 0 0 0 0 0 0 本寄存器提供 PWM 模块操作时的几个控制位。 (7)保留寄存器(PWMTST) R 7 0 6 0 5 0 4 0 3 0 2 0 室 1 0 0 0 W RESET: 0 0 0 0 0 作 0 0 0 (8)保留寄存器(PWMPRSC) 7 6 5 4 工 3 2 1 0 R W 0 0 0 0 技0 0 0 0 科 RESET: 0 0 0 0 0 (9)Clock A 分频寄存器(PWMSCLA) 0 0 0 7 6 R/W Bit7 6 5 5 子4 3 4 3 2 2 1 1 0 Bit0 RESET: 0 0 0 0 0 0 0 0 电 本寄存器用来设定 Clock SA 的频率:Clock SA= Clock A / (2*PWMSCLA) 信 (10)Clock B 分频寄存器(PWMSCLB) R/W 飞 7 6 Bit7 6 5 5 4 4 3 3 2 2 1 1 0 Bit0 RESET: 0 0 0 0 0 0 0 0 本寄存器用来设定 Clock SB 的频率:Clock SB= Clock B / (2*PWMSCLB) (11)保留寄存器(PWMTSCNx) 7 6 5 4 3 2 1 0 R 0 0 0 0 0 0 0 0 W RESET: 0 0 0 0 0 0 0 0 (12)PWM 通道计数寄存器(PWMCNTx) 7 6 5 4 3 2 1 0 R Bit7 6 5 4 3 2 1 Bit0 60 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! W 0 0 0 0 0 0 0 0 RESET: 0 0 0 0 0 0 0 0 此 8 个寄存器分别为 8 个通道的波形输出计数器。 (13)PWM 通道周期寄存器(PWMPERx) 7 6 5 4 3 2 1 0 R/W Bit7 6 5 4 3 2 1 Bit0 RESET: 1 1 1 1 1 1 1 1 此 8 个寄存器分别为 8 个通道设定方波的周期。 (14)PWM 通道脉宽寄存器(PWMDTY x) 7 6 5 4 3 2 1 0 R/W Bit7 6 5 4 3 2 1 Bit0 RESET: 1 1 1 1 1 1 1 1 此 8 个寄存器分别为 8 个通道设定脉宽。 (15)PWM 关闭寄存器(PWMSDN) 7 6 5 4 室 作 3 2 1 R W 0 PWMIF PWMIE PWMLVL PWMR-STRT 工0 PWM7IN 技 RESET: 0 0 0 0 00 本寄存器用来设定紧急情况下 PWM 的自关闭功能。 PWM7INL 0 0 PWM7EN A 0 示例分析 科 子 PWM 用作 D/A 输出时,最简单的方法就使 PWM 波型通过一个一阶低通滤波器,为 了使电压保持,要使输入阻抗尽可能大,为此在低滤波器后再加上一级电压跟随器。得到 电 的模拟量就和 PWM 波型的占空比有关。比如,如果占空比是 1:1,那么得到的电压值 信 就是 1/2 的最大输出电平(5v),即 2.5v。PWM 用作 D/A 转换接口电路如下: JP2 飞 PWM0 PWM1 1 3 2 4 PP0 PP1 HEADER 2X2 PWM0 PWM1 R5 R7 R4 100K 1K +5V 4 3 2 C3 10uF U6A 1 LM324 +5V 11 C5 0.1uF R6 100K 1K 5 6 C4 10uF U6B 7 LM324 J4 1 2 CON2 J3 1 2 CON2 61 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 扩展板上为用户提供了一个这样的接口电路。同时,为了使用户能够更加直观的看到 模拟电平的变化,又提供了一个串有电阻的发光二极管,用户可将该电平接到发光二极管 上。当该电平大于 2v 时,随着电平的增高,发光二极管的亮度就会随之增加。 若在扩展板上 PWM 模块上的 C3,C4 两电容没有焊上,可以直接用导线将 PP0 与 JP4 对应的 D0 相连接。当然,在程序上进行修改 PWMDTYx 与 PWMPERx 的值才能改变灯 的亮度。 示例结语 程序描述:在写程序之前应先用导线连好 PP0 与 D0,编译生成 S19 文件下载到核心 板上运行之后,D0 将点亮;当根据公式:占空比=[(PWMDTYx+1)/(PWMPERx+1)] × 室 100%进行修改 PWMdDTy 与 PWMPERx 后,编译生成 S19 文件下载到核心板上运行,小 灯的亮度发生变化,占空比越大,灯变得越暗(原因是 LED 灯为低电平有效)。 作 工 技 科 子 电 信 飞 62 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 附录A PK7 3 2 1 CON3 R6 3. 3K VCC MODA 3 2 1 CON3 VCC MODB 3 2 1 CON3 VCC R10 3. 3K R9 3. 3K MODC 3 2 1 CON3 VCC R8 3. 3K PE7 3 2 1 CON3 R7 3. 3K VCC P108 MODA MODB BKGD P36 BDMMIN 5 3 BKG1D 5 3 1 6 4 2 HEDER32 VCC 6 4 2 RESETn BDMOUT VCC 5 3 PT71 5 3 1 6 4 2 6 4 2 PT6 HEDER32 J7 1 2 CON2 J5 1 2 CON2 J8 1 2 CON2 J6 1 2 CON2 R16 120 CANH4 CANL4 GND 8 CANH4 7 CANL4 6 5 UA RS CANH CANL VREF TXD GND VCC RXD 82C250 R18 120 UB CANH0 CANL0 GND 8 CANH0 7 CANL0 6 5 RS CANH CANL VREF TXD GND VCC RXD 82C250 VCC 1 3 GND 5 7 9 RXCAN111 RXCAN0 13 PT4 15 PT6 17 2 VCC 4 6 GND 8 10 12 TXCAN0 14 TXCAN1 16 PT5 18 PT7 P109 109 P110 110 P111 111 P112 112 P1 1 P2 2 P3 3 P4 4 PW7 PW6 PW5 PW4 PW3 PW2 PW1 PW0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 64 P64 63 P63 62 P62 61 P61 60 P60 59 P59 58 P58 57 P57 P65a 64 P67 62 P69 60 P71 58 P73 56 P75 54 P77 52 P79 50 P81 48 63 61 P68 59 P70 57 P72 55 P74 53 P76 51 P78 49 P80 47 P82 P19 19 P21 21 23 PB1 25 PB3 27 PB5 29 PB7 31 P33 33 P35 35 20 P20 22 P22 24 PB0 26 PB2 28 PB4 30 PB6 32 P32 34 P34 36 P36 PT7 18 PT6 17 PT5 16 PT4 15 PT3 12 PT2 11 PT1 10 PT0 9 PT7 PT6 PT5 PT4 PT3 PT2 PT1 PT0 AN07 AN06 AN05 AN04 AN03 AN02 AN01 AN00 81 P81 79 P79 77 P77 75 P75 73 P73 71 P71 69 P69 67 P67 P83a 46 P85 44 P87 42 40 P91 38 P93 36 P95 34 P97 32 P99 30 45 P84 43 室41 P88 39 37 P92 35 P94 33 P96 31 P98 29 P100 1 2 3 4 P41 S2 P43 S3 1 12 2 VCC DIODE 1N41 48 R1 4. 7K R2 VCC 100 S1 SW-PB 1 12 2 VCC R1 7 1K TXCAN4 GND VCC RXCAN4 VCC 37 P39 39 P41a 41 P43a 43 45 47 作 P49 49 P51 51 P53 53 P55 55 P57 57 P59 59 P61 61 工 P63 63 64PIN 16M 技 U2 3 2 科 1 电子 MC34064P 38 40 42 S4 44 P44a 46 48 P48 50 P50 52 P52 54 P54 56 P56 58 P58 60 P60 62 P62 64 P64 EXTAL PB7 31 P44 PB6 30 PB5 29 PB4 28 PB3 27 PB2 26 PB1 25 PB0 24 P36 36 MODB 37 MODA 38 P39 39 P53 53 P54 54 P55 55 P56 56 C13 22PF U3 C14 22PF 46 47 P83 83 84 85 S8 P83 P84 P85 P9977 R11 VCC 3.3K RESETn 42 S9 P82 82 P80 80 P78 78 P76 76 P74 74 P72 72 P70 70 P68 68 R14 3. 3K P48 48 BKGD 23 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0 EXTAL XTAL VDDA VRH VRL VREGEN RESETn AN15 AN14 AN13 AN12 AN11 AN10 AN09 AN08 TEST MODC 2 21 1 飞信 C23 0. 1uF P43 C24 C15 0.01uF 5nF 43 C16 500pF VDDPLL PS7 PS6 PS5 PS4 PS3 PS2 PS1 PS0 PM0 PM1 PM2 PM3 PM4 PM5 PM6 PM7 PJ 6 PJ 7 PH0 PH1 PH2 PH3 PH4 PH5 PH6 PH7 PK0 PK1 PK2 PK3 PK4 PK5 PK7 PJ 0 PJ 1 VDD1 VDD2 VDDX VDDR VSS1 VSS2 VSSX VSSR 96 P96 95 P95 94 P94 93 P93 92 P92 91 P91 90 TXD0 89 RXD0 105 RXCAN0 104 TXCAN0 103 RXCAN1 102 TXCAN1 101 P101 100 P100 88 P88 87 P87 P101 28 P107 26 P109 24 P111 22 P1 20 P3 18 P5 16 P7 14 PT0 12 PT2 10 P13a 8 6 4 VCC 2 64PIN C5 27 25 P108 23 P110 21 P112 19 P2 17 P4 15 P6 13 P8 11 PT1 9 PT3 7 5 3 1 99 P99 98 P98 52 P52 51 P51 50 P50 49 P49 35 P35 34 P34 33 P33 32 P32 8 P8 7 P7 6 P6 5 P5 20 P20 19 P19 RXCAN4 TXCAN4 VCC 2 COM Rx13 8 TXD0 11 10 C7 2 21 11 3 1. 0uF C6 1.0uF 21 1 1. 0uF U1 R1 IN R2 IN T1 IN T2 IN C1+ C1- 15 GND V+ VVCC 2 6 16 VCC R1 OUT R2 OUT T1 OUT T2 OUT C2+ C2- MAX232CPE 108 P108 22 P22 21 P21 C26 C25 0.01uF 0.1uF C27 0. 1uF C28 0. 01u F 13 P13 65 P65 107 P107 41 14 66 C19 0. 1uF C20 0. 01u F L3 2. 2uH C11 10uF VCC 106 40 P4 1 L4 2. 2uH VCC RP1 1 2 3 4 5 6 7 8 9 CON9 VCC LED0 LED LED1 1 12 LED LED2 LED LED3 LED LED4 LED LED5 LED LED6 LED LED7 LED PB0 2PB1 PB2 PB3 PB4 PB5 PB6 PB7 12 RXD0 9 14 COM Tx 7 C8 41 5 12 2 1. 0uF 2 21 1 C9 1. 0uF J9 1 6 COM Tx 2 7 COM Rx 3 8 4 9 5 DB9 S7 P13a S6 P65a L1 J3 P13 2. 2uH 3 3 2 2 1 1 CON3 P65 F1 FUSE1 R12 47 S5 P83a P83 2 21 1 VCC C1 0. 1uF C2 47uF R3 470 2 21 1 2 21 1 2 21 1 R1 9 1K R15 4. 7k P4444 XFC VSSA 86 VSSPLL 45 C21 0. 1uF C22 0. 01u F C12 10uF P83 C18 C17 L2 2. 2uH VCC VCC 0. 01u F 0. 1uF C10 1 TXCAN0 10uF C29 2 GND MC9S12DP256/DG128 0. 1uF C30 3 VCC 47uF 4 RXCAN0 GND MC9S12DP256/DG128的最小硬件系统原理图 63 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 附录B 3 2 1 CON3 J5 1 +5V J6 1 CON1 PS2 PS3 PH3 J1 DB9 +5V L0 2.2uH +5V R1 R0 47 1K C0 0. 1uF C1 LED 47uF JP3 PAD1 PAD0 1 3 2 4 AD1 AD0 HEADER 2X2 PWM0 R5 JP2 PWM0 PWM1 1 3 2 4 PP0 PP1 HEADER 2X2 PWM1 R7 X1 SW1 X2 SW2 X3 SW3 +5V R2 1K JP1 2 1 4 3 6 5 HEADER 3X2 1 6 2 7 3 8 4 9 5 R3 50 Q0 8050 1 2 4 3 C8 1uF C7 +5V 1uF C2 +5V SP0 0. 1uF SPEAKER 1 1 AD0 2 3 +5V POT1 5K AD1 2 3 R4 +5V 100K POT2 5K 1K +5V 4 3 2 C3 10uF U6A 1 LM324 +5V 11 C5 0. 1uF R6 100K 1K 5 6 C4 10uF U6B 7 LM324 J4 1 2 CON2 J3 1 2 CON2 SW5 SW6 SW7 SW9 SW10 室SW11 SW13 作SW14 SW15 工 U1 +5V C6 R IVCC /R/E B D A DE VSS 8 7 6 5 0. 1uF R8 MAX485 120 +5V C9 1uF U2 2 6 16 15 14 7 13 8 Vs+ VsVCC GND T1OUT T2OUT R1IN R2IN MAX232CPE C1+ C1C2+ C2T1IN T2IN R1OUT R2OUT C10 1uF 1 3 4 5 11 10 12 9 D0 LED D1 LED J2 1 2 3 RS485 C11 1uF JP0 1 2 3 4 HEADER 2X2 P11 +5V 1 3 GND 5 7 9 PM2 11 2 +5V 4 6 GND 8 10 12 PM1 P12 技+5V 1 3 GND 5 7 9 PM2 11 PM0 13 PT4 15 PT6 17 PK5 19 PJ1 21 23 PB1 25 14 PM3 PM0 13 科16 PT5 PT4 18 PT7 PT6 20 PK4 PK5 22 PJ0 PJ1 24 PB0 26 PB2 PB1 15 17 19 21 23 25 PB3 27 28 PB4 PB3 27 PB5 29 PB7 31 PH6 33 PH4 35 37 PE4 39 子30 PB6 32 PH7 34 PH5 36 PE7 38 40 PB5 29 PB7 31 PH6 33 PH4 35 37 PE4 39 VDDR 41 42 VDDR 41 PS3 PS2 电VDDPLL43 45 47 PH3 49 PH1 51 PE3 53 44 XFC 46 48 TEST 50 PH2 52 PH0 54 PE2 VDDPLL43 45 47 PH3 49 PH1 51 PE3 53 PE1 55 56 PE0 PE1 55 信PA0 57 PA2 59 PA4 61 PA6 63 64PIN 58 PA1 60 PA3 62 PA5 64 PA7 PA0 57 PA2 59 PA4 61 PA6 63 64PIN 2 +5V 4 6 GND 8 10 12 PM1 14 PM3 16 PT5 18 PT7 20 PK4 22 PJ0 24 PB0 26 PB2 28 PB4 30 PB6 32 PH7 34 PH5 36 PE7 38 40 42 44 XFC 46 48 TEST 50 PH2 52 PH0 54 PE2 56 PE0 58 PA1 60 PA3 62 PA5 64 PA7 VDD2 64 PAD0 62 PAD1 60 PAD2 58 PAD3 56 PAD4 54 PAD5 52 PAD6 50 PAD7 48 VDDA 46 VRL 44 PM7 42 40 PS2 38 PS4 36 PS6 34 VREGEN32 PJ6 30 PM4 28 VDDX 26 PP7 24 PP5 22 PP3 20 PP1 18 PK3 16 PK1 14 PT0 12 PT2 10 VDD1 8 6 4 +5V 2 P21 64PIN U3 GND QA QH' QB VCC QC PS6 PS7 MR SH_CP ST_CP QD QE QF PS5 OE DS QG QH 74HCT595 JP4 2 1 4 3 6 5 8 7 10 9 12 11 14 13 16 15 ENABLE D2 LED D3 LED D4 LED D5 LED D6 LED D7 LED 飞RP1 9 8 7 6 5 4 3 2 1 +5V 1K*8 C12 0. 1uF +5V U5 PS7 PS6 SL CLK1 H G Q0 F PS4 GND Q1 E D SER C CLK2 B VCC A 74HC165 RP0 1K*8 JP5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ENABLE 9 8 7 6 5 4 3 2 1 +5V SW0 9 8 10 7 11 6 12 5 13 4 14 3 15 2 16 1 SW DIP-8 J7 8 7 6 5 4 3 2 1 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 Segment J8 8 7 6 5 4 3 PK5 PK4 PK3 PK2 PK1 PK0 2 1 Bit +5V Y4Y3Y2Y1X4X3X2X1 X4 SW4 Y1 SW8 Y2 SW12 Y3 SW16 Y4 16 15 14 13 12 11 10 9 8 7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 6 5 4 3 2 1 JP6 ENABLE +5V POT3 3 20K 1 2 1 2 3 PK0 4 PK1 5 PK2 6 PB0 7 PB1 8 PB2 9 PB3 10 PB4 11 PB5 12 PB6 13 PB7 14 LCD Vss Vdd Vee RS R/W EN DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 CON14_L 63 61 PAD8 59 PAD9 57 PAD10 55 PAD11 53 PAD12 51 PAD13 49 PAD14 47 PAD15 45 VRH 43 41 PM6 39 37 PS3 35 PS5 33 PS7 31 PJ7 29 PM5 27 25 PK7 23 PP6 21 PP4 19 PP2 17 PP0 15 PK2 13 PK0 11 PT1 9 PT3 7 5 3 1 VDD2 64 PAD0 62 PAD1 60 PAD2 58 PAD3 56 PAD4 54 PAD5 52 PAD6 50 PAD7 48 VDDA 46 VRL 44 PM7 42 40 PS2 38 PS4 36 PS6 34 VREGEN32 PJ6 30 PM4 28 VDDX 26 PP7 24 PP5 22 PP3 20 PP1 18 PK3 16 PK1 14 PT0 12 PT2 10 VDD1 8 6 4 +5V 2 P22 64PIN 63 61 PAD8 59 PAD9 57 PAD10 55 PAD11 53 PAD12 51 PAD13 49 PAD14 47 PAD15 45 VRH 43 41 PM6 39 37 PS3 35 PS5 33 PS7 31 PJ7 29 PM5 27 25 PK7 23 PP6 21 PP4 19 PP2 17 PP0 15 PK2 13 PK0 11 PT1 9 PT3 7 5 3 1 64 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! 附录C BDM_DRV BDM_OUT BDM R7 47 3.3V R9 1.8k BDM_IN U2 1 2 3 4 5 6 7 1 2 3 4 5 6 7 14 13 12 11 10 9 8 74HCT125 J3 1 2 3 4 USB C7 5V100uF R11 27 R12 27 C5 0.1uF 14 13 12 11 R8 10 47 9 8 R10 1.8k USBDM USBDP 3.3V C2 R13 R1 R2 R3 C6 C4 10k 10k 10k 10k 100uF 0.1uF HC125_VDD RST_OUT BDM_RST 3.3V RST_IN 22p R4 Y1 10M 1 C1 6MHz OSC1 2 室 3 3.3V 4 作 5V R5 330 R14 工 C8 330 22p 5V 5 1 D2 A BKDMLED2 PTD0 PTD1 6 7 PTD2 8 1 D1 A KUSBLED2 PTD3 9 PTD4 10 BDM_IN 11 0.1uF USBDP 12 技 USBDM 13 科 BDM_DRV14 U1 Vss RST OSC1 PTA0 OSC2 PTA1 VREG PTA2 VDD PTA3 PTD0 PTE0 PTD1 PTE2 PTD2 PTA4 PTD3 PTA5 PTD4 PTA6 PTE1 PTA7 D+ PTD5 D- PTD6 PTC0 IRQ JB8 28 RST 27 MONITOR 26 RST_OUT 25 PTA2 24 PTA3 23 PTE0 22 PTE2 R6 R15 10k 21 BDM_DRV 10k 20 RST_IN 19 BDM_IN 18 BDM_OUT 17 PTD5 16 PTD6 15 IRQ 子 电 信 飞J6 BDM_VDD 1 1 2 JUMPER HC125_VDD J5 2 1 12 JUMPER 2 5V C3 0.1uF J4 J2 BDM 1 12 2 BDM JUMPER 1 3 5 2 4 6 BDM BDM_RST BDM_VDD J7 12 34 3.3V 5V PTD0 PTD1 PTD2 PTD3 PTD4 BDM_IN 5 7 9 11 13 15 17 19 21 6 8 10 12 14 16 18 20 22 23 24 BDM_DRV 25 27 26 28 PIN28 RST MONITOR RST_OUT PTA2 PTA3 PTE0 PTE2 BDM_DRV RST_IN BDM_IN BDM_OUT PTD5 PTD6 IRQ J1 1 3 5 2 4 6 RST IRQ OSC1 5V 78 9 10 11 12 13 14 15 16 MONITOR RST_OUT PTA2 PTA3 65 附录D 为理想去奋斗,多远也不累,为爱好去努力,再苦也是乐! VCC Q7 A0 8550 A1 R9 330 a JA 1 R1 R2 2 R3 3 R4 4 5 6 7 8 R5 R6 R7 R8 CON8 1K A0 1K A1 1K A2 1K A3 1K A4 1K A5 1K A6 1K A7 JB 1 2 3 4 5 6 7 8 CON8 R17 R18 R19 R20 R21 R22 VCC 1K 1K 1K 1K 1K 1K Q8 8550 R10 330 b g1 f2 a4 b5 e6 d7 c9 dp10 A2 Q9 8550 A3 Q10 8550 A4 Q11 8550 A5 Q12 8550 室Q13 A6 8550 R11 330 R12 330 R13 330 作 R14 330 R15 330 c d e 工f g 3 D1 3 D2 3 D3 技D4 3 3 D5 8 g f a af g b b ee d c d c dp dp LED8 g1 f2 a4 b5 e6 d7 c9 dp10 g f a af g b b ee d c d c dp dp LED8 8 g1 f2 a4 b5 e6 d7 c9 dp10 g f a af g b b 科 e e d c d c dp dp g1 f2 a4 b5 e6 d7 c9 dp10 子LED8 8 8 g f a af g b b ee d c d c dp dp LED8 g1 f2 a4 b5 e6 d7 c9 dp10 g f a af g b b ee d c d c dp dp LED8 8 g1 f2 a4 b5 e6 d7 c9 dp10 电 Q1 8550 信Q2 8550 Q3 8550 Q4 8550 Q5 8550 飞 Q14 A7 8550 R16 330 dp 3 D6 g f a af g b b ee d c d c dp dp LED8 8 Q6 8550 66

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。