
作为IO口最多有45个可以配置4种模式如下PX为端口其中地址为0x80#include <AI8051U.H> 中定义了它们的地址

PX为端口其中地址为0x80#include <AI8051U.H> 中定义了它们的地址


但要注意不能同时将P30P32P31配为0

SFR定义了特殊功能寄存器如果要使用要将EAXFR寄存器为1如果不用的话其实也没有 必要

同时IO口也有电压的耐受电压否则会坏
#include <AI8051U.H> //包含AI8051U的头文件
#include "intrins.h" //使用_nop_()函数所必须要包含的头文件,
//否则延时函数中调用的_nop_()函数没有被头文件引用过来,
//会导致编译器找不到这个而函数而报错。
void Delay500ms(void) //延时函数,主频40MHz
{
unsigned long edata i; //定义变量
_nop_(); //空指令
_nop_();
i = 4999998UL; //变量初始化
while (i) i--; //循环等待
}
//上面延时函数部分代码可使用AIapp-ISP软件的“软件延时计算器”工具来生成。
void main(void)
{
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR
//(32 位模式请使用这句,注释下一句)
// P_SW2 |= 0x80; //允许访问扩展的特殊寄存器,XFR
//(8位模式请使用这句,注释上一句)。
WTST = 0; //设置取程序代码等待时间,
//赋值为 0表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata速度,
//赋值为 0表示用最快速度访问,不增加额外的等待时间
P0M0 = 0x00; P0M1 = 0x00; //设置P0口为准双向口模式
P1M0 = 0x00; P1M1 = 0x00; //设置P1口为准双向口模式
P2M0 = 0x00; P2M1 = 0x00; //设置P2口为准双向口模式
P3M0 = 0x00; P3M1 = 0x00; //设置P3口为准双向口模式
P4M0 = 0x00; P4M1 = 0x00; //设置P4口为准双向口模式
P5M0 = 0x00; P5M1 = 0x00; //设置P5口为准双向口模式
P6M0 = 0x00; P6M1 = 0x00; //设置P6口为准双向口模式
P7M0 = 0x00; P7M1 = 0x00; //设置P7口为准双向口模式
//上面的将所有I/O口都初始化为准双向口工作模式的程序,
//可以使用AIapp-ISP软件的“I/O口配置工具”来生成。
while(1)
{ //LED循环自动闪烁部分
P0 = ~P0; //对P0端口取反
// P00 = ~P00; //对单个端口取反
Delay500ms(); //调用延时函数,延时0.5s
}
}