<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 中斷法串口通信

中斷法串口通信

作者: 時(shí)間:2012-08-06 來(lái)源:網(wǎng)絡(luò ) 收藏

第一個(gè)例子:

避免,一直發(fā)數據(用自設接收數據標志位法,不用關(guān)串口中斷ES方法)flag必須放if語(yǔ)句中的最后位置,否則

#includereg52.h>#define uchar unsigned char#define uint  unsigned intuchar flag=0,temp; void init(){TMOD=0X20;//定時(shí)器1方式2作為波特率發(fā)生器TH1=0XF3;//裝初值 波特率為4800bps的初值TL1=0XF3;TR1=1;//啟動(dòng)定時(shí)器1SCON=0X50;//設置串口工作方式為方式1PCON=0X80;//加倍波特率后為4800EA=1;//開(kāi)總中斷ES=1;//允許串口中斷TI=0;//清發(fā)送中斷標志位RI=0;//清接收中斷標志位}void main(){init();while(1){if(flag==1){//ES=0;//flag為1說(shuō)明接收完引起中斷//flag=0;//清中斷標志RI=0;//對接收中斷標志清零,為下一幀數據接收作準備temp=SBUF;//讀入接收數據,在不關(guān)中斷ES前提下,CPU讀入接收數據也不會(huì )引起中斷,
接收數據由接收SBUF接收緩存器自動(dòng)執行P0=temp;  //讀入數據送P0口SBUF=temp; //向發(fā)送方返回接收數據//TI=0;    //要等待發(fā)送完,否則數據沒(méi)發(fā)送完TI=0,flag=0已經(jīng)執行//flag=0;  //發(fā)送完后引起中斷,flag又置1,進(jìn)入,一直發(fā)數據while(!TI);//等待發(fā)送完,??!要等待??!TI=0;//數據發(fā)送完對發(fā)送中斷標志清零,為下一幀數據發(fā)送作準備flag=0; //必須有否則進(jìn)入死循環(huán),放最后//ES=1;//允許串口中斷繼續接收數據}}}void serial() interrupt 4{flag=1;}

----------------------第2個(gè)例子:-----------------------------------------------

/***********************************************(用關(guān)串口中斷ES方法)推薦不丟幀***********************************************/#includereg52.h>#define uchar unsigned char#define uint  unsigned intuchar flag=0,temp; void init(){TMOD=0X20;//定時(shí)器1方式2作為波特率發(fā)生器TH1=0XF3;//裝初值 波特率為4800bps的初值TL1=0XF3;TR1=1;//啟動(dòng)定時(shí)器1SCON=0X50;//設置串口工作方式為方式1PCON=0X80;//加倍波特率后為4800EA=1;//開(kāi)總中斷ES=1;//允許串口中斷TI=0;//清發(fā)送中斷標志位RI=0;//清接收中斷標志位}void main(){init();while(1){if(flag==1){ES=0;//flag為1說(shuō)明接收完引起中斷,關(guān)串口中斷,處理當前幀flag=0;//清中斷標志RI=0;//對接收中斷標志清零,為下一幀數據接收作準備,此處清零不丟幀temp=SBUF;//讀入接收數據,在不關(guān)中斷ES前擔下,CPU讀入接收數據也不會(huì )引起中斷,
接收數據由接收SBUF接收緩存器自動(dòng)執行P0=temp;  //讀入數據送P0口SBUF=temp; //向發(fā)送方返回接收數據//TI=0;    //要等待發(fā)送完,否則數據沒(méi)發(fā)送完TI=0,flag=0已經(jīng)執行//flag=0;  //發(fā)送完后引起中斷,flag又置1,進(jìn)入死循環(huán),一直發(fā)數據while(!TI);//等待發(fā)送完,??!要等待??!TI=0;//數據發(fā)送完對發(fā)送中斷標志清零,為下一幀數據發(fā)送作準備//flag=0; //必須有否則進(jìn)入死循環(huán),放最后ES=1;//允許串口中斷繼續接收數據}}}void serial() interrupt 4//執行此句,即產(chǎn)生中斷表示數據已接收完{//RI=0;//不在此清零接收中斷標志,否則接收SUBF處于一直接收狀態(tài),
中斷一直進(jìn)行影響其它指令進(jìn)行,造成返回丟幀現象實(shí)驗得出flag=1;}


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>