;************************************************************************* ; Copyright 2004 Hata Akihiro ; ;  第5章 PICアイデア集 ; 5−12 基準電圧を4ビットD−Aコンバータとして使用する ;------------------------------------------------------------------------- ;プログラムの説明 ;<概要> ; 基準電圧を利用した4ビットD−Aコンバータのテスト・プログラム。 ; ;<動作> ; 4ビットDIPスイッチで設定した値をRA2に出力する。 ; ;------------------------------------------------------------------------- ; 2004/08/23 V1.00 初回リリース ; ; ; ; ;------------------------------------------------------------------------- ; CONFIGRATION FUSE ; WDT:Disable OSC: Internal RC Osc Code Protect:OFF Power up timer:ON ; OSCILLATOR ; 4MHz ;************************************************************************* ; LIST P=PIC16F628A, R=DEC ;Target Processor INCLUDE P16F628A.INC ; __CONFIG _INTOSC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _LVP_OFF & _MCLRE_OFF & _DATA_CP_OFF __idlocs H'0100' ;V1.00 2004/08/23 ; ;------------------------------------------------------------------------- ; DEFINE I/O Port ;------------------------------------------------------------------------- ; PortA ; RA0 input ; RA1 input ; RA2 D-A OUT input(Vref out) ; RA3 input ; RA4 input ; RA5 input ; ; PortB ; RB0 input ; RB1 input ; RB2 input ; RB3 input ; RB4 input ; RB5 input ; RB6 input ; RB7 input ; ;------------------------------------------------------------------------- ; Variables ;------------------------------------------------------------------------- ; ; ; ;------------------------------------------------------------------------- ; Registers ;------------------------------------------------------------------------- ; ST_TEMP EQU H'20' ; Status Reg. Temp. for Interupt W_TEMP EQU H'21' ; Work Reg. Temp. for Interupt INT_COUNTER EQU H'22' ; INTERUPT COUNTER ;------------------------------------------------------------------------- ; Program code ;------------------------------------------------------------------------- ; ORG 0 GOTO INITIALISE ;------------------------------------------------------------------------- ; Initialize ;------------------------------------------------------------------------- INITIALISE BSF STATUS,RP0 ; BANK1 MOVLW H'FF' MOVWF TRISA ;PORTA ALL IN MOVLW H'FF' MOVWF TRISB ;PORTB ALL IN CLRF OPTION_REG ;PORTB Pull Up MOVLW H'C0' MOVWF VRCON BCF STATUS,RP0 ; BANK0 MOVLW H'07' MOVWF CMCON ;ALL DIGITAL IN ;******************************************************* ; MAIN PROGRAM ;******************************************************* MAIN MOVF PORTB,W ANDLW H'0F' IORLW H'C0' BSF STATUS,RP0 ; BANK1 MOVWF VRCON ; Reload VRCON BCF STATUS,RP0 ; BANK0 GOTO MAIN ; END