找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2275|回复: 4
打印 上一主题 下一主题
收起左侧

51程序中不同模块干扰问题

[复制链接]
跳转到指定楼层
楼主
ID:107339 发表于 2016-4-5 20:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
任务:
12864显示来自Ds1302的时钟信号,用定时器0固定时间采集信号
定时器1产生9600波特率,接收串口信息
定时器2 定时采集AD信号,在数码管显示

问题:每步分开用都可以,放在一个程序后,数码管不能稳定,一直闪动

这是主程序
    while(1)
    {
        
        if(flag1)
        {
            flag1 = 0;
            DS1302_write(0x8e, 0x00);             //DS1302写保护关
            miao = (DS1302_read (0x81) );         //读秒
               fen = (DS1302_read(0x83));             //读分
            shi  = (DS1302_read(0x85));             //读时
               ri  = (DS1302_read(0x87));             //读日
            yue = (DS1302_read(0x89));             //读月
            week = (DS1302_read(0x8b));              //读周     

            write_time(4, miao);                     //在LCD显示秒     
                delay();

            write_time(2, fen);                     //在LCD显示分
                delay();

               write_time(0, shi);                     //在LCD显示时
                   delay();

            write_day(5, ri);                     //在LCD显示日
                delay();

            write_month(3, yue);                      //在LCD显示月
                delay();

            write_week(week);                    //在LCD显示周
                delay();   

        }  
        if(RI)
        {
            EA = 0;
            dat1 = SBUF;
             LCD_PLACE(4, 7);
             LCD_DATA(dat1+0x30);
             RI = 0;
             EA = 1;
        }
        if(flag2 == 1)
        {     
            flag2 = 0;
            EA = 0;
            DATA = read_add(0x42);         //读取AD芯片数据
            display2(DATA);                  //在数码管显示
             EA = 1;  
                    
        }
    }  
}

void timer0() interrupt 1  
{
     
     t1++;
     if(t1 == 5000)
     {    t1 = 0;
     flag1 = 1; }
}      
void timer2() interrupt 5     
{
    n++;
    TF2 = 0;
    if(n == 30)
    {
        n = 0;
        flag2 = 1;
    }
}  
  
void ser2() interrupt 4   
{
            
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:82476 发表于 2016-4-5 20:52 | 只看该作者
数码管不能稳定,一直闪动。。。可能是数码管动态扫描时间太长了。造成闪动
回复

使用道具 举报

板凳
ID:107339 发表于 2016-4-5 21:58 | 只看该作者
chenguangyou 发表于 2016-4-5 20:52
数码管不能稳定,一直闪动。。。可能是数码管动态扫描时间太长了。造成闪动

你的意思是间隔时间久?问题时间都用在读取DS1302和显示在12864上了,而且还是必须的
回复

使用道具 举报

地板
ID:79544 发表于 2016-4-6 14:54 | 只看该作者
设定一下中断优先级试试。你用的定时器中断多啊。
回复

使用道具 举报

5#
ID:112509 发表于 2016-4-6 15:20 | 只看该作者
可能是数码管动态扫描时间太长了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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