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

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

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

開發(fā)工具

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

技術(shù)支持

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

新品推廣

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

新聞中心

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

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

更新時間: 2019-03-26
閱讀量:2389

;************************************
      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í)行新地址指令, 跳到相對的地址執(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'     ;選擇:時鐘時鐘源為FOSC/8,允許ADC工作
      MOVWF      ADCON0           ;通道AN0,暫時不啟動轉(zhuǎn)換過程

 

       BANKSEL    OPTION_REG       ;選擇寄存器OPTION_REG的體為當(dāng)前體
      CLRF       TRISC            ;PORTC所有管腳設(shè)為輸出(LED)
       MOVLW      B'00001110'      ;轉(zhuǎn)換結(jié)果左對齊,只選1A/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é)束,檢測ADC中斷標(biāo)志位

GOTO   WAIT                ;如果沒有轉(zhuǎn)換結(jié)束,則返回循環(huán)檢測
       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)進行A/D轉(zhuǎn)換
;***************************************************
DISPLAY

    MOVLW       0FFH
        MOVWF       PORTC             ;先熄滅所有數(shù)碼管以免閃爍
       MOVLW  03EH
  MOVWF  PORTA   
        MOVLW       TABLE
        MOVWF       TABADD           ;將轉(zhuǎn)換表的首地址存入TABADD  
        MOVFW       DISPBUF_L        ;計數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
  ADDWF  TABADD,W
  CALL  CONVERT
  MOVWF  PORTC
  BCF   PORTA,4
  CALL  DELAY
  BSF   PORTA,4
  MOVFW       DISPBUF_H        ;計數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
  ADDWF  TABADD,W
  CALL  CONVERT
  MOVWF  PORTC
  BCF   PORTA,5
  CALL  DELAY
  BSF   PORTA,5
  MOVFW       DISP1BUF_L        ;計數(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é)二進制數(shù)轉(zhuǎn)化為2字節(jié)壓縮BCD碼。
;入口參數(shù):原二進制數(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                  ;整個子程序結(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é)束


龙川县| 都匀市| 吉安县| 乌拉特前旗| 天门市| 佛学| 罗田县| 嘉义县| 葵青区| 深泽县| 英吉沙县| 湖州市| 长治县| 金平| 盐边县| 蕲春县| 万宁市| 格尔木市| 贵州省| 白沙| 龙陵县| 台北县| 安阳县| 巴东县| 广水市| 克东县| 四川省| 大关县| 菏泽市| 新巴尔虎右旗| 西吉县| 峨山| 仁化县| 新和县| 巴楚县| 福安市| 岢岚县| 正阳县| 盐亭县| 邢台县| 华阴市|