打印

问大家关于一个串口的问题

[复制链接]
3803|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小营七郎|  楼主 | 2013-3-12 13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar flag,i,a;
sbit led=P1^7;
uchar code table[]="I get";
void init()
{
   TMOD=0x20;
   TH1=0xfd;
   TL1=0xfd;
   TR1=1;
   REN=1;
   SM0=0;
   SM1=0;
   EA=1;
   ES=1;
}
void main()
{
   init();
   while(1)
    {
       if(flag==1)
        {
      ES=0;
           for(i=0;i<6;i++)
              {
    SBUF=table[i];
                while(!TI);
                TI=0;
     }
              SBUF=a;
              while(!TI);
               TI=0;
               ES=1;
               flag=0;
  }
    }
}
void ser() interrupt 4
{
    RI=0;
    a=SBUF;
    flag=1;
    led=0;
}
才开始,程序下到单片机里,这时候会进入中断,那复位之后会不会进入中断了,那个时候单片机应该没和电脑通信呀。led灯应该不会亮的呀,为什么我把通信线拔了也会亮。

相关帖子

沙发
xuyaqi| | 2013-3-12 13:58 | 只看该作者
你没有叫led灯灭的语句,只要亮过就不会灭。

使用特权

评论回复
板凳
yueyinji1989| | 2013-3-12 16:01 | 只看该作者
[code]void ser() interrupt 4
{
    RI=0;
    a=SBUF;
    flag=1;
    led=0;}

然后你就一直没关LED了。。

使用特权

评论回复
地板
南宫云明| | 2013-3-12 16:03 | 只看该作者
上电和断电的时候都是有可能进入中断的。。。。

使用特权

评论回复
5
小营七郎|  楼主 | 2013-3-12 16:08 | 只看该作者
yueyinji1989 发表于 2013-3-12 16:01
[code]void ser() interrupt 4
{
    RI=0;

但是不是说,只要一复位,程序就从头开始吗?复位的时候程序从头开始的话,下载线拔了,然后再复位,这个时候没收到也没发送呀,不该进去的呀。其实这个问题困扰好久了,

使用特权

评论回复
6
小营七郎|  楼主 | 2013-3-12 16:16 | 只看该作者
南宫云明 发表于 2013-3-12 16:03
上电和断电的时候都是有可能进入中断的。。。。

为什么了,又没有发送数据,能不能说更具体点。还有就是那个开始下载程序的时候是通过SBUF一位一位的把hex下进去的,还是其他的方法下进去的呀。

使用特权

评论回复
7
yueyinji1989| | 2013-3-12 16:19 | 只看该作者
本帖最后由 yueyinji1989 于 2013-3-12 19:16 编辑
小营七郎 发表于 2013-3-12 16:08
但是不是说,只要一复位,程序就从头开始吗?复位的时候程序从头开始的话,下载线拔了,然后再复位,这个 ...


记错了,看8楼的吧!

使用特权

评论回复
8
南宫云明| | 2013-3-12 16:26 | 只看该作者
小营七郎 发表于 2013-3-12 16:16
为什么了,又没有发送数据,能不能说更具体点。还有就是那个开始下载程序的时候是通过SBUF一位一位的把he ...

刚上电的时候电平波动一下是很正常的,就有可能触发了串口中断,断电的时候也一样。

还有下载程序一般是ISP下载,具体怎么下载要看单片机了,有些单片机是EEPROM型的,这种单片机可以一个字节一个字节写程序,有些是FLASH型的,它就要按扇区来写程序了,扇区有大有小,小的有512个字节,大的有几K。。。。

使用特权

评论回复
9
小营七郎|  楼主 | 2013-3-12 16:39 | 只看该作者
南宫云明 发表于 2013-3-12 16:26
刚上电的时候电平波动一下是很正常的,就有可能触发了串口中断,断电的时候也一样。

还有下载程序一般是 ...

那是不是不发送不接受数据,开关电平的波动也会触发一些中断,对吧?

使用特权

评论回复
10
南宫云明| | 2013-3-12 16:43 | 只看该作者
小营七郎 发表于 2013-3-12 16:39
那是不是不发送不接受数据,开关电平的波动也会触发一些中断,对吧?

嗯,都是有这个可能的。。。比如外部中断也是有可能的。。。

使用特权

评论回复
11
yueyinji1989| | 2013-3-13 12:20 | 只看该作者
小营七郎 发表于 2013-3-12 16:08
但是不是说,只要一复位,程序就从头开始吗?复位的时候程序从头开始的话,下载线拔了,然后再复位,这个 ...

系统复位后,SCON,复位,串口方式为0,当REN=1时,直接从RXD引脚接收数据,不管系统有无发送数据。。产生中断

使用特权

评论回复
12
小营七郎|  楼主 | 2013-3-13 20:42 | 只看该作者
yueyinji1989 发表于 2013-3-13 12:20
系统复位后,SCON,复位,串口方式为0,当REN=1时,直接从RXD引脚接收数据,不管系统有无发送数据。。产生 ...

就这一句话很好,懂了,结贴啦,谢谢你。:victory:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

1813

帖子

3

粉丝