📄 main.c
字号:
#include <Reg51.h>
#include <stdio.h>
sbit Data = P0^0;
unsigned char data start;
unsigned char data databuff;
unsigned char data result;
void main(void)
{
/***************************
串行通讯的波特率根据实际应用再修改
*********************************/
PCON = 0x80; //SMOD = 1
SCON = 0x50; //串口通讯采用方式1
TMOD = 0x20; //T1采用方式2
TL1 = 0xfd;
TH1 = 0xfd; //T1装初值
ES = 1; //开串口中断
ET1 = 1; //开T1中断
IT0 = 1; //中断0负边沿触发
EX0 = 1; //开外部中断0
EA = 1; //开所有中断
TR1 = 1; //T1开始计时
start = 0xff;
databuff = 0;
// for(;;);
}
void interrupter_0(void) interrupt 0 using 1
{
if( start == 0xff )
{
if(Data == 0) //开始接受起始位
{
start = 0;
databuff = 0;
}
}
else
{
if(start < 0x08) //接受数据位
{
if( Data == 1)
databuff += (1 << start);
}
else if( start == 0x08) //接受校验位
{
}
else //接受停止位
{
start = 0xff;
if( Data == 1)
{
result = databuff;
SBUF = result; //向上位机发送数据
}
else
result = 0xff;
}
start ++;
}
}
void serial(void) interrupt 4 using 2
{
if( TI == 1 )
TI = 0;
if( RI == 1 )
RI = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -