void UART0_Init(void)
{
EA_Disable(); // 关闭总中断,防止在配置过程中意外触发
T2MOD |= 0x91;//1001 0001//Fosc 2分频
TCLK=1;
RCAP2H = BAUD_RATE_RCAP2H;
RCAP2L = BAUD_RATE_RCAP2L;
PCON |= PWR_SMOD;
// SCON = 0x50; // 模式1,8位UART,REN=1
// 模式1,8位UART
SM0=0;
SM1=1;
SM2=0;
//初始化接收
REN=1;
// RI=0;
TR2 = 1;
ES = 1;// 启用UART0中断
EA_Enable();// 开启总中断
}
u8 i;
void main(void)
{
WDTC = 0x00;
CPUM = 0x02;
XSFR = XSFR_Enable;
// 配置P0, P1, P2为输出
P0M = 0xFF;
P1M = 0xBF;
P2M = 0xFF;
// 配置P0, P1, P2上拉电阻
P0PH = 0xFF;
P1PH = 0xBF;
P2PH = 0xFF;
// 初始化UART0
UART0_Init();
while (1)
{
sendChar(ReceiveCount);
for (i = 0; i < 255; i++);
}
}
// UART0中断服务程序
void UART0_ISR(void) interrupt 4 using 1
{
if(RI){
ReceiveCount++;
RI = 0 ;
// ReceiveData[ReceiveCount++] = SBUF;
// if(ReceiveCount>=8){
// ReceiveCount=0;
// }
}
else if (TI)
{
TI = 0; // 清除发送中断标志
SendCompleteFlag = 1;
}
}
发送正常,但是接收位RI一直是0,程序有问题嘛?有没有佬解答一下
|