|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2012-9-6 18:57:18
|
显示全部楼层
ISR(USART0_RXC_vect)
{
//cbi(UCSR0A,RXC0);
if(UDR0==0xEA)
{
if(flag_start==0)
{
flag_start=1;
rs232buffer[0] = UDR0;
input_len = 1;
flag_end=0;
return;
}
}
else
{
if(!flag_start) return;
rs232buffer[input_len++] = UDR0;
len= rs232buffer[1];
if(input_len==len)
{
input_len=0;
flag_start=0;
flag_end=1;
}
}
}
void SendByte( uint8_t byte )
{
//sbi( PORTC , TEN_485 );
UDR0 = byte;
while ( !( UCSR0A & ( 1 << UDRE0 ) ) )
{ }
Delayus( 900 );
// cbi( PORTC , TEN_485 );
}
void SendBytes(uint8_t*s,uint8_t len)
{
uint8_t i;
cli( );
for(i=0;i<len;i++)
{
SendByte(*(s+i));
Delayus( 900 );
}
sei( );
MAIN 里面
if(flag_end)
{
SendBytes( &rs232buffer[0],5);
flag_end=0;
}
指令EA头,第二个长度 |
|