;*************************************************************************** ; 629test3.asm GP0 0.5秒on、0.5秒offの繰り返しによる10MHz外部部発振の確認 ; および10MHz発振が維持できる最低電源電圧の確認 ;***************************************************************************
list P=PIC12F629 include "P12F629.INC"
; ----- コンフィギュレーションビットの設定 ----- __CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
count1 equ 20h ;12F629では20hから64バイトがユーザーエリア count2 equ 21h
org 0 ; ;割り込みを使わないので org 4 は記述せず
;----- 初期設定 ----- bsf STATUS, RP0 ;bank1へ 12C509Aとは記述が異なる ; call 3ffh ;内部発振周波数校正値の読み込み 外部発振では必要なし ; movwf OSCCAL ;OSCCALレジスタに校正値を保存 外部発振では必要なし movlw b'00001000' ;GP3のみ入力でGP<5:4,2:0>は出力 movwf TRISIO ;12C509Aとは記述が異なる movlw b'00000000' ; movwf OPTION_REG ;12C509Aとは記述が異なる bcf STATUS, RP0 ;bank0へ clrf GPIO movlw b'00000111' ;SET GP<2:0> TO DIGITAL IO movwf CMCON ;12C509Aにはなかった記述
; ----- メインループ ----- loop ;just 1sec loop bsf GPIO, 0 ;GP0 on call wait500ms bcf GPIO, 0 ;GP0 off call wait500ms goto loop
; ----- ウェイトルーチン ----- wait movlw d'248' movwf count1 wlp nop decfsz count1, f goto wlp goto $+1 return
wait500ms movlw d'249' movwf count2 wlp500 call wait call rtrn call wait call rtrn call wait call rtrn call wait call rtrn call wait call rtrn goto $+1 decfsz count2, f goto wlp500 call rtrn call rtrn call rtrn nop return ;12F629ではreturnが使える
rtrn return
; ----- 発振周波数校正値呼び出しルーチン ----- ; org 0x3ff ;外部発振では必要なし ; retlw 0x9c ;外部発振では必要なし
end