📄 pic.txt
字号:
R2_STATE2 ;else if (com_state == 2)
MOVFW COM_STATE
SUBLW D'2'
SKPZ
GOTO R2_STATE3
MOVFW COM_BYTE ; if (com_byte == '_')
SUBLW '_'
SKPZ
GOTO R2_STATE2_ELSE
INCF COM_STATE,F ; com_state ++;
GOTO R2_END_NEW
R2_STATE2_ELSE ; else
CLRF COM_STATE ; com_state = 0;
GOTO R2_END_NEW
R2_STATE3 ;else if (com_state == 3)
MOVFW COM_STATE
SUBLW D'3'
SKPZ
GOTO R2_STATE4
MOVFW COM_BYTE ; tw_t_house = com_byte
MOVWF TW_T_HOUSE
INCF COM_STATE,F ; com_state ++;
GOTO R2_END_NEW
R2_STATE4 ;else if (com_state == 4)
MOVFW COM_STATE
SUBLW D'4'
SKPZ
GOTO R2_STATE5
MOVFW COM_BYTE ; tw_t_key = com_byte
MOVWF TW_T_KEY
INCF COM_STATE,F ; com_state ++;
GOTO R2_END_NEW
R2_STATE5 ;else
MOVFW COM_BYTE ; if (com_byte == 13)
SUBLW D'13'
SKPZ
GOTO R2_ABORT
CALL TW_SEND ; // send x-10
CALL R2_ECHO ; // send status
R2_ABORT
CLRF COM_STATE ; com_state = 0;
R2_END_NEW
RETURN
;This is called when an X10 command is received. House code will be
;in tw_house, and key code in tw_key.
TW_NEW
MOVFW TW_HOUSE ;tw_p_house = converted(tw_house);
CALL TW_TO_HOUSE
MOVWF TW_P_HOUSE
MOVFW TW_KEY ;tw_p_key = converted(tw_key);
CALL TW_TO_KEY
MOVWF TW_P_KEY
RETURN
R2_ECHO
MOVLW 'C' ;Format of reply:
CALL R2_SEND ;CX_E1<ret>
MOVLW 'X' ;^^^^^^
CALL R2_SEND ;||||||
MOVLW '_' ;|||||+- return character (0x13)
CALL R2_SEND ;||||+-- 2nd response character
MOVFW TW_P_HOUSE ;|||+--- 1st response character
CALL R2_SEND ;||+---- underscore
MOVFW TW_P_KEY ;|+----- from X-10 module
CALL R2_SEND ;+------ to Computer
MOVLW D'13'
CALL R2_SEND
MOVLW ' '
MOVWF TW_P_HOUSE ;//erase house and key code
MOVWF TW_P_KEY
RETURN
END
;***************************************
LIST
; P16CXX.INC Standard Header File, Version 2.04 Microchip Technology, Inc.
NOLIST
; This header file defines configurations, registers, and other useful bits of
; information for the 16CXX microcontrollers. These names are taken to match
; the data sheets as closely as possible. The microcontrollers included
; in this file are:
; 16C61
; 16C62
; 16C620
; 16C621
; 16C622
; 16C63
; 16C64
; 16C65
; 16C71
; 16C73
; 16C74
; 16C84
; There is one group of defines that is valid for all microcontrollers.
; Each microcontroller in this family also has its own section of special
; defines. Note that the processor must be selected before this file is
; included. The processor may be selected the following ways:
; 1. Command line switch:
; C:\ MPASM MYFILE.ASM /P16C71
; 2. LIST directive in the source file
; LIST P=16C71
; 3. Processor Type entry in the MPASM full-screen interface
;==========================================================================
;
; Generic Definitions
;
;==========================================================================
W EQU H'0000'
F EQU H'0001'
;----- Register Files------------------------------------------------------
INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
PORTA EQU H'0005'
PORTB EQU H'0006'
PCLATH EQU H'000A'
INTCON EQU H'000B'
OPTION_REG EQU H'0081'
TRISA EQU H'0085'
TRISB EQU H'0086'
;----- INTCON Bits (except ADC/Periph) ------------------------------------
GIE EQU H'0007'
T0IE EQU H'0005'
INTE EQU H'0004'
RBIE EQU H'0003'
T0IF EQU H'0002'
INTF EQU H'0001'
RBIF EQU H'0000'
;----- OPTION Bits --------------------------------------------------------
NOT_RBPU EQU H'0007'
INTEDG EQU H'0006'
T0CS EQU H'0005'
T0SE EQU H'0004'
PSA EQU H'0003'
PS2 EQU H'0002'
PS1 EQU H'0001'
PS0 EQU H'0000'
;----- STATUS Bits --------------------------------------------------------
IRP EQU H'0007'
RP1 EQU H'0006'
RP0 EQU H'0005'
NOT_TO EQU H'0004'
NOT_PD EQU H'0003'
Z EQU H'0002'
DC EQU H'0001'
C EQU H'0000'
;==========================================================================
;
; Processor-dependent Definitions
;
;==========================================================================
IFDEF __16C61
__MAXRAM H'0AF'
__BADRAM H'07'-H'09', H'030'-H'07F', H'087'-H'089'
#define __CONFIG_0
ENDIF
IFDEF __16C62
PORTC EQU H'0007'
__MAXRAM H'0BF'
__BADRAM H'08'-H'09',H'0D',H'018'-H'01F',H'08D',H'08F'-H'091',H'095'-H'09F'
#define __CONFIG_2
ENDIF
IFDEF __16C620
;----- Register Files --------------------------------------------------
PIR1 EQU H'000C'
CMCON EQU H'001F'
PIE1 EQU H'008C'
PCON EQU H'008E'
VRCON EQU H'009F'
__MAXRAM H'09F'
__BADRAM H'07'-H'09', H'0D'-H'01E', H'070'-H'07F', H'087'-H'089', H'08D', H'08F'-H'09E'
#define __CONFIG_6
ENDIF
IFDEF __16C621
;----- Register Files --------------------------------------------------
PIR1 EQU H'000C'
CMCON EQU H'001F'
PIE1 EQU H'008C'
PCON EQU H'008E'
VRCON EQU H'009F'
__MAXRAM H'09F'
__BADRAM H'07'-H'09', H'0D'-H'01E', H'70'-H'07F', H'087'-H'089', H'08D', H'08F'-H'09E'
#define __CONFIG_4
ENDIF
IFDEF __16C622
;----- Register Files --------------------------------------------------
PIR1 EQU H'000C'
CMCON EQU H'001F'
PIE1 EQU H'008C'
PCON EQU H'008E'
VRCON EQU H'009F'
__MAXRAM H'0BF'
__BADRAM H'07'-H'09', H'0D'-H'01E', H'087'-H'089', H'08D', H'08F'-H'09E'
#define __CONFIG_5
ENDIF
IFDEF __16C63
;----- Register Files --------------------------------------------------
PORTC EQU H'0007'
PIR1 EQU H'000C'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
SSPBUF EQU H'0013'
SSPCON EQU H'0014'
CCPR1L EQU H'0015'
CCPR1H EQU H'0016'
CCP1CON EQU H'0017'
TRISC EQU H'0087'
PIE1 EQU H'008C'
PCON EQU H'008E'
PR2 EQU H'0092'
SSPADD EQU H'0093'
SSPSTAT EQU H'0094'
__MAXRAM H'0BF'
__BADRAM H'08'-H'09', H'0D', H'18'-H'1F', H'88', H'89', H'8D', H'8F'-H'91', H'95'-H'9F'
#define __CONFIG_5
ENDIF
IFDEF __16C64
;----- Register Files --------------------------------------------------
PORTC EQU H'0007'
PORTD EQU H'0008'
PORTE EQU H'0009'
PIR1 EQU H'000C'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
SSPBUF EQU H'0013'
SSPCON EQU H'0014'
CCPR1L EQU H'0015'
CCPR1H EQU H'0016'
CCP1CON EQU H'0017'
TRISC EQU H'0087'
TRISD EQU H'0088'
TRISE EQU H'0089'
PIE1 EQU H'008C'
PCON EQU H'008E'
PR2 EQU H'0092'
SSPADD EQU H'0093'
SSPSTAT EQU H'0094'
__MAXRAM H'0BF'
__BADRAM H'0D', H'018'-H'01F', H'08D', H'08F'-H'091', H'095'-H'09F'
#define __CONFIG_2
ENDIF
IFDEF __16C65
;----- Register Files --------------------------------------------------
PORTC EQU H'0007'
PORTD EQU H'0008'
PORTE EQU H'0009'
PIR1 EQU H'000C'
PIR2 EQU H'000D'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
SSPBUF EQU H'0013'
SSPCON EQU H'0014'
CCPR1L EQU H'0015'
CCPR1H EQU H'0016'
CCP1CON EQU H'0017'
RCSTA EQU H'0018'
TXREG EQU H'0019'
RCREG EQU H'001A'
CCPR2L EQU H'001B'
CCPR2H EQU H'001C'
CCP2CON EQU H'001D'
TRISC EQU H'0087'
TRISD EQU H'0088'
TRISE EQU H'0089'
PIE1 EQU H'008C'
PIE2 EQU H'008D'
PCON EQU H'008E'
PR2 EQU H'0092'
SSPADD EQU H'0093'
SSPSTAT EQU H'0094'
TXSTA EQU H'0098'
SPBRG EQU H'0099'
__MAXRAM H'0FF'
__BADRAM H'1E'-H'1F',H'08F'-H'091', H'095'-H'097', H'09A'-H'09F'
#define __CONFIG_2
ENDIF
IFDEF __16C71
__MAXRAM H'0AF'
__BADRAM H'07', H'030'-H'07F', H'087'
#define __ADC_CONFIG_0
#define __CONFIG_0
ENDIF
IFDEF __16C73
;----- Register Files --------------------------------------------------
PORTC EQU H'0007'
PIR1 EQU H'000C'
PIR2 EQU H'000D'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
SSPBUF EQU H'0013'
SSPCON EQU H'0014'
CCPR1L EQU H'0015'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -