#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
unsigned char flag_uart,flag_
time,flag_on,a,i,t0_num,ad_val,a,s;
float ad_vo;
void init()
{
TMOD|= 0x20; //定时器1工作方式2
PCON|= 0x80;
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ET0=1;
SM0=0;
SM1=1;
REN=1;
EA = 1; // 开总中断
ES = 1; //开串口中断
}
void main()
{
while(1)
{
init();
if(flag_uart==1)
{
flag_uart=0;
ES=0;
TI=1;
switch(flag_on)
{
case 2: puts("Turn on ad!
");
//TR0=1;
break;
case 0: printf("Turn off ad!
");
//TR0=0;
break;
case 1: puts("Error!
");
break;
}
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
if(RI==1)
{ RI=0; //先是收到电脑发送过来的数据,数据放在在SBUF中
a=SBUF; }
s=a;
flag_uart=1;
if(s==1)
flag_on=0;
else
flag_on=1;
}
//为什么中断服务程序中的s 与a始终为0,导致始终执行的是 case 0中的语句?
一周热门 更多>