
为什么我这样设置串口没有进入中断(谢谢各位大虾)
voidUART_Init(void)/*初始化系统配置函数*/{SCON=0x90;//UART工作于方式2PCON=0x00;//不倍频,晶振16MAUXR|=0X4...
void UART_Init(void) /*初始化系统配置函数*/
{
SCON=0x90; //UART工作于方式2
PCON=0x00; //不倍频,晶振16M
AUXR|=0X40; //T1工作在1T模式*12
TMOD=0x20; //T1工作于8位自动重装模式
TH1 =0xFE; //波特率250K
TL1 =0xFE;
TR1=1; //开定时器1
PS=1; //设置串口中断为最高优先级
ES=1; //开UART中断
EA=1; //开总中断
}
void dmx512_Serial(void) interrupt 4 //串口接收DMX buffer中断函数 DMX信号250kbps
{
RI=0;
LED=1
}
int mail(void)
{
LED=0; UART_Init();
}
刚才贴少了,还有下面这个,谁能告诉我为什么不能进入中断,板子是没问题的
while(1)
{} 展开
{
SCON=0x90; //UART工作于方式2
PCON=0x00; //不倍频,晶振16M
AUXR|=0X40; //T1工作在1T模式*12
TMOD=0x20; //T1工作于8位自动重装模式
TH1 =0xFE; //波特率250K
TL1 =0xFE;
TR1=1; //开定时器1
PS=1; //设置串口中断为最高优先级
ES=1; //开UART中断
EA=1; //开总中断
}
void dmx512_Serial(void) interrupt 4 //串口接收DMX buffer中断函数 DMX信号250kbps
{
RI=0;
LED=1
}
int mail(void)
{
LED=0; UART_Init();
}
刚才贴少了,还有下面这个,谁能告诉我为什么不能进入中断,板子是没问题的
while(1)
{} 展开
1个回答
展开全部
定时器1没开,
更多追问追答
追问
TR1=1;
不是开了嚒?
追答
初始化串口时,先关串口中断
void UART_Init(void) /*初始化系统配置函数*/
{
ES=0; //
SCON=0x90; //UART工作于方式2
PCON=0x00; //不倍频,晶振16M
AUXR|=0X40; //T1工作在1T模式*12
TMOD=0x20; //T1工作于8位自动重装模式
TH1 =0xFE; //波特率250K
TL1 =0xFE;
TR1=1; //开定时器1
PS=1; //设置串口中断为最高优先级
ES=1; //开UART中断
EA=1; //开总中断
}
T1没有用,最好关掉。
TR1=1;改为TR1=0;
void dmx512_Serial(void) interrupt 4 //串口接收DMX buffer中断函数 DMX信号250kbps
{
if(RI==1)
{
RI=0;
}
else
{
TI = 0;
}}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询