📄 sbuf.c
字号:
//接受一个 发送一个
#include <absacc.h> //绝对地址访问
#include <intrins.h> //内部函数
#include <reg52.h> //寄存器定义
#include <ctype.h> //字符函数 以上4个系统函数,直接调用
//---------------------------------
#define uchar unsigned char //宏定义
uchar data recedata=0x00; //定义变量
uchar data i,j;
//uchar data ad_flag=0x00;
sbit WDI=P2^4; //位定义
sbit LED=P0^0;
//*********************************
//-------子程序------
void delay(void); //延时子程序
void init(void); //初始化子程序
//-------主程序------
main()
{
init();
for(j=0;j<5;j++) // 程序运行指示灯闪五次
{
for(i=0;i<150;i++)
{
delay();
}
LED=0;
for(i=0;i<150;i++)
{
delay();
}
LED=1;
}
LED=1;
for(;;) //主循环
{
}
}
serial() interrupt 4 using 3 //串口中断服务程序
{
EA=0; //中断时屏蔽外来中断
ES=0;
if(RI==1)
{
recedata=SBUF;
if(recedata==0xCE) //如接受的数据为05H 发送A0H
{
SBUF=0xEC;
while(TI==0) //等待发送结束
{ _nop_();}
TI=0;
LED=0; //亮灯
for (i=0;i<100;i++) //延时后灯灭
{
delay();
}
LED=1;
}
RI=0;
}
ES=1; //开中断
EA=1;
}
void init(void)
{
TMOD=0x20; //波特率设置9600kbps 晶振11.0592CLK
//TMOD=0x21;
TH1=0xfd;
TL1=0xfd; //定时器1 方式2 初值
//PCON=PCON&0x7f;
PCON=0x00; //波特率加倍位SMOD=0
SCON=0xC0; // 串口工作方式3 11位UART 加偶校验位
REN=1;
EA=1;
ES=1;
TI=0;
RI=0;
TR1=1;
WDI=!WDI;
}
void delay(void) //延时子程序
{
uchar a;
for(a=0;a<100;a++)
{
WDI=!WDI;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
WDI=!WDI;
_nop_();
_nop_();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -