正文

c51模拟串口2006-11-16 13:58:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/embed/20371.html

分享到:

c51模拟串口[ZZ] //作者:晒太阳的小猪   在电路设计当中,经常会感觉控制器mcu的串口sci数量太少,一般mcu的sci数量不会超过3个(其实包含有3个的就是很多的了)。要想使用更多的串口sci,就得选用硬件串口uart扩展芯片或者采用软件协议利用一般的端口来模拟sci协议。利用软件模拟的方法是最廉价的设计方法。现在把c51模拟串口sci的程序提供出来,供大家享用。 /********************************************** IO 口模拟232通讯程序,频率9600 占用定时器0 **********************************************/#i nclude    <MAIN.h>#i nclude    <ABSACC.h>#i nclude    <INTRINS.h>#i nclude    <STRING.h>#define uint unsigned int#define uchar unsigned char#define REN_485 P21  //为0则可以接受,否则发送#define TIMER0_ENABLE TL0=TH0; TR0=1;#define TIMER0_DISABLE TR0=0;//#define F_TM F0bit F_TM;uchar time_count;sbit BT_SND =P3^1;sbit BT_REC =P3^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 using 1{F_TM=1;time_count++;} //发送一个字符void PSendChar(uchar inch){     uchar ii;   time_count=0;  REN_485=1;  ii=0;   F_TM=0;  BT_SND=0; //start bit   TIMER0_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);  TIMER0_DISABLE; //停止timer} //接收一个字符uchar PGetChar(){ uchar 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; //停止timer return rch; } //检查是不是有起始位bit StartBitOn(){return (BT_REC==0); } void main(){ uchar gch;  TMOD=0x22; //定时器1为工作模式2(8位自动重装),0为模式2(8位8位自动重装) PCON=00; TR0=0; //在发送或接收才开始使用 TF0=0;  TH0=0xA0;        TL0=0xA0; ET0=1; EA=1;          PSendChar(0x55);  PSendChar(0xaa); PSendChar(0x00); PSendChar(0xff);          while(1) {                REN_485=0;  if(StartBitOn())  {  gch=PGetChar();  PSendChar(gch);  } }}

阅读(5259) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册