30年12月6日 |
ベースラインでもう1つ有効な機能にSLEEPからのピン変化ウェイクアップがあります。 入力ピンの変化でSLEEPからぬける機能です。 SLEEP命令の次はスリープ状態になります。 SLEEPする前にGPIOの入力ピンを読み込むことが必要です。 bcf GPIO,bcf GPIO,movwf GPIO命令でGPIOレジに入力ピン状態を保存する必要があり、 これをしないでSLEEPすると、直ぐにウェイクアップするそうです。 その後入力ピンの変化によりPCLは0XFFよりスタートします。 OPTIONだけはリセットされるので再設定が必要です。 ピンチェンジウエイクアップの検出はSTATUSのGPWUFが1の時です。 配線は GPIO2にLEDを接続、GPIO0に1MΩでプルアップ、10uFでプルダウン サンプルプログラム ;PIC10F200 4MHz ;Pin Change Weak Up TEST ;2018/12/6 #include "p10F200.inc" __CONFIG _WDTE_OFF & _CP_OFF & _MCLRE_ON ;***** 変数宣言 cblock 0x10 i buf endc ;***** プログラム RES_VECT CODE 0x0000; processor reset vector movwf OSCCAL; ***** 初期化 movlw b'01011111';GPWU有効 option movlw b'1000' tris GPIO btfsc STATUS,GPWUF goto wakw_up ; initl clrf GPIO clrf buf wake_up movlw b'100' xorwf buf,W movwf buf movwf GPIO movlw d'10' call delay movlw b'1001' ; GP0入力ピン tris GPIO bcf GPIO,1 ;GPUIOリード ダミー sleep nop goto $ delay movwf i delay1 nop decfsz i,F goto delay1 retlw 0 END |
|