请问一个串口中断的问题

[复制链接]
4994|27
 楼主| guwu 发表于 2010-5-14 10:54 | 显示全部楼层 |阅读模式
初学单片机,有问题,是在不明白,请问各位:就是利用串口专家向单片机发个数,单片机根据这个数决定哪个LED灯亮。
void interrupt0()interrupt 4 using 1
{
i=SBUF;
LED=i;
}

main()
{
EA=1;
ES=1;
SCON=0x70;
PCON=0;
TMOD=0x20;
TH1=220;
TL1=220;
TCON=0x40;
}
波特率设定9600,现在的问题是不管送什么数进去,8个LED都一起灭?
什么原因,请各位大侠指教
gudeng614 发表于 2010-5-14 11:07 | 显示全部楼层
LED是不是再赋给IO口呢
yuyetufu 发表于 2010-5-14 21:24 | 显示全部楼层
程序好简单。串口中断进来要清一下中断标记。
应该先调试串口接收是否正确。确定接收没问题后,再考虑其他
zq1987731 发表于 2010-5-15 12:53 | 显示全部楼层
你这程序现在的状况就是main的执行直接结束
最后应该加上句:
while(1);
arucied 发表于 2010-5-15 19:16 | 显示全部楼层
楼上说的对
godwen 发表于 2010-5-15 21:06 | 显示全部楼层
if(RI)
    {
         RI=0;
         i=SBUF;
         LED=i;
    }
一棵小草 发表于 2010-5-15 21:11 | 显示全部楼层
只能说,程序好多洞洞
 楼主| guwu 发表于 2010-5-17 20:05 | 显示全部楼层
感谢各位的指点,初学单片机,就想试一下串口中断,见笑了
 楼主| guwu 发表于 2010-5-17 20:17 | 显示全部楼层
LED是不是再赋给IO口呢
gudeng614 发表于 2010-5-14 11:07

感谢2楼的关注,程序中的LED定义的是LED对应的IO口
 楼主| guwu 发表于 2010-5-17 20:21 | 显示全部楼层
各位,又试了一下,在中断服务程序中清了中断标记,且在主程序中也加入了while(1);结果还是一样,不管送进什么数,8个灯一起灭
一棵小草 发表于 2010-5-17 20:31 | 显示全部楼层
把完整的程序弄上来,不然还真不知道你错那里

谁知道你,i,LED啊是什么东西,搞不好还是你定义错误了

搞不好,还少些东西
 楼主| guwu 发表于 2010-5-17 21:49 | 显示全部楼层
#include <reg51.h>   

#define   LED         XBYTE[0xDFFF]
unsigned char i;

void interrupt0()interrupt 4 using 1
{
RI=0;
i=SBUF;
LED=i;
}


main()
{
EA=1;
ES=1;

SCON=0x70;
PCON=0;

TMOD=0x20;
TH1=220;
TL1=220;
TCON=0x40;
for(;;);
}
江陵龙少 发表于 2010-5-17 22:30 | 显示全部楼层
看了下程序,
有一个错误,没有
#include<absacc.h>
另外
SCON=0x70;改为0x50习惯一点,
#define   LED         XBYTE[0x0DFFF]加个0习惯一点
江陵龙少 发表于 2010-5-17 22:36 | 显示全部楼层
本帖最后由 江陵龙少 于 2010-5-17 22:39 编辑

还有一点void interrupt0()interrupt 4 using 1中用关键字interrupt给函数取名,不妥;
#include <reg51.h>改为#include <reg52.h>
一棵小草 发表于 2010-5-18 13:39 | 显示全部楼层
看-------------

就知道是一些小问题
 楼主| guwu 发表于 2010-5-18 15:31 | 显示全部楼层
看了下程序,
有一个错误,没有
#include
另外
SCON=0x70;改为0x50习惯一点,
#define   LED         XBYTE[0x0DFFF]加个0习惯一点
江陵龙少 发表于 2010-5-17 22:30

请问为什么要将70改为50?还有为什么要加个0在前面?
感谢指点?
jack_shine 发表于 2010-5-18 17:24 | 显示全部楼层
16# guwu
将70改为50是让串口工作在方式1,后面的问题是一般表示十六进制如果最前面是字母的话都要加0的
jack_shine 发表于 2010-5-18 17:28 | 显示全部楼层
16# guwu
不对,就是将sm2要置为0
hefeili 发表于 2010-5-19 08:15 | 显示全部楼层
拿个串口的例程对比下就一目了然了啊。
 楼主| guwu 发表于 2010-5-19 09:49 | 显示全部楼层
各位,以上建议都用了,板子还是那么固执,无论发送什么数上去,8个灯都灭,高手指点啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

308

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部