學(xué)了幾天,接收也沒(méi)調(diào)通。原搬了網(wǎng)上程序,還是終于通了。貼人原程序吧!網(wǎng)址如下:http://www.cnblogs.com/feng-bxr/articles/2302086.html謝謝原作者。
#include
sbit WINT1=P3^3; // 外部中斷,接S4按鍵
void init() {
PCON=0x00; //波特率不加倍
TMOD=0x20; //定時(shí)器1用作波特率發(fā)生器(具有自動(dòng)重裝載初值的功能)
SCON=0x50; //8為異步收發(fā),波特率可變(由定時(shí)器控制)選擇串口方式1,接收允許
TH1=0x0fd;
TL1=0x0fd; //設(shè)置波特率為9600bps,晶振11.0592MHz
RI=0; //清標(biāo)志位
TI=0;
TR1=1; //開(kāi)啟計(jì)數(shù)T1
ES=1; //開(kāi)串口中斷
IT1=1; //設(shè)置為跳變觸發(fā)方式
EX1=1; //開(kāi)外部中斷1
EA=1; //開(kāi)總中斷
}
void main(){
init();
while(1); //延時(shí)等待中斷
}
void uart_interrupt (void) interrupt 4{
char date;
ES=0; //關(guān)閉串口中斷
if(TI) { //判斷是發(fā)送中斷
TI=0; //清除發(fā)送中斷標(biāo)志
}
else {
date=SBUF; //數(shù)據(jù)緩存到date中
RI=0; //清除接收中斷標(biāo)志
date++; //數(shù)據(jù)處理
SBUF=date; //返回?cái)?shù)據(jù)
}
ES=1; //打開(kāi)串口中斷
}
void int1_interrupt(void) interrupt 2 {
while(!WINT1); //按鍵松手檢測(cè)
SBUF=0X41; //發(fā)送字符數(shù)據(jù)A
}
評(píng)論