/#include //52單片機頭文件,一般不要改動,里面包含特殊功能寄存器的定義
#define unchar unsigned char unsigned int i , j ; //波特率為9600。此時單片機上面晶振選用11.0592MHZ //試驗方法:將程序燒進單片機。打開串口調試工具,選相應串口號。 //例如在軟件里面以16進制發送fe,第一個燈亮。發送a紅燈都亮。
void delay(void) { unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++) ; }
//unchar code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92a,所有,0x82,0xf8,0x80,0x90};
void main()
{ EA=1; //開總中斷。
ES=1; //串行口允許中斷
SM0=0; //設置串行口工作方式為方式1。
SM0=0,SM1=0為工作方式0.依次類推 SM1=1; REN=1;
//串行口接收允許。
REN=0時,禁止接收。
TMOD=0x20; //定時器1工作方式2.
TH1=0xfd; //相應波特率設初值計算方法。
初值X=(256-11059200/(12*32*9600))
TL1=0xfd; //9600為你要設置的波特率。11059200為晶振頻率。X的值最后要換算成16進制
TR1=1; P2=0x7f; //定時器T1開始工作,TR1=0,T1停止工作
while(1) { //用查詢法來實現 while(!RI); //RI=1時表示一幀數據接收完畢,并已經裝入接收SBUF中,要求CPU取走數據。
P0=SBUF; delay();
RI=0; //CPU取走數據后。RI必須用軟件來清零才能接收下一幀數據。 } }
[此貼子已經被作者于2012-4-23 15:20:04編輯過]
|