二,使用过程中,常常出现程序的 IO口设置,包括设置为交叉开关,推挽方式等
由于对这种设置方法不太了解,因此做一个专题
//-------------------------------------------------------------------- // I/O初始化程序 //-------------------------------------------------------------------- // 配置交叉开关和 GPIO 端口 void xbar_init (void) { XBR0 = 0x07; // 允许 I2C SPI和 UART XBR1 = 0x00; // XBR2 = 0x40; // 允许交叉开关和弱上拉 //PRT0CF |= 0xff; // 允许 P0口的所有输出为弱上拉 //P0MDOUT // 让交叉开关将这些引脚配置为输入 //PRT1CF |= 0x40; // 允许 P1
6 (LED) 为弱上拉输出 } (通过对比几个程序的 I/O初始化,发现主要是对寄存器 XBR0~2以及 PRT(0~7)CF进行设置
特将与 IO口设置相关的寄存器做一个说明) 2
1 GPIO口和数字外设口 C8051F020/1/2/3 MCU 是高集成度的混合信号片上系统,有按8 位端口组织的64 个数字I/O 引脚
低端口(P0、P1、P2 和P3)既可以按位寻址也可以按字节寻址
高端口(P4、P5、P6 和P7)只能按字节寻址
所有引脚都耐5V 电压,都可以被配置为漏极开路或推挽输出方式和弱上拉
C8051F020/1/2/3 器件有大量的数字资源需要通过4 个低端I/O 端口P0、P1、P2 和P3 才能使用
P0、P1、P2 和P3 中的每个引脚既可定义为通用的端口I/O(GPIO)引脚,又可以分配给一个数字外设或功