新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)adc轉(zhuǎn)換并顯示

PIC單片機(jī)adc轉(zhuǎn)換并顯示

作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
CL04 BTFSS 57H,2;判斷標(biāo)志是否有進(jìn)位
GOTO CL4;否
MOVLW 6H;
ADDWF 53H,1;自身加6H
CL4 BTFSS 57H,5;判斷標(biāo)志是否有進(jìn)位
GOTO CL05;
INCF 51H,1;是進(jìn)位
MOVLW 60H;
ADDWF 52H,1;自身加60H
CL05 BTFSS 57H,1;判斷標(biāo)志是否有進(jìn)位
GOTO CL5;否
MOVLW 6H;
ADDWF 52H,1;自身加6H
CL5
CLRF 57H;清標(biāo)志
DECFSZ 56H,1;
GOTO CL2;
RETURN;
;;;**************************************************************
;;; 十進(jìn)制數(shù)調(diào)整
;;;**************************************************************
DA1 MOVWF 60H;將W里的數(shù)保存到60H里
MOVLW B00001111;
ANDWF 60H,0;將60H的數(shù)與00001111去除高4位
MOVWF 62H;將去除高位后的數(shù)保存到62H
MOVLW 0AH;
SUBWF 62H,0;去除高位的數(shù)減0AH
BTFSS STATUS,DC;判斷是否比0AH大
GOTO DA2 ;否則跳轉(zhuǎn)
ADDLW B10000;比0AH大則進(jìn)位
MOVWF 62H;高4位加1
DA2 MOVLW B11110000;
ANDWF 60H,1;將60H的數(shù)與11110000去除低4位
MOVLW 0A0H;
SUBWF 60H,0;高4位的數(shù)減0A0H
BTFSS STATUS,C;判斷是否比0A0H大
GOTO DA3;否
ADDWF 62H,1;是則將差加上低位
BSF STATUS,C;是則置位
GOTO DA4;
DA3 MOVFW 60H;
ADDWF 62H,1;否則將高4位加上低4位
MOVFW 62H;
ANDLW B11110000;
SUBLW 0A0H ;加后判斷是否大于或等于0A0H
BCF STATUS,C;
BTFSS STATUS,Z;
GOTO DA4;否則退出
MOVLW B00001111;是
ANDWF 62H,1;則去掉高4位并進(jìn)位
BSF STATUS,C;置進(jìn)位標(biāo)志
DA4 MOVFW 62H;
RETURN;
;**************************************************************
; 定時(shí)中斷數(shù)碼管顯示程序
;**************************************************************
ZD01 BTFSS INTCON,T0IF;判斷是否產(chǎn)生定時(shí)中斷
GOTO ZD03;否跳出是繼續(xù)執(zhí)行
MOVWF W_TEMP;W備份到W_TEMP中
SWAPF STATUS,0;STATUS半字交換后送W
CLRF STATUS;選擇體0為當(dāng)前體備份
MOVWF STATUS_TEMP;將原來(lái)的STATUS送體0上的
MOVF PCLATH,0;PCLATH送W
MOVWF PCLATH_TEMP;W送備份寄存器中
CLRF PCLATH ;設(shè)置為0頁(yè)
BCF INTCON,T0IF
BSF STATUS,RP0;體1
BCF STATUS,RP1;
MOVLW 0;
MOVWF TRISB;RB口設(shè)為輸出口
MOVWF TRISD;RD口設(shè)為輸出口
BCF STATUS,RP0;體0
BCF STATUS,RP1;
MOVLW 0FFH;
MOVWF PORTB;RB口輸出高電平
MOVLW 0
MOVWF PORTD;RD口輸出低電平起清屏作用
MOVFW INDF;間接尋址顯示數(shù)據(jù)
CALL Q1;查數(shù)據(jù)表
MOVWF PORTB;顯示斷碼輸出到RB口
INCF FSR,1;間接尋址地址加1
MOVFW 41H ;位碼
MOVWF PORTD;位碼輸出到RD口
RLF 41H,0;處理C
RLF 41H,1;左移位碼
DECFSZ 40H,1;判斷是否顯示完4位
GOTO ZD02;否則繼續(xù)顯示
MOVLW 5;顯示位數(shù)
MOVWF 40H;
MOVLW B00000001;位碼
MOVWF 41H;
MOVLW 5AH;
MOVWF FSR ;間接尋址
ZD02
MOVLW 0FFH;
MOVFW TMR0;重裝初值
; 恢復(fù)現(xiàn)場(chǎng)
CLRF STATUS;恢復(fù)到體0
MOVF PCLATH_TEMP,0;開始恢復(fù)數(shù)據(jù)
MOVWF PCLATH;恢復(fù)PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS;恢復(fù)STATUS
SWAPF W_TEMP,1;半字交換后放回
SWAPF W_TEMP,0;再半字交換后送W
ZD03
RETFIE ;中斷返回
ADC1 BSF STATUS,RP0;體1
BCF STATUS,RP1
MOVLW 0FFH
MOVWF TRISA;設(shè)置A口為輸入口
MOVLW B10001110;設(shè)置ADC轉(zhuǎn)換格式為右對(duì)齊并選RA0位AD口
MOVWF ADCON1
BCF STATUS,RP0;選擇體0
BCF STATUS,RP1
MOVLW B11000001 ;選擇ADC時(shí)鐘頻率選擇RA0位AD通道使能ADC
MOVWF ADCON0
BSF ADCON0,GO;開始AD轉(zhuǎn)換
BTFSC ADCON0,GO;判斷是否轉(zhuǎn)換完成
GOTO $-1
BSF ADCON0,GO;清完成標(biāo)志
MOVFW ADRESH;將轉(zhuǎn)換完成高位數(shù)存到50H
MOVWF 50H
BSF STATUS,RP0;體1
BCF STATUS,RP1
MOVFW ADRESL;將轉(zhuǎn)換完成數(shù)存到51H
BCF STATUS,RP0;體0
BCF STATUS,RP1
MOVWF 51H
RETURN
M001 MOVLW 1
MOVWF 30H
M002 MOVLW D24
MOVWF 31H
M003 MOVLW D250
MOVWF 32H
DECFSZ 32H,1
GOTO $-1
DECFSZ 31H,1
GOTO M003
DECFSZ 30H,1
GOTO M002
RETURN
END
上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: PIC單片機(jī)adc轉(zhuǎn)

評(píng)論


技術(shù)專區(qū)

關(guān)閉