有没有谁看出这个c程序的问题?用串口调试助手测试有问题
时间:10-02
整理:3721RD
点击:
测试时的异常现象:用串口调试助手发1、2、3等数,但始终是打印出"error!“
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
void inital();
sbit led1=P1^0;
uchar ch,temp;
unsigned char flag,flag_on;
//uint flag,flag_on;
void main()
{
// uchar temp;
inital();
while(1)
{
if(flag)
{
flag=0;
ES=0;
TI=1;
switch(flag_on)
{
case 1:printf("turn on ad!\n");
break;
case 2:printf("turn off ad!\n");
break;
case 3:puts("error!\n");
break;
}
while(!TI);
TI=0;
flag_on=0;
ES=1;
}
}
}
void delay(uint xms)
{
uchar i;
while(xms--)
for(i=110;i>0;i--);
}
void inital()
{
TMOD=0x21;//T1工作于8位自动重装模式,T0工作于16位定时计数模式
TH1=0xfd;//设定9600bps
TL1=0xfd;
TH0=(65536-50000)/256;//T0装初值,每隔50ms溢出一次、
TL0=(65536-50000)%256;
TR1=1;
ET0=1;
SCON=0x50;//设定串口工作于模式1?10位
PCON=0x00;
EA=1;
ES=1;
}
void ser()interrupt 4
{
RI=0;
ch=SBUF;
flag=1;
if(ch==1)
flag_on=1;
else if(ch==2)
flag_on=2;
else
flag_on=3;
}