(mc9s12xs单片机原理及嵌入式系统开发)第5章mc9s12xs输入输出端口模块及其应用实例_第1页
(mc9s12xs单片机原理及嵌入式系统开发)第5章mc9s12xs输入输出端口模块及其应用实例_第2页
(mc9s12xs单片机原理及嵌入式系统开发)第5章mc9s12xs输入输出端口模块及其应用实例_第3页
(mc9s12xs单片机原理及嵌入式系统开发)第5章mc9s12xs输入输出端口模块及其应用实例_第4页
(mc9s12xs单片机原理及嵌入式系统开发)第5章mc9s12xs输入输出端口模块及其应用实例_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

?MC9S12XS单片机原理及嵌入式系统开发?MC9S12XS单片机原理

及嵌入式系统开发合肥工业大学张阳,吴晔,滕勤

Email:,,

TEL:,第5章

MC9S12XS输入/输出端口模块

及其应用实例输入/输出端口简介输入/输出端口存放器及设置输入/输出端口应用实例智能车系统中输入/输出端口的应用 5.1输入/输出端口简介

MC9S12XS系列内部有非常丰富的输入/输出端口资源,同时也集成了多种功能模块,其输入/输出引脚大多为复用引脚。MC9S12XS128通用I/O口包括PORTA、PORTB、PORTE、PORTK、PORTT、PORTS、PORTM、PORTP、PORTH、PORTJ以及PORTAD。5.2输入/输出端口存放器及设置 通用I/O口通过配置相应存放器位,可以设置输入/输出端口、驱动能力、内置上拉/下拉电阻使用、中断输入方式等多种功能。通过对DDR、I/O、RDR、PE、PS和IE等存放器的设置,用户可以获得通用I/O口的不同工作方式。其中,DDR〔数据方向存放器〕设定I/O口为输入/输出端口。数据存放器〔I/O存放器〕用于设定I/O口的上下电平。RDR〔驱动控制存放器〕用于设定I/O口的输出驱动能力。PE〔上拉/下拉使能存放器〕用于当I/O口为输入口时使能内置上拉电阻或下拉电阻的使用。PS〔上拉/下拉选择存放器〕当中断允许位置位时,用于选择上升沿触发或下降沿触发中断;当使能内置上拉/下拉电阻时,用于选择使用上拉电阻或下拉电阻。IE〔中断使能存放器〕用于使能I/O口的中断功能。5.2输入/输出端口存放器及设置 5.2.1PORTA、PORTB、PORTE和PORTK 1.数据存放器〔Px〕 数据存放器Px中的8位对应每个端口中的相应引脚,如果某端口的引脚被定义为输出时,写入数据存放器Px中的数值,那么从对应引脚输出;如果某端口的引脚被定义为输入时,可以读取数据存放器Px对应引脚的电平值。需要注意PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据存放器最低两位是只读位。5.2输入/输出端口存放器及设置 5.2.1PORTA、PORTB、PORTE和PORTK 2.数据方向存放器〔DDRx〕 DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0〞,那么对应引脚设定为输入口;如果某位为“1〞,那么对应引脚设定为输出口。MCU复位后,DDRx值为0x00,引脚默认为输入口。 需要注意的是,PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据方向存放器最低两位是只读位,读取这两位始终返回“0〞。5.2输入/输出端口存放器及设置 5.2.1PORTA、PORTB、PORTE和PORTK 3.上拉电阻控制存放器〔PUCR〕 PORTA、PORTB、PORTE和PORTK端口都有内置上拉电阻,PUCR有4位分别配置4个端口选择使用内置上拉电阻,即第7、4、1和0位分别设置K、E、B和A端口。当控制位为“1〞时,设定对应端口使用上拉电阻;当控制位为“0〞时,禁止对应端口使用上拉电阻。MCU复位后,设定PORTK和PORTE端口使用上拉电阻,PORTB和PORTA端口禁用上拉电阻。 PUCR第6位设置BKGD引脚使用上拉电阻。当该位为“1〞时,设定该端口使用上拉电阻;当控制位为“0〞时,禁止该端口使用上拉电阻。MCU复位后,该位为“1〞,引脚默认为使用内置上拉电阻。5.2输入/输出端口存放器及设置 5.2.1PORTA、PORTB、PORTE和PORTK 4.驱动控制存放器〔RDR〕 如果PORTA、PORTB、PORTE和PORTK端口为输出口时,每个端口都可以设置其输出驱动能力,RDR有4位分别设定4个端口输出驱动能力,即第7、4、1和0位分别设置K、E、B和A端口。如果某个控制位为“1〞时,设定对应端口输出驱动能力降低;如果某个控制位为“0〞时,设定对应端口为正常驱动输出方式。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 1.数据存放器〔PTx〕 如果数据方向存放器DDRx的对应位为“0〞,即对应引脚定义为输入时,读取数据存放器PTx的对应位,那么为对应引脚的输入电平值;如果DDRx的对应位为“1〞,即对应引脚定义为输出时,写入PTx存放器的对应位,那么为对应引脚的输出电平值。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 2.输入存放器〔PTIx〕 输入存放器PTIx是一个只读存放器,如果DDRx的对应位为“0〞,即对应引脚定义为输入时,读取PTIx总是返回引脚电平值;如果DDRx的对应位为“1〞,即对应引脚定义为输出时,利用PTIx可以监视对应引脚是否过载或短路。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 3.数据方向存放器〔DDRx〕 DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0〞,那么对应引脚设定为输入;如果某位为“1〞,那么对应引脚设定为输出。复位后,DDRx值为0x00,即MCU复位后引脚默认为输入口。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 4.驱动控制存放器〔RDRx〕 如果端口为输出口时,RDRx可以设置端口对应引脚的输出驱动能力。如果RDRx某位为“1〞,那么对应引脚的输出驱动能力为正常时的1/5;如果某位为“0〞,那么对应引脚输出为正常驱动能力。复位后,驱动控制存放器值为0x00,即MCU复位后引脚默认为满功率驱动输出。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 5.上拉/下拉使能存放器〔PERx〕 如果端口为输入口或者“线或〞模式时,可以通过上拉/下拉使能存放器PERx使能选择使用内置上拉/下拉电阻。如果PERx某位为“1〞时,那么对应引脚允许使用内置上拉/下拉电阻;如果某位为“0〞时,那么对应引脚禁用内置上拉/下拉电阻。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 6.上拉/下拉选择存放器〔PPSx〕 当某引脚被定义为输入且使能内置上拉/下拉电阻时,上拉/下拉选择存放器PPSx用于选择使用内置上拉或者下拉电阻。如果PPSx某位为“0〞,那么对应引脚使用上拉电阻;如果某位为“1〞,那么对应引脚使用下拉电阻。 PORTP、PORTH和PORTJ三个端口都具有中断功能,当某端口允许中断时,PPSx还具有第二个作用,用于选择该端口中的引脚中断为上升沿触发或下降沿触发。当端口某引脚使能中断时,当PPSx对应位为“0〞时,那么该引脚中断为下降沿触发;当PPSx对应位为“1〞,那么该引脚中断为上升沿触发。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 7.中断使能存放器〔PIEx〕 PORTP、PORTH和PORTJ三个端口具有中断功能,且都有中断使能存放器PIEx,PIEx允许或者禁止相应端口的中断请求。如果PIEx某位为“1〞,那么对应引脚允许中断;如果某位为“0〞,那么对应引脚禁止中断。复位后,中断使能存放器值为0x00,MCU复位后关闭所有端口中断请求。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 8.中断标志存放器〔PIFx〕 PORTP、PORTH和PORTJ三个端口具有中断功能,且都有中断标志存放器PIFx。基于PPSx存放器设置的边沿触发中断方式,当端口相应引脚发生中断,并产生有效电平时,那么PIFx中的中断引脚对应位被置位。为了去除PIFx中的中断标志位,需要向该位进行写“1〞操作。5.2输入/输出端口存放器及设置 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ

PORTP、PORTH和PORTJ三个端口的中断向量地址及相关标志位、控制位如表5-2所示。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 1.AD0数据存放器0〔PT0AD0〕 当不使用AD功能时,如果AD0端口数据方向存放器0DDR0AD0的对应位为“0〞,即对应引脚定义为输入时,读取PT0AD0的对应位,那么为对应引脚的输入电平值;如果DDR0AD0的对应位为“1〞,即对应引脚定义为输出时,写入PT0AD0存放器的对应位,那么为对应引脚的输出电平值。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 2.AD0数据存放器1〔PT1AD0〕 当不使用AD功能时,如果AD0端口数据方向存放器1DDR1AD0的对应位为“0〞,即对应引脚定义为输入时,读取PT1AD0的对应位,那么为对应引脚的输入电平值;如果DDR1AD0的对应位为“1〞,即对应引脚定义为输出时,写入PT1AD0存放器的对应位,那么为对应引脚的输出电平值。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 3.AD0数据方向存放器0〔DDR0AD0〕 DDR0AD0决定AN00~AN07对应引脚为输出口还是输入口,如果某位为“0〞,那么对应引脚设定为输入口;如果某位为“1〞,那么对应引脚设定为输出口。如果希望设置AD0端口为通用I/O口功能,ATD0DIEN〔数字输入使能〕存放器必须设置为“1〞,关于ATD0DIEN存放器的详细介绍,请参阅第8章。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 4.AD0数据方向存放器1〔DDR1AD0〕 DDR1AD0决定AN08~AN15对应引脚为输出口还是输入口,如果某位为“0〞,那么对应引脚设定为输入口;如果某位为“1〞,那么对应引脚设定为输出口。如果希望设置AD0端口为通用I/O口功能,ATD0DIEN存放器必须设置为“1〞,关于ATD0DIEN存放器的详细介绍,请参阅第8章。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 5.AD0驱动控制存放器0〔RDR0AD0〕 如果端口为输出口时,RDR0AD0可以设置端口对应引脚的输出驱动能力。如果RDR0AD0某位为“1〞,那么对应引脚的输出驱动能力为正常时的1/5;如果某位为“0〞,那么对应引脚输出为正常驱动能力。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 6.AD0驱动控制存放器1〔RDR1AD0〕 如果端口为输出口时,RDR1AD0可以设置端口对应引脚的输出驱动能力。如果RDR1AD0某位为“1〞,那么对应引脚的输出驱动能力为正常时的1/5;如果某位为“0〞,那么对应引脚输出为正常驱动能力。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 7.AD0上拉使能存放器0〔PER0AD0〕 如果端口为输入口时,可以通过PER0AD0使能选择使用内置上拉电阻。如果PER0AD0某位为“1〞时,那么对应引脚允许使用内置上拉电阻;如果某位为“0〞时,那么对应引脚禁用内置上拉电阻。5.2输入/输出端口存放器及设置 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 8.AD0上拉使能存放器1〔PER1AD0〕 如果端口为输入口时,可以通过PER1AD0使能选择使用内置上拉电阻。如果PER1AD0某位为“1〞时,那么对应引脚允许使用内置上拉电阻;如果某位为“0〞时,那么对应引脚禁用内置上拉电阻。5.3输入/输出端口应用实例 5.3.1控制输出设备LED实例

典型LED有阳极和阴极两个引脚,LED在正向偏置的状态下能够发光,通过通用I/O口控制LED一个引脚,LED另外一个引脚接固定电平,即可实现LED的点亮控制。

本应用实例硬件连接如图5.21所示,PORTB端口连接8只LED,通过编程实现LED流水灯操作。5.3输入/输出端口应用实例 5.3.1控制输出设备LED实例

由电路图可知,使用MC9S12XS128的PORTB端口控制8只LED,PORTB端口输出低电平点亮相应LED。本例中流水灯的流动速度没有实现精确控制,即延时时间没有精确计算,本书后面章节会论述如何实现精确定时。5.3输入/输出端口应用实例 5.3.1控制输出设备LED实例

流水灯应用实例程序清单如下所示。5.3输入/输出端口应用实例 5.3.1控制输出设备LED实例5.3输入/输出端口应用实例 5.3.2读取输入设备拨码开关状态实例 通过读取通用I/O口引脚的输入电平值,可以得悉输入设备拨码开关的状态。本应用实例硬件连接如图5.22所示。5.3输入/输出端口应用实例 5.3.2读取输入设备拨码开关状态实例

由电路图可知,通过MC9S12XS128的PORTA端口可以读取8位拨码开关状态。本例依然使用图5.21所示的控制LED电路,使用MC9S12XS128的PORTB端口控制8只LED灯,考虑通过8只LED灯的亮灭反映8位拨码开关状态的设置情况。5.3输入/输出端口应用实例 5.3.2读取输入设备拨码开关状态实例

实例程序清单如下所示。5.4智能车系统中输入/输出端口的应用 5.4.1键盘接口设计

键盘多由多个按键组成,一般将其排列成阵列式,如图5.23所示。5.4智能车系统中输入/输出端口的应用 5.4.1键盘接口设计 当没有键按下时,行和列线之间是不相连的,假设第N行第M列的键被按下,那么第N行与第M列的线就被接通。如果在列线上加上信号,根据行线的状态,便可得知是否有键按下。如果在列线上逐行加上一个扫描信号,就可以判断按键的位置。 根据上述原理,利用MC9S12XS128的一个或两个端口就能方便地实现扩展键盘接口。图5.24给出了用MC9S12XS128的PORTA端口扩展4×4的键盘。PORTA端口的低4位作为行线,高4位作为列线。5.4智能车系统中输入/输出端口的应用 5.4.1键盘接口设计5.4智能车系统中输入/输出端口的应用 5.4.1键盘接口设计 PORTA端口的低4位设置为输入、高4位设置为输出〔即DDRA=0xF0〕。通过PORTA的高4位逐列输出低电平,同时读取PORTA的低4位,将高4位的输出状态与读取的低4位的状态相“与〞,然后查询保存在RAM中的表就能判断被按下键的位置。5.4智能车系统中输入/输出端口的应用 5.4.1键盘接口设计 当然如果系统中的I/O端口资源紧张,也可以采用专用芯片来扩展键盘。在此介绍一款数码管显示驱动及键盘扫描管理芯片ZLG7289B。 ZLG7289B是广州周立功单片机开展自行设计的数码管显示驱动及键盘扫描管理芯片,可直接驱动8位共阴式数码管〔或64只独立LED〕,同时还可以扫描管理多达64只按键。ZLG7289B内部含有译码器,可直接接收BCD码或16进制码,并同时具有两种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。ZLG7289B采用SPI串行总线与微控制器接口,仅占用少数几根I/O口线。利用片选信号,ZLG7289B还可以并接在一起使用,能够方便地实现多于8位的显示或多于64只按键的应用。ZLG7289B的引脚如图5.25所示。5.4智能车系统中输入/输出端口的应用 5.4.1键盘接口设计 本节仅表达使用ZLG7289B实现键盘扩展,将在5.4.2节介绍如何采用ZLG7289B扩展显示功能。用ZLG7289B扩展4×4键盘的方案如图5.26所示。5.4智能车系统中输入/输出端口的应用 5.4.2键盘接口设计 本节仅表达使用ZLG7289B实现键盘扩展,将在5.4.2节介绍如何采用ZLG7289B扩展显示功能。用ZLG7289B扩展4×4键盘的方案如图5.26所示。5.4智能车系统中输入/输出端口的应用 5.4.2LED显示接口设计 LED〔LightEmittingDiode〕显示是用发光二极管显示字段的显示器,也称为数码管,其外形结构如图5.27所示,它由8个发光二极管构成,通过不同的组合可用来显示0~9、A~F及小数点。5.4智能车系统中输入/输出端口的应用 5.4.2LED显示接口设计 LED显示器一般分为共阴极和共阳极两种,共阴极是将8个发光二极管阴极连接在一起作为公共端,而共阳极那么是将8个发光二极管的阳极连接在一起作为公共端。以下表达都以共阴极为例。数码管的公共端相当于一个位选开关,一般称为位码开关。当该位处于高电平时,数码管全灭;当该位处于低电平时,根据二极管阳极〔一般称为段码或字形码〕的电平状态,确定段码是否点亮。段码高电平时,该段码亮;段码低电平时,该段码不亮。输出相应的段码值就可以控制LED显示器的字形,表5-3中给出了段码与字形的关系,假定段码a、b、c、d、e、f、g、dp分别对应8位数字位D0、D1、D2、D3、D4、D5、D6、D7。5.4智能车系统中输入/输出端口的应用 5.4.2LED显示接口设计5.4智能车系统中输入/输出端口的应用 5.4.2LED显示接口设计 LED显示接口一般采用静态驱动和动态扫描两种驱动方式。静态驱动方式工作原理是每个LED显示器用一个I/O端口驱动,亮度较高,功耗也较大,占用I/O端口多,显示位数多时很少采用;动态扫描驱动方式工作原理是将多个显示器的段码同名端连接在一起,位码分别控制,利用眼睛的余辉暂留效应实现显示。只要保证一定的显示刷新频率,其显示效果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论