📄 kglcj.asm
字号:
;***********************************************************
LIST P=16F874
INCLUDE "P16F874.inc"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;自定义
JSSJ EQU 20H
W_TEMP EQU 21H
STATUS_TEMP EQU 22H
PCLATH_TEMP EQU 23H
TEMP0 EQU 24H
COUNT2 EQU 25H
COUNT1 EQU 26H
ADD0 EQU 27H
COUNT EQU 28H
DATAR_1 EQU 30H
DATAR_2 EQU 31H
SBID EQU 32H
KGL1 EQU 43H
KGL2 EQU 44H
DATAE_1 EQU 45H
DATAE_2 EQU 46H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;中断保护
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH MACRO
MOVWF W_TEMP
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_TEMP
MOVF PCLATH,W
MOVWF PCLATH_TEMP
CLRF PCLATH
ENDM
POP MACRO
CLRF STATUS
MOVF PCLATH_TEMP,W
MOVWF PCLATH
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
ENDM
ORG 00H
GOTO MAIN
ORG 04H
GOTO INTERUPT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;清寄存器
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN
BCF STATUS,RP0 ;BANK0
MOVLW 20H ;CLEAR 20H-7FH
MOVWF FSR
RAMCLEAR1
CLRF INDF
INCF FSR,F
MOVF FSR,W
SUBLW 50H
BTFSS STATUS,Z ;ADD=80H?
GOTO RAMCLEAR1
INITIA
BCF INTCON,GIE
BSF STATUS,RP0
MOVLW 0XFF
MOVWF TRISA
MOVWF TRISD
MOVLW 0X80
MOVWF TRISC
MOVLW 0X00
MOVWF TRISB
MOVLW 0X04
MOVWF TRISE
BCF STATUS,RP0
MOVLW 0XFF
MOVWF TMR1L
MOVLW 0XB7
MOVWF TMR1H
MOVLW 0X00
MOVWF T1CON
BSF STATUS,RP0
MOVLW D'3'
MOVWF SPBRG
MOVLW B'10100100'
MOVWF TXSTA
BCF PIE1,TXIE
BSF PIE1,RCIE
BCF STATUS,RP0
BSF RCSTA,SPEN
BCF RCSTA,RX9
BSF RCSTA,CREN
BSF STATUS,RP0
MOVLW 0X80
MOVWF ADCON1
BSF PIE1,0
BCF STATUS,RP0
BSF INTCON,GIE
BSF INTCON,PEIE
BSF T1CON,0
BSF PORTC,1
MOVLW 0X32
MOVWF COUNT2
MOVLW 0X01
MOVWF SBID
MOVLW 0X55
MOVWF DATAR_1
MOVWF DATAR_2
MOVLW 0XAA
MOVWF DATAE_1
MOVWF DATAE_2
BSF TEMP0,4
C1 BTFSS TEMP0,1
GOTO C2
BTFSS TEMP0,4
GOTO C2
CALL C_FS
C2 BSF PORTC,5
NOP
NOP
MOVF PORTD,W
MOVWF KGL1
BCF PORTC,5
NOP
NOP
MOVF PORTD,W
MOVWF KGL2
MOVLW 0X33
MOVWF FSR
MOVLW 0X01
MOVWF ADD0
CALL CJ_AD
MOVLW 0X09
MOVWF ADD0
CALL CJ_AD
MOVLW 0X11
MOVWF ADD0
CALL CJ_AD
MOVLW 0X19
MOVWF ADD0
CALL CJ_AD
MOVLW 0X21
MOVWF ADD0
CALL CJ_AD
MOVLW 0X29
MOVWF ADD0
CALL CJ_AD
MOVLW 0X31
MOVWF ADD0
CALL CJ_AD
MOVLW 0X39
MOVWF ADD0
CALL CJ_AD
GOTO C1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTERUPT
PUSH
BCF STATUS,RP0
BTFSS PIR1,TMR1IF
GOTO A0
BCF PIR1,TMR1IF
MOVLW 0XFF
MOVWF TMR1L
MOVLW 0XB7
MOVWF TMR1H
DECFSZ COUNT2,F
GOTO A0
MOVLW 0X32
MOVWF COUNT2
BTFSS PORTC,1
GOTO A1
BCF PORTC,1
GOTO A0
A1 BSF PORTC,1
A0 BTFSS PIR1,RCIF
GOTO SSS
BTFSS RCSTA,OERR
GOTO DSJ
BCF RCSTA,CREN
BSF RCSTA,CREN
DSJ MOVF RCREG,W
MOVWF JSSJ
SUBLW 0FFH
BTFSS STATUS,Z
GOTO SST
BTFSS TEMP0,2
GOTO SS2
BSF TEMP0,3
GOTO SS2
SST BTFSS TEMP0,3
GOTO SS1
MOVF JSSJ,W
SUBLW 01H
BTFSS STATUS,Z
GOTO SS1
BSF TEMP0,1
SS1 BCF TEMP0,2
BCF TEMP0,3
GOTO SSS
SS2 BSF TEMP0,2
GOTO SSS
SSS POP
RETFIE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
C_FS BCF TEMP0,4
BCF TEMP0,1
BCF STATUS,RP0
MOVLW 0X17
MOVWF COUNT
D0 MOVLW 0X30
MOVWF FSR
D2 BTFSS PIR1,4
GOTO D2
D1 MOVF INDF,W
MOVWF TXREG
INCF FSR,F
DECFSZ COUNT,F
GOTO D2
BSF TEMP0,4
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CJ_AD
MOVF ADD0,W
MOVWF ADCON0
D3 BTFSC ADCON0,2
GOTO D3
BCF PIR1,ADIF
MOVF ADRESH,W
MOVWF INDF
INCF FSR,F
BSF STATUS,RP0
MOVF ADRESL,W
BCF STATUS,RP0
MOVWF INDF
INCF FSR,F
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -