欢迎来到天天文库
浏览记录
ID:34748123
大小:70.63 KB
页数:6页
时间:2019-03-10
《单片机io口模拟rs232串口c语言程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单片机I/O口模拟RS232串口C语言程序#includesbitBT_SND=P1^0;sbitBT_REC=P1^1;/**********************************************IO口模拟232通讯程序使用两种方式的C程序占用定时器0**********************************************/#defineMODE_QUICK#defineF_TMF0#defineTIMER0_ENABLETL0=TH0;TR0=1;#defineTIMER0_
2、DISABLETR0=0;sbitACC0=ACC^0;sbitACC1=ACC^1;sbitACC2=ACC^2;sbitACC3=ACC^3;sbitACC4=ACC^4;sbitACC5=ACC^5;sbitACC6=ACC^6;sbitACC7=ACC^7;voidIntTimer0()interrupt1{F_TM=1;}//发送一个字符voidPSendChar(unsignedcharinch){#ifdefMODE_QUICKACC=inch;F_TM=0;BT_SND=0;//startbitTIMER0_ENABL
3、E;//启动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;w
4、hile(!F_TM);BT_SND=1;F_TM=0;while(!F_TM);TIMER0_DISABLE;//停止timer#elseunsignedcharii;ii=0;F_TM=0;BT_SND=0;//startbitTIMER0_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);#endifTIMER
5、0_DISABLE;//停止timer}//接收一个字符unsignedcharPGetChar(){#ifdefMODE_QUICKTIMER0_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(!
6、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;//停止timerreturnACC;#elseunsignedcharrch,ii;TIMER0_ENABLE;F_TM=0;ii=0;rch=0;while(!F_TM);//等过起始位while(ii<8){rch>>=1;if(BT_REC){rch
7、=0x8
8、0;}ii++;F_TM=0;while(!F_TM);}F_TM=0;while(!F_TM){if(BT_REC){break;}}TIMER0_DISABLE;//停止timerreturnrch;#endif}//检查是不是有起始位bitStartBitOn(){return(BT_REC==0);}voidmain(){unsignedchargch;TMOD=0x22;/*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装)*/PCON=00;TR0=0;//在发送或接收才开始使用TF0=0;TH0=(256-
9、96);//9600bps就是1000000/9600=104.167微秒执行的timer是//104.167*11.0592/12=96TL0=TH0;ET0=1;EA=1;PSendChar(0x55);PSendC
此文档下载收益归作者所有