飞思卡尔S12XE系列---基础GPIO操作

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文件中找到对应的寄存器进行配置即可;
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴同学啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值