pic18系列單片機(jī)語(yǔ)言應(yīng)用實(shí)例匯編語(yǔ)言程序例程_第1頁(yè)
pic18系列單片機(jī)語(yǔ)言應(yīng)用實(shí)例匯編語(yǔ)言程序例程_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、;程序?qū)崿F(xiàn) A/D 轉(zhuǎn)換功能,A/D 采用中斷方式。該程序通過(guò)單片機(jī)的 RA2 模擬通道送入;一直流電壓,當(dāng)送入的直流電壓大于 2.5V 時(shí),8 個(gè) LED 閃動(dòng),當(dāng)直流電壓恢復(fù)到 2.5V 以下;時(shí),LED 停止閃動(dòng)。為了防止干擾,本程序?qū)χ绷麟妷翰蓸?10 次后再作判斷,中間的采樣結(jié);果用間接尋址的方式存取。LISTP=18F458INCLUDE P18F458.INCTIMES DEY ACCALO ACCAHI ACCBLO ACCBHI FLAG DEYH DEYLBEGFSREQU EQU EQU EQU EQU EQU EQU EQU EQUEQU0X20 TIMES+1 TIM

2、ES+2 TIMES+3 TIMES+4 TIMES+5 TIMES+6 TIMES+7 TIMES+90X30;ACCA 為雙精度加數(shù)寄存器;ACCB 為雙精度加法的結(jié)果寄存器;間接尋址 FSR 的起始值(宏定義方式給出)0X0000 MAIN 0X0008SERVE0X30GOTOGOTO;轉(zhuǎn)向中斷服務(wù)子程序;*雙字節(jié)減法子程序, D_SUBCALL地址 ACCB-ACCA,出口地址 ACCB*NEG_A;求ACCA 的補(bǔ)碼;*雙字節(jié)加法子程序, D_ADDMOVF ADDWF BTFSC INCF MOVFADDWF地址 ACCB+ACCA,出口地址 ACCB*ACCALO,0ACCBL

3、O;ACCB 和ACCA 低半字節(jié)相加SUS,C;有進(jìn)位否?;有,ACCB 高字節(jié)加 1,再加 ACCAHI;ACCA、ACCB 高半字節(jié)相加ACCBHI ACCAHI,0ACCBHIRETURN;子程序返回;* ACCA 取補(bǔ)子程序*NEG_ACOMF INCF BTFSC DECF COMFRETURNACCALOACCALO;ACCALO 取反加 1SUS,Z;低 8 位有進(jìn)位嗎?;有,ACCAHI 減 1,再取反;否則 ACCAHI 直接取反;子程序返回ACCAHIACCAHI;*初始化子程序*INITIALCLRF MOVLWMOVWFCON 0X51ADCON0;總中斷和中斷;選擇

4、 AD 通道為 RA2,且打開(kāi) A/D 轉(zhuǎn)換器;在工作狀態(tài),且使 AD 轉(zhuǎn)換時(shí)鐘為 8ToscMOVLWMOVWF0X80ADCON1;轉(zhuǎn)換結(jié)果右移,即 ADRESH 寄存器的高 6;位為0,且把 RA2 口設(shè)置為模擬量輸入式;(注意后面要把 RA5 改成數(shù)據(jù) I/O 方式,以;輸出顯示信號(hào))BCF BSF BSF BSF BSF BSF BCF BCF BCFMOVLW MOVWF MOVLWMOVWFPIR1,ADIF PIE1,ADIECON,PEIE IPR1,ADIP RCON,7 TRISA,2 TRISA,5 TRISC,5 TRISC,3 0XC0SSPS 0X30SSPCON

5、1;清除 A/D 轉(zhuǎn)換標(biāo)志;A/D 轉(zhuǎn)換中斷允許;中斷允許;B 口變位中斷高優(yōu)先級(jí);使能中斷優(yōu)先級(jí);設(shè)置 RA2 為輸入方式;置RA5 為輸出方式,以輸出鎖存信號(hào);設(shè)置 SCK 與SDO 為輸出方式;設(shè)置 SSPS寄存器;設(shè)置 SPI 的控制方式,允許 SSP 方式,并;且時(shí)鐘下降沿發(fā)送,與74HC595 當(dāng)其;SCLK 從低到跳變時(shí),串行輸入數(shù)據(jù);(DI)移入寄存器的特點(diǎn)相應(yīng)CLRFRETURNFLAG;*DELAY延時(shí)子程序*MOVLW MOVWF MOVLW MOVWF NOP DECFSZ GOTO DECFSZ GOTORETURN0XFF DEYH 0XFFDEYLAGAIN1AG

6、AIN2DEYL AGAIN2 DEYHAGAIN1;* A/D 中斷服務(wù)子程序*SERVEBCF MOVF MOVWF INCF MOVF MOVWF INCF DECF MOVLW MOVWF DECFSZGOTOPIR1,ADIF ADRESH,W INDF0 FSR0L ADRESL,W INDF0 FSR0L TIMES,1 0X02DEY DEY,1LOOP13;清除 A/D 轉(zhuǎn)換標(biāo)志;并A/D 轉(zhuǎn)換結(jié)果的高兩位;A/D 轉(zhuǎn)換結(jié)果的低 8 位并;A/D 轉(zhuǎn)換次數(shù)減 1LOOP13;給予一定的延時(shí),保證兩次 A/D 轉(zhuǎn)換期間;2Tad 的間隔時(shí)間和電容的采樣時(shí)間;啟動(dòng)下一次 A/D

7、轉(zhuǎn)換;中斷返回BSFRETFIEADCON0,2;* LED 閃爍ALARM子程序*MOVLW XORWF BTFSS CALL NOP BTFSC CALLRETURN0X01 FLAG,1 FLAG,0DISPLAY0;調(diào)用顯“0”子程序FLAG,0DISPDARK;調(diào)用顯“DARK”子程序;*顯全 0 子程序* DISPLAY0TRANSMIT;SPI 發(fā)送顯示子模塊;LACK 送低電平,為鎖存做準(zhǔn)備CLRF MOVLW MOVWF MOVLWMOVWFPORTA 0X08 TIMES 0XC0SSPBUFLOOP80;顯示值為 0,C0H 為 0 的段碼;啟動(dòng)發(fā)送WAITBTFSS G

8、OTO BCF DECFSZ GOTO BSFRETURNPIR1,SSPIF WAIT PIR1,SSPIF TIMES LOOP80PORTA,5;等待發(fā)送結(jié)束;清除中斷標(biāo)志;一次要發(fā)送完 8 個(gè)數(shù)據(jù);最后給一個(gè)鎖存信號(hào),代表一次顯示任務(wù)完成;*顯示全 DARK 子程序* DISPDARKTRANSMIT1;SPI 發(fā)送顯示子模塊;LACK 送低電平,為鎖存做準(zhǔn)備CLRF MOVLW MOVWFLOOP8D MOVLWMOVWFWAIT1BTFSS GOTOPORTA 0X08 TIMES 0XFFSSPBUF;顯示值為 0,F(xiàn)FH 為DARK 的段碼;啟動(dòng)發(fā)送PIR1,SSPIFWAIT

9、1;等待發(fā)送結(jié)束B(niǎo)CF DECFSZ GOTO BSFRETURNPIR1,SSPIF TIMES LOOP8DPORTA,5;清除中斷標(biāo)志;一次要發(fā)送完 8 個(gè)數(shù)據(jù);最后給一個(gè)鎖存信號(hào),代表一次顯示任務(wù)完成;*主程序*MAINNOPCALLINITIAL;初始化LOOPMOVLW0X80;轉(zhuǎn)換結(jié)果右移,及 ADRESH 寄存器的高 6 位為0;且把 RA2 口設(shè)置為模擬量輸入式(注意后面要把; RA5 改成數(shù)據(jù) I/O 方式,以輸出顯示信號(hào))MOVWF MOVLW MOVWF MOVLW MOVWF BSFBSF MOVF BTFSS GOTO BCF NOP CLRF CLRF MOVLW

10、 MOVWF MOVLW MOVWF MOVF MOVWF INCF MOVF MOVWFINCFADCON1 BEGFSR FSR0L 0X0A TIMESCON,GIEADCON0,2 TIMES,W;給出間接尋址時(shí) FSR 的初值;每一輪 A/D 連續(xù)采樣 10 次;總中斷打開(kāi),及可以進(jìn)行 A/D 轉(zhuǎn)換中斷;啟動(dòng) A/D 轉(zhuǎn)換LOOP1SUS,ZLOOP1CON,GIE;等待 A/D 轉(zhuǎn)換中斷;A/D 轉(zhuǎn)換次數(shù)到 10 次,關(guān)閉中斷ACCBHI ACCBLO 0X0A TIMES BEGFSR FSR0L INDF0,W ACCAHI FSR0L INDF0,W ACCALOFSR0L;雙精度加法的結(jié)果寄存器清 0,為后面準(zhǔn)備LOOP15CALL DECFSZ GOTO NOP MOVLW MOVWF MOVLW MOVWF CLRFCALLD_ADD TIMESLOOP15;計(jì)算得到 10 次A/D 轉(zhuǎn)換的和0X84 ADCON1 0X14 ACCAHI ACCALOD_SUB;把RA5 設(shè)成數(shù)字 I/O,以輸出顯示鎖存信號(hào);通過(guò)雙精度減判斷模擬量是否達(dá)到限;度(1400H=200H*0AH,200H 與 2.5V 對(duì)應(yīng))B

溫馨提示

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

評(píng)論

0/150

提交評(píng)論