寄存器的清位,置位的方法及Realtek芯片方案显示器中GPIO高低位设置的方法

比如:
GPIO1是一个寄存器
GPIO1 = 0x01101100;
1、清位:&= ~

 GPIO1 &= ~0x0f ; //将寄存器低4位清0
 GPIO1 |= 0xf0 ; //将寄存器高4位置1
 GPIO &= ~(1 << 2) ; //将寄存器第二位清0
 GPIO |= (1 << 2) ; //将寄存器第二位置1

随便说下最近学到的,在公司做的Realtek的4K显示器方案中关于GPIO的高低位设置用如下方法:
这里写图片描述

1、首先设置一个常量来表示存储GPIO高低数据的寄存器地址
图中根据寄存器的不同,有两种方法:

1)
sbit bBKLTPOWON = P3^5; //P3^5表示port 3.5地址
然后写上两个宏定义表示高低位
#define _BKLT_POW_ON                  1
#define _BKLT_POW_OFF                  0
最后定义控制GPIO高低的函数:
#define PCB_BKLT_POW(x)   {\
    bBKLTPOWON = (x);\
}
使用说明(图片中的使用说明是通过延时操作后再调用下面的函数):
PCB_BKLT_POW(_BKLT_POW_ON)//表示设置为高
PCB_BKLT_POW(_BKLT_POW_OFF)//表示设置为低

2)
大于4.0的port可以用宏定义表示寄存器地址
//MCU_FE1B_PORT73_PIN_REG表示port 7.3地址
#define bBKLTPWM    (MCU_FE1B_PORT73_PIN_REG)   
然后写上两个宏定义表示高低位
#define _BKLT_PWM_ON                   1
#define _BKLT_PWM_OFF                  0
最后定义控制GPIO高低的函数:
#define PCB_BKLT_PWM(x)   {\
    bBKLTPWM = (x);\
}
使用说明(图片中的使用说明是通过延时操作后再调用下面的函数):
PCB_BKLT_PWM(_BKLT_PWM_ON)//表示设置为高
PCB_BKLT_PWM(_BKLT_PWM_OFF)//表示设置为低

猜你喜欢

转载自blog.csdn.net/yzwty/article/details/80671698