男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
用本站實驗板顯示8位AD值
用本站實驗板顯示8位AD值
 更新時間:2008-7-26 17:09:49  點擊數:4
【字體: 字體顏色

;****************
list  p=16f877A     ; list directive to define processor
#include <p16f877A.inc> ; processor specific variable definitions

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


;---------------------
COUNTER    EQU    20H                     ;計數寄存器
COUNT1     EQU    21H
COUNT2     EQU    22H
TABADD     EQU    23H                     ;查表地址寄存器
DISPBUF    EQU    24H                     ;顯示值暫存
DISPBUF_H  EQU    25H                     ;顯示器高位
DISPBUF_L  EQU    26H                     ;顯示器低位
BUFFER     EQU    27H                     ;BCD十進制結果存放
BUFFER1    EQU    28H                     ;BCD轉換緩存
SUM        EQU    29H                     ;校正+3緩存
DIGIT      EQU    2AH                     ;數據顯示寄存器
HB         EQU    2BH                     ;百位寄存器
;--------------------
            ORG         0000H            
            NOP
            GOTO        MAIN
            ORG         0005H
MAIN
;**********************    初始化程序    *********************************
          
               CLRF        PORTA
               CLRF        PORTC             ;初始化IO口
    
               BSF         STATUS,RP0        ;設置寄存器體1
               MOVLW       0EH               ;轉換結果左對齊,只選1個A/D通道RA0/AN0
               MOVWF       ADCON1            ;選擇VDD和VSS作參考源
               MOVLW       01H               ;RA0為模擬輸入
               MOVWF       TRISA             ;RA1~5為輸出
        
               MOVLW       00H               ;RC為LED段輸出
               MOVWF       TRISC  
               BCF         STATUS,RP0        ;恢復寄存器體0  
               MOVLW       0FFH              ;先讓數碼管全部不顯示
               MOVWF       PORTC
           MOVWF       PORTA
               MOVLW       81H               ;選擇:時鐘時鐘源為FOSC/8,允許ADC工作
               MOVWF       ADCON0            ;通道AN0,暫時不啟動轉換過程
               CLRF        DISPBUF           ;清顯示值
                  

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

;********************************   BCD   ********************************
              

LOOP1      
          
                CALL        DISP            ;調用顯示子程序
            MOVLW     8
          MOVWF     COUNTER       ;循環(huán)左移計數器置8
            CLRF     BUFFER          ;清除緩沖器
          MOVF     DIGIT,W  
          MOVWF     BUFFER1        
LOOP2    
                RLF         BUFFER1,1       ;二進制數轉換成BCD碼(以便顯示)
            RLF      BUFFER,1
            DECFSZ    COUNTER,1       ;左移8次
          GOTO     ADJUST          ;
          MOVFW     BUFFER
          MOVWF     DISPBUF         ;是否有進位(即已達100),如已計數到100則
          GOTO     ADC
            ;GOTO     MAIN
ADJUST    
                MOVLW     3               ;二進制轉BCD的調整
            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是否出現借位
              GOTO       HB200               ; F>199,百位數顯示2
              MOVLW      64H                 ; F<199,再送99至W
              SUBWF      DIGIT,W             ; F-W
              BTFSC      STATUS,C            ; 檢測C是否出現借位      
              GOTO       HB100               ; 199>F>99,百位數顯示1
              GOTO       DISP10              ; F<99,百位不顯示

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

HB100         MOVLW      1H
              MOVWF      HB                  ;百位顯示數移入寄存器
              
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                ;顯示內容送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             ;先熄滅數碼管以免閃爍
             BCF        PORTA,5           ;先顯示低位
             BSF        PORTA,2
             BSF        PORTA,4
             MOVLW      TABLE
             MOVWF      TABADD            ;將轉換表的首地址存入TABADD  
             MOVFW      DISPBUF_H         ;計數值(W)與轉換表的起始地址相加
             ADDWF      TABADD,W
             CALL       CONVERT           ;存入W后調用轉換表子程序
             MOVWF      PORTC             ;送RB口顯示
             CALL       DELAY             ;廷時4。7MS

DISP01       MOVLW      0FFH              ;同樣方法顯示個位
             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寄存器內的7段顯示碼地址放入PC
TABLE                                   ;PC執(zhí)行新地址指令, 跳到相對的地址執(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


;***************************     延時程序    ************************************

DELAY                      ;顯示廷時常數,廷時時間為3*255*6+6us+4us=4.6ms
            MOVLW     06H;6H;
       MOVWF     COUNT1
L2    
            MOVLW     0FFH;0FFH;
      MOVWF     COUNT2
L3    
            DECFSZ    COUNT2,1        
         GOTO     L3
       DECFSZ    COUNT1,1
      GOTO     L2
         RETLW     0    
;***********************************************************************
        
       END

  • 上一篇: PIC選型簡單介紹
  • 下一篇: PIC16C711電壓檢測
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 淄博市| 陇川县| 天峨县| 清原| 于都县| 伽师县| 资中县| 巴马| 柘城县| 瑞丽市| 稷山县| 九台市| 阿拉善右旗| 柳河县| 宁强县| 东方市| 寻乌县| 锡林郭勒盟| 湖南省| 石泉县| 合江县| 闸北区| 甘德县| 日照市| 精河县| 翁源县| 平果县| 阿巴嘎旗| 蓬安县| 临澧县| 民权县| 大余县| 明光市| 怀宁县| 油尖旺区| 刚察县| 巨野县| 黄大仙区| 偏关县| 托克托县| 连江县|