📄 2109asic.lst
字号:
00269
00270 ; 12 data save in 6 location,
00271 ; 2nd data in high byte, 1st data in lower byte
0000008E 00272 ANA_SEN_1 EQU 0X8E ; lf rt sensitivity
0000008F 00273 ANA_SEN_2 EQU 0X8F ; dn up sensitivity
00000090 00274 ANA_SEN_3 EQU 0X90 ; O trig sensitivity
00000091 00275 ANA_SEN_4 EQU 0X91 ; squ X sensitivity
00000092 00276 ANA_SEN_5 EQU 0X92 ; R1 L1 sensitivity
00000093 00277 ANA_SEN_6 EQU 0X93 ; L2 R2 sensitivity
00278
00000094 00279 SQUARE_VAL EQU 0X94
00000095 00280 X_VAL EQU 0X95
00000096 00281 O_VAL EQU 0X96
00000097 00282 TRI_VAL EQU 0X97
00000098 00283 R1_VAL EQU 0X98
00000099 00284 L1_VAL EQU 0X99
0000009A 00285 R2_VAL EQU 0X9A
0000009B 00286 L2_VAL EQU 0X9B
0000009C 00287 LEFT_VAL EQU 0X9C
0000009D 00288 DOWN_VAL EQU 0X9D
0000009E 00289 RIGHT_VAL EQU 0X9E
0000009F 00290 UP_VAL EQU 0X9F
000000A0 00291 E1_VAL EQU 0XA0
000000A1 00292 E2_VAL EQU 0XA1
000000A2 00293 LM_BUFFER EQU 0XA2
000000A3 00294 SM_BUFFER EQU 0XA3
000000A4 00295 SONYCMD0 EQU 0XA4
000000A5 00296 SONYCMD1 EQU 0XA5
000000A6 00297 LM_CMD EQU 0XA6
000000A7 00298 SM_CMD EQU 0XA7
00299
00300
00301 ; data buffer for send/receive for 4d
000000CE 00302 PRE_DATA1 EQU 0XCE
000000CF 00303 PRE_DATA2 EQU 0XCF
000000AA 00304 PRE_DATA3 EQU 0XAA
000000AB 00305 PRE_DATA4 EQU 0XAB
000000AC 00306 PRE_DATA5 EQU 0XAC
000000AD 00307 PRE_DATA6 EQU 0XAD
00308
000000AE 00309 FINADATA1 EQU 0XAE
000000AF 00310 FINADATA2 EQU 0XAF
000000B0 00311 FINADATA3 EQU 0XB0
000000B1 00312 FINADATA4 EQU 0XB1
000000B2 00313 FINADATA5 EQU 0XB2
000000B3 00314 FINADATA6 EQU 0XB3
000000B4 00315 FINADATA7 EQU 0XB4
000000B5 00316 FINADATA8 EQU 0XB5
000000B6 00317 FINADATA9 EQU 0XB6
000000B7 00318 FINADATA10 EQU 0XB7
000000B8 00319 FINADATA11 EQU 0XB8
000000B9 00320 FINADATA12 EQU 0XB9
000000BA 00321 FINADATA13 EQU 0XBA
000000BB 00322 FINADATA14 EQU 0XBB
000000BC 00323 FINADATA15 EQU 0XBC
000000BD 00324 FINADATA16 EQU 0XBD
000000BE 00325 FINADATA17 EQU 0XBE
000000BF 00326 FINADATA18 EQU 0XBF
000000C0 00327 M_RESET EQU 0XC0
000000C1 00328 FINA_INDEX EQU 0XC1
000000C2 00329 FORCE_TMP1 EQU 0XC2 ; tmp use in set force
000000C3 00330 FORCE_ID EQU 0XC3 ; store the tmp pbid
000000C4 00331 BEEP_CNT EQU 0XC4 ;BEEP COUNT, 0->BEEP ON, 1->BEEP OFF
000000C5 00332 PLED_CMD EQU 0XC5 ;LED CONTROL COMMAND
000000C6 00333 MEM_FREE EQU 0XC6 ;MEMORY FREE LEFT FOR DATA
000000C7 00334 DIVISOR EQU 0XC7
000000C8 00335 REM EQU 0XC8
000000C9 00336 MUL_CNT EQU 0XC9
000000CA 00337 PCLATH_SAVE2 EQU 0XCA
000000CB 00338 SEN_NULL EQU 0XCB
000000CC 00339 COUNT EQU 0XCC
000000CD 00340 DATA2_4F_T EQU 0XCD
00341
00342
000000D0 00343 BU_FORCE1 EQU 0XD0
000000D1 00344 BU_FORCE2 EQU 0XD1
000000D2 00345 BU_FORCE3 EQU 0XD2
000000D3 00346 BU_FORCE4 EQU 0XD3
00347
00348
00349 ;d4 to ff for program RAM area
00350
00351
00352
00353 #DEFINE DO_EMLOOP TEMP_BUF1 ;loop_count
00354 #DEFINE DO_MELOOP LOOP_COUNT
00355 #DEFINE BYTE_COUNT MOV_COUNT
00356 #DEFINE IN_BIT_LOC TEMP_BUF3
00357 #DEFINE BIT_COUNT MOV_COUNT
00358 #DEFINE NK_BUF EE_ADDR
00359 #DEFINE TOTAL_KEY PGM_BUF2
00360 #DEFINE IN_PBID PGM_BUF1
00361 #DEFINE ZERO_COUNT MOV_BUFFER
00362 #DEFINE SHIFT_BUF TEMP_BUF1
00363 #DEFINE TOTAL_BIT TEMP_BUF3
00364 #DEFINE BEEP_PUL LOOP_COUNT
00365
00366
00367
00368
00013
0000 00014 ORG 0X00
00015 ; clrf INTCON ; clear GIE
0000 0183 00016 CLRF STATUS ; page 0&1 for indirect access
00017 ; page 0 for direct access
0001 0182 00018 CLRF PCLATH
0002 2FE5 00019 GOTO START
00020
0004 00021 ORG 0X04
00022 INCLUDE "sio.asm" ; must be here
00001 ;=======================================================
00002 ; File Name : sio.asm 2109 ASIC
00003 ;
00004 ;Rev.: Date: Author: Reason:
00005 ;============================================================
00006
0004 00007 ORG 0X04
0004 00008 SI:
0004 00A8 00009 MOVWF W_SAVE ; save W
0005 0E03 00010 SWAPF STATUS,W
0006 0183 00011 CLRF STATUS ; to bank 0
0007 00A9 00012 MOVWF STATUS_SAVE ; save STATUS
00013
0008 0804 00014 MOVF FSR,W ; save FSR
0009 00AA 00015 MOVWF FSR_SAVE
00016
000A 0802 00017 MOVF PCLATH,W
000B 00AB 00018 MOVWF PCLATH_SAVE ; save PCLATH
000C 0182 00019 CLRF PCLATH
00020
000D 30FF 00021 MOVLW 0XFF
000E 00A3 00022 MOVWF SDO
000F 2416 00023 CALL WAIT_SPI_DATA
0010 1803 00024 BTFSC STATUS,C
0011 2C07 00025 GOTO END_SPI
00026
0012 3A01 00027 XORLW 0X01 ; 01h ?
0013 1D03 00028 BTFSS STATUS,Z
0014 2C07 00029 GOTO END_SPI ; No
00030
0015 1C46 00031 BTFSS F_NMODE
0016 2819 00032 GOTO BUTTON_REPORT_MODE ;41,79
0017 18C6 00033 BTFSC F_SETTING_MODE
0018 292A 00034 GOTO PARAMETER_SETTING_MODE ;43
00035
00036 ;---------------------------
00037 ; button report mode
00038 ;---------------------------
0019 00039 BUTTON_REPORT_MODE:
0019 0830 00040 MOVF PAD_ID,W ; Controller ID
00041
00042 SPI_TRANSMIT
001A 2413 M CALL SPI_COMM
001B 1803 M BTFSC STATUS,C
001C 2C07 M GOTO END_SPI
00043
001D 00B1 00044 MOVWF LAST_COMMAND ; save data
001E 3A42 00045 XORLW 0X42 ; 42h ?
001F 1D03 00046 BTFSS STATUS,Z
0020 28DF 00047 GOTO COMMAND_43 ; No
00048
0021 305A 00049 MOVLW 0X05A ; ack
0022 1C46 00050 BTFSS F_NMODE ; old mode ?
0023 2826 00051 GOTO REPORT_42_SEND_ACK ; Yes
00052
0024 1BC6 00053 BTFSC MODE_CH ; mode change ?
0025 0100 00054 CLRW ; Yes
00055
0026 00056 REPORT_42_SEND_ACK:
00057 SPI_TRANSMIT ;out 5A
0026 2413 M CALL SPI_COMM
0027 1803 M BTFSC STATUS,C
0028 2C07 M GOTO END_SPI
00058
0029 2443 00059 CALL ADD_NOP6
00060
002A 1683 00061 BSF STATUS,RP0
Message[302]: Argument out of range. Least significant bits used.
002B 082E 00062 MOVF FINADATA1,W ; 1st Pad data
002C 1283 00063 BCF STATUS,RP0
00064 SPI_TRANSMIT
002D 2413 M CALL SPI_COMM
002E 1803 M BTFSC STATUS,C
002F 2C07 M GOTO END_SPI
00065
0030 1683 00066 BSF STATUS,RP0
Message[302]: Argument out of range. Least significant bits used.
0031 00A4 00067 MOVWF SONYCMD0
Message[302]: Argument out of range. Least significant bits used.
0032 084E 00068 MOVF PRE_DATA1,W
0033 1283 00069 BCF STATUS,RP0
0034 241F 00070 CALL SAVE_MOTOR_DATA
00071
0035 1683 00072 BSF STATUS,RP0
Message[302]: Argument out of range. Least significant bits used.
0036 082F 00073 MOVF FINADATA2,W ; 2nd Pad data
0037 1283 00074 BCF STATUS,RP0
00075 SPI_TRANSMIT
0038 2413 M CALL SPI_COMM
0039 1803 M BTFSC STATUS,C
003A 2C07 M GOTO END_SPI
00076
003B 1683 00077 BSF STATUS,RP0
Message[302]: Argument out of range. Least significant bits used.
003C 00A5 00078 MOVWF SONYCMD1
Message[302]: Argument out of range. Least significant bits used.
003D 084F 00079 MOVF PRE_DATA2,W
003E 1283 00080 BCF STATUS,RP0
003F 241F 00081 CALL SAVE_MOTOR_DATA
00082
0040 0830 00083 MOVF PAD_ID,W
0041 390F 00084 ANDLW 0X0F
0042 3A01 00085 XORLW 0X01
0043 1903 00086 BTFSC STATUS,Z
0044 2C07 00087 GOTO END_SPI ; = x1 mode
00088
0045 1683 00089 BSF STATUS,RP0
Message[302]: Argument out of range. Least significant bits used.
0046 0830 00090 MOVF FINADATA3,W ; 3rd Pad data
0047 1283 00091 BCF STATUS,RP0
00092 SPI_TRANSMIT
0048 2413 M CALL SPI_COMM
0049 1803 M BTFSC STATUS,C
004A 2C07 M GOTO END_SPI
00093
004B 1683 00094 BSF STATUS,RP0
Message[302]: Argument out of range. Least significant bits used.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -