C语言 单片机串口中断问题
C51汇编可以实现,为什么用C语言编写就不行呢?是不是我写的有问题C语言代码部分如下:voiduart0_init(){SCON0=0x10;TH1=0xCC;TL1=0...
C51汇编可以实现,为什么用C语言编写就不行呢?是不是我写的有问题
C语言代码部分如下:
void uart0_init()
{
SCON0=0x10;
TH1=0xCC;
TL1=0xCC;
CKCON=0x00;
TMOD=0x21;
TR1=1;
}
void INIT(void)
{
EA=0;
ACC=0;
chipinit();
xram_init();
uart0_init();
uart1_init();
pwm8();
TR0=1;
EA=1;
ES0=1;
ET0=1;
}
void uart1_ISR(void) interrupt 4
{
_nop_();
}
为什么跳不到中断服务程序呢?监视寄存器是发现SBUF0里面已经收到了串口数据,RI0也置1了,而且中断也允许了(EA=1,ES0=1。。。)。求各位帮忙!
串口工作在方式0,外接计算机用串口助手调试的 展开
C语言代码部分如下:
void uart0_init()
{
SCON0=0x10;
TH1=0xCC;
TL1=0xCC;
CKCON=0x00;
TMOD=0x21;
TR1=1;
}
void INIT(void)
{
EA=0;
ACC=0;
chipinit();
xram_init();
uart0_init();
uart1_init();
pwm8();
TR0=1;
EA=1;
ES0=1;
ET0=1;
}
void uart1_ISR(void) interrupt 4
{
_nop_();
}
为什么跳不到中断服务程序呢?监视寄存器是发现SBUF0里面已经收到了串口数据,RI0也置1了,而且中断也允许了(EA=1,ES0=1。。。)。求各位帮忙!
串口工作在方式0,外接计算机用串口助手调试的 展开
4个回答
展开全部
你看看你的中断初始化是否正确
TCON=0x01;
IE=0x91;
IP=0x10;
TR1 = 1;
SCON = 0X50; //01010000; 加到你的主函数里面或是在初始化函数里面,没有逃到中断可能就是这有点问题
TCON=0x01;
IE=0x91;
IP=0x10;
TR1 = 1;
SCON = 0X50; //01010000; 加到你的主函数里面或是在初始化函数里面,没有逃到中断可能就是这有点问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用串口通信时,需要设置中断优先级,IP=0x10,同时打开中断EA=1;
在中断中存储完数据后要,要重新将TI,RI软件值0
在中断中存储完数据后要,要重新将TI,RI软件值0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
RI0不是只能硬件置1吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询