4014|9

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

51基本程序 99秒马表 定时出现问题 很奇怪.... [复制链接]

#include

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//共阳
unsigned char tm;
unsigned char ts;
unsigned char bt;
void main(void)
{
        unsigned char i,j;
        P0=P2=table[0];
    bt=0;
        ts=0;
        tm=0;

        while(1)
        {
                if(P3_5==0)
                {
                        for(i=10;i>0;i--)
                        for(j=125;j>0;j--);
                        if(P3_5==0)
                        {
                                bt++;
                                if(bt==4)
                                {
                                        bt=0;
                                }
                                switch(bt)
                                {
                                        case 1:
                                        {
                                                TMOD=0x01;
                                                TH0=15536/256;
                                                TL0=15536%256;
                                                EA=1;
                                                ET0=1;
                                                TR0=1;
                                        }
                                        break;
                                        case 2:
                                        {
                                                TR0=0;
                                        }
                                        break;
                                        case 3:                                                                                                                                  
                                        {
                                                TR0=0;
                                                ts=0;
                                                P0=P2=table[0];
                                        }
                                        break;
                                        default:
                                        break;
                                }
                                while(P3_5==0);
                               
                        }
                }
        }
}
void t0(void) interrupt 1 using 0
{       
        TH0=15536/256;
        TL0=15536%256;
        tm++;
        if(tm==20)
        {
                ts++;
                if(ts==100)
                {
                        ts=0;
                }
                P0=table[ts/10];
                P2=table[ts%10];
        }
}

最新回复

楼上正解 #include unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//共阳 unsigned char tm; unsigned char ts; unsigned char bt; void main(void) { unsigned char i,j; P0=P2=table[0];     bt=0; ts=0; tm=0; while(1) {         if(P3_5==0)         {                 for(i=10;i>0;i--)                 for(j=125;j>0;j--);                 if(P3_5==0)                 {                         bt++;                         if(bt==4)                         {                                 bt=0;                         }                         switch(bt)                         {                                 case 1:                                 {                                         TMOD=0x01;                                         TH0=15536/256;                                         TL0=15536%256;                                         EA=1;                                         ET0=1;                                         TR0=1;                                 }                                 break;                                 case 2:                                 {                                         TR0=0;                                 }                                 break;                                 case 3:                                 {                                         TR0=0;                                         ts=0;                                         P0=P2=table[0];                                 }                                 break;                                 default:                                 break;                         }                         while(P3_5==0);                                         }         } } } void t0(void) interrupt 1 using 0 {         TH0=15536/256;         TL0=15536%256;         tm++;         if(tm==20)         {                 tm = 0;                 ts++;                 if(ts==100)                 {                         ts=0;                 }                 P0=table[ts/10];                 P2=table[ts%10];         } } 复制代码  详情 回复 发表于 2010-2-2 19:26
点赞 关注

回复
举报

58

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
楼主问题描述清楚点
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
程序的初始显示“00”,当第一次按下按钮时,实现 “0~99”秒计时  再次按下按钮时,计时停止  第三次按下按钮,清除计时  我的问题是计时的时候 不是秒计时 定时出现了问题....很不解
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 

  1. volatile unsigned char tm;
  2. volatile unsigned char ts;
复制代码

 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 
你的逻辑似乎有有问题,太长.....不想弄清楚它.....
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 
还是不对哦   麻烦高手忙帮改改程序  很简单的逻辑...不知道是哪个细节有问题了.....
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
麻烦用proteus仿真一下  很容易的  两个共阳数码管 分别接P0,P2  按钮一端接P3_5另一端连地
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
下班回去再给你整吧
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
tm++;
if(tm==20)
{
//此处应该增加代码把tm清0....你的程序中没有这操作
ts++;
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

10
 
楼上正解


  1. #include

  2. unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//共阳
  3. unsigned char tm;
  4. unsigned char ts;
  5. unsigned char bt;
  6. void main(void)
  7. {
  8. unsigned char i,j;
  9. P0=P2=table[0];
  10.     bt=0;
  11. ts=0;
  12. tm=0;

  13. while(1)
  14. {
  15.         if(P3_5==0)
  16.         {
  17.                 for(i=10;i>0;i--)
  18.                 for(j=125;j>0;j--);
  19.                 if(P3_5==0)
  20.                 {
  21.                         bt++;
  22.                         if(bt==4)
  23.                         {
  24.                                 bt=0;
  25.                         }
  26.                         switch(bt)
  27.                         {
  28.                                 case 1:
  29.                                 {
  30.                                         TMOD=0x01;
  31.                                         TH0=15536/256;
  32.                                         TL0=15536%256;
  33.                                         EA=1;
  34.                                         ET0=1;
  35.                                         TR0=1;
  36.                                 }
  37.                                 break;
  38.                                 case 2:
  39.                                 {
  40.                                         TR0=0;
  41.                                 }
  42.                                 break;
  43.                                 case 3:
  44.                                 {
  45.                                         TR0=0;
  46.                                         ts=0;
  47.                                         P0=P2=table[0];
  48.                                 }
  49.                                 break;
  50.                                 default:
  51.                                 break;
  52.                         }
  53.                         while(P3_5==0);
  54.                        
  55.                 }
  56.         }
  57. }
  58. }
  59. void t0(void) interrupt 1 using 0
  60. {
  61.         TH0=15536/256;
  62.         TL0=15536%256;
  63.         tm++;
  64.         if(tm==20)
  65.         {
  66.                 tm = 0;
  67.                 ts++;
  68.                 if(ts==100)
  69.                 {
  70.                         ts=0;
  71.                 }
  72.                 P0=table[ts/10];
  73.                 P2=table[ts%10];
  74.         }
  75. }
复制代码
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表