新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)C語(yǔ)言程序設(shè)計(jì):10s 的秒表

單片機(jī)C語(yǔ)言程序設(shè)計(jì):10s 的秒表

作者: 時(shí)間:2013-08-03 來(lái)源:網(wǎng)絡(luò) 收藏

/* 名稱(chēng):10s 的

說(shuō)明:首次按鍵計(jì)時(shí)開(kāi)始,再次按鍵暫停,第三次按鍵清零。


*/

#includereg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit K1=P3^7;

uchar

i,Second_Counts,Key_Flag_Idx;

bit Key_State;

uchar

DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延時(shí)

void DelayMS(uint ms)

{

uchar t;

while(ms--) for(t=0;t120;t++);

}

//處理按鍵事件

void Key_Event_Handle()

{

if(Key_State==0)

{

Key_Flag_Idx=(Key_Flag_Idx+1)%3;

switch(Key_Flag_Idx)

{

case 1:EA=1;ET0=1;TR0=1;break;

case 2:EA=0;ET0=0;TR0=0;break;

case 0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0;

}

}

}

//主程序

void main()

{


Second_Counts=0;

Key_Flag_Idx=0; //按鍵次數(shù)(取值 0,1,2,3)

Key_State=1; //按鍵狀態(tài)

TMOD=0x01; //定時(shí)器 0 方式 1


TH0=(65536-50000)/256; //定時(shí)器 0:15ms

TL0=(65536-50000)%256;

while(1)

{

if(Key_State!=K1)

{

DelayMS(10);

Key_State=K1;

Key_Event_Handle();

}

}

}

/T0 中斷函數(shù)

void DSY_Refresh() interrupt 1

{

TH0=(65536-50000)/256; //恢復(fù)定時(shí)器 0 初值

TL0=(65536-50000)%256;

if(++i==2)


{

i=0;

Second_Counts++; //50ms*2=0.1s 轉(zhuǎn)換狀態(tài)

P0=DSY_CODE[Second_Counts/10];

P2=DSY_CODE[Second_Counts%10];

if(Second_Counts==100) Second_Counts=0; //滿(mǎn) 100(10s)后顯示 00

}

}

單片機(jī)C語(yǔ)言程序設(shè)計(jì):10s 的秒表

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉