#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit Wei1=P2^2;//这里的引脚是控制74ch138的
sbit Wei2=P2^3;
sbit Wei3=P2^4;
u8 code Duan[10]={0x3f, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//控制数码管的段选
u8 cut=0;
u8 sec1=0;
u8 sec2=0;
u8 min=0;
void main()
{
u8 i=0;
TMOD=0x01;
TH0=0xB8;
TL0=0x00;
TR0=1;
while(1)
{
if(TF0==1)
{
TF0=0
TH0=0xB8;
TL0=0x00;
cut++;
if(cut>=50)
{
cut=0;//我在这里设置了一个断点,运行到这显示了t1=0.46149300sec,可根据设想应该是经过1秒后才会运行到这里啊
sec1++;
if(sec1>=9)
{
sec1=0;
sec2++;
if(sec2>=6)
{
sec2=0;
min++;//暂时忽略min涨到10及以上的情况
}
}
}
} //定时器的代码
switch(i)
{
case(0): Wei1=0 ;Wei2=0 ;Wei3=0;P0=Duan[0];i++;break;
case(1): Wei1=1 ;Wei2=0 ;Wei3=0;P0=Duan[0];i++;break;
case(2): Wei1=0 ;Wei2=1 ;Wei3=0;P0=Duan[0];i++;break;
case(3): Wei1=1 ;Wei2=1 ;Wei3=0;P0=Duan[0];i++;break;
case(4): Wei1=0 ;Wei2=0 ;Wei3=1;P0=Duan[0];i++;break;
case(5): Wei1=1 ;Wei2=0 ;Wei3=1;P0=Duan[min];i++;break;
case(6): Wei1=0 ;Wei2=1 ;Wei3=1;P0=Duan[sec2];i++;break;
case(7): Wei1=1 ;Wei2=1 ;Wei3=1;P0=Duan[sec1];i=0;break;
}
//数码管动态扫描
}
}
能指教一下吗?
|