天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術(shù)熱線: 4007-888-234

專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

技術(shù)支持

實(shí)驗(yàn)板顯示8位AD值

更新時(shí)間: 2019-01-05

實(shí)驗(yàn)板顯示8位AD值

;**
list p=16f877A ; list directive to define processor
include ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;——————————-

COUNTER EQU 20H ;計(jì)數(shù)寄存器
COUNT1 EQU 21H
COUNT2 EQU 22H
TABADD EQU 23H ;查表地址寄存器
DISPBUF EQU 24H ;顯示值暫存
DISPBUF_H EQU 25H ;顯示器高位
DISPBUF_L EQU 26H ;顯示器低位
BUFFER EQU 27H ;BCD十進(jìn)制結(jié)果存放
BUFFER1 EQU 28H ;BCD轉(zhuǎn)換緩存
SUM EQU 29H ;校正+3緩存
DIGIT EQU 2AH ;數(shù)據(jù)顯示寄存器
HB EQU 2BH ;百位寄存器
;——————————
ORG 0000H
NOP
GOTO MAIN
ORG 0005H
MAIN
;** 初始化程序 *

CLRF PORTA
CLRF PORTC ;初始化IO口

           BSF         STATUS,RP0        ;設(shè)置寄存器體1
           MOVLW       0EH               ;轉(zhuǎn)換結(jié)果左對(duì)齊,只選1個(gè)A/D通道RA0/AN0
           MOVWF       ADCON1            ;選擇VDD和VSS作參考源
           MOVLW       01H               ;RA0為模擬輸入
           MOVWF       TRISA             ;RA1~5為輸出

           MOVLW       00H               ;RC為L(zhǎng)ED段輸出
           MOVWF       TRISC  
           BCF         STATUS,RP0        ;恢復(fù)寄存器體0  

MOVLW 0FFH ;先讓數(shù)碼管全部不顯示
MOVWF PORTC
MOVWF PORTA
MOVLW 81H ;選擇:時(shí)鐘時(shí)鐘源為FOSC/8,允許ADC工作
MOVWF ADCON0 ;通道AN0,暫時(shí)不啟動(dòng)轉(zhuǎn)換過(guò)程
CLRF DISPBUF ;清顯示值

;**

ADC
BSF ADCON0,GO ;開(kāi)啟A/D轉(zhuǎn)換過(guò)程
BTFSS PIR1,ADIF ;等待A/D轉(zhuǎn)換過(guò)程結(jié)束,檢測(cè)ADC中斷標(biāo)志位
GOTO ADC ;如果沒(méi)有轉(zhuǎn)換結(jié)束,則返回循環(huán)檢測(cè)
MOVF ADRESH,W ;僅取高8位,把A/D結(jié)果讀到W
MOVWF DIGIT ;注入顯示寄存器

;** BCD **

LOOP1

            CALL        DISP            ;調(diào)用顯示子程序
        MOVLW     8
      MOVWF     COUNTER       ;循環(huán)左移計(jì)數(shù)器置8
        CLRF     BUFFER          ;清除緩沖器
      MOVF     DIGIT,W  
      MOVWF     BUFFER1        

LOOP2
RLF BUFFER1,1 ;二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼(以便顯示)
RLF BUFFER,1
DECFSZ COUNTER,1 ;左移8次
GOTO ADJUST ;
MOVFW BUFFER
MOVWF DISPBUF ;是否有進(jìn)位(即已達(dá)100),如已計(jì)數(shù)到100則

GOTO ADC
;GOTO MAIN
ADJUST
MOVLW 3 ;二進(jìn)制轉(zhuǎn)BCD的調(diào)整
ADDWF BUFFER,W ;每次移位后都檢查低四位LSD+3是否大于7
MOVWF SUM
BTFSC SUM,3
MOVWF BUFFER
MOVLW 30H
ADDWF BUFFER,W ;如果是則再加3,否則不加。
MOVWF SUM
BTFSC SUM,7
MOVWF BUFFER ;接著再將高四位MSD作相同處理
GOTO LOOP2

;** 顯示程序 *
DISP

CLRF HB
MOVLW 0C8H ; 送入199至W,
SUBWF DIGIT,W ; F-W
BTFSC STATUS,C ; 檢測(cè)C是否出現(xiàn)借位
GOTO HB200 ; F>199,百位數(shù)顯示2
MOVLW 64H ; F<199,再送99至W
SUBWF DIGIT,W ; F-W
BTFSC STATUS,C ; 檢測(cè)C是否出現(xiàn)借


GOTO HB100 ; 199>F>99,百位數(shù)顯示1
GOTO DISP10 ; F<99,百位不顯示

HB200 MOVLW 2H
MOVWF HB ;百位顯示數(shù)移入寄存器
GOTO DISP100

HB100 MOVLW 1H
MOVWF HB ;百位顯示數(shù)移入寄存器

DISP100 MOVLW 0FFH ;顯示百位
MOVWF PORTC
BCF PORTA,2 ;RA2為百位顯示
BSF PORTA,5
BSF PORTA,4
MOVLW TABLE ;查表
MOVWF TABADD
MOVF HB,W
ADDWF TABADD,W
CALL CONVERT
MOVWF PORTC ;顯示內(nèi)容送RC
CALL DELAY

DISP10 MOVF DISPBUF,W ;顯示值低位處理
ANDLW 0FH ;屏蔽掉高位
MOVWF DISPBUF_L ;存入寄存器
SWAPF DISPBUF,W ;顯示值高低位交換,先處理高位
ANDLW 0FH ;屏蔽掉高位
MOVWF DISPBUF_H ;存入寄存器
MOVF HB,W
ADDWF DISPBUF_H,W ;如果百位和十位同為零不顯示
BTFSC STATUS,Z
GOTO DISP01

         MOVLW      0FFH              ;顯示十位
         MOVWF      PORTC             ;先熄滅數(shù)碼管以免閃爍
         BCF        PORTA,5           ;先顯示低位
         BSF        PORTA,2
         BSF        PORTA,4
         MOVLW      TABLE
         MOVWF      TABADD            ;將轉(zhuǎn)換表的首地址存入

TABADD
MOVFW DISPBUF_H ;計(jì)數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
ADDWF TABADD,W
CALL CONVERT ;存入W后調(diào)用轉(zhuǎn)換表子程序
MOVWF PORTC ;送RB口顯示
CALL DELAY ;廷時(shí)4。7MS

DISP01 MOVLW 0FFH ;同樣方法顯示個(gè)位
MOVWF PORTC
BCF PORTA,4
BSF PORTA,2
BSF PORTA,5
MOVLW TABLE
MOVWF TABADD
MOVFW DISPBUF_L
ADDWF TABADD,W
CALL CONVERT
MOVWF PORTC
CALL DELAY
RETLW 0

;** 查表顯示 *

CONVERT
MOVWF PCL ;將W寄存器內(nèi)的7段顯示碼地址放入PC
TABLE ;PC執(zhí)行新地址指令, 跳到相對(duì)的地址執(zhí)行?
RETLW 0C0H ;0
RETLW 0F9H ;1
RETLW 0A4H ;2
RETLW 0B0H ;3
RETLW 099H ;4
RETLW 092H ;5
RETLW 082H ;6
RETLW 0D8H ;7
RETLW 080H ;8
RETLW 090H ;9

;* 延時(shí)程序 **

CONVERT
MOVWF PCL ;將W寄存器內(nèi)的7段顯示碼地址放入PC
TABLE ;PC執(zhí)行新地址指令, 跳到相對(duì)的地址執(zhí)行?
RETLW 0C0H ;0
RETLW 0F9H ;1
RETLW 0A4H ;2
RETLW 0B0H ;3
RETLW 099H ;4
RETLW 092H ;5
RETLW 082H ;6
RETLW 0D8H ;7
RETLW 080H ;8
RETLW 090H ;9

;* 延時(shí)程序 **

404
返回首頁(yè) |  返回上一頁(yè)
联系我们: 乐都县| 桂东县| 茂名市| 都匀市| 京山县| 贵德县| 故城县| 大同县| 荔浦县| 山丹县| 广元市| 囊谦县| 武定县| 射阳县| 莱芜市| 元朗区| 于田县| 天柱县| 怀柔区| 周宁县| 洪江市| 郸城县| 轮台县| 屯留县| 新野县| 德保县| 金寨县| 永宁县| 彰化市| 板桥市| 玛曲县| 德昌县| 航空| 类乌齐县| 宜昌市| 成安县| 洱源县| 永登县| 郎溪县| 铁力市| 武宣县|