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,外接计算机用串口助手调试的
展开
 我来答
做而论道
高能答主

2010-04-16 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
楼主设定的串口,是工作在方式0吗?
这种方式,并非是UART方式,不知你外接的是什么设备。
-------------
方式0是同步串口方式,必须使用同步传送的器件来测试,不适合用外接计算机的。
划过天空kaka
2010-04-16 · TA获得超过107个赞
知道答主
回答量:70
采纳率:0%
帮助的人:39.9万
展开全部
你看看你的中断初始化是否正确
TCON=0x01;
IE=0x91;
IP=0x10;
TR1 = 1;
SCON = 0X50; //01010000; 加到你的主函数里面或是在初始化函数里面,没有逃到中断可能就是这有点问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户76313
2010-04-26
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
使用串口通信时,需要设置中断优先级,IP=0x10,同时打开中断EA=1;
在中断中存储完数据后要,要重新将TI,RI软件值0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cb7ef91
2010-04-18 · TA获得超过435个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:233万
展开全部
RI0不是只能硬件置1吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式