📄 main.asm
字号:
LIST R=DEC,LINES=0,COLUMNS=120,NOWRAP,XREF=YES
PROCESSOR PIC16C74
INCLUDE "P16C74.INC"
INCLUDE "VAR.ASM"
INCLUDE "CONST.ASM"
ORG 0000H
GOTO START
ORG 0005H
START:
INCLUDE "S_REG.ASM"
INCLUDE "S_TIMING.ASM"
INCLUDE "RD_PSCTP.ASM"
SEND:
MOVF PSCTP_SET,W
MOVWF PSCTP_REQ
CLRF PROTOCOL_VER
;----------------------------------------------------------------------------
SENDA:
MOVLW D'5'
BSF STATUS,RP0
MOVWF PR2
BCF STATUS,RP0
CLRF PIR2 ;RESET CCP2 INTERRUPT FLAG BIT
CLRF COUNT_PADINT ;RESET COUNTER FOR LIGHT GUN INTERRUPT PIN
;----------------------------------------------------------------------------
MOVF PSCTP_REQ,W
SUBLW 0x03
BTFSS STATUS,C ;Load EEPROM Command ?
; GOTO
NOP
NOP
;----------------------------------------------------------------------------
MOVF PSCTP_REQ,W
XORLW 0x02
BTFSC STATUS,Z ;Request Protocol Ver =2.0
CALL PSCTP2_CMD ;Yes
MOVF PSCTP_REQ,W
XORLW 0x03
BTFSC STATUS,Z ;Request Protocol Ver =3.0
CALL PSCTP3_CMD ;Yes
;----------------------------------------------------------------------------
SENDB:
CALL CLR_DIS_BUF
MOVF PROTOCOL_VER,W ;BIT (2-0)
BTFSC RD_EEP_FB
IORLW B'00001000' ;BIT (3)
BTFSC EE_EXIST_FB
IORLW B'00010000' ;BIT (4)
CALL CONVERT
BSF STATUS,RP0
IORWF LED3,F
BCF STATUS,RP0
BSF PCLATH,3 ;PAGE 1
CALL DISPLAY_DATA
CLRF PCLATH ;PAGE 0
CALL TABLE_42
CALL COMMUNICATE
BTFSC DSR_TIMOUT_FB
GOTO SENDB
MOVLW 0x01
MOVWF PROTOCOL_VER ;DEFAULT PROTOCOL=1.0
;----------------------------------------------------------------------------
MOVLW NOF_CMD_ADDR
MOVWF FSR
MOVWF FSR_SAV
MOVF INDF,W
MOVWF NOF_CMD
SEND_CMD_LOOP:
INCF FSR_SAV,F
MOVF FSR_SAV,W
MOVWF FSR
MOVF INDF,W
ANDLW 0x1F ;Clear Bit(7-5) -> Command(40 -> 00 , 4F -> 0F)
MOVWF OFFSET
CALL CMD_LIST
DECFSZ NOF_CMD,F
GOTO SEND_CMD_LOOP
MOVF PROTOCOL_VER,W
XORLW 0x04
BTFSS STATUS,Z
GOTO SEND1
MOVF TERMINAL_ID,W
XORLW 0x82
BTFSC STATUS,Z ;41 MODE ?
GOTO SEND1 ;YES
MOVLW D'2'
BSF STATUS,RP0
MOVWF PR2
BCF STATUS,RP0
;----------------------------------------------------------------------------
SEND1: CLRWDT
CALL DTR_INT_TIME
SEND2: CALL TABLE_42
CALL COMMUNICATE
BTFSS DSR_TIMOUT_FB
GOTO SEND2_1
INCF COUNT_DSR,F
BTFSC COUNT_DSR_FB
GOTO SEND
GOTO SEND1
SEND2_1:
CLRWDT
CLRF COUNT_DSR
BTFSC UNINITIAL_FB ;UNINITIAL STATE ?
GOTO SENDA ;YES
CALL LSB_MSB
CALL CHK_MODE
CALL CHECK_KEY
;----------------------------------------------------------------------------
BTFSC CHG_PSCTP_FB ;Change Protocol ?
GOTO SENDA ;Yes
BTFSC RESET_PROG
GOTO START
;----------------------------------------------------------------------------
CALL LOAD_DIS_BUF
BSF PCLATH,3 ;PAGE 1
CALL DISPLAY_DATA
CLRF PCLATH ;PAGE 0
GOTO SEND2
INCLUDE "DIS_DATE.ASM"
INCLUDE "COMMAND.ASM"
INCLUDE "SPI.ASM"
INCLUDE "CHECKMOD.ASM"
INCLUDE "CHK_KEY.ASM"
INCLUDE "COVLSB.ASM"
INCLUDE "REV_BITS.ASM"
INCLUDE "DIS_BUF.ASM"
INCLUDE "DELAY.ASM"
INCLUDE "HEX_DEC.ASM"
INCLUDE "CMD_SEQ.ASM"
INCLUDE "WR_EEP.ASM"
ORG 0700H
INCLUDE "COVTABLE.ASM"
INCLUDE "TABLE.ASM"
ORG 0800H
INCLUDE "DISPLAY.ASM"
INCLUDE "EEPROM.ASM"
INCLUDE "EEP_DATA.ASM"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -