51单片机串行中断问题求助

51单片机串行中断0023h入口,如何设置成当接收数据时进中断,发送数据时不进中断?
在初学阶段,现在只能是发送和接收到进中断,在中断程序里判断是接收产生的中断还是发送产生的中断!这样问题就出来了,当连续发送几个字节时,相当于每字节都要进中断1次。

第1个回答  2012-08-30
发送时关闭串口中断使能就OK了。
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP SER_ISR
ORG 0030H
MAIN:
MOV TMOD,#20H
MOV SCON,#50H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1
SETB ES
SETB EA
LOOP:
CLR ES
CLR A
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES
LCALL DELAY
SJMP LOOP
DELAY:
MOV R0,#250
DJNZ R0,$
RET
SER_ISR:
JNB RI,SERN
CLR RI
MOV A,SBUF
SERN:
RETI
END本回答被网友采纳
第2个回答  2012-08-30
51单片机串行中断, 只要有 接收 或者 发送 都会产生中断,
区分接收 或者 发送 就是区分 RI=1 或者 TI=1
连续接收 或者 发送 会连续产生中断,所有单片机串口通讯 一般要设计一个 协议
有起始字节 字节数 数据段 结束字节,可以用来区分一个数据包的信息。本回答被提问者采纳
第3个回答  2012-08-30
你可以在发送数据时暂时关闭串行中断, 发送完数据后再打开串行中断

51单片机串口通信中断的问题
肯定不会运行while(TI==0);下面的程序的,因为你的中断开着,程序跳到中断服务程序里面了,然后中断处理结束了之后,TI自动清零了,所以一直在while(TI==0);无限循环。程序里面,既然开通了中断功能,那你就一直使用中断功能,为什么你还要使用查询功能呢?甚至有时把中断给禁止了,这里面容易出现问题哈...

C51单片机串口通信中断的问题
对于51而言,每帧产生一次中断。接收4个字节是分4次中断接收完成的。51的UART模块从串行移位寄存器接收完成后是直接放入接收缓冲的,而且接收缓冲只有一个单元。

MCS-51的中断问题
51单片机的中断响应的大概过程:1.发现中断请求,一般情况本条指令完成后的下一机器周期开始响应。2.响应开始,先由硬件自动把当前程序指针PC入栈(保护起来)。3.然后把中断入口地址(各中断入口地址固定)装入程序指针PC,也是由硬件自动完成,至此中断响应结束。4.程序转入中断服务程序,先进行现场保护,...

51单片机中断及串行口问题。设数据传送速率为100字符每秒,采用串行口方 ...
AUXR &= 0xFE;\/\/串口1选择定时器1为波特率发生器 TMOD &= 0x0F;\/\/清除定时器1模式位 TMOD |= 0x20;\/\/设定定时器1为8位自动重装方式 TL1 = 0xFD;\/\/设定定时初值 TH1 = 0xFD;\/\/设定定时器重装值 ET1 = 0;\/\/禁止定时器1中断 TR1 = 1;\/\/启动定时器1 这个是定时器1 方式2,,8位...

51单片机(c语言)中断嵌套的困惑
“只要堆栈空间足够,中断嵌套的层数一般没有限制”。这话应该是对的。虽然只有两级优先级。但是,同一优先级的不同中断的优先性不同。具体的是:外部中断0、T0、外部中断1、T1、串行中断。五级依次递减。(在同一优先级)如果正在执行T1中断,这时来了个T0中断,那么可以被打断,执行T0中断服务程序时又...

51单片机在什么情况下会产生串口中断
而串口中断是一种内部中断,所谓内部中断,是单片机执行内部程序,由内部定时器或其他中断源触发的,通常要生成串行中断或其他中断,首先必须有中断和总中断。例如:串行中断EA=1;//ES总中断量=1;//串行中断},那么只有在中断源事件发生时,你指的是串行中断,是当串口发送或接收完成TI和RI中断...

51单片机串口接收中断连续接收字符串,中断一直占有CPU时间直到字符串...
1楼的说法明显不对,串口接收时有标志位RI,当串口接收到一个字符(8位)时,RI会自动被置1,此时CPU会从主程序转去执行串行中断,普通单串口51单片机一般为 interrupt 4 子程序,当执行完时会自动回到主程序继续执行,因此自 interrupt 4子程序结尾要把RI清零,以接受下一个中断,否则无法再接收下一...

51单片机串口通信时, 外部中断无法执行
串口通信是不是也是采用中断方式?如果与外部中断为同一优先经中断的话,则当51单片机串口通信时(串口中断时),外部中断是无法执行的。如果想实现外部中断优先,需要改变它们的优先级别,串口低优先级PS=0,外部中断高优先级PX0=1,PX1=1

单片机中断问题
一. 如果是高优先级的中断来了,会打断低优先级的正在执行的中断而执行高优先级的中断。51单片机的默认(此时的IP寄存器不做设置)中断优先级为:外部中断0 > 定时\/计数器0 > 外部中断1 > 定时\/计数器1 > 串行中断;当同时有几种中断到达时,高优先级中断会先得到服务。例如:当计数器0中断和...

51单片机串口中断怎么分
由中断号决定,一般计数器0是interrupt 0,定时器0是interrupt 1,接下来是计数器1,再是定时器1,再是串口,有些单片机还会有ADC,串口2,PCI等中断,具体看单片机的资料。Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表...

相似回答
大家正在搜