新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)通過串口中斷與電腦連接通信

單片機(jī)通過串口中斷與電腦連接通信

作者: 時間:2012-02-19 來源:網(wǎng)絡(luò) 收藏

本實(shí)驗(yàn)實(shí)現(xiàn)實(shí)驗(yàn),和計算機(jī)進(jìn)行 *
首先接受聯(lián)機(jī)信號,然后接受計算機(jī)的相關(guān)控制信號 *
本實(shí)驗(yàn)中,采用發(fā)送不同的字符給計算機(jī)來模擬接收到的不同的計算機(jī)控制命令 *
擴(kuò)展,可以實(shí)現(xiàn)不同的功能 *
* *
*
* *
********************************************************************************/

本文引用地址:http://butianyuan.cn/article/172059.htm

#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; //清除串行接受標(biāo)志位
buf = SBUF; //從緩沖區(qū)取得數(shù)據(jù)
P1 = buf; //數(shù)據(jù)送往p1口顯示出來
if(buf == 255) SBUF = 255; //發(fā)送聯(lián)絡(luò)信號
else{
switch(buf)
{
case 1: SBUF = 'M',waitsend();break; //如果接受到1,發(fā)送字符'M'給計算機(jī)
case 2: SBUF = 'C',waitsend();break; //如果接受到2,發(fā)送字符'C'給計算機(jī)
case 3: SBUF = 'S',waitsend();break; //如果接受到3,發(fā)送字符'S'給計算機(jī)
case 4: SBUF = '5',waitsend();break; //如果接受到4,發(fā)送字符'5'給計算機(jī)
case 5: SBUF = '1',waitsend();break; //如果接受到5,發(fā)送字符'1'給計算機(jī)

default: SBUF = 'n',waitsend();break; //如果接受到其它數(shù)據(jù),發(fā)送n給計算機(jī)

}
}
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)等待串行中斷
}



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉