中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

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

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

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

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

技術(shù)支持

用三位數(shù)碼管顯示八位AD數(shù)值

更新時(shí)間: 2019-03-26

;************************************
      LIST   P=16F877              ;列表偽指令
      INCLUDE "P16F877.INC"        ;把包含文件含入源程序
;************************************
RTCC  EQU  01H
W_TEMP  EQU  20H
STATUS_TEMP EQU  21H
FLAGS  EQU  22H
TABADD  EQU  23H
DISPBUF_L EQU  24H
DISPBUF_H EQU  25H
DISP1BUF_L EQU  26H
DISP1BUF_H EQU  27H
SOU   EQU  28H
SOUH  EQU  29H
TEMP1  EQU  30H
TEMP2  EQU  31H
CNT   EQU  32H

 

;************************************
        ORG        0000H

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

START
        BANKSEL    PORTC            ;選擇同PORTC寄存器相同的體
       CLRF       PORTC            ;PORTC
      MOVLW      B'10000001'     ;選擇:時(shí)鐘時(shí)鐘源為FOSC/8,允許ADC工作
      MOVWF      ADCON0           ;通道AN0,暫時(shí)不啟動(dòng)轉(zhuǎn)換過程

 

       BANKSEL    OPTION_REG       ;選擇寄存器OPTION_REG的體為當(dāng)前體
      CLRF       TRISC            ;PORTC所有管腳設(shè)為輸出(LED)
       MOVLW      B'00001110'      ;轉(zhuǎn)換結(jié)果左對(duì)齊,只選1個(gè)A/D通道RA0/AN0
       MOVWF      ADCON1           ;選擇VDDVSS作參考源
        MOVLW    01H    ;設(shè)置RA0為輸入,其它為輸出
     MOVWF    TRISA
        BANKSEL    PORTC            ;選中同寄存器PORTC的體為當(dāng)前體
;---------------------------------
MAIN    BSF     ADCON0,GO           ;開啟A/D轉(zhuǎn)換過程
  CALL  DELAY
WAIT
        BTFSS   PIR1,ADIF           ;等待A/D轉(zhuǎn)換過程結(jié)束,檢測(cè)ADC中斷標(biāo)志位

GOTO   WAIT                ;如果沒有轉(zhuǎn)換結(jié)束,則返回循環(huán)檢測(cè)
       MOVF   ADRESH,W            ;如果轉(zhuǎn)換完畢,則把A/D結(jié)果讀到W
     MOVWF  SOU
     CALL    SBTBCD2
        SWAPF  SOU,W               ;顯示值高低位交換,先處理高位
       ANDLW  0FH              ;屏蔽掉高位
        MOVWF   DISPBUF_H          ;存入寄存器
        MOVFW  SOU              ;顯示值低位處理
        ANDLW  0FH              ;屏蔽掉高位
        MOVWF  DISPBUF_L        ;存入寄存器        
       SWAPF  SOUH,W              ;顯示值高低位交換,先處理高位
       ANDLW  0FH              ;屏蔽掉高位
        MOVWF  DISP1BUF_H          ;存入寄存器
        MOVFW  SOUH              ;顯示值低位處理
        ANDLW  0FH              ;屏蔽掉高位
        MOVWF  DISP1BUF_L          ;存入寄存器
     CALL  DISPLAY       
        GOTO  MAIN                ;循環(huán)進(jìn)行A/D轉(zhuǎn)換
;***************************************************
DISPLAY

    MOVLW       0FFH
        MOVWF       PORTC             ;先熄滅所有數(shù)碼管以免閃爍
       MOVLW  03EH
  MOVWF  PORTA   
        MOVLW       TABLE
        MOVWF       TABADD           ;將轉(zhuǎn)換表的首地址存入TABADD  
        MOVFW       DISPBUF_L        ;計(jì)數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
  ADDWF  TABADD,W
  CALL  CONVERT
  MOVWF  PORTC
  BCF   PORTA,4
  CALL  DELAY
  BSF   PORTA,4
  MOVFW       DISPBUF_H        ;計(jì)數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
  ADDWF  TABADD,W
  CALL  CONVERT
  MOVWF  PORTC
  BCF   PORTA,5
  CALL  DELAY
  BSF   PORTA,5
  MOVFW       DISP1BUF_L        ;計(jì)數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
  ADDWF  TABADD,W
  CALL  CONVERT
  MOVWF  PORTC
  BCF   PORTA,2
  CALL  DELAY
  BSF   PORTA,2
  RETURN                
;********************SBTBCD2********************

;本程序?qū)崿F(xiàn)單字節(jié)二進(jìn)制數(shù)轉(zhuǎn)化為2字節(jié)壓縮BCD碼。
;入口參數(shù):原二進(jìn)制數(shù)在SOU中。
;出口參數(shù):結(jié)果在SOUH:SOU中。
;占用資源:W,STATUS,023H,024H,025H,028H,029H,兩重堆棧。

 

           IFNDEF       SBTBCD21
            #DEFINE     SBTBCD21
                        
SBTBCD2     MOVF        SOU,W
            MOVWF       TEMP2
            CLRF        SOU
            CLRF        SOUH
            BCF         STATUS,C
            MOVLW       8
            MOVWF       CNT
LOOPC       RLF         TEMP2,F
            RLF         SOU,F

   RLF         SOUH,F
            DECFSZ      CNT,F
            GOTO        ADJDEC         
            RETURN                  ;整個(gè)子程序結(jié)束
ADJDEC      MOVLW       SOU
            MOVWF       FSR
            CALL        ADJBCD      ;調(diào)整SOU
            MOVLW       SOUH
            MOVWF       FSR
            CALL        ADJBCD      ;調(diào)整SOUH
            GOTO        LOOPC
;********************調(diào)整BCD********************
ADJBCD      MOVLW       03H
            ADDWF       INDF,W      ;低四位加3
            MOVWF       TEMP1       ;暫存
            BTFSC       TEMP1,3     ;結(jié)果大于7,
            MOVWF       INDF        ;則存起來
            MOVLW       30H
            ADDWF       INDF,W      ;高四位加3
            MOVWF       TEMP1              
            BTFSC       TEMP1,7     ;結(jié)果大于7,
            MOVWF       INDF        ;則存起來
            RETLW       0
           ENDIF
;**********************************************
DELAY    MOVLW  0FFH
   MOVWF  034H
LP0   NOP
   NOP

 NOP
   NOP
   NOP
   DECFSZ  034H
   GOTO  LP0
   RETURN
;---------------------------------
      END                         ;源程序結(jié)束


404
返回首頁 |  返回上一頁
东海县| 富锦市| 庆云县| 武定县| 盐源县| 顺义区| 平顶山市| 北流市| 黎城县| 赤水市| 法库县| 佛坪县| 广宗县| 营口市| 乐昌市| 全椒县| 洛南县| 托克托县| 博白县| 桃园县| 观塘区| 南京市| 濮阳县| 西乌| 高陵县| 新乐市| 灵山县| 五河县| 盘山县| 盐城市| 渝中区| 塔河县| 昌平区| 台前县| 榆社县| 兰坪| 合山市| 鸡东县| 德保县| 平昌县| 太谷县|