这个void ser()interrupt 4 //定义串口中断
{
flag=1;
}是什么意思怎么理解,
还有:
while(!TI);
TI=0;
ES=1;
i++;这部分我也不是很理解,求大神指教。
void init(void)//串口初始化
{
TMOD=0x20;//定义定时器
TH1=0xfd;//
TL1=0xfd;//设置波特率为9600
TR1=1;//定时器启动
REN=1;//允许接收位
SM0=0;//
SM1=1;//设置异步接收8位数据
EA=1;//
ES=1;//允许中断
}
void delay_ms(uint i) //延时函数
{
uint j;
for(i;i>0;i--)
for(j=110;j>0;j--);
}
void main(void)
{
uchar i = 0;
float temp;
init();
while(1)
{
if(flag==1)
{
flag=0;//先关闭串口
ES=0;//中断
sendchangecmd(); //温度转换
delay_ms(100);//延时
ES=0;
temp=getTemp(); //获取温度
flag=0;
TI=1; //发送字节
if(abs(temp-85)>1e-3)//0.001float(选取三位精度)
{
printf("%4.1f\n",temp);
}
while(!TI);
TI=0;
ES=1;
i++;
}
}
}
void ser()interrupt 4 //定义串口中断
{
flag=1;
}
{
flag=1;
}是什么意思怎么理解,
还有:
while(!TI);
TI=0;
ES=1;
i++;这部分我也不是很理解,求大神指教。
void init(void)//串口初始化
{
TMOD=0x20;//定义定时器
TH1=0xfd;//
TL1=0xfd;//设置波特率为9600
TR1=1;//定时器启动
REN=1;//允许接收位
SM0=0;//
SM1=1;//设置异步接收8位数据
EA=1;//
ES=1;//允许中断
}
void delay_ms(uint i) //延时函数
{
uint j;
for(i;i>0;i--)
for(j=110;j>0;j--);
}
void main(void)
{
uchar i = 0;
float temp;
init();
while(1)
{
if(flag==1)
{
flag=0;//先关闭串口
ES=0;//中断
sendchangecmd(); //温度转换
delay_ms(100);//延时
ES=0;
temp=getTemp(); //获取温度
flag=0;
TI=1; //发送字节
if(abs(temp-85)>1e-3)//0.001float(选取三位精度)
{
printf("%4.1f\n",temp);
}
while(!TI);
TI=0;
ES=1;
i++;
}
}
}
void ser()interrupt 4 //定义串口中断
{
flag=1;
}