發(fā)送是主動的,要先發(fā)數(shù)據(jù)才會有中斷,沒發(fā)數(shù)據(jù),怎么會觸發(fā)中斷,這個邏輯你要清楚。一般發(fā)送用查詢模式;接收是被動的,接收中斷由外部設(shè)備發(fā)送數(shù)據(jù)產(chǎn)生的。一般用中斷接收方式。如果這樣理解應(yīng)該很清楚了: 發(fā)送可以認(rèn)為內(nèi)部中斷(TI=1,) 接收可以認(rèn)為外部中斷(RI=1,) 查詢發(fā)送方式: #include #include #include void initial_uart(); main() { initial_uart(); while(1) { TI=0; SBUF = A; while(!TI); TI=0; }} void initial_uart(){ TMOD = 0x20;//定時器1工作在模式2[自動重裝模式] SCON = 0x50;//使串口工作在模式1,打開串口接收功能[接收本程序沒有用到] PCON = 0x00; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1;//打開定時器1 ES = 1;//打開串口中斷 EA = 1;//打開總中斷}
評論