///利用動態(tài)掃描和定時器1在數(shù)碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398并保持顯示此數(shù)
//,與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數(shù)碼管上數(shù)減到停止時
//,實驗板上流水燈也停止然后全部開始閃爍,3秒后(用T0定時)流水燈全部關(guān)閉
//、數(shù)碼管上顯示出“HELLO”。到此保持住。
//以上的是題目
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};///數(shù)碼管顯示的數(shù)字
uchar code TA[]={0xfe,0xfd,0xfb,0xf7};///選擇第幾個數(shù)碼管亮
uchar code TAB1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};///流水燈
uchar code TAB2[]={0x76,0x79,0x3f,0x38};///顯示HELO
uchar i;
uint j,n,k,m,f;
int a,b,c,d,x;
void delay();
void xiajieduan();
void helo();
void main()
{
i=0;j=0;k=0;n=0;
TMOD=0x22;
TL0=0X47;//定時0.2毫秒
TH0=0x47;
TR0=1;
ET0=1;
TL1=0X47;//定時0.2毫秒
TH1=0x47;
TR1=1;
ET1=1;
EA=1;
a=2;b=3;c=4;d=5;
while(1)
{
if(d==5&&c==3&&b==9&&a==8)//當達到指定數(shù)字時
{
TR1=0;k=0;
xiajieduan();
}
P2=0XFF;
if(j==0)P0=TAB[a];
if(j==1)P0=TAB;
if(j==2)P0=TAB[c];
if(j==3)P0=TAB[d];
P2=TA[j];//數(shù)碼管顯示
j++;
if(j>=4)j=0;
if(k>=2500)//流水燈
{
k=0;f++;
if(f==8)f=0;
P1=TAB1[f];
}
}
}
void jishi0() interrupt 1
{
k++;
if(k==15000){P1=0XFF;helo();}
}
void jishi1() interrupt 3
{
n++;
if(n==1000){n=0;a--;}//計時器向下遞減的轉(zhuǎn)化
if(a==-1){b--;a=9;}
if(b==-1){c--;b=9;}
if(c==-1){d--;c=9;}
if(d==-1){a=9;b=9;c=9;d=9;}
}
void delay()
{ for(x=0;x<5000;x++)
{
P2=0XFF;
if(j==0)P0=TAB[a];
if(j==1)P0=TAB;
if(j==2)P0=TAB[c];
if(j==3)P0=TAB[d];
P2=TA[j];//數(shù)碼管顯示
j++;
if(j>=4)j=0;
}
}
void xiajieduan()
{
while(1)
{
P1=0X00;
delay();
P1=0xff;
delay();
}
}
void helo()
{
while(1)
{
P2=0XFF;
if(j==0)P0=TAB2[3];
if(j==1)P0=TAB2[2];
if(j==2)P0=TAB2[1];
if(j==3)P0=TAB2[0];
P2=TA[j];//數(shù)碼管顯示
j++;
if(j>=4)j=0;
}
}
///利用動態(tài)掃描和定時器1在數(shù)碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398并保持顯示此數(shù)
//,與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數(shù)碼管上數(shù)減到停止時
//,實驗板上流水燈也停止然后全部開始閃爍,3秒后(用T0定時)流水燈全部關(guān)閉
//、數(shù)碼管上顯示出“HELLO”。到此保持住。
晶振用的是11.0592M
不是啊,我用方式2的8位重裝計時,初值用軟件計算的,應該不會錯吧
不過非常感謝你的回復!
手工計算了一下,0x47是對的。但是有小數(shù),被舍去了。10進制的71.68,,取71(0x47)。不會因此不準吧?
你現(xiàn)在是怎么“不準”?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |