OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4768|回复: 2

我用89c52的板子做了一个下位机,需要打开通讯中断,我还需要一个定时器0中断,程序独立是可以用的。但是和在一起就不能用了....

[复制链接]

7

主题

14

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-3-13
在线时间
8 小时
发表于 2018-7-20 12:43:42 | 显示全部楼层 |阅读模式
1金钱
void init()  //初始化函数
{
     TMOD=0X01;                                 //初始化定时器
         TH0=(65536-10)/256;         //初值配置
         TL0=(65536-10)%256;
         EA=1;                                         //开总中断
         ET0=1;                                         //定时/计数器T0中断允许
         TR0=1;                                         
}
void time0(void) interrupt 1         //定时器中断函数
  {

    TH0=(65536-10)/256;
        TL0=(65536-10)%256;
        ++i;
        if(i>10)
          {
          i=0;
          };

        if(i<=zkb)
        {
        OE=0;
        }
        else OE=1;


  }

这个是我要用到的定时器中断

void UsartConfiguration()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //计数器初始值设置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;                                        //打开计数器
}
void Usart() interrupt 4
{
        

    if (RI)  //接收到字节
    {                                                                                                                                                   
                cmdIndex = SBUF;
                RI = 0;  //清零接收中断标志位
                SBUF = cmdIndex;//将接收到的数据放入到发送寄存器
                cmdArrived = 1;  
    }
    if (TI)      //字节发送完
    {                                                                                                         
        TI = 0;  //清零发送中断标志位
    }
                                         //清除发送完成标志位
}
这个是我用到的通讯中断

单独可以运行,为什么放在一个程序就不行了呢????求大神指点迷津

最佳答案

查看完整内容[请看2#楼]

定时器初始化时是 TMOD=0X01; //初始化定时器 串口初始化时是 TMOD=0X20; //设置计数器工作方式2 要么,直接,TMOD=0x21,要么,把程序对TMOD赋值改成 TMOD|=0X01; //初始化定时器 TMOD|=0X20; //设置计数器工作方式2
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6681
金钱
6681
注册时间
2017-4-12
在线时间
1254 小时
发表于 2018-7-20 12:43:43 | 显示全部楼层
定时器初始化时是
TMOD=0X01;                                 //初始化定时器

串口初始化时是
TMOD=0X20;                        //设置计数器工作方式2

要么,直接,TMOD=0x21,要么,把程序对TMOD赋值改成
TMOD|=0X01;                                 //初始化定时器

TMOD|=0X20;                        //设置计数器工作方式2
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-7-20 20:13:25 | 显示全部楼层
2楼正解,51的片子,所有功能寄存器赋值养成习惯都用或
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 18:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表