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);

#endif

TIMER0_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; //停止timer

return ACC;

#else

unsigned 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; //停止timer

return 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; //在发送或接收才开始使用

TF0=0;

TH0=(256-96); //9600bps 就是 1000000/9600=104.167微秒 执行的

timer是

//

104.167*11.0592/12= 96

TL0=TH0;

ET0=1;

EA=1;

PSendChar(0x55);

PSendChar(0xaa);

PSendChar(0x00);

PSendChar(0xff);

while(1)

{

if(StartBitOn())

{

gch=PGetChar();

PSendChar(gch);

}

}

}

来源;电子工程网

关于接口,总线,驱动就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查