打印

51串口调试问题,搞死了。。。

[复制链接]
2836|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hyh19890917|  楼主 | 2013-11-28 17:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hyh19890917 于 2013-11-29 13:01 编辑

void Timer2_config(void)
{
        RCLK =1;
        TCLK =1;
        SM1 = 1;
        SM0 = 0;
        REN=1;                     //允许接收
        TH2 = 0xff;
        TL2        = 0xd9;//9600
        TR2        =1;
        ES =1;        //开串口中断
        EA   = 1 ; //开启全局中断
}看看我的配置对不对啊?调试助手发送,就是没有中断产生。。
Timer2_IT(void) intterupt 4
{
   P1=~P1;//目的是每次进中断LED灯会翻转  
   if(RI)
   {
      RI = 0;
      dat[0]=SBUF;
   }
}

相关帖子

沙发
ayb_ice| | 2013-11-28 17:23 | 只看该作者
将接收端快速对地短路一下

使用特权

评论回复
板凳
51armfpga| | 2013-11-28 17:43 | 只看该作者
中断子程序写好了?

使用特权

评论回复
地板
NE5532| | 2013-11-28 20:05 | 只看该作者
咋判断接收程序有没有进入呢?串口接收中断程序拿出来看看呢。

使用特权

评论回复
5
hxjlm| | 2013-11-28 20:13 | 只看该作者
#include<reg52.h>
unsigned char flag,a;
void main()
{
        TMOD=0x20;//设置定时器/计数器1为工作方式2,8位自动重装定时模式
        TH1=0xfd;//9600初值
        TL1=0xfd;//9600重装值
        TR1=1;//启动定时器
        REN=1;//串口通讯接收开
        SM0=0;//串口通讯设置方式1
        SM1=1;
        EA=1;//总中断开
        ES=1;//串口中断开
        while(1)
                {
                        if(flag==1)//如果串行口中断响应即flag=1,执行下面的发送程序
                                {
                                        ES=0;//关闭串行口中断
                                        flag=0;//清串行口中断程序响应标记
                                        //a='A';//双引号A显示向上箭头,单引号A时显示A
                                        SBUF=a;//现在是中断方式,a内十六进制时两位1个空格,字符时无要求输入什么显示什么       
                                        while(!TI);//等待发送完标志位=1(如果TI非0,向下运行,否则等待)       
                                        TI=0;//发送完标志清零
                                        ES=1;//开串行口中断
                                        P1=a;
                                }
                }
}

void ser() interrupt 4//串行口中断号,如果接收标志
{
        RI=0;//接收标志位清零
        a=SBUF;
        flag=1;
}

使用特权

评论回复
6
hyh19890917|  楼主 | 2013-11-29 08:53 | 只看该作者
51armfpga 发表于 2013-11-28 17:43
中断子程序写好了?

Timer2_IT(void) intterupt 4
{
P1=~P1;//目的是每次进中断LED灯会翻转  
if(RI)
   {
      RI = 0;
      dat[0]=SBUF;
   }
}

使用特权

评论回复
7
NE5532| | 2013-11-29 08:54 | 只看该作者
楼主,你这样写,不是要Timer2中断和串口中断同时发生的时候,才能收数据吗?这两个中断有虾米关系要写到一起????

使用特权

评论回复
8
hyh19890917|  楼主 | 2013-11-29 08:56 | 只看该作者
hxjlm 发表于 2013-11-28 20:13
#include
unsigned char flag,a;
void main()

谢谢,你的程序我会测试一下的,我不知道为什么,开发板的例程都不能正常进中断,我现在是在调试一下timer2定时器,,,

使用特权

评论回复
9
hyh19890917|  楼主 | 2013-11-29 09:11 | 只看该作者
51armfpga 发表于 2013-11-28 17:43
中断子程序写好了?

Timer2_IT(void) intterupt 4
{
P1=~P1;//目的是每次进中断LED灯会翻转  
if(RI)
   {
      RI = 0;
      dat[0]=SBUF;
   }
}

使用特权

评论回复
10
hyh19890917|  楼主 | 2013-11-29 09:12 | 只看该作者
ayb_ice 发表于 2013-11-28 17:23
将接收端快速对地短路一下

大神可以告诉这是哪一方面的因素么?想知其所以然。。

使用特权

评论回复
11
ayb_ice| | 2013-11-29 09:18 | 只看该作者
你到底是用T1产生波特率,还是T2产生,不要乱了

使用特权

评论回复
12
hyh19890917|  楼主 | 2013-11-29 11:32 | 只看该作者
ayb_ice 发表于 2013-11-29 09:18
你到底是用T1产生波特率,还是T2产生,不要乱了

配置里面应该没有用到T1 的寄存器吧。。。

使用特权

评论回复
13
hyh19890917|  楼主 | 2013-11-29 11:34 | 只看该作者
ayb_ice 发表于 2013-11-28 17:23
将接收端快速对地短路一下

前辈,可以告诉我具体原因么,我想知其所以然

使用特权

评论回复
14
ayb_ice| | 2013-11-29 11:43 | 只看该作者
T2已经做了波特率发生器,就不要用中断了

另外串口中断一定要判断中断源,然后做相应处理

还有你这个初值肯定不对,不管频率是11.0592还是12M
TH2 = 0xff;
TL2        = 0xd9;//9600

使用特权

评论回复
15
ayb_ice| | 2013-11-29 11:45 | 只看该作者
hyh19890917 发表于 2013-11-29 11:34
前辈,可以告诉我具体原因么,我想知其所以然

产生一个开始信号,如果软件没有问题,一定会产生中断的

使用特权

评论回复
16
ballack_linux| | 2013-11-29 11:49 | 只看该作者
定时器1用来产生波特率,但是你没配置, 而且你配置定时器2的话,和定时器1和0是不一样的 ,你究竟是用啥做串口波特率发生器

使用特权

评论回复
17
hyh19890917|  楼主 | 2013-11-29 12:56 | 只看该作者
ballack_linux 发表于 2013-11-29 11:49
定时器1用来产生波特率,但是你没配置, 而且你配置定时器2的话,和定时器1和0是不一样的 ,你究竟是用啥做 ...

用的是定时器2啊。。。

使用特权

评论回复
18
hyh19890917|  楼主 | 2013-11-29 12:56 | 只看该作者
ayb_ice 发表于 2013-11-29 11:45
产生一个开始信号,如果软件没有问题,一定会产生中断的

串口调试助手,发送时候不会产生开始信号么得电平么

使用特权

评论回复
19
hyh19890917|  楼主 | 2013-11-29 12:58 | 只看该作者
ayb_ice 发表于 2013-11-29 11:43
T2已经做了波特率发生器,就不要用中断了

另外串口中断一定要判断中断源,然后做相应处理

我开的是串口中断啊,前辈可以赐教51单片机定时器2作为波特率发生器的具体配置么?

使用特权

评论回复
20
wsadadws| | 2013-11-29 14:05 | 只看该作者
看手册,根据手册的数据要求,一个一个写

使用特权

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

本版积分规则

20

主题

162

帖子

0

粉丝