大家晚上好 谁能帮我看看这个程序?我想是想的功能是一秒灯亮一下?

 #include<reg51.h> //头文件  定义单片机内部寄存器
#define uchar unsigned char //宏定义   缩写成uchar
#define uint unsigned int//宏定义   缩写成uint
//数码管位端口定义
sbit w1=P2^2;
sbit w2=P2^3;
sbit w3=P2^4;
sbit w4=P2^5;
sbit w5=P2^6;
sbit w6=P2^7;
sbit LED=P1^0;
////////////////////////////
sbit key1=P3^5;
sbit key2=P3^6;
sbit key3=P3^7;
/////共阴数码管段信号编码////////
uchar code table[10]=//0---9
{0xFC,0x60,0xDA,0xF2,0x66,
0xB6,0xBE,0xE0,0xFE,0xF6};//
uchar mm,miao,fen;//计时  时分秒变量
uchar d1,d2,d3,d4,d5,d6;//显示拆分数据
void delay(uint ms)//1ms  延时函数   数据保持用的 括号里面是几大概就延时多少ms
{
 uchar x;
 for(ms;ms>0;ms--)
  for(x=110;x>0;x--);
}
void display()//显示函数
{
 d1=fen/10;//
 d2=fen%10;//分钟
 d3=miao/10;//
 d4=miao%10;//秒
 d5=mm/10;//
 d6=mm%10;//百分秒

 w1=0;P0=table[d1];delay(10);//第1位显示数据
 P0=0x00;w1=1;//关闭显示消除动态扫描阴影
 w2=0;P0=table[d2]|0x01;delay(10);//第2位显示数据
 P0=0x00;w2=1;//关闭显示消除动态扫描阴影
 w3=0;P0=table[d3];delay(10);//第3位显示数据
 P0=0x00;w3=1;//关闭显示消除动态扫描阴影
 w4=0;P0=table[d4]|0x01;delay(10);//第4位显示数据
 P0=0x00;w4=1;//关闭显示消除动态扫描阴影
 w5=0;P0=table[d5];delay(10);//第5位显示数据
 P0=0x00;w5=1;//关闭显示消除动态扫描阴影
 w6=0;P0=table[d6];delay(10);//第6位显示数据
 P0=0x00;w6=1;//关闭显示消除动态扫描阴影
}
void main()
{
 TMOD=0x01;//定时器0  16位计时模式
 TH0=(65536-50000)/256; //50ms定时
 TL0=(65536-50000)%256; //50ms定时
 EA=1;//开启总中断
 ET0=1;//开启定时器中断
 TR0=0;//关闭定时器
 while(1)
 {   
  if(key1==0)TR0=1; //开始
  if(key2==0)TR0=0;//停止
  if(key3==0){fen=miao=mm=0;}//数据清零
  display();//显示函数
 }
}
void T0_time() interrupt 1
{
 TH0=(65536-10000)/256; //10ms定时
 TL0=(65536-10000)%256; //10ms定时
 mm++;//加一次10ms定时  0.01S
        

 if(mm==100)//1S
 {   
  mm=0;
  miao++;
  LED=0;
   delay(1000);
   LED=1;
   delay(1000);
  if(miao==60)
  {
   miao=0;
   fen++;
   }
 }
 
}

慕桂英8334255
浏览 977回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP