我想要通过检测接在P2.4口的led灯的亮灭,来控制
单片机向串口发送000,001 ,可是我是一个初学者,对sbuf语句不熟悉,总是实现不了功能,希望各位大神不吝赐教,感激不尽,,,程序如下
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;//变量定义
sbit led1 = P2^4;
unsigned int c = 0;
u16 r_buf;//定义全局变量
void init_uart(void)//初始化串口
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;//串口中断
ES = 1;
TR1 = 1;
}
int send_byte(int SBUF)
{
SBUF = c;
while(!
ti);//等待TI,对TI置1
TI = 0;//对TI清零
}
void main(void)
{
init_uart();
while(1);//等待
}
void uart_interrupt(void) interrupt 4//中断子程序
{
if(led1 == 0)
{
c = 000;
r_buf = SBUF;//将填充的数据拿出
send_byte(r_buf);//将接收到的数据发出
}
if(led1 == 1)
{
c = 001;
r_buf = SBUF;
send_byte(r_buf);
}
}
一周热门 更多>