打印

请教一个中断程序

[复制链接]
1288|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
谷穗|  楼主 | 2008-8-21 12:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大虾请教一下我这个用中断实现的秒表怎么不怎么行啊
会出现秒的个位一直很亮而秒的十位却一闪一闪的又暗
我已经试着把延时改得很短的时间都还是不行,无奈,请教个位大侠
#include <reg51.h>

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
unsigned char code dis[]={0x00,0x01};//位显//
unsigned char second;
unsigned char tcount;
void delay(void)
{int j;
 for(j=500;j>=0;j--)
   {}
}

void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;//定时器开始工作//
ET0=1;//允许定时器中断//
EA=1;//中断允许//
tcount=0;
second=0;
P2=dispcode[second/10];
P1=dis[0];
delay();
P2=dispcode[second%10];
while(1);
}

void t0(void) interrupt 1 using 0
{
 tcount++;
 if(tcount==20)
    {
     tcount=0;
     second++;
     if(second==60)
       {
         second=0;
       }
       P2=dispcode[second/10];
       P1=dis[0];
       delay();
       P2=dispcode[second%10];
   }
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;

相关帖子

沙发
chongxing| | 2008-8-22 04:54 | 只看该作者

0x00应该为0x02吧。

unsigned char code dis[]={0x00,0x01};//位显//

0x00应该为0x02吧。

你用的只有两位吗,
是共阳极吗。如果是,把dis中的一个位设成0,就可以让对应位为亮。
而如果是共阴极,把dis的一个位设成1,才可以让对应位为亮。

使用特权

评论回复
板凳
谷穗|  楼主 | 2008-8-22 08:54 | 只看该作者

回二楼

我那个数码管是用74ls138来分配位显的!所以用0x00,0x01来分配两个位就行了

使用特权

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

本版积分规则

6

主题

8

帖子

0

粉丝