飞思卡尔8位单片机MC9S08第6章 通用IO与第一个汇编程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.1 MC68HC908GP32的普通I/O
(2)D口
对 于 40 引 脚 的 MC68HC908GP32 芯 片 的 D 口 只 有 6 根 引 脚 : PTD5~PTD0。而42及44引脚的MC68HC908GP32芯片的D口有8根引 脚:PTD7~PTD0。下面以42及44引脚的MC68HC908GP32芯片进行 说明。 D口是I/O功能与其它特殊功能(SPI,TIM)复用口,这里只讨论 它作为普通I/O口的功能。它的内部逻辑结构框图与A口逻辑结构框图相 同,只是其中的有关字母“A”改为字母“D”,地址作相应改变即可。 它也具有三个寄存器,它们是:D口数据方向寄存器(DDRD)、 D口数据寄存器(PTD)、D口上拉电阻允许寄存器(PTDPUE)。
E口数据方向寄存器(DDRE)的地址是:$000C。DDRE只有低两 位有用。DDRE的第1、0位分别记为DDRE1、DDRD0,这两位分别控 制着E口引脚PTE1、PTE0是输入还是输出,含义参考B口说明。复位时 DDRE为$00。 ② E口数据寄存器(Port E Data Register,PTE) E口数据寄存器(PTE)的地址是:$0008,PTE的第1~0位分别记 为PTE1~PTE0。含义请类比B口的相应说明。
返回
6.1 MC68HC908GP32的普通I/O
6.2 汇编程序编程框架
6.2.1 C口、D口和E口
(1)程序描述
给出程序名、硬件连接以及基本功能等描述,还可以给出编制 者、编制时间等,若调试过程有新的体会,也可在此添加。
(2)头文件与有关常量命名
汇编语言也借用C语言中“头文件”的概念,将映像寄存器的地 址定义在“头文件”中,程序直接使用寄存器地址所对应的“名 称”。例如,有了“头文件”,对“D口数据寄存器”读出操作, 可用“LDA PTD”取代“LDA $0003”,更容易理解。
(4)主程序
主程序一般包括初始化与主循环两大部分。初始化包括堆栈初始化、 系统初始化、内存变量初始化、I/O端口初始化、中断初始化等。主循 环是程序的工作循环,根据实际需要安排程序段,但一般不宜过长, 建议不要超过200行,具体功能可通过调用子程序来实现,或由中断 程序实现。不带操作系统的MCU程序总有一个主循环,表示程序周而 复始地执行。
6.1 MC68HC908GP32的普通I/O
(2)A口逻辑电路框图
下图给出了A口作为普通I/O使用时,一个外部引脚的相应内部逻 辑 电 路 框 图 。 当 DDRAx=1 时 , 读 地 址 $0000 就 是 读 PTAx 。 当 DDRAx=0时,读地址$0000就是读引脚PTAx 电平。
读DDRA($0004) 写DDRA($0004) 内 部 数 据 总 线 PTAPUEx 内部上拉电阻 读PTA($0000) A口的一个引脚内部逻辑电路框图 6.1 MC68HC908GP32的普通I/O VDD 复位 写PTA($0000) A口数据方向寄存器 DDRAx位 A口数据寄存器 PTAx位 引脚 PTAx
6.1 MC68HC908GP32的普通I/O
③ A口上拉电阻允许寄存器(Port A Input Pullup Enable Register,PTAPUE) A口上拉电阻允许寄存器(PTAPUE)的地址是:$000D。 PTAPUE的第7~0位分别记为PTAPUE7~PTAPUE0。若A口的某一 引脚PTAx 被定义成输入,则可通过置PTAPUE的相应位PTAPUEx为 1来定义其内接上拉电阻,即引脚PTAx已经通过内部电阻与电源VDD 相接,此时若引脚PTAx若通过开关接地,则开关闭合时为低电平。那 么寄存器PTA的相应位PTAx=0,开关断开时为高电平,寄存器PTA 的相应位PTAx=1,通过读取寄存器PTA获得开关状态。 记忆要点: 在引脚被定义成输入时,可通过上拉电阻允许寄存器定义有无内 部上拉电阻: 0—没有内部上拉电阻 1—有内部上拉电阻
6.1 MC68HC908GP32的普通I/O
(2)B口逻辑电路框图
下图给出了B口作为普通I/O使用时,一个外部引脚的相应内部逻 辑电路框图。
读DDRB($0005) 写DDRB($0005) 内 部 数 据 总 线 写PTB($0001) B口数据寄存器 PTBx位 引脚 PTBx 复位 B口数据方向寄存器 DDRBx位
6.2 汇编程序编程框架
(3)内存变量
如果程序中使用到内存变量,需在此定义。实际上,这里是对内 存变量的声明,通常称为“开辟内存变量”,内存变量的初始化在主 程序开始部分完成。第一个内存变量需用“ORG”语句定位,随后, 按地址从小到大顺序存放。每个内存变量都有固定的内存地址。借用 C语言术语,这里所开辟的所有内存变量都是“全局变量”。对应于C 语言中的“局部变量”将在讲解子程序规范时说明。
6.1 MC68HC908GP32的普通I/O
② A口数据寄存器(Port A Data Register,PTA) A口数据寄存器(PTA)的地址是:$0000,PTA的第7~0位分别 记为PTA7~PTA0。若A口的某一引脚PTAx被定义成输出,程序使A口 数据寄存器PTA的相应位PTAx=0,则引脚PTAx输出“低电平”;程 序使PTAx=1,则引脚PTAx输出“高电平”。若A口的某一引脚PTAx 被定义成输入,程序通过读取A口数据寄存器PTA,获得输入情况,0 表示输入为“低电平”,1表示输入为“高电平”。 记忆要点: 输出时:数据寄存器的一位:0—输出低电平 1—输出高电平 输入时:数据寄存器的一位:0—代表外部输入低电平 1—代表外部输入高电平
6.1 MC68HC908GP32的普通I/O
② B口数据寄存器(Port B Data Register,PTB) B口数据寄存器(PTB)的地址是:$0001,PTB的第7~0位分别 记为PTB7~PTB0。若B口的某一引脚PTBx被定义成输出,程序使B口 数据寄存器PTB的相应位PTBx=0,则引脚PTBx输出“低电平”,程 序使PTBx=1,则引脚PTBx输出“高电平”。若B口的某一引脚PTBx 被定义成输入,程序通过读取B口数据寄存器PTB,获得输入情况,0表 示输入为“低电平”,1表示输入为“高电平”。 注意:B口被定义成输入时,没有内部上拉电阻
6.1 MC68HC908GP32的普通I/O
① C口数据方向寄存器(Data Direction Register C,DDRC) C口数据方向寄存器(DDRC)的地址是:$0006,由于对应引脚只 有7根,最高位没有意义。DDRC的第6~0位分别记为DDRC6~DDRC0, 这些位分别控制着C口引脚PTC6~PTC0是输入还是输出,含义参考A口 说明。复位时DDRC为$00。 ② C口数据寄存器(Port C Data Register,PTC) C口数据寄存器(PTC)的地址是:$0002,PTC的第6~0位分别记 为PTC6~PTC0。含义请类比A口、B口的相应说明。 ③ C口上拉电阻允许寄存器(Port C Input Pullup Enable Register,PTCPUE) C口上拉电阻允许寄存器(PTCPUE)的地址是:$000E。PTCPUE 的第6~0位分别记为PTCPUE6~PTAPUE0。含义请类比A口的相应说明。
6.1 MC68HC908GP32的普通I/O
(3)E口
E口只有PTE1、PTE0引脚。它是I/O功能与串行通讯接口(SCI) 复用口,这里只讨论它的普通I/O口功能。其内部逻辑结构框图与B口相 同,只需将其中的有关字母“B”改为字母“E”,地址作相应改变即可。 它有两个寄存器: ① E口数据方向寄存器(Data Direction Register E,DDRE)
6.1.2 B口
B口的8根引脚与8路A/D转换模块的引脚复用,这里只讨论B口作 为普通I/O口的功能。
(1)B口的寄存器
B口作为普通I/O口时,具有二个寄存器,它们是:B口数据方向 寄存器(DDRB)和B口数据寄存器(PTB)。 ① B口数据方向寄存器(Data Direction Register B,DDRB) B口数据方向寄存器(DDRB)的地址是:$0005,DDRB的第 7~0位分别记为DDRB7~DDRB0,这些位分别控制着B口引脚 PTB7~PTB0是输入还是输出,若DDRBx=0,则引脚PTBx为输入, 若DDRBx=1,则引脚PTBx为输出。复位时DDRB为$00。 记忆要点:数据方向寄存器的一位:0—定义输入,1—定义输出
6.1 MC68HC908GP32的普通I/O
6.1.1 A口
A口的8根引脚与键盘中断模块的引脚复用,这里只讨论A口作为 普通I/O口的功能。
(1)A口的寄存器
A口作为普通I/O口时,具有三个寄存器,它们是:A口数据方向 寄存器(DDRA)、A口数据寄存器(PTA)、A口上拉电阻允许寄存 器(PTAPUE)。 ① A口数据方向寄存器(Data Direction Register A,DDRA) A口数据方向寄存器(DDRA)的地址是:$0004,DDRA的第 7~0位分别记为DDRA7~DDRA0,这些位分别控制着A口引脚 PTA7 ~PTA0是输入还是输出,若DDRAx=0,则引脚PTAx为输入, 若DDRAx=1,则引脚PTAx为输出。复位时DDRA为$00。 记忆要点:数据方向寄存器的一位:0—定义输入,1—定义输出
6.1 MC68HC908GP32的普通I/O
① D口数据方向寄存器(Data Direction Register D,DDRD) D口数据方向寄存器(DDRD)的地址是:$0007。DDRD的第7~ 0位分别记为DDRD7~DDRD0,这些位分别控制着D口引脚PTD7~ PTD0是输入还是输出,含义参考A口说明。复位时DDRD为$00。 ② D口数据寄存器(Port D Data Register,PTD) D口数据寄存器(PTD)的地址是:$0003,PTD的第7~0位分别 记为PTD7~PTD0。含义请类比A口、B口的相应说明。 ③ D口上拉电阻允许寄存器(Port D Input Pullup Enable Register,PTDPUE) D口上拉电阻允许寄存器(PTDPUE)的地址是:$000F。 PTDPUE的第7~0位分别记为PTDPUE7~PTDPUE0。含义请类比A 口的相应说明。
第六章 通用I/O与第一个汇编程序
主要内容

MC68HC908GP32的普通I/O 汇编程序编程框架 08汇编语言编译过程所涉及的文件 SD-HC08嵌入式MCU在线编程集成开发系统
6.1 MC68HC908GP32的普通I/O
所谓普通I/O,即基本的输入/输出,有时也称为并行I/O。作为普 通输入引脚,MCU内部程序可以读取该引脚,知道该引脚是“1”(高 电平)或“0”(低电平),即开关量输入。作为普通输出引脚,MCU 内部程序向该引脚输出“1”(高电平)或“0”(低电平),即开关量 输出。MC68HC908GP32单片机有5个普通I/O口,分别是A口、B口、 C口、D口、E口。它们中的大部分具有双功能,本节仅讨论它们作为 普通I/O功能时的编程方法。
读PTB($0001) B口的一个引脚内部逻辑电路框图
来自百度文库
6.1 MC68HC908GP32的普通I/O
6.1.3 C口、D口和E口
(1)C口
对44引脚的MC68HC908GP32芯片的C口只有7根引脚:PTC6 pin~PTC0 pin,而40及42引脚的MC68HC908GP32芯片的C口只有5 根引脚:PTC4 pin~PTC0 pin。下面以44引脚的MC68HC908GP32 芯片进行说明。C口只有普通I/O功能,它的内部逻辑结构框图与A口逻 辑结构框图相同,只是其中的有关字母“A”改为字母“C”,地址作相 应改变即可。 它也具有三个寄存器,它们是:C口数据方向寄存器(DDRC)、C口 数据寄存器(PTC)、C口上拉电阻允许寄存器(PTCPUE)。
相关文档
最新文档