|
unsigned int USART_Receive(void)
{
unsigned char status,resh,resl;
while( ! ( UCSRA & (1<<RXC) ) );
status=UCSRB;
resl=UDR;
if ( status & (1<<FE) | (1<<DOR) | (1<<PE) )
return -1;
resh = ( resh >> 1) & 0x01; // 保存resh中的RXB8到resh 即resh =B 0000 000 RXB8
return ( ( resh <<8 ) | resl ); //因为函数返回值是unsigned int,所以,在执行return的时候,resh和rel均变为unsigned int类型,所以resh=0000 000 RXB8 0000 0000,rel也是16位
}
不知道分析的对不对。。。。。不然,( resh <<8 ) 就溢出了
C语言的功底问题。。。。我急需要恶补 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|