Skip to content

Instantly share code, notes, and snippets.

@ha2zakura

ha2zakura/main.asm

Created Nov 4, 2018
Embed
What would you like to do?
YMZ294のSPI化
LIST P=12f683
#INCLUDE <p12f683.inc>
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BOD_ON & _IESO_OFF& _PWRTE_ON & _INTOSCIO & _MCLRE_OFF
w_temp EQU 0x20 ; Wレジスタ保存用
status_temp EQU 0x21 ; STATUSレジスタ保存用
stand EQU 0x22 ; 立ち上がりフラグ
;**********************************************************************
ORG 0
goto INIT
;**********************************************************************
ORG 4
movwf w_temp ; Wレジスタを保存しておく
movf STATUS, w ; STATUSレジスタも保存しておく
movwf status_temp
bcf INTCON, GPIF ; 割り込みフラグを下す
bcf INTCON, GIE ; 割り込み無効化
btfss GPIO, 3 ; 立ち上がりか立ち下がりか
goto SSDOWN
SSUP btfsc stand, 0 ; 既にstandフラグが立っていたらスキップ
goto INTEND
bsf stand, 0 ; standフラグを立てる
movlw B'00100001' ; 74HC595をラッチ
movwf GPIO
movlw B'00100101' ; /WR,/CSをHIGHにして書き込み
movwf GPIO
movlw B'00100001' ; 元の状態に戻す
movwf GPIO
goto INTEND
SSDOWN movlw B'00000001' ; RCLKをLOWに
movwf GPIO
bcf stand, 0 ; standフラグを下す
INTEND movf status_temp, w ; STATUSを復帰
movwf STATUS
swapf w_temp, f
swapf w_temp, w ; Wレジスタを復帰
bsf INTCON, GIE ; 割り込み有効化
retfie ; 割り込みから復帰
;**********************************************************************
INIT
clrf GPIO
movlw 0x07
movwf CMCON0
bsf STATUS, RP0
clrf ANSEL
movlw B'00011010' ; GP1,3,4を入力に
movwf TRISIO
movlw 0x70
movwf OSCCON ; 内部CLOCK=8MHz
movlw B'00001000' ; GP3をピン割り込みに
movwf IOC
bcf STATUS, RP0
movlw 0x88 ; 割り込み有効化
movwf INTCON
movlw B'00100001' ; /IC,RCLKをHIGHに
movwf GPIO
clrf stand
;**********************************************************************
MAIN
goto MAIN
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment