打印

关于单片机定时器的问题

[复制链接]
2060|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhengjirui|  楼主 | 2010-10-26 19:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
NE5532| | 2010-10-26 22:18 | 只看该作者
没啥需要特别注意的地方,不过你说说啥机型,定时参数多少呢。

使用特权

评论回复
板凳
zx4798| | 2010-10-27 00:17 | 只看该作者
会不会是你TR0,TR1,TH0,TH1等等弄错了

使用特权

评论回复
地板
calor| | 2010-10-27 08:37 | 只看该作者
会不会是用“=”的原因,多用”|=“啊,呵呵

使用特权

评论回复
5
老鱼探戈| | 2010-10-27 12:34 | 只看该作者
一般的MCU都不会有这种问题,除非是带大ROM的语音单片机。

还是检测一下你的程序吧,
如果中断只有一个入口地址,看看你的标志位判断对不对。

使用特权

评论回复
6
zcf816| | 2010-10-27 12:44 | 只看该作者
是不是把定时搞得太大了

使用特权

评论回复
7
ninibaba| | 2010-10-27 13:22 | 只看该作者
程序问题

使用特权

评论回复
8
zhengjirui|  楼主 | 2010-10-28 22:21 | 只看该作者
用的是STC89C54,用的晶振是12m ,  计数初值为50000 ,  工作方式选的是13位的 ,   想计时1s
不知道为什么定的时间不准   下面为我的程序

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,t0,a,b,c,d,e,f;
uint xh,fz,miao;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};

void display(uchar,uchar,uchar,uchar,uchar,uchar);
void delay(uchar);
void main()
{
        t0=0;
        fz=0;                         是 分钟
           TMOD=0x01;             //选择定时器         
    TH0=(65536-50000)/256;
        TL0=(65536-50000)%256; //定时赋初值        
        EA=1;
        ET0=1;
        TR0=1;                                         //让定时器1.2启动
        while(1)
                {
                        c=fz/10;
                        d=fz%10;
                        e=miao/10;
                        f=miao%10;
                        display(c,d,e,f);                                //特别重要,要是放在定时函数中显示的是左边的偏暗,右边的亮
                }                                   //特别重要,要是放在定时函数中显示的是左边的偏暗,右边的亮

}

void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t0++;
        if(t0==20)
                {   
                        t0=0;
                        miao++;
                        if(miao==60)
                                {
                                        fz++;
                                        if(fz==2)
                                                {
                                                        fz=0;
                                                        miao=0;
                                                }
                                        miao=0;
                                }
                }
/*       
    c=fz/10;
        d=fz%10;
        e=miao/10;
        f=miao%10;
        display(c,d,e,f);

}




void display(uchar aa,uchar bb,uchar cc,uchar ba)
{       
        dula=1;             //实现动态显示
                P0=table[aa];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfe;
                wela=0;
                delay(254);

               
               dula=1;
                P0=table[bb];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfd;
                wela=0;
                delay(254);

        dula=1;
                P0=table[cc];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfb;
                wela=0;
                delay(254);

        dula=1;
                P0=table[ba];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xf7;
                wela=0;
                delay(254);
}


void delay(uchar x)
{
        uchar y,z;
        for(y=x;y<255;y++)
                {
                for(z=0;z<110;z++);
                }
}

使用特权

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

本版积分规则

0

主题

6

帖子

1

粉丝