當前位置:編程學習大全網 - 編程語言 - 單片機怎麽設計壹個0-9的壹位數秒表,用定時器實現 c語言程序及其註釋

單片機怎麽設計壹個0-9的壹位數秒表,用定時器實現 c語言程序及其註釋

#include<reg52.h> // 包含51單片機寄存器定義的頭文件

unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//數碼管顯示0~9的段碼表

unsigned char int_time; //記錄中斷次數

unsigned char second; //儲存秒

/***********************************************************************

函數功能:快速動態掃描延時,延時約0.6毫秒

************************************************************************/

void delay(void)

{

unsigned char i;

for(i=0;i<200;i++)

;

}

/***********************************************************************

函數功能:顯示秒

入口參數:k

出口參數:無

************************************************************************/

void DisplaySecond(unsigned char k)

{

P2=0xbf; //P2.6引腳輸出低電平, DS6點亮

P0=Tab[k/10]; //顯示十位

delay();

delay();

delay();

delay();

delay();

delay();

delay();

delay();

P2=0x7f; //P2.7引腳輸出低電平, DS7點亮

P0=Tab[k%10]; //顯示個位

delay();

delay();

delay();

delay();

delay();

delay();

delay();

delay();

P2=0xff; //關閉所有數碼管

P0=0xff; //顯示個位

delay();

delay();

delay();

delay();

delay();

delay();

delay();

delay();

}

void main(void) //主函數

{

TMOD=0x01; //使用定時器T0

TH0=(65536-46083)/256; //將定時器計時時間設定為46083×1.085微秒

//=50000微秒=50毫秒

TL0=(65536-46083)%256;

EA=1; //開啟總中斷

ET0=1; //定時器T0中斷允許

TR0=1; //啟動定時器T0開始運行

int_time=0; //中斷次數初始化

second=0; //秒初始化

while(1)

{

DisplaySecond(second);//調用秒的顯示子程序

}

}

//********************************************************

//函數功能:定時器T0的中斷服務程序

//*******************************************************

void interserve(void ) interrupt 1 using 1

{

TR0=0; //關閉定時器T0

int_time ++; //每來壹次中斷,中斷次數int_time自加1

if(int_time==20) //夠20次中斷,即1秒鐘進行壹次檢測結果采樣

{

int_time=0; //中斷次數清0

second++; //秒加1

if(second==60)

second =0; //秒等於60就返回0

}

TH0=(65536-46083)/256; //重新給計數器T0賦初值

TL0=(65536-46083)%256;

TR0=1; //啟動定時器T0

}

  • 上一篇:美觀和實用是可以兼顧的!試駕體驗奧迪A5 Sportback
  • 下一篇:大型網絡遊戲是怎麽做出來的
  • copyright 2024編程學習大全網