;
;2024-10-17-pic16f84aからpic16f648に変更
;
;*********************************************
LIST P=PIC16F648A
INCLUDE P16F648A.INC
__CONFIG _CP_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _HS_OSC
; __CONFIG _XT_OSC & _WDT_OFF &
_PWRTE_ON & _CP_OFF & _BODEN_OFF & _LVP_OFF
; __CONFIG _CP_OFF & _CP_OFF & _BODEN_OFF &
_MCLRE_OFF & _WDT_OFF & _PWRTE_ON & ;_LVP_OFF &
_INTRC_OSC_NOCLKOUT
;i/o name
sv1b0 equ 0
sv2b1 equ 1
sv3b2 equ
2
sv4b3 equ 3
sv5b4 equ
4
sv6b5 equ 5
sv7b6 equ
6
sv8b7 equ 7
sv9a0 equ 0
mctta1 equ
1
tmouta2 equ 2
tmswina3 equ
3
swina4 equ 4
count1 equ 20H
;タイマー
count2 equ 21H
count3 equ 22H
org 0ch
;****************
;system
clear
;****************
ORG 0
GOTO START
ORG
4
GOTO START
START
BSF
STATUS,RP0
MOVLW 18H ;ra0,1,2=OUT
ra3,4=in = 00011000B
MOVWF TRISA
MOVLW 00H ;rb
all OUT = 00000000B
MOVWF TRISB
BCF
STATUS,RP0
MOVLW 07h
;b'00000111'
MOVWF
CMCON ;コンパレータOFF
CLRF
PORTA
CLRF PORTB
;*****************
mainn
call WAIT ;0.5sec sw double
check
btfsc
PORTA,swina4
goto
mainn
call
WAIT
btfsc
PORTA,swina4
goto mainn
call mon ;motor on
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call WAIT
call svvv1 ;sv on off cont
call
svvv2 ;sv on off cont
call svvv3 ;sv on off
cont
call
svvv4 ;sv on off cont
call svvv5 ;sv on off
cont
call svvv6 ;sv on off cont
call svvv7 ;sv on off
cont
call svvv8 ;sv on off cont
call svvv9 ;sv on off
cont
call moff ;motor off
goto mainn
;******************************************************
mon ;motor signal
bsf
PORTA,mctta1
RETURN
;******************************************************
svvv1
call
WAIT
call WAIT
bsf PORTB,sv1b0 ;sv1
call
WAIT
call WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp1
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv1a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv1a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv1a
jmp1
call
WAIT
bcf PORTB,sv1b0
;sv1
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv2
call
WAIT
call WAIT
bsf PORTB,sv2b1 ;sv2
call
WAIT
call WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp2
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv2a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv2a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv2a
jmp2
call
WAIT
bcf PORTB,sv2b1
;sv2
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv3
call
WAIT
call WAIT
bsf PORTB,sv3b2 ;sv3
call
WAIT
call WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp3
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv3a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv3a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv3a
jmp3
call
WAIT
bcf PORTB,sv3b2
;sv3
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv4
call
WAIT
call WAIT
bsf PORTB,sv4b3 ;sv4
call
WAIT
call WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp4
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv4a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv4a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv4a
jmp4
call
WAIT
bcf PORTB,sv4b3
;sv4
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv5
call
WAIT
call WAIT
bsf PORTB,sv5b4 ;sv5
call
WAIT
call WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp5
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv5a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv5a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv5a
jmp5
call
WAIT
bcf PORTB,sv5b4
;sv5
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv6
call
WAIT
call WAIT
bsf PORTB,sv6b5 ;sv6
call
WAIT
call
WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp6
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv6a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv6a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv6a
jmp6
call
WAIT
bcf PORTB,sv6b5
;sv6
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv7
call
WAIT
call WAIT
bsf PORTB,sv7b6 ;sv7
call
WAIT
call WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp7
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv7a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv7a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv7a
jmp7
call
WAIT
bcf PORTB,sv7b6
;sv7
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv8
call
WAIT
call WAIT
bsf PORTB,sv8b7 ;sv8
call
WAIT
call
WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp8
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv8a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv8a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv8a
jmp8
call
WAIT
bcf PORTB,sv8b7
;sv8
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
svvv9
call
WAIT
call WAIT
bsf PORTA,sv9a0 ;sv9
call
WAIT
call
WAIT
btfss PORTA,tmswina3 ;ts-off then
jmp
goto jmp9
call
WAIT
call WAIT
bsf PORTA,tmouta2
;tm-on
svvv9a
call
WAIT
btfsc
PORTA,tmswina3 ;sw double
check
goto
svvv9a
call
WAIT
btfsc
PORTA,tmswina3
goto
svvv9a
jmp9
call
WAIT
bcf PORTA,sv9a0
;sv9
call
WAIT
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
RETURN
;******************************************************
moff ;motor
off
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call
WAIT
bcf
PORTA,mctta1
call
WAIT
bcf PORTA,tmouta2
;tm-off
call
WAIT
call
WAIT
call
WAIT
call
WAIT
call
WAIT
RETURN
;******************************************************
;
タイマー
;******************************************************
tim10;
0.4msec
MOVLW 0F9H
MOVWF
count1
timlp1
NOP
DECFSZ
count1,F
GOTO
timlp1
RETURN
tim100;
100msec
MOVLW 0F9H
MOVWF
count2
timlp2
CALL
tim10
DECFSZ
count2,F
GOTO
timlp2
RETURN
WAIT ;
0.5sec
MOVLW
2
MOVWF
count3
timlp3
CALL
tim100
DECFSZ
count3,F
GOTO
timlp3
RETURN
END
TOPに戻る