;****************************************************************************************** ; Project : Wave Generater ; Program Name : ; Programer : ; Create date : Version 1.0 H22.03.10 ; History : ; Laungage : MPLAB MPASM ;****************************************************************************************** ; (1)Description ; ;****************************************************************************************** LIST P=PIC12F683,ST=OFF,R=DEC INCLUDE "P12F683.inc" __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF LP01 EQU 20H TMP1 EQU 21H ORG 0 GOTO START ORG 4 GOTO START START ;********************************** ; 1.初期化処理 ;********************************** ; (1)オシレータの設定(内部8MHzにする) BSF STATUS,RP0 ; BANK1を選択 BSF OSCCON,6 ; 8MHzを設定 BSF OSCCON,5 ; 8MHzを設定 BSF OSCCON,4 ; 8MHzを設定 NOP NOP BCF STATUS,RP0 ; BANK0を選択 ; (2)ポートの設定1(アナログ/デジタル設定) BSF STATUS,RP0 ; BANK1を選択 BSF ANSEL,0 ; GP0(AN0)をアナログ入力にする BSF ANSEL,1 ; GP1(AN1)をアナログ入力にする BCF ANSEL,2 ; GP2(AN2)をデジタルにする BCF ANSEL,3 ; GP4(AN3)をデジタルにする BCF STATUS,RP0 ; BANK0を選択 ; (3)ポートの設定2(ディレクション設定) BSF STATUS,RP0 ; BANK1を選択 MOVLW B'11111011' ; PORT設定 MOVWF TRISIO ; PORT設定 BCF STATUS,RP0 ; BANK0を選択 ; (4)コンパレータの設定 CALL INITCMP MAIN ;********************************** ; 2.メインプログラム ;********************************** MOVLW D'7' CALL SETCMP CALL WAIT01 MOVLW D'9' CALL SETCMP CALL WAIT01 MOVLW D'11' CALL SETCMP CALL WAIT01 MOVLW D'13' CALL SETCMP CALL WAIT01 MOVLW D'14' CALL SETCMP CALL WAIT01 MOVLW D'14' CALL SETCMP CALL WAIT01 MOVLW D'14' CALL SETCMP CALL WAIT01 MOVLW D'13' CALL SETCMP CALL WAIT01 MOVLW D'11' CALL SETCMP CALL WAIT01 MOVLW D'9' CALL SETCMP CALL WAIT01 MOVLW D'7' CALL SETCMP CALL WAIT01 MOVLW D'5' CALL SETCMP CALL WAIT01 MOVLW D'3' CALL SETCMP CALL WAIT01 MOVLW D'1' CALL SETCMP CALL WAIT01 MOVLW D'0' CALL SETCMP CALL WAIT01 MOVLW D'0' CALL SETCMP CALL WAIT01 MOVLW D'0' CALL SETCMP CALL WAIT01 MOVLW D'1' CALL SETCMP CALL WAIT01 MOVLW D'3' CALL SETCMP CALL WAIT01 MOVLW D'5' CALL SETCMP CALL WAIT01 GOTO MAIN ;************************************************************************************ ; Function Name : INITCMP ; Title : ; Input : ; Output : ;************************************************************************************ INITCMP ; ; (1)Initialized CMCON0 Register ( COMPARATOR CONTROL REGISTER 0 ) ; CMCON0[7] Unimplemented: Read as ‘0’ ; CMCON0[6] COUT: Comparator Output bit ; When CINV = 0: ; 1 = VIN+ > VIN- ; 0 = VIN+ < VIN- ; When CINV = 1: ; 1 = VIN+ < VIN- ; 0 = VIN+ > VIN- ; CMCON0[5] Unimplemented: Read as ‘0’ ; CMCON0[4] CINV: Comparator Output Inversion bit ; 1 = Output inverted ; 0 = Output not inverted ; CMCON0[3] CIS: Comparator Input Switch bit ; When CM<2:0> = 110 or 101: ; 1 = VIN- connects to CIN+ ; 0 = VIN- connects to CIN- ; CMCON0[2:0]: Comparator Mode bits ; See the Comparator modes and CM<2:0> bit settings. MOVLW B'01001101' MOVWF CMCON0 ; ; (2)Initialized VRCON Register ( VOLTAGE REFERENCE CONTROL REGISTER ) ; VRCON[7] VREN: CVREF Enable bit ; 1 = CVREF circuit powered on ; 0 = CVREF circuit powered down, no IDD drain and CVREF = VSS ; VRCON[6] Unimplemented: Read as ‘0’ ; VRCON[5] VRR: CVREF Range Selection bit ; 1 = Low range ; 0 = High range ; VRCON[4] Unimplemented: Read as ‘0’ ; VRCON[3-0] VR<3:0>: CVREF Value Selection 0 <= VR <3:0> <= 15 ; When VRR = 1: CVREF = (VR<3:0>/24) * VDD ; When VRR = 0: CVREF = VDD/4 + (VR<3:0>/32) * VDD BSF STATUS,RP0 ; BANK1を選択 MOVLW B'10000000' MOVWF VRCON BCF STATUS,RP0 ; BANK0を選択 RETURN ;************************************************************************************ ; Function Name : SETCMP ; Title : ; Input : W-reg ; Output : ;************************************************************************************ SETCMP ; ; (1)Initialized VRCON Register ( VOLTAGE REFERENCE CONTROL REGISTER ) ; VRCON[7] VREN: CVREF Enable bit ; 1 = CVREF circuit powered on ; 0 = CVREF circuit powered down, no IDD drain and CVREF = VSS ; VRCON[6] Unimplemented: Read as ‘0’ ; VRCON[5] VRR: CVREF Range Selection bit ; 1 = Low range ; 0 = High range ; VRCON[4] Unimplemented: Read as ‘0’ ; VRCON[3-0] VR<3:0>: CVREF Value Selection 0 <= VR <3:0> <= 15 ; When VRR = 1: CVREF = (VR<3:0>/24) * VDD ; When VRR = 0: CVREF = VDD/4 + (VR<3:0>/32) * VDD MOVWF TMP1 BSF TMP1,7 MOVFW TMP1 ; BSF STATUS,RP0 ; BANK1を選択 MOVWF VRCON BCF STATUS,RP0 ; BANK0を選択 RETURN ;************************************************************************************ ; Function Name : WAIT01 ; Title : Wait 0.001[S] ; Input : ; Output : ;************************************************************************************ WAIT01 ; ; 1.Set Register ; (1)T1CON Register ; T1CON[7] T1GINV: Timer1 Gate Invert bit(1) ; 1 = Timer1 gate is inverted ; 0 = Timer1 gate is not inverted ; T1CON[6] TMR1GE: Timer1 Gate Enable bit(2) ; If TMR1ON = 0: This bit is ignored. ; If TMR1ON = 1: ; 1 = Timer1 is on if Timer1 gate is not active ; 0 = Timer1 is on ; T1CON[5-4] T1CKPS<1:0>: Timer1 Input Clock Prescale Select bits ; 11 = 1:8 Prescale Value ; 10 = 1:4 Prescale Value ; 01 = 1:2 Prescale Value ; 00 = 1:1 Prescale Value ; T1CON[3] T1OSCEN: LP Oscillator Enable Control bit ; If INTOSC without CLKOUT oscillator is active: ; 1 = LP oscillator is enabled for Timer1 clock ; 0 = LP oscillator is off ; Else: This bit is ignored. ; T1CON[2] T1SYNC: Timer1 External Clock Input Synchronization Control bit ; TMR1CS = 1: ; 1 = Do not synchronize external clock input ; 0 = Synchronize external clock input ; TMR1CS = 0: ; This bit is ignored. Timer1 uses the internal clock. ; T1CON[1] TMR1CS: Timer1 Clock Source Select bit ; 1 = External clock from T1CKI pin (on the rising edge) ; 0 = Internal clock (FOSC/4) ; T1CON[0] TMR1ON: Timer1 On bit ; 1 = Enables Timer1 ; 0 = Stops Timer1 ; MOVLW B'00000101' MOVWF T1CON ; (2)Set TMR1 Value ; 8000000Hz(Int_OSC)/4/8(Prescale)/10(0.1[S]) => 0d25000(0x61A8) ; 0xFFFF(-)0xF424 => 0d40535(0x9E57) ; 8000000Hz(Int_OSC)/4/1(Prescale)/1000(0.001[S]) => 0d2000(0x7D0) ; 0xFFFF(-)0x07D0 => 0d63535(0xF82F) ; MOVLW H'F8' ; *TMR1 MOVWF TMR1H ; *TMR1 MOVLW H'2F' ; *TMR1 MOVWF TMR1L ; *TMR1 ; 2.Timer BCF PIR1,TMR1IF BTFSS PIR1,TMR1IF GOTO $-1 RETURN END