📄 text4.c
字号:
/*晶振为20MHZ*/
/*定时也好用波特率为38400;;; 延时好用,波特率为38400*/
#include <reg51.h>
#include<intrins.h>
sbit BT_SND =P1^0;
sbit BT_REC =P1^1;
unsigned char bdata senddat,revedat;
unsigned char retudata;
sbit senddat0= senddat^0;
sbit senddat1= senddat^1;
sbit senddat2= senddat^2;
sbit senddat3= senddat^3;
sbit senddat4= senddat^4;
sbit senddat5= senddat^5;
sbit senddat6= senddat^6;
sbit senddat7= senddat^7;
sbit revedat0= revedat^0;
sbit revedat1= revedat^1;
sbit revedat2= revedat^2;
sbit revedat3= revedat^3;
sbit revedat4= revedat^4;
sbit revedat5= revedat^5;
sbit revedat6= revedat^6;
sbit revedat7= revedat^7;
void delay(unsigned int del)
{
for(del;del>0;del--);
}
//发送一个字符
void PSendChar(unsigned char inch)
{
senddat=inch;
BT_SND=0; //start bit
delay(30);
BT_SND=senddat0; //先送出低位
delay(30);
BT_SND=senddat1;
delay(30);
BT_SND=senddat2;
delay(30);
BT_SND=senddat3;
delay(30);
BT_SND=senddat4;
delay(30);
BT_SND=senddat5;
delay(30);
BT_SND=senddat6;
delay(30);
BT_SND=senddat7;
delay(30);
BT_SND=1;
delay(30);
}
//接收一个字符
unsigned char PGetChar()
{
delay(30);
revedat0=BT_REC;
delay(30);
revedat1=BT_REC;
delay(30);
revedat2=BT_REC;
delay(30);
revedat3=BT_REC;
delay(30);
revedat4=BT_REC;
delay(30);
revedat5=BT_REC;
delay(30);
revedat6=BT_REC;
delay(30);
revedat7=BT_REC;
delay(30);
while(!BT_REC);
return (revedat);
}
//检查是不是有起始位
bit StartBitOn()
{
return (BT_REC==0);
}
void INT_int0() interrupt 0
{
EX0=0;
while(!StartBitOn());
retudata=PGetChar();
PSendChar(retudata);
EX0=1;
}
void main()
{
unsigned char i,j;
/*TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装)
TR0=0; //在发送或接收才开始使用
TH0=(256-43); //38400bps 就是 1000000/38400=26微秒
//执行的timer是
//26*20/12=43
TL0=TH0;
*/
EA=1;
EX0=1;
IT0=1;
BT_SND=1;
BT_REC=1;
for(j=0;j<=20;j++)
for(i=0;i<=250;i++)
{
PSendChar(i);
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -