可預(yù)置的8位計數(shù)器程序的主要部分分析_第1頁
可預(yù)置的8位計數(shù)器程序的主要部分分析_第2頁
可預(yù)置的8位計數(shù)器程序的主要部分分析_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、uchar data cnt8; uchar data pre_cnt8;sbit drv=P3A4;bit set_flag;bit out_flag;bit keydown_flag;*可預(yù)置的 8 位計數(shù)器程序的主要部分分析#include <A T89X51.H>/器件配置文件#define uchar unsigned char/變量類型的宏定義#define uint unsigned intuchar code SEG710=0x03,0x9f,0x25,0x0d,0x99, /09 的數(shù)碼管段碼0x49,0x41,0x1f,0x01,0x09;在data區(qū)定義8位長

2、度的數(shù)組,用來存放計數(shù)值/在 data 區(qū)定義 8 位長度的數(shù)組,用來存放預(yù)置值 /定義輸出驅(qū)動端/定義工作標(biāo)志/定義輸出標(biāo)志/鍵按下標(biāo)志void scan_key(void) uchar i,m=0x01; P3_6=0;P3_7=1;for(i=0;i<8;i+)/掃描 S1S8 鍵子程序開始/定義兩個字符型局部變量,并賦值0x01 給 m/禁止發(fā)送給顯示器,消隱有效/循環(huán) 8 次SBUF=255-m;while(!TI);TI=0;/依次發(fā)送數(shù)據(jù)使 IC2 的輸出從右至左的列線為 0if(!P3_5)pre_cnti+;/若檢測到 P3.5 為 0,說明某列線送出0 時與連接/該列

3、線的按鍵被按下,數(shù)組中對應(yīng)的存放單元加1m<<=1;/m 的取值使從右向左的下一條列線為0/掃描 S1S8 鍵子程序結(jié)束*/for(i=0;i<8;i+)if(pre_cnti>9)pre_cnti=0;/循環(huán) 8 次/對數(shù)組中的 8 個單元進(jìn)行調(diào)整,其范圍為 09void dis_cnter(void)/顯示計數(shù)器值子程序開始uchar i;/定義字符型局部變量 iP3_7=1;P3_6=1;/消隱有效,允許顯示for(i=0;i<8;i+)/循環(huán) 8 次SBUF=SEG7cnti;while(!TI);TI=0;/根據(jù) 8 個單元的計數(shù)值查表發(fā)送顯示P3_7=

4、0;/關(guān)閉消隱,正常顯示/顯示計數(shù)器值子程序結(jié)束*void cnter(void)/計數(shù)轉(zhuǎn)換子程序開始uchar i;/定義字符型局部變量ifor(i=0;i<7;i+)/循環(huán) 8 次if(cnti>9)cnti=0;cnti+1+;/若計數(shù)器某位值大于 9,則該位回 0,/ 而高位被進(jìn)位加 1/if(cnt7>9)for(i=0;i<8;i+)cnti=0;/ 若計數(shù)器最高位值大于 9,則計數(shù)器全清 0 / 計數(shù)轉(zhuǎn)換子程序結(jié)束/*/void pt_cnt(void)/輸出控制子程序開始 if(cnt0=pre_cnt0)&&(cnt1=pre_cnt1

5、)&& (cnt2=pre_cnt2)&&(cnt3=pre_cnt3)&& (cnt4=pre_cnt4)&&(cnt5=pre_cnt5)&& (cnt6=pre_cnt6)&&(cnt7=pre_cnt7)/ 若計數(shù)值等于預(yù)置值out_flag=1;/輸出標(biāo)志置 1else out_flag=0;/否則輸出標(biāo)志置0/=if(out_flag)drv=0;若輸出標(biāo)志為1,輸出端(P3.4)置0,驅(qū)動光耦U2else drv=1;/否則輸出端(P3.4)置 1/輸出控制子程序結(jié)束*void mai

6、n(void)IE=0x84;IT1=1; while(1) P3_6=0;P3_7=1;/主程序開始/開放 CPU 中斷,開放外中斷 1 的中斷/置外中斷 1 為邊沿觸發(fā)/無限循環(huán)/禁止發(fā)送給顯示器,消隱有效SBUF=0x00;while(!TI);TI=0;/向 IC2 發(fā)送 0x00,使 IC2 輸出為全 0if(P3&0x24)!=0x24)keydown_flag=1; / 檢測 P3.2、P3.5 是否為高電平。/若不為高電平,說明有鍵按下,鍵被按下標(biāo)志置 1else keydown_flag=0;/否則,鍵被按下標(biāo)志置0/SBUF=0xfe;while(!TI);TI=0; / 向 IC2 發(fā)送 0xfe if(!P3_2)set_flag=!set_flag; 若 P3.2 為 0,說明 S9 鍵按下,標(biāo)志 set_flag 取反 /=if(!set_flag)cnter();dis_cnter();pt_cnt();delay(100);/若標(biāo)志 set_flag 為 0,調(diào)用計數(shù)、顯示計數(shù)、輸出控制的子程序else scan_key();dis_pre_cnter();delay(10);否則標(biāo)志 set_flag 為 1,調(diào)用掃描 S1S8 鍵、顯示預(yù)置值的子程序/= if(keydown_flag)delay(300);/因有鍵按下,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論