MC9SD64单片机快速入门 I/O寄存器

I/O的使用 数据方向寄存器和数据寄存器的配置

I/O输入输出的使用:

数据方向寄存器与数据寄存器

寄存器的概念:

寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。
在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
寄存器内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,
 
输入输出的概念:
输入:从cpu芯片的外围电路将信号传入到cpu芯片内部为输入
输出:从cpu芯片内部将信号传出,或传送到pu芯片的外围电路为输出
 
 
数据方向寄存器:数据方向寄存器为他说控制的端口设置数据传输方向,既设置cpu芯片对应引脚的输入与输出
数据寄存器:设置他所控制的端口引脚的数据
 
MC9S12D64处理器的数据方向寄存器(DDRx)

PORTA、PORTB、PORTE和PORTK端口

 

DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”,则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口。MCU复位后,DDRx值为0x00,引脚默认为输入口。 需要注意的是,PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据方向寄存器最低两位是只读位,读取这两位始终返回“0”。

 

数据寄存器(Px)

数据寄存器Px中的8位对应每个端口中的相应引脚,如果某端口的引脚被定义为输出时,写入数据寄存器Px中的数值,则从对应引脚输出;如果某端口的引脚被定义为输入时,可以读取数据寄存器Px对应引脚的电平值。 需要注意PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据寄存器最低两位是只读位。

简单演示程序一、

复制代码
1 #include <hidef.h>      /* common defines and macros */
2 #include "derivative.h"      /* derivative-specific definitions */
3 
4 //************主函数*************
5 void main(void)
6 {
7 DDRA=0x0F;//数据方向寄存器7-0 八位设置为 十六进制数0F 二进制为0000 1111  高四位引脚为输入 低四位引脚为输出
8 PORTA=0x0A;//数据寄存器7-0  八位设置为 十六进制数0A 二进制为0000 1010  高四位引脚悬空 低四位引脚1号和三号输出高电平0号和2号输出低电平
9 }
复制代码

此时,A端口0号和2号引脚所控制的 LED灯点亮,其余灯灭。

原因:1号和3号引脚因输出高电平而不亮。7号-4号因数据方向寄存器设置为输入状态,因此无法改变LED灯电路控制端(电路开断)

疑问:为什么输出低电平LED灯会亮,高电平不亮?

解答:

在单片机开发的过程中,LED灯的亮灭控制与传统电路开关有所不同。统灯的亮灭控制由电路火线220V的开断所控制,而单片机开发中,LED灯的亮灭大多数需结合单片机实际电路设计来对LED灯的控制端进行控制。

如图:

单片机控制引脚在二极管反向,此二极管功能为开关二极管。二极管在正向电压作用下电阻很小,处于导通状态,相当于一只接通的开关;在反向电压作用下,电阻很大,处于截止状态,如同一只断开的开关。因此当单片机控制引脚为输出低电平时,二极管正向电压>反向电压 电路导通,LED灯亮。

 

posted @ 2018-09-22 21:46  王义强  阅读(560)  评论(0编辑  收藏  举报