这程序有点问题,计时的

2019-03-24 19:05发布

#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;uchar a,num,t,shi,fen,M1,M2;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//void display(uchar,uchar);void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{ //delay(500);大约延时500ms. uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void T0_time() interrupt 1{ TH0=(65536-50000)/256;//重装初值 TL0=(65536-50000)%256;//重装初值 num++;  }void display(uchar miao1,uchar miao2) //显示子函数{ dula=1; P0=table[miao1]; //送段选数据,低、秒 dula=0; P0=0xff;   //消影 wela=1; P0=0xdf; wela=0; delay(1);  dula=1; P0=table[miao2]; //送段选数据,高、秒 dula=0; P0=0xff;   //消影 wela=1; P0=0xef; wela=0; delay(1);}void main(){ TMOD=0X01;//设置定时器0为方式1 TH0=(65536-50000)/256;//定时器0装初值,定时50ms TL0=(65536-50000)%256;//定时器0装初值,定时50ms EA=1; //开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0
/*开始为0*/  dula=1; P0=0x3f; dula=0; P0=0xff; wela=1; P0=0xcf; wela=0;
while(1) //扫描、显示数码管 { if(num==20) { num=0; t++; if(t==60) t=0; M2=t/10; M1=t%10; display(M1,M2); } }}

在6位数码管显示,用数码管的最后两位计时,计到59,问题是最后位的数码管很暗而且是一秒闪一下。而我独立显示最后一位数码管就不会这样 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。