#include P12F683.INC ; PIC12F683用のヘッダファイルの読み込み ;;;;; コンフィグレジスタの設定 __config _BOD_ON & _WDT_OFF & _MCLRE_OFF & _INTOSCIO ;;;;; ファイルレジスタの割り当て CT_DELAY1MS equ 0x20 CT_DELAY100MS equ 0x21 FG equ 0x22 ;;;;; 初期設定の始まり bcf STATUS, RP0 ; バンク0 clrf GPIO ; GPIO の出力が0になるよう設定 movlw 0x7 ; W ← 7 movwf CMCON0 ; CMCON0 ← W = 7 : コンパレータをオフ bsf STATUS, RP0 ; バンク1 clrf ANSEL ; ANSEL ← 0 : A/Dコンバータをオフ movlw B'111000' ; W ← '111000' movwf TRISIO ; TRISIO ← W : GPIO を出力に設定 bcf STATUS, RP0 ; バンク0 bcf GPIO,0 ;信号赤を消灯 bsf GPIO,1 ;信号緑を点灯 bcf FG,0 bcf FG,1 ;;;;; プログラムの主要部分 LOOP btfsc GPIO,4 ;S!をチェック goto STAGE6 btfsc GPIO,5 ;通電をチェック goto STAGE3 btfsc GPIO,3 ;S2をチェック goto STAGE4 btfsc FG,1 ;FGCをチェック goto STAGE5 bcf GPIO,0 ;信号赤を消灯 bsf GPIO,1 ;信号緑を点灯 goto STAGE1 STAGE1 bcf GPIO,2 goto STAGE2 STAGE2 goto LOOP STAGE3 bsf GPIO,0 ;信号赤を点灯 bcf GPIO,1 ;信号緑を消灯 goto STAGE1 STAGE4 bcf FG,0 bcf FG,1 goto STAGE3 STAGE5 bsf FG,0 call delay100ms bsf GPIO,0 ;信号赤を点灯 bsf GPIO,1 ;信号緑を点灯 goto STAGE1 STAGE6 btfsc GPIO,5 ;通電をチェック goto STAGE7 btfsc GPIO,3 ;S2をチェック goto STAGE8 btfsc FG,0 ;FGをチェック goto STAGE7 btfsc GPIO,4 bsf FG,1 bcf GPIO,0 ;信号赤を消灯 bsf GPIO,1 ;信号緑を点灯 goto STAGE1 STAGE7 bsf GPIO,0 ;信号赤を点灯 bcf GPIO,1 ;信号緑を消灯 bsf GPIO,2 goto LOOP STAGE8 bcf FG,0 bcf FG,1 goto STAGE7 ;;;;; delay10us サブルーチン delay10us goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 return ;;;;; delay1ms サブルーチン delay1ms movlw D'255' movwf CT_DELAY1MS delay1msL call delay10us decfsz CT_DELAY1MS, f goto delay1msL goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 return ;;;;; delay100ms サブルーチン delay100ms movlw D'250' movwf CT_DELAY100MS delay100msL call delay1ms decfsz CT_DELAY100MS, f goto delay100msL return ;;;;; プログラムの主要な部分の終わり end ; プログラム終了