经常收发不成功 代码如下
sfr P3M0=0xB2;
sfr P3M1=0xB1;
unsigned char var0,var;
void main(void)
{
init();
while(1){}
}
void delay_ms(unsigned char ms)
{
unsigned int i;
do{
i = MAIN_Fosc / 10000;
while(--i);
}while(--ms);
}
void init(void)
{
P_SW2=0x80;
XOSCCR=0xc0;
while(!(XOSCCR&1));
CLKDIV=0x00;
CKSEL=0x01;
P_SW2=0x00;
P3M0=64;
IE=0x00; //关闭所有中断
S2CON=0X90;
T2L=(65536-FOSC/19200/4);
T2H=(65536-FOSC/19200/4)>>8;
AUXR=0X14;
RW485 = LOW;
IE2=0x01;//使能串口2中断
EA=1;
}
void SendChar232(UCHAR senddata)
{
RW485 = HIGH;
var0 =0;
var += var0;
P ? (S2CON |= 0x08) : (S2CON &= ~0x08);
S2BUF=senddata;
while(!(S2CON&2));
S2CON&=(~2);
delay_ms(50);
RW485 = LOW;
}
void USART2_ISR(void) interrupt 8 using 1
{
unsigned char redata;
unsigned char i=0;
if(S2CON&1)
{
var0 =0;
redata = S2BUF;
var = redata;
var += var0;
if((S2CON & 0x04) == P)
{
SendChar232(0x41);
}
S2CON&=(~1);
}
}
|