定时器1定时1秒,可是好像不对

2019-07-16 01:13发布

本帖最后由 cxa281 于 2013-4-22 18:25 编辑

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit d1=P1^0;
sbit wela=P2^7;
uchar num,tt;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x71};
//void delay(uint  );
void main()
{
   tt=0;
   TMOD=0X01;
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   EA=1;// 开总中断
   ET1=1;//开中断定时器1中断
   TR1=1;//启动零定时器1
   wela=1;
   P0=0xfe;//第一个数码管亮
   wela=0;
   while(1)
        {  if(tt==20)
                        {tt=0;
             num++;
             dula=1;
             d1=~d1;
             if(num>15)
              num=0;
             P0=table[num];
             dula=0;

                        }
        }
}

void T1_time() interrupt 3
{
    TH1=(65536-50000)/256;
    TL1=(65536-50000)%256;
    tt++;

}

大家帮忙看一下,那里错了,中断时间不对啊。我定时1s,可是实际效果很快,0.几秒。如果TMOD=0X01;改为TMOD=0X11;时间时间变得正常。不能理解为什么这么改,,我用的是tx—c的板。高手望指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
yfz奋斗
1楼-- · 2019-07-16 20:21
定时器没有搞懂!有问题,好好看看
电子赟
2楼-- · 2019-07-16 21:52
{:1:}
灵修flying
3楼-- · 2019-07-17 01:29
大哥,TMOD=0x01是工作方式为定时器0的方式1啊,你装初值怎么会在TH1和TL1呢,所以你开0x11会变正常,因为0x11是让定时器1和定时器0都工作在方式1了
灵修flying
4楼-- · 2019-07-17 04:08
还有,你这么编数码管可能有问题
cxa281
5楼-- · 2019-07-17 04:38
灵修flying 发表于 2013-4-22 19:41
还有,你这么编数码管可能有问题

数码管有什么问题,求指出
cxa281
6楼-- · 2019-07-17 10:19
 精彩回答 2  元偷偷看……

一周热门 更多>