機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
PIC16F877 _AD轉換顯示程序
PIC16F877 _AD轉換顯示程序
 更新時間:2008-7-26 17:09:38  點擊數(shù):4
【字體: 字體顏色

;     LIST   P=16F877                     ;列表偽指令
;     INCLUDE "P16F877.INC"               ;把包含文件含入源程序
;*****************************************
; 請設置顯示相關寄存器                   *
;*****************************************
Byte      EQU   20H
Count     EQU   21H
Count1    EQU   22H
CONVERT   EQU   23H
BUF       EQU   24H
BUF1      EQU   25H
BUF2      EQU   26H
BUF_TEMP  EQU   27H
BUF1_TEMP EQU   28H
BUF2_TEMP EQU   29H
;******************************************
;寄存器用做變量寄存器
;******************************************
N1        EQU   2          ;
N2        EQU   30         ;
Temp      EQU   30H        ;
TempH     EQU   31H        ;
TempL     EQU   32H        ;
Count3    EQU   33H        ;
DATA1     EQU   33H        ;
DATA2     EQU   34H        ;
;******************************************
       ORG    0000H                        ;
       GOTO   START                        ;
;      NOP                                 ;放置一條ICD必段的空操作指令
START:
       BCF    STATUS,RP0                   ;設置寄存器體0
       CLRF    PORTC                       ;清PORTC
       MOVLW   41h          ;010000001選擇:時鐘時鐘源為FOSC/8,允許ADC工作
       MOVWF   ADCON0                      ;通道AN0,暫時不啟動轉換過程
       BSF     STATUS,RP0                  ;設置寄存器體1
       MOVLW   87H          ;10000111設定:RB口不用上拉,分頻器配給TMR0
       MOVWF   OPTION_                     ;分頻比設為1:256
       CLRF    TRISC                       ;PORTC所有管腳設為輸出(接LED)
       MOVLW   0EH          ;00001110轉換結果左對齊,只選1個A/D通道RA0/AN0
       MOVWF   ADCON1                      ;選擇VDD和VSS作參考源
       BCF     STATUS,RP0                  ;設置寄存器體0
;---------------------------------
MAIN:
;      BTFSS   INTCON,T0IF        ;等待和循環(huán)檢測TMR0溢出中斷標志位
;      GOTO    MAIN               ;如果沒有發(fā)生TMR0溢出中斷則返回循環(huán)檢測
;      BCF     INTCON,T0IF        ;如果發(fā)生了TMR0溢出中斷,則清除標志位T0IF
       BSF     ADCON0,GODONE      ;開啟A/D轉換過程
WAIT:
       GOTO    DISP               ;
       BTFSS   PIR1,ADIF          ;等待A/D轉換過程結束,檢測ADC中斷標志位
       GOTO    WAIT               ;如果沒有轉換結束,則返回循環(huán)檢測
       MOVF    ADRES,W                     ;如果轉換完畢,則把A/D結果讀到W
;      MOVWF   PORTC                       ;經(jīng)過W送C口LED顯示
       MOVWF   TEMP                        ;
       GOTO    BIN2BCD                     ;
       MOVF    TEMPL,W                     ;
       MOVWF   BUF                         ;
       MOVF    TEMPH,W                     ;
       MOVWF   BUF1                        ;
       GOTO    DISP                        ;
       GOTO    MAIN                        ;循環(huán)進行A/D轉換
;************************************************
;* Bin2BCD - 將 Temp  寄存器內的二進制數(shù)轉      *
;* 換為相應的 ASCII 碼并存為 TempH:TempL 的形式 *
;************************************************
Bin2BCD:
 clrf TempH  ; Initialize variables
 MOVf Temp,W
 MOVwf TempL
Ttenth:    ; Subtract 10 from low variable
 MOVlw 0AH  ; until result is < 0.  On each
 subwf TempL,W  ; subtraction, increment the
 btfss STATUS,C ; temperature high byte.
 goto Over
 MOVwf TempL
 incf TempH,F
 goto Ttenth
Over:
 return
;*********************************
;        顯示子程序             ;
;*********************************
DISP:    MOVF   BUF,  W         ;
         ANDLW  0FH             ;
         CALL   convert         ;
         MOVWF  PORTC           ;
         BCF    PORTD,0         ;
         CALL   DELAY           ;
         BSF    PORTD,0         ;

         MOVF   BUF, W          ;
         MOVWF  BUF_TEMP        ;
         SWAPF  BUF_TEMP,W      ;
         ANDLW  0FH             ;
         CALL   convert         ;
         MOVWF  PORTC           ;
         BCF    PORTD,1         ;
         CALL   DELAY           ;
         BSF    PORTD,1         ;

         MOVF   BUF1, W         ;
         ANDLW  0FH             ;
         CALL   convert         ;
         MOVWF  PORTC           ;
         BCF    PORTD,2         ;
         CALL   DELAY           ;
         BSF    PORTD,2         ;

         MOVF   BUF1, W         ;
         MOVWF  BUF1_TEMP       ;
         SWAPF  BUF1_TEMP,W     ;
         ANDLW  0FH             ;
         CALL   convert         ;
         MOVWF  PORTC           ;
         BCF    PORTD,3         ;
         CALL   DELAY           ;
         BSF    PORTD,3         ;
         RETURN                 ;
;*********************************        
DELAY:             ;{2+[2+(1+2)*(DATA2-1)+2+1+2]*(DATA1-1)+2+2}=0.382MS
         MOVLW  N1              ;(1)
         MOVWF  DATA1           ;(1)
DEL1:    MOVLW  N2              ;(1)
         MOVWF  DATA2           ;(1)
DEL2:    DECFSZ DATA2,1         ;(1\2)DATA2-1=0?
         GOTO   DEL2            ;(2)
         DECFSZ DATA1,1         ;(1\2)DATA1-1=0?
         GOTO   DEL1            ;(2)
         RETURN                 ;(2)                
;------------------------------------------------
         END                                 ;源程序結束

  • 上一篇: 中斷+數(shù)碼管動態(tài)掃描+3*4矩陣按鍵
  • 下一篇: PIC16F877A初學之定時器中斷篇
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

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

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

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1