• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234
    設(shè)計(jì)開發(fā)

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

    開發(fā)工具

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

    技術(shù)支持

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

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

    新聞中心

    提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

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

    更新時(shí)間: 2019-01-05
    閱讀量:3335

    實(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為LED段輸出
               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)換過程
    CLRF DISPBUF ;清顯示值

    ;**

    ADC
    BSF ADCON0,GO ;開啟A/D轉(zhuǎn)換過程
    BTFSS PIR1,ADIF ;等待A/D轉(zhuǎn)換過程結(jié)束,檢測(cè)ADC中斷標(biāo)志位
    GOTO ADC ;如果沒有轉(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í)程序 **

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>