|
/******************************************************************************* Title: 演示程序 - 串口中斷應用 * Name: UART.c * Date: 2006-4-15 * Ver: 1.0 * * web: http://www.mcu99.com * ******************************************************************************** 本實驗實現(xiàn)串口中斷實驗,通過中斷和計算機進行通信 * 首先接受聯(lián)機信號,然后接受計算機的相關(guān)控制信號 * 本實驗中,采用發(fā)送不同的字符給計算機來模擬接收到的不同的計算機控制命令 * 通過擴展,可以實現(xiàn)不同的功能 * * * * * * ********************************************************************************/ #include #define uchar unsigned char uchar time,b_break,b_break_3; uchar buf; void waitsend() { while(!TI) { }; TI = 0; } //串行中斷程序 void int_s(void) interrupt 4 { ES = 0; //關(guān)閉串行中斷 RI = 0; //清除串行接受標志位 buf = SBUF; //從串口緩沖區(qū)取得數(shù)據(jù) P1 = buf; //數(shù)據(jù)送往p1口顯示出來 if(buf == 255) SBUF = 255; //發(fā)送聯(lián)絡信號 else{ switch(buf) { case 1: SBUF = 'M',waitsend();break; //如果接受到1,發(fā)送字符'M'給計算機 case 2: SBUF = 'C',waitsend();break; //如果接受到2,發(fā)送字符'C'給計算機 case 3: SBUF = 'S',waitsend();break; //如果接受到3,發(fā)送字符'S'給計算機 case 4: SBUF = '5',waitsend();break; //如果接受到4,發(fā)送字符'5'給計算機 case 5: SBUF = '1',waitsend();break; //如果接受到5,發(fā)送字符'1'給計算機 default: SBUF = 'n',waitsend();break; //如果接受到其它數(shù)據(jù),發(fā)送n給計算機 } } ES = 1; //允許串口中斷 } void main(void) { P0 = 0; P2 = 255; //關(guān)閉數(shù)碼管顯示 EA=1; SCON=0x50;PCON=0X80; TMOD=0x20;ES = 1; TL1=TH1=0xf3;TR1=1; //串口工作在模1,波特率4800@12Mhz) while(1); //無限循環(huán)等待串行中斷 } |