pic單片機(jī)計(jì)數(shù)
1 #include
2 __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS);
3 //PIC單片機(jī)都需要配置該位,HS是外部晶振模式
4 // 使能PROTECT保護(hù)程序存儲(chǔ)器
5 //BOREN使能掉電保護(hù)
6
7 //WDTDIS關(guān)閉看門狗
8 void display(int pulse_amount);
9 void main(void)
10 {
11 int pulse_amount //定義變量,存儲(chǔ)外部脈沖數(shù)
12 SCS=0; //時(shí)鐘源的選擇。
13 TMR0=0; //清零計(jì)數(shù)器
14 OPTION_REG=0x20; //定義計(jì)數(shù)模式,對(duì)單片機(jī)的TOCK1引腳的脈沖
15 //計(jì)數(shù),每來(lái)一個(gè)脈沖,TMR0就會(huì)加1,設(shè)置好之后計(jì)數(shù)器就開始工作了
16 while(1) //這個(gè)循環(huán)就是不斷讀取計(jì)數(shù)值
17 {
18 pulse_amount=TMR0;
19 display(pulse_amount); //這個(gè)程序是我假設(shè)的,就是用來(lái)顯示計(jì)數(shù)值
20 }
21 }
22 程序的局限性在于,因?yàn)槎〞r(shí)器0是8位的,也就是對(duì)外部引腳脈沖計(jì)數(shù)的最大值是256 當(dāng)計(jì)數(shù)值達(dá)到這個(gè)值后,計(jì)數(shù)器的值會(huì)自動(dòng)清零,這時(shí)候你可以設(shè)置一個(gè)中斷
23 程序來(lái)計(jì)數(shù)。我這里不多講了。外部脈沖頻率是由晶振決定的,定時(shí)器在計(jì)數(shù)模式下,計(jì)數(shù)初值和計(jì)數(shù)值跟那兩個(gè)沒(méi)有任何關(guān)系.