|
//功能:00~99的簡(jiǎn)易秒表設(shè)計(jì),兩個(gè)靜態(tài)數(shù)碼管,定時(shí)器采用 <查詢方式>
#include "reg51.h"
void delay1s() //函數(shù)功能:在T1工作方式1下的1s延時(shí)函數(shù),采用查詢方式實(shí)現(xiàn)
{
unsigned char i;
for(i=0;i<20;i++) //設(shè)置20次循環(huán)次數(shù)
{
TH1=(65536-50000)/256; //重新設(shè)置T1計(jì)數(shù)初值高8位,定時(shí)時(shí)間50ms
TL1=(65536-50000)%256;
//重新設(shè)置T1計(jì)數(shù)初值低8位
TR1=1; //啟動(dòng)T1
while(!TF1); //查詢計(jì)數(shù)是否溢出,即定時(shí)50ms時(shí)間到,TF1=1
TF1=0; //50ms定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零
}
}
//函數(shù)名:disp(unsigned char i)
//函數(shù)功能:將i的值顯示在兩個(gè)靜態(tài)連接的數(shù)碼管上
//形式參數(shù):i,取值范圍0~99
void disp(unsigned char i)
{
unsigned char led[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} ;
//定義0~9顯示碼,共陽(yáng)極數(shù)碼管
P1=led[i/10]; //顯示i高位
P2=led[i%10]; //顯示i低位
}
void main()
{
unsigned char miao=0; //秒計(jì)數(shù)器定義
TMOD=0x10; //設(shè)置T1為工作方式1
TH1=(65536-50000)/256; //設(shè)置T1計(jì)數(shù)初值高8位,定時(shí)時(shí)間50ms
TL1=(65536-50000)%256; //設(shè)置T1計(jì)數(shù)初值低8位
TR1=1; //啟動(dòng)定時(shí)器開始計(jì)數(shù)
while(1)
{
disp(miao); //顯示秒計(jì)數(shù)器值
delay1s(); //調(diào)用1s函數(shù)
miao++; //秒計(jì)數(shù)器加1
if(miao==100)miao=0; //秒計(jì)數(shù)計(jì)滿,則從0開始計(jì)數(shù)
}
}
|
|