鱼C论坛

 找回密码
 立即注册
查看: 1548|回复: 1

[已解决]为什么明明设置的值是10s结果是1s

[复制链接]
发表于 2020-3-24 17:00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<reg52.h>

#define uchar  unsigned  char
#define uint   unsigned  int
void delay(uint z);

void   display (uchar x);
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;                                                        
char code table[]={0x3f,0x06,0x5b,
                                                                        0x4f,0x66,0x6d,0x7d,
                                                                        0x07,0x7f,0x6f,0x3f,
                                                      0x7c,        0x39,0x5e,0x79,0x71}; /*ìí&#188;óêy&#194;&#235;1ü*/
uchar code  tablewela[]={0xfe,0xfd,0xfb,0xf7,
                                                                                        0xef,0xdf};
uchar temp,x,ge,shi,bai;
uchar tt=0;
void main()
{
        temp=0;
        TMOD=0X01;
        EA=1;
        TH0=(65536-50000)/256;/*50MS&#188;&#198;ê±*/
        TL0=(65536-50000)%256;
        ET0=1;/*ê1ó&#195;&#182;¨ê±&#198;÷0*/
        TR0=1;/*&#191;a&#198;&#244;&#182;¨ê±&#198;÷0*/
       
                while(1)
                {
                        if (tt==200)
                        {
                                tt=0;
                                temp++;       
                        }
                        if(temp>255)
                                temp=0;
                        display (temp);
               
                       
                }               
}

void delay(uint z)
        {
                uint x,y;
                for(x=0;x<11;x++)
                        {
                        for(y=z;y>0;y--);
                        }       
       
                }
       
       
void   display (uchar x)
                {
               
                                bai=x/100;
                                shi=x%100/10;
                                 ge=x%10;
                          dula=1;
                                P0=table[bai];
                                dula=0;
                                wela=1;
                                P0=0xfe;
                                wela=0;
                                delay(5);
                                        dula=1;
                                P0=table[shi];
                                dula=0;
                                wela=1;
                                P0=0xfd;
                                wela=0;
                        delay(5);
                          dula=1;
                         P0=table[ge];
                                dula=0;
                                wela=1;
                                P0=0xfb;
                                wela=0;
                        delay(5);
                }
               
               
                void timer0() interrupt 1
        {
        TH0=(65536-5000)/256;/*50MS&#188;&#198;ê±*/
        TL0=(65536-5000)%256;
                tt++;
    }
       
       
       
最佳答案
2020-4-16 14:26:09
本帖最后由 耻思lhj 于 2020-4-16 14:28 编辑
  1.    void timer0() interrupt 1
  2.         {
  3.         TH0=(65536-5000)/256;/*50MS&#188;&#198;ê±*/
  4.         TL0=(65536-5000)%256;
  5.                 tt++;
  6.     }
复制代码

因为这里应该还是-50000,按12M晶振计算就是50ms触发一次,这样循环200次就是10s
你-5000,除了第一次循环是50ms,其他每次都是5ms,自然就只有1s+45ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-16 14:26:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 耻思lhj 于 2020-4-16 14:28 编辑
  1.    void timer0() interrupt 1
  2.         {
  3.         TH0=(65536-5000)/256;/*50MS&#188;&#198;ê±*/
  4.         TL0=(65536-5000)%256;
  5.                 tt++;
  6.     }
复制代码

因为这里应该还是-50000,按12M晶振计算就是50ms触发一次,这样循环200次就是10s
你-5000,除了第一次循环是50ms,其他每次都是5ms,自然就只有1s+45ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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