#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;
}
//數碼管動態掃描
}
}
能指教一下嗎?
|