MC9S12XET256MMA普通IO口输入输出功能的使用:
IO口数据方向寄存器:设定0为输入模式,设定1为输出模式。复位后默认输入模式。
IO数据寄存器:输出模式下–设定1为高电平 设定0为低电平
输入模式下–检测1为高电平 检测0为低电平
上/下拉:
输入模式可以设定上/下拉功能,可以保证浮空引脚的输入值固定,对非浮空引脚可以提高响应速度,增强抗干扰能力
输出模式–禁用上下拉。
驱动能力:
输入模式–禁用
输出模式–可以降低引脚驱动功率,使驱动能力降低约50% ,降低功率消耗。
1、创建好工程后打开main.c文件,如下图所示:
2、通过硬件原理图找到LED对应的端口号和引脚号,以及按键对应的端口号和引脚号,我这里使用PORT B 的第0脚来控制LED的亮灭 以及PORT A的第0脚来检测按键的输入。
在MC9S12XET256.c文件中可以找到PORT AB的数据寄存器以及数据方向寄存器的对应的地址,如下图所示:
在MC9S12XET256.h文件中能够找到其定义,如下图所示:
PORT B的数据寄存器:
PORT AB 的数据方向寄存器:
3、在main.c文件中对端口引脚进行初始化。
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define LED_dir DDRB_DDRB0 //使用宏定义LED引脚方便区分
#define LED_DATA PORTB_PB0
#define SWITCH_dir DDRA_DDRA0 //使用宏定义按键引脚方便区分
#define SWITCH_DATA PORTA_PA0
void main(void)
{
/* put your own code here */
LED_dir = 1;//初始化LED为输出
LED_DATA = 0;
SWITCH_dir = 0;//初始化按键为输入
SWITCH_DATA = 1;
EnableInterrupts;
for(;;)
{
if(SWITCH_DATA == 0)//检测到按键按下
{
LED_DATA = ~LED_DATA;//LED状态改变
}
} /* loop forever */
/* please make sure that you never leave main */
}
4、编写完成后进行编译,调试。
5、运行后,按键按下可以看到LED亮,再次按下LED灭,说明程序运行正常。
这里只进行了简单的输入输出配置,如要设置上/下拉,驱动能力配置可以在MC9S12XET256.h文件中找到对应的寄存器进行配置即可;