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,程序有問題嘛?有沒有佬解答一下
|