飞思卡尔MC9S12单片机key and led——day01

开始进军汽车电子领域,首先要选一款单片机,当然首选飞思卡尔的这款MC9S12单片机,理由去百度吧!干货比较重要: 1.IO控制 说到这款单片机的IO控制,先说LED的控制用到的普通IO,主要是由几个寄存器控制:1.1.数据寄存器(Px) PORTA、PORTB、PORTE和PORTK 数据寄存器Px中的8位对应每个端口中的相应引脚,如果某端口的引脚被定义为输出时,写入数据寄存器Px中的
摘要由CSDN通过智能技术生成

开始进军汽车电子领域,首先要选一款单片机,当然首选飞思卡尔的这款MC9S12单片机,理由去百度吧!干货比较重要:
1.IO控制
说到这款单片机的IO控制,先说LED的控制用到的普通IO,主要是由几个寄存器控制:

1.1.数据寄存器(Px)
PORTA、PORTB、PORTE和PORTK
这里写图片描述
数据寄存器Px中的8位对应每个端口中的相应引脚,如果某端口的引脚被定义为输出时,写入数据寄存器Px中的数值,则从对应引脚输出;如果某端口的引脚被定义为输入时,可以读取数据寄存器Px对应引脚的电平值。
需要注意PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据寄存器最低两位是只读位。
1.2.数据方向寄存器(DDRx)
PORTA、PORTB、PORTE和PORTK
这里写图片描述
DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”,则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口。MCU复位后,DDRx值为0x00,引脚默认为输入口。
需要注意的是,PORTE端口是一个特例,它的最低两位只能为输入口,所以PORTE端口的数据方向寄存器最低两位是只读位,读取这两位始终返回“0”。
知道这两个寄存器就可以封装一下led的代码了:
CLED.h代码:

#ifndef _CLED_H_
#define _CLED_H_
#include <mc9s12xdp512.h>

/*IO定义区*/
#define LED_IO PORTB 
typedef struct StLED{
  void (*LED_Init)(void);
    void (*LED_Move)(int);
}CLED;
void CLED_Init();
void CLED_LED1(int iDelayTime);
void CLED_LED2(int iDelayTime);
void CLED_LED3(int iDelayTime);
void CLED_LED4(int iDelayTime);
void CLED_LED5(int iDelayTime);
void CLED_LED6(int iDelayTime);
void CLED_LED7(int iDelayTime);
void CLED_LED8(int iDelayTime);
void CLED_LED1_LED2(int iDelayTime);
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值