51单片机中断,在中断里面改变一个bian,在main()使用该变量
时间:10-02
整理:3721RD
点击:
希望程序开始,从串口里面接受到 任意字符时候,进入中断 rflag置1;
然后利用rflag 判断是否执行主程序 程序如下, 问题从串口助手发送字符,程序没有反应,串口没接收到AD转换后发送的值
求解救
#include <reg52.h>
unsigned char rflag;
void InitUART (void)
{ SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
// ES = 1; //打开串口中断
main()
{unsigned char num0,num1,num3;int i; P35=0
InitUART();
DelayMs(20);
ES=1;
while (1)
{ if(rflag==1)
{ 主程序是读取AD转换,再发送值到串口输出
}
}
//中断函数 希望从串口里面接受到 任意字符,进入中断 rflag置1;
void uartser (void) interrupt 4
if(RI)
{ RI=0;
rflag=1;
if(TI)
TI=0;
}
}
然后利用rflag 判断是否执行主程序 程序如下, 问题从串口助手发送字符,程序没有反应,串口没接收到AD转换后发送的值
求解救
#include <reg52.h>
unsigned char rflag;
void InitUART (void)
{ SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
// ES = 1; //打开串口中断
main()
{unsigned char num0,num1,num3;int i; P35=0
InitUART();
DelayMs(20);
ES=1;
while (1)
{ if(rflag==1)
{ 主程序是读取AD转换,再发送值到串口输出
}
}
//中断函数 希望从串口里面接受到 任意字符,进入中断 rflag置1;
void uartser (void) interrupt 4
if(RI)
{ RI=0;
rflag=1;
if(TI)
TI=0;
}
}
