關(guān)于51單片機(jī)串口數(shù)據(jù)丟失問題
init_serial_A() //方式3,SCON=0xd8;ren=1;允許接受串口中斷TMOD=0x20; T1=FD: 9600 T1=FA:4800 兩種波特率都調(diào)試通過。
{ TMOD|=0x20;
SCON|=0xd8;
TL1=0xfA;
TH1=0xfA;
TR1=1; ET1=0;
ES=1;PS=1;
EA=1;
}
init_serial_B() // 方式1,SCON=0x40;ren=0;不允許接受串口中斷 T1=FD: 9600 T1=FA:4800 兩種波特率都調(diào)試通過。
{
TMOD|=0x20;
SCON=0x50;
PCON=0X00; //及smod=0;波特率不加倍
TL1=0xFD;
TH1=0xFf;PS=1;
TR1=1;
ES=1; EA=1; ET1=0;
}
init_serial_C() // 方式1,ren=0;不允許接受串口中斷T2定時器9600 波特率都調(diào)試通過。
{ SCON|=0X50;
T2CON|=0x1C;
RCAP2H=0XFF;
RCAP2L=0XDB;PS=1;
ES=1; EA=1; ET2=0;
}
init_serial_D() // 0方式 9216 調(diào)試未通過。調(diào)試助手的波特率不匹配
{SCON|=0X00;
PCON|=0X80; //及smod=1;波特率加倍
ES=1; EA=1; ET1=0;PS=1;
}
init_serial_E() // 方式3,ren=0;不允許接受串口中斷T2定時器9340,用9600的波特率有誤差。 波特率都調(diào)試通過。
{ SCON|=0XC0;
T2CON|=0x1C;
RCAP2H=0XFF;
RCAP2L=0XDb; ET2=0;PS=1;
}
init_serial_F() //方式2 定時器1,波特率9600 波特率都調(diào)試通過。
{
SCON=0x50;
TMOD|=0x20;
PCON&=0x00; PS=1;
TL1=0xfd;
TH1=0xfd;
TR1=1; ET1=0;
ES=1; EA=1;
}
init_serial_G() //方式2 定時器1,波特率9600 波特率都調(diào)試通過。
{
SCON=0x50;
TMOD|=0x20;
PCON&=0x00; PS=1;
TL1=0xfd;
TH1=0xfd;
TR1=1; ET1=0;
ES=1; EA=1;
}
評論