當前位置:編程學習大全網 - 編程語言 - 中斷編程秒表

中斷編程秒表

/* -

數碼管顯示,按鍵控制秒表

中斷鍵控制,數碼管顯示,中斷0控制定時和停止,中斷1復位。

- */

# include & ltreg52.h & gt//包含頭文件,壹般不需要更改。頭文件包含特殊功能寄存器的定義。

無符號整數秒;//定義全局變量

位GoFlag//定義停止和計時標誌

#define DataPort P0 //如果在數據端口定義程序中遇到壹個數據端口,它將被P0替換。

sbit latch1=p2^2;//定義鎖存使能端口段鎖存。

sbit latch2=p2^3;//位鎖存

無符號char碼dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//顯示段代碼值0~9。

無符號char codedofly _馬薇[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };//對應的數碼管分別亮起,即位碼。

無符號字符TempData[8];//存儲顯示值的全局變量。

void DelayUs2x(無符號char t);//函數聲明

void DelayMs(無符號字符t);

void顯示(無符號字符FirstBit,無符號字符Num);

void Init _ timer 0(void);

void CLR(void);

/* -

主要功能

- */

無效總管(無效)

{

無符號字符數= 0;

EX0 = 1;//外部中斷0開啟

IT0 = 1;//IT1=0表示邊沿觸發。

ex 1 = 1;//外部中斷1開啟

it 1 = 1;//IT1=1表示邊沿觸發。

init _ timer 0();

While (1) //主循環

{

TempData[0]= do fly _ DuanMa[秒/10];//分解顯示信息。如果要顯示68,則68/10=6 68%10=8。

TempData[1]= do fly _ DuanMa[秒% 10];

//在主循環中加入其他需要壹直工作的程序。

}

}

/* -

顯示功能,用於動態掃描數碼管。

輸入參數FirstBit表示要顯示的第壹位。例如,賦值2表示顯示從第三個數碼管開始。

如果輸入0,則表示從第壹次顯示開始。

Num表示要顯示的位數。如果需要顯示99個兩位數的值,請為該值輸入2。

- */

void顯示(無符號字符FirstBit,無符號字符Num)

{

靜態無符號字符I = 0;

數據端口= 0;//清除數據以防止交替重影。

latch 1 = 1;//段鎖存

latch 1 = 0;

DataPort = dofly _馬薇[I+first bit];//訪問代碼

latch 2 = 1;//位鎖存

latch 2 = 0;

data port = TempData[I];//獲取顯示數據和段代碼。

latch 1 = 1;//段鎖存

latch 1 = 0;

i++;

if(i==Num)

I = 0;

}

/* -

定時器初始化子程序

- */

void Init_Timer0(void)

{

TMOD | = 0x 01;//使用1和16位定時器,使用多個定時器時使用“|”符號不受影響。

//TH0 = 0x 00;//給定初始值

//TL0 = 0x 00;

EA = 1;//總中斷打開

ET0 = 1;//定時器中斷打開

TR0 = 1;//定時器開關打開

}

/* -

定時器中斷子程序

- */

無效定時器0_isr(無效)中斷1

{

靜態無符號字符數;

TH0 =(65536-20000)/256;//重新分配20毫秒的值

TL0 =(65536-20000)% 256;

顯示(0,8);

if(GoFlag)

{

num++;

如果(數量==5)

第二個++;//秒加1

if(秒==10)

秒= 0;

}

}

/* -

外部中斷0程序

- */

void ISR_INT0(void)中斷0

{

GoFlag=!GoFlag//使用外部中斷來打開和關閉開始和停止計時的計時標誌。

}

/* -

外部中斷1程序

- */

void ISR_INT1(void)中斷2

{

If(GoFlag==0)//只有停止時才能清零。

CLR();

}/* -

數字結算

- */

void CLR(無效)

{

秒= 0;//通過外部中斷清除

ms second = 0;

}

  • 上一篇:機電傳動與控制的電子工業出版社圖書
  • 下一篇:雷蛇宏鍵怎麽設置
  • copyright 2024編程學習大全網