|
本帖最后由 神秘の宅叔 于 2019-12-25 08:54 编辑
keil下T5L串口2的TX2 RX2配置详解,环回实验源码注释,
应该是最把所有关联因素都考虑了的最小配置文件,有些地方用不同表述方法配置方法进行了重复配置,
但由于是初始化只执行一次,并不会影响效率.
void main()
{
initcpu();
MUX_SEL |=B0100_0000;//驱动模拟开关将UART的TX2连接的P04,RX2连接的P05,
//.7 1=CAN 接口引出到 P0.2、P0.3, 0=CAN 接口不引出,为 IO 口。
//.6 1=UART2 接口引出到 P0.4、P0.5, 0=UART2 接口不引出,为 IO 口。
//.5 1=UART3 接口引出到 P0.6、P0.7, 0=UART3 接口不引出,为 IO 口。
//.4保留
//.3保留
//.2保留
//.1 WDT 控制,1=开启 0=关闭。
//.0 WDT 喂狗,1=喂狗一次(WDT 计数值归零,看门狗的溢出时间为 1 秒)
ADCON=0x80;//波特率发生器选择 00选择T1同8051 0x80选择使用 SREL0H
//SM0 SM1 SM2 REN TB8 RB8 TI0 RI0
// 0 1 0 1 0 0 0 0
SCON0=B0101_0000;
//等效以下设置
SM0 = 0;//SCON0^7;//现代通用的模式
SM1 = 1;//SCON0^6;//现代通用的模式
SM2 = 0;//SCON0^5;//现代通用的模式
REN = 1;//SCON0^4;//现代通用的模式
TB8 = 0;//SCON0^3;//现代通用的模式
RB8 = 0;//SCON0^2;//现代通用的模式
TI0 = 0;//SCON0^1;//现代通用的模式
RI0 = 0;//SCON0^0;//现代通用的模式
IEN0|=B0001_0000;//确认 ES0=1;允许interrupt 4
// IP0=0x00; //中断优先级确认
// IP1=0x00; //中断优先级确认
//SMOD=0下 SRE0H=1024-CPU 主频/(64*波特率);
PCON &=B0111_1111;//确认SMOD=0
SREL0H=0x03; //SMOD=0下 SRE0H=1024-CPU 主频/(64*波特率);
SREL0L=0xE4; //SMOD=0下 SRE0H=1024-CPU 主频/(64*波特率);
ES0=1;//再次确认允许interrupt 4
REN=1;//重要!!!确保允许接收
EA=1;//IEN0|=B1000_0000;
WDT_OFF(); //关闭开门狗
P0|=B0001_0000;//TX2引脚寄存器锁存1,防止防止MUX_SEL切换时发送发送乱码
P0|=B0010_0000;//RX2引脚寄存器锁存1,防止MUX_SEL切换时接收乱码
MUX_SEL |=B0100_0000;//驱动模拟开关将UART的TX2连接到P04,RX2连接到P05,
P0MDOUT |=B0001_0000;//重要!!!确保TX2连接到P04后被VIO推挽电路驱动
while(1){;}
}
void UART2_RT(void) interrupt 4 //自环实验
{
EA=0;
//中断函数代码
if (RI0) { SBUF0=SBUF0;while (!TI0){;}TI0=0;RI0=0; } //自环回实验,
if (TI0) {TI0=0;}
EA=1;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|