日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]#include sbit BT_SND =P1^0;sbit BT_REC =P1^1;/**********************************************  IO 口模擬232通訊程序  使用兩種方式的C程序 占用定時器0  *********************************************

#include sbit BT_SND =P1^0;sbit BT_REC =P1^1;/**********************************************  IO 口模擬232通訊程序  使用兩種方式的C程序 占用定時器0  **********************************************/  #define MODE_QUICK  #define F_TM F0  #define TIMER0_ENABLE TL0=TH0; TR0=1;#define TIMER0_DISABLE TR0=0;  sbit ACC0= ACC^0;sbit ACC1= ACC^1;sbit ACC2= ACC^2;sbit ACC3= ACC^3;sbit ACC4= ACC^4;sbit ACC5= ACC^5;sbit ACC6= ACC^6;sbit ACC7= ACC^7;  void IntTimer0() interrupt 1{F_TM=1;}//發(fā)送一個字符void PSendChar(unsigned char inch){#ifdef MODE_QUICKACC=inch;  F_TM=0;BT_SND=0; //start bitTIMER0_ENABLE; //啟動while(!F_TM);  BT_SND=ACC0; //先送出低位F_TM=0;while(!F_TM);  BT_SND=ACC1;F_TM=0;while(!F_TM);  BT_SND=ACC2;F_TM=0;while(!F_TM);  BT_SND=ACC3;F_TM=0;while(!F_TM);  BT_SND=ACC4;F_TM=0;while(!F_TM);  BT_SND=ACC5;F_TM=0;while(!F_TM);  BT_SND=ACC6;F_TM=0;while(!F_TM);  BT_SND=ACC7;F_TM=0;while(!F_TM);  BT_SND=1;F_TM=0;while(!F_TM);    TIMER0_DISABLE; //停止timer#elseunsigned char ii;  ii=0;  F_TM=0;BT_SND=0; //start bitTIMER0_ENABLE; //啟動while(!F_TM);  while(ii<8){if(inch&1){BT_SND=1;}else{BT_SND=0;}F_TM=0;while(!F_TM);ii++;inch>>=1;}BT_SND=1;F_TM=0;while(!F_TM);  #endifTIMER0_DISABLE; //停止timer}//接收一個字符unsigned char PGetChar(){#ifdef MODE_QUICK  TIMER0_ENABLE;F_TM=0;while(!F_TM); //等過起始位ACC0=BT_REC;  TL0=TH0;  F_TM=0;while(!F_TM);ACC1=BT_REC;  F_TM=0;while(!F_TM);ACC2=BT_REC;  F_TM=0;while(!F_TM);ACC3=BT_REC;  F_TM=0;while(!F_TM);ACC4=BT_REC;  F_TM=0;while(!F_TM);ACC5=BT_REC;  F_TM=0;while(!F_TM);ACC6=BT_REC;  F_TM=0;while(!F_TM);ACC7=BT_REC;  F_TM=0;  while(!F_TM){if(BT_REC){break;}}TIMER0_DISABLE; //停止timerreturn ACC;#elseunsigned char rch,ii;TIMER0_ENABLE;F_TM=0;ii=0;rch=0;while(!F_TM); //等過起始位  while(ii<8){rch>>=1;if(BT_REC){rch|=0x80;}ii++;F_TM=0;while(!F_TM);  }F_TM=0;while(!F_TM){if(BT_REC){break;}  }TIMER0_DISABLE; //停止timerreturn rch;  #endif  }//檢查是不是有起始位bit StartBitOn(){return (BT_REC==0);  }void main(){unsigned char gch;  TMOD=0x22; /*定時器1為工作模式2(8位自動重裝),0為模式2(8位自動重裝) */PCON=00;  TR0=0; //在發(fā)送或接收才開始使用TF0=0;TH0=(256-96); //9600bps 就是 1000000/9600=104.167微秒 執(zhí)行的timer是//104.167*11.0592/12= 96TL0=TH0;ET0=1;EA=1;  PSendChar(0x55);PSendChar(0xaa);PSendChar(0x00);PSendChar(0xff);  while(1){if(StartBitOn()){gch=PGetChar();PSendChar(gch);}}  }

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉