首页 > 评测 > 引脚连错了?没关系重映射一下就好了——Holychip HC89F003评测

引脚连错了?没关系重映射一下就好了——Holychip HC89F003评测

Holychip   HC89F003   8位单片机   51   MCU   
  • 作者:杰杰
  • 来源:21ic
  • [导读]
  • 虽然16位单片机已经被超低功耗的32位单片机挤压的几乎要消失殆尽,而8位单片机却一直凭借轻盈小巧和价格低廉的优势占据市场。目前8位单片机皆根据各种各种特定应用而推出了不同的增强型,今天给大家评测的来自Holychip(芯圣)的HC89F003则是以引脚的重映射功能著称。虽然很多MCU均有重映射的功能,不过像HC89F003这样绝大多数引脚皆可重映射的并不多见。
* GPIO_PIN_4 //选择端口4

* GPIO_PIN_5 //选择端口5

* GPIO_PIN_6 //选择端口6

* GPIO_PIN_7 //选择端口7

* @参数 GPIO_Mode : 初始化模式

* GPIO_MODE_IN //数字输入

* GPIO_MODE_IN_PD //带下拉输入

* GPIO_MODE_IN_PU //带上拉输入

* GPIO_MODE_IN_AN //模拟输入

* GPIO_MODE_IN_SMT //数字输入 SMT

* GPIO_MODE_IN_PD_SMT //带下拉输入 SMT

* GPIO_MODE_IN_PU_SMT //带上拉输入 SMT

* GPIO_MODE_IN_AN_PU_PD //模拟输入上下拉同时打开,B版以后芯片支持

* GPIO_MODE_OUT_PP //推挽输出

* GPIO_MODE_OUT_OD //开漏输出

* GPIO_MODE_OUT_OD_PU //开漏带上拉输出

* @返回值 无

* @注 无

*/

void GPIO_Init(GPIO_TypeDef GPIOx,GPIO_Pin_TypeDef GPIO_PIN,GPIO_Mode_TypeDef GPIO_Mode)

{

u8 i;

u8 xdata *gpioset;

gpioset = 0xFF00 | ((GPIOx - 1)<<3);

for(i=0;i<8;i++){

if((GPIOx == GPIOT1)&&(i>1))break;

if(GPIO_PIN&0x01){

*(gpioset+i/2) = ((*(gpioset+i/2)) & (0xF0 >> ((i%2)*0x04))) | (GPIO_Mode << ((i%2)*0x04));

}

GPIO_PIN >>= 1;

}

}

上面是void GPIO_Init(GPIO_TypeDef GPIOx,GPIO_Pin_TypeDef GPIO_PIN,GPIO_Mode_TypeDef GPIO_Mode)的原函数。。

有兴趣的可以跳进去看一下。不看也可以。

打开HC89F_GPIO.H

拉倒最下面。有gpio的函数,可以直接调用。

holychip-16.png

比如我们需要点亮一个led灯,调用这个函数就可以了:

void GPIO_Write(GPIO_TypeDef GPIOx,u8 Value); //对一组端口赋值

看板子的原理图:

holychip-17.png

holychip-18.png

LED1连在HC89F003的P11脚,那我们点亮他就是让P11脚为低电平就行了。

void main(void)

{

System_init(); //系统初始化

GPIO_Init(GPIOT1,GPIO_PIN_1, GPIO_MODE_OUT_PP); //P00设置为推挽输出模式

GPIO_Write(GPIOT1,0xFD); //设置P11脚为低电平

while(1);

}

holychip-19.png

  • 本文系21ic原创,未经许可禁止转载!

网友评论