; ************************************************* ; ダミーLED点滅プログラム 2000/08/17 ; programed by N.Yagisawa ; ************************************************* ; ; ┏┳━┳┓ ; VDD ┫┗━┛┣ GND ; ┫ ┣ LED OUT(GP0) ; ┫ ┣ ; ┫ ┣ ; ┗━━━┛ TopView list p=12c509a,R=DEC include ; ************************************************* ; 書き込み時の設定 ; OSC=intRC ; MCLR=enable ; WDT=on ; ************************************************* CNT1 EQU H'07' CNT2 EQU H'08' ; ************************************************* ; メインルーチン ; ************************************************* ORG 0 MOVWF OSCCAL MOVLW B'11001111' ;ウェイクアップoff ;弱プルアップoff ;プリスケーラWDT ;プリスケーラ1:128 OPTION MAIN MOVLW B'00001000' ;0000 1000 TRIS GPIO ;GP3 =INPUT 他はOUTPUT LOOP MOVLW B'00001000' MOVWF GPIO ;出力をすべてLoにする CLRWDT ;******************* MOVLW B'10001111' ; WDT クリア OPTION ;******************* BSF GPIO,0 ;GP0=H LED ON CALL TIM100 ;WAIT 0.1 Sec BCF GPIO,0 ;GP0=L LED OFF CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec BSF GPIO,0 ;GP0=H LED ON CALL TIM100 ;WAIT 0.1 Sec BCF GPIO,0 ;GP0=L LED OFF CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec BSF GPIO,0 ;GP0=H LED ON CALL TIM100 ;WAIT 0.1 Sec BCF GPIO,0 ;GP0=L LED OFF CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec BSF GPIO,0 ;GP0=H LED ON CALL TIM100 ;WAIT 0.1 Sec BCF GPIO,0 ;GP0=L LED OFF CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec BSF GPIO,0 ;GP0=H LED ON CALL TIM100 ;WAIT 0.1 Sec BCF GPIO,0 ;GP0=L LED OFF CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec CALL TIM250 ;WAIT 0.25 Sec GOTO LOOP ;BACK TO LOOP ; ********************************************************** ; タイマサブルーチン ; ********************************************************** ; ********** 1msec タイマ(4MHz) ************************ TIM1 MOVLW 249 ;1 MOVWF CNT1 ;1+1=2 TIMLP1 NOP DECFSZ CNT1,F ;1+1+2=4 GOTO TIMLP1 ;2+4*249-1=997 RETLW 0 ;997+1=998*1usec=1msec ; ********** 100msec タイマ(4MHz) ************************ TIM100 MOVLW 100 ;1msec*100 MOVWF CNT2 TIMLP2 CALL TIM1 DECFSZ CNT2,F GOTO TIMLP2 RETLW 0 ; ********** 250msec タイマ(4MHz) ************************ TIM250 MOVLW 250 ;1msec*250 MOVWF CNT2 TIMLP3 CALL TIM1 DECFSZ CNT2,F GOTO TIMLP3 CLRWDT ;******************* MOVLW B'10001111' ; WDT クリア OPTION ;******************* RETLW 0 ; 残りのアドレスを埋める(暴走時WDTによりリセット) FILL(GOTO $),3FFH-$ END