SCON = 0x50; //SM1=1串口工作方式1,REN=1允許接收[10URART,T1控制波特率,1位起始,1位停止,無奇偶校驗]
PCON |= 0x80; //SMOD=1,波特率加倍
TMOD |= 0x20; //M1=1,定時器1模式2,8位自動重載時間
TH1 = 0xFA; //波特率:9600 晶振:11.0592MHz
TL1 = 0xFA;
IE |= 0x90; //打開串口1中斷
TR1 = 1; //啟動定時器1
上面的就可以了。
呃,這麽久了還沒解決麽?
#include <AT89X52.H>
void main()
{
T2MOD = 0x01; //自動重載
T2CON = 0x30; //T2用做發送接收時鐘
TH2 = 0xFF; //9600波特率,11.0592Mhz晶振
TL2 = 0xDC;
RCAP2H = 0xFF;
RCAP2L = 0xDC;
SCON = 0x50; //串口方式1,1個起始位,1個停止位,8位數據
TR2 = 1; //啟動T2
while(1)
{
SBUF = 0xaa;
while( TI==0 );
TI = 0;
}
}
仿真通過。波特率9600,1個起始位,1個停止位,8位數據