|
请教高手,怎么实现C8051的GPIO实现UART的读取
[复制链接]
EXTERN XBYTE gxbUartBitNum _AT_ (0x990F);/////当前接受数据的位数
EXTERN XBYTE gxbUart2s _AT_ (0x991F); //ie. SBUF2
EXTERN XBYTE gxbUart2f _AT_ (0x992F); //0:disable 1:read 2:send 3: read completed 4:send completed
EXTERN XBYTE gxbUartreaddata[20] _AT_ (0x994F);////接受的数据不超过20个字节
EXTERN XBYTE gxbUartReadNum _AT_ (0x993F); /////接受数据的个数
VOID READUARTDATA()
{
if( RTX==0) /////if rtx =0 bluetooth data to uart
{
gxbUartBitNum =9;
gxbUart2f=1;
gxbUartReadNum =0;
}
else
{
gxbUart2f=3; ////接受数据完毕
}
}
////////////////////////////
void Timer0(void) interrupt 1 using 2
{
TR0 = 0;
TH0 = TIME_SLICE_H;
TL0 = TIME_SLICE_L;
if(gxbUart2f==1)
{
if(gxbUartBitNum>1)
{
if(TXD)
gxbUart2s=gxbUart2s|(0x01<<(9-gxbUartBitNum));
else
gxbUart2s=gxbUart2s&~(0x01<<(9-gxbUartBitNum));
gxbUartBitNum--;
}
else
{
if(gxbUart2s == 0xaa) ////不接受数据标志位
gxbUart2f=3;
else
gxbUartBitNum =9;
gxbUartreaddata[gxbUartReadNum] = gxbUart2s;
gxbUartReadNum++;
if(gxbUartReadNum==19)
gxbUartReadNum =0 ;
}
}
}
这是我写的,不知道问题在那里 ?请各位大虾指导下 。
|
|