MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; list p=12f683,b=4,n=0 ; declare processor, tabs, and lines/page 00002 00003 ;********************************************************************** 00004 ; Copyright (C) 2005,2006,2007 Dwayne Forsyth 00005 ; 00006 ; This program is free software; you can redistribute it and/or 00007 ; modify it under the terms of the GNU General Public License 00008 ; as published by the Free Software Foundation; either version 2 00009 ; of the License, or (at your option) any later version. 00010 ; 00011 ; This program is distributed in the hope that it will be useful, 00012 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 ; GNU General Public License for more details. 00015 ; 00016 ; You should have received a copy of the GNU General Public License 00017 ; along with this program; if not, write to the 00018 ; 00019 ; Free Software Foundation, Inc. 00020 ; 51 Franklin Street, Fifth Floor 00021 ; Boston, MA 02110-1301, USA. 00022 ; 00023 ;********************************************************************** 00024 ; 00025 ; This is a merger of a number of Blinkie programs I created for different 00026 ; www.2DKits.com boards. The current goal of this code is to support all 00027 ; the 12F683 based boards, and then eventually adding of the 16F688 boards. 00028 ; 00029 ; 4RBG /w common anode (ufo and clear 5mm) .... Working 00030 ; 4RBG /w common Cathode (milk 5mm) ........... Working 00031 ; 6 BI /w bi-color LEDs. ...................... Working 00032 ; 6 BI /w mono LEDs. .......................... Working 00033 ; - want to add brightness patterns 00034 ; badge 6 bi-color plus 1 mono, no IR ......... Working 00035 ; - disable IR code? 00036 ; badge 7 LED /w mono LEDs, no IR ............. Working 00037 ; - want to update patterns 00038 ; - disable IR code? 00039 ; 19 LED Stick ................................ Working 00040 ; 00041 ; Dwayne Forsyth wrote the original code, Dwayne pulled a number of updates, 00042 ; code cleanup, and patterns from Dave Holle. 00043 ; 00044 ;********************************************************************** 00045 ; 00046 ; Filename: generic_683.asm 00047 ; Date: 04/05/2007 00048 ; 00049 ; Author: Dwayne Forsyth 00050 ; email: Dwayne@2DKits.com 00051 ; Company: www.2DKits.com 00052 ; 502 Rue Orleanais 00053 ; Deer Park, IL 60010 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00054 ; 00055 ; Help from: Dave Holle 00056 ; 7N204 Parkside Ave 00057 ; Itasca, IL 60143 00058 ; 00059 ;********************************************************************** 00060 00061 errorlevel -302 ; suppress banking messages 2007 30C4 00062 __CONFIG _CP_OFF & _CPD_OFF & _BOD_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _ FCMEN_OFF & _IESO_OFF 00063 00064 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00065 ; The labels following the directive are located in the respective .inc file. 00066 ; See respective data sheet for additional information on configuration word. 00067 00068 00069 ;********************************* 00070 ; 4RBG /w common anode (ufo and clear 5mm) 00071 ;********************************* 00072 ;#define RGB4 00073 ;#define PATTERN1 00074 ;#define PATTERN2 00075 ;#define PATTERN3 00076 ;#define PATTERN4 00077 ;#define DISPLAY_1BIT_C 00078 ;#define DISPLAY_2BIT_C 00079 ;#define ENABLE_IR 00080 ;#include ; processor specific variable definitions 00081 ; LIST P=PIC12F683 00082 ;NUM_TAB equ d'14' ;highest pattern table number 00083 00084 ;********************************* 00085 ; 4RBG /w common Cathode (milk 5mm) 00086 ;********************************* 00087 ;#define RGB4 00088 ;#define Common_Cathode 00089 ;#define PATTERN1 00090 ;#define PATTERN2 00091 ;#define PATTERN3 00092 ;#define PATTERN4 00093 ;#define DISPLAY_1BIT_C 00094 ;#define DISPLAY_2BIT_C 00095 ;#define ENABLE_IR 00096 ;#include ; processor specific variable definitions 00097 ; LIST P=PIC12F683 00098 ; NUM_TAB equ d'14' ;highest pattern table number 00099 00100 ;********************************* 00101 ; 6 BI /w bi-color LEDs. 00102 ;********************************* 00103 ;#define BI6 00104 ;#define BIN2LED 00105 ;#define PATTERN1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00106 ;#define PATTERN3 00107 ;#define DISPLAY_1BIT_C 00108 ;#define DISPLAY_2BIT_C 00109 ;#define ENABLE_IR 00110 ;#include ; processor specific variable definitions 00111 ; LIST P=PIC12F683 00112 ; NUM_TAB equ d'14' ;highest pattern table number 00113 00114 ;********************************* 00115 ; 6 BI /w mono LEDs. 00116 ;********************************* 00117 ;#define BI6 00118 ;#define MONO 00119 ;#define FLIPBYTE 00120 ;#define PATTERN5 00121 ;#define PATTERN11 00122 ;#defined DISPLAY_1BIT_A 00123 ;#define DISPLAY_2BIT_A 00124 ;#define ENABLE_IR 00125 ;#include ; processor specific variable definitions 00126 ; LIST P=PIC12F683 00127 ;NUM_TAB equ d'17' ;highest pattern table number 00128 00129 ;********************************* 00130 ; badge 6 bi-color plus 1 mono LEDs. 00131 ;********************************* 00132 ;#define BI6 00133 ;#define BIN2LED 00134 ;#define PATTERN10 00135 ;#define PATTERN3 00136 ;#define BADGE 00137 ;#define DISPLAY_1BIT_C 00138 ;#define DISPLAY_2BIT_C 00139 ;#include ; processor specific variable definitions 00140 ; LIST P=PIC12F683 00141 ;NUM_TAB equ d'17' ;highest pattern table number 00142 00143 ;********************************* 00144 ; badge 6 mono LEDs. 00145 ;********************************* 00146 ;#define BI6 00147 ;#define MONO 00148 ;#define BADGE 00149 ;#define PATTERN5 00150 ;#define PATTERN11 00151 ;#define FLIPBYTE 00152 ;#define DISPLAY_1BIT_A 00153 ;#define DISPLAY_2BIT_A 00154 ;#include ; processor specific variable definitions 00155 ; LIST P=PIC12F683 00156 ;NUM_TAB equ d'19' ;highest pattern table number 00157 00158 ;********************************* MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00159 ; 19 LED Stick 00160 ;********************************* 00161 #define S19 00162 #define PATTERN6 00163 #define PATTERN7 00164 #define PATTERN8 00165 #define FLIPBYTE 00166 #define DISPLAY_1BIT_D 00167 #define ENABLE_IR 00168 #include ; processor specific variable definitions 00001 LIST 00002 ; P12F683.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00339 LIST 00169 LIST P=PIC12F683 00000017 00170 NUM_TAB equ d'23' ;highest pattern table number 00171 00172 ;********************************* 00173 ; 19 LED Circle ;; Not Working!! 00174 ;********************************* 00175 ;#define C19 00176 ;#define PATTERN9 00177 ;#define FLIPBYTE 00178 ;#define DEDICATED_BUTTON 00179 ;#define DISPLAY_1BIT_B 00180 ;#define ENABLE_IR 00181 ;#include ; processor specific variable definitions 00182 ; LIST P=PIC16F688 00183 ;NUM_TAB equ d'21' ;highest pattern table number 00184 00185 00186 ;********************************************************************** 00187 ; Macros 00188 ;********************************************************************** 00189 ; bank select macros 00190 #define setbank0 bcf STATUS,RP0 ; select bank 0 00191 #define setbank1 bsf STATUS,RP0 ; select bank 1 00192 00000021 00193 mem = 21 00194 var macro name 00195 name equ mem 00196 mem = mem + 1 00197 if (mem > 0xef) 00198 error 'Too much var space used' 00199 endm 00200 00201 dupvar macro name, name2 00202 name equ name2 00203 endm 00204 000000F0 00205 mem2 = 0xF0 00206 var_all_bank macro name 00207 name equ mem2 00208 mem2 = mem2 + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00209 if (mem2 > 0xFf) 00210 error 'Too much var space used' 00211 endm 00212 00000001 00213 patternc = 1 00214 start_pattern macro typem, delaym 00215 table#v(patternc) 00216 if (typem == 1) || (typem == 6) 00217 dt typem,delaym,(endpat#v(patternc)-$)/3 ;tbltype1,speed,length 00218 else 00219 if (typem == 3) || (typem == 0x0b) 00220 dt typem,delaym,(endpat#v(patternc)-$)/2 ;tbltype1,speed,length 00221 else 00222 if (typem == 9) 00223 dt typem,delaym,(endpat#v(patternc)-$)/5 ;tbltype1,speed,length 00224 else 00225 if (typem == 0x0a) 00226 dt typem,delaym,(endpat#v(patternc)-$)/4 ;tbltype1,speed,length 00227 else 00228 dt typem,delaym,(endpat#v(patternc)-$-1) 00229 endif 00230 endif 00231 endif 00232 endif 00233 endm 00234 00235 end_pattern macro 00236 endpat#v(patternc) 00237 patternc = patternc + 1 00238 endm 00239 00240 mult_nop macro nup_count 00241 local i = nup_count 00242 while i > 3 00243 call Lcontinue ;4 cycles 00244 i -= 4 00245 endw 00246 while i > 1 00247 goto $+1 ;2 cycles 00248 i -= 2 00249 endw 00250 if i > 0 00251 nop ;1 cycle 00252 endif 00253 endm 00254 00255 LedOut macro word,reg_dir,port 00256 movfw TMR0 00257 subwf word,w 00258 btfss STATUS,C 00259 bsf reg_dir, port 00260 endm 00261 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00262 state_tbl macro num,zero,one,flag 00263 Lstate#v(num) 00264 if (flag == 0) 00265 clrf button 00266 movlw 0x30 00267 movwf butcount 00268 endif 00269 if (flag == 1) 00270 bsf button,0 00271 endif 00272 00273 btfsc IR_in,0 00274 goto Lstate#v(num)a 00275 00276 movlw zero 00277 movwf instate 00278 00279 goto Lcontinue 00280 00281 Lstate#v(num)a 00282 movlw one 00283 movwf instate 00284 00285 goto Lcontinue 00286 endm 00287 00288 state2_tbl macro num, name, offset 00289 Lstate#v(num) 00290 ; save the 1st half of word 00291 movf IR_in,w ; save 1st half 00292 movwf IR_lhalf 00293 incf instate,f 00294 00295 goto Lcontinue 00296 00297 Lstate#v(num+1) 00298 ; save the 2nd half of word 00299 ; check for protocal error should get 01 or 10 00300 movf IR_lhalf,w 00301 xorwf IR_in,w 00302 btfss STATUS,Z 00303 goto Lstate#v(num+1)a 00304 clrf instate ; error state = zero 00305 00306 goto Lcontinue 00307 00308 ; set the correct bit in output vars. 00309 Lstate#v(num+1)a 00310 btfsc IR_in,0 00311 bcf name,offset 00312 btfss IR_in,0 00313 bsf name,offset 00314 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00315 incf instate,f 00316 goto Lcontinue 00317 endm 00318 00319 entry macro a0,a1,a2 00320 dt a0,a1,a2 00321 endm 00322 00323 tbltype1 macro speed,length 00324 if (length > 2) && (length < d'256') 00325 dt 0x01,speed,length 00326 else 00327 error 'pattern length must be > 2 and < 256' 00328 endif 00329 endm 00330 00331 make_mtab macro numtab 00332 local i = 0 00333 while i <= numtab 00334 dt HIGH table#v(i), LOW table#v(i) 00335 i += 1 00336 endw 00337 endm 00338 00339 make_state_jump_table macro max_state 00340 local i = 0 00341 while i <= max_state 00342 dt HIGH Lstate#v(i), LOW Lstate#v(i) 00343 i += 1 00344 endw 00345 endm 00346 00347 00348 #ifdef __12F683 00000005 00349 PORTA EQU GPIO 00000085 00350 TRISA EQU TRISIO 00000007 00351 NOT_RAPU EQU NOT_GPPU 00352 #endif 00353 00354 00355 ; ++-------- A7 A6 unimplemented (0) 00356 ; || +------ A4 IR LED output (0) 00357 ; || |+----- A3 detector/button input (1) 00358 ; || || 00359 ; b'00101111' ;set LED matrix pins to input (tri-stated) 00360 ; | ||| 00361 ; +--+++-- LED matrix on A5 A2 A1 A0 (1) 00362 00363 ;********************************************************************** 0000 00364 ORG 0x000 ; processor reset vector 00365 ;********************************************************************** 0000 2CC0 00366 goto main ; go to beginning of program 00367 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00368 ;********************************************************************** 0004 00369 ORG 0x004 ; interrupt vector location 00370 ;********************************************************************** 00371 var_all_bank w_temp ; variable used for context saving 000000F0 M w_temp equ mem2 000000F1 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 00372 var_all_bank status_temp ; variable used for context saving 000000F1 M status_temp equ mem2 000000F2 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 00373 var_all_bank intcon_save ; variable used for context saving 000000F2 M intcon_save equ mem2 000000F3 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 00374 var_all_bank pclath_temp 000000F3 M pclath_temp equ mem2 000000F4 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 00375 00376 var nextf ; flags for timing loops 00000021 M nextf equ mem 00000022 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00377 ; bit 0 is one display cycle (890 usec) 00378 ; bit 1 is about 1 minute 00379 var dcycle ; stobe counter [0-3] 00000022 M dcycle equ mem 00000023 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00380 var count1 ; lower bit counter 00000023 M count1 equ mem 00000024 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00381 var count2 ; higher bit counter. 00000024 M count2 equ mem 00000025 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00382 00383 #ifdef __12F683 0004 00F0 00384 movwf w_temp ; copy W to TEMP register 0005 0E03 00385 swapf STATUS,w ; Swap status to be saved into W 0006 0183 00386 clrf STATUS ; Bank 0 0007 00F1 00387 movwf status_temp ; save off contents of PCLATH register 00388 #else MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00389 movwf w_temp ; save off current W register contents 00390 movf STATUS,w ; move status register into W register 00391 movwf status_temp ; save off contents of STATUS register 00392 movf PCLATH,w ; move pclath register into W register 00393 movwf pclath_temp ; save off contents of PCLATH register 00394 #endif 00395 ; 00396 ; set tick interupt to 889ms for IR RC5 protocal 1/2 digit. 00397 ; an Interupt every 889us /w 8mhz internal osc 00398 ; 00399 00400 #define TICK_VALUE D'35' 00401 0008 3023 00402 movlw TICK_VALUE 0009 0081 00403 movwf TMR0 00404 ; 00405 ; increment the stobe and duration counters 00406 ; 00407 000A 0AA2 00408 incf dcycle,f 00409 #ifdef S19 000B 3005 00410 movlw 0x05 00411 #else 00412 #ifdef C19 00413 movlw 0x07 00414 #else 00415 movlw 0x04 00416 #endif 00417 #endif 000C 0222 00418 subwf dcycle,w 000D 1803 00419 btfsc STATUS,C 000E 01A2 00420 clrf dcycle 00421 000F 1421 00422 bsf nextf,0 00423 0010 0FA3 00424 incfsz count1,f 0011 2815 00425 goto skip1 00426 0012 0FA4 00427 incfsz count2,f 0013 2815 00428 goto skip1 00429 0014 14A1 00430 bsf nextf,1 00431 0015 00432 skip1 00433 0015 0852 00434 movf scount,w ; F22 0016 3E00 00435 addlw 0 ; F23 0017 1903 00436 btfsc STATUS,Z ; F24 0018 2832 00437 goto send_nothing ; F25 00438 0019 1C43 00439 btfss tx_1,0 ; F26 001A 2830 00440 goto send_zero ; F27 00441 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00442 ;-------------------------------------------------------------------------------------- 001B 00443 send_one ; we are slaming the 36K IR siginal, its like a busy wait! 00444 ;-------------------------------------------------------------------------------------- 00445 var repeat 00000025 M repeat equ mem 00000026 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00446 00447 #ifdef S19 001B 1683 00448 setbank1 001C 3012 00449 movlw b'00010010' ;set A0 & A5 led to outpu 001D 0085 00450 movwf TRISA 001E 1283 00451 setbank0 00452 #define IRBIT 0 00453 #else 00454 #define IRBIT 4 00455 #endif 001F 1405 00456 bsf PORTA,IRBIT ; A01 00457 0020 2269 00458 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00459 ; mult_nop d'9' ; A17-A25 0021 3001 00460 movlw 01h 0022 2273 00461 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 0023 0000 00462 nop 00463 0024 301E 00464 movlw 0x1E ; C26 (23) 0025 00A5 00465 movwf repeat ; C27 0026 00466 repeat_loop 0026 1005 00467 bcf PORTA,IRBIT ; D01 00468 00469 ; mult_nop d'26' ; D02-D27 0027 3007 00470 movlw 07h 0028 2273 00471 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 00472 0029 1405 00473 bsf PORTA,IRBIT ; E01 (27) 00474 00475 ; mult_nop d'23' ; E02-E24 002A 3006 00476 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 002B 2273 00477 call qdelay 00478 002C 0BA5 00479 decfsz repeat,f ; E25 (24) 002D 2826 00480 goto repeat_loop ; E26/E27 00481 002E 1005 00482 bcf PORTA,IRBIT 002F 284A 00483 goto exit_tx 00484 00485 ;-------------------------------------------------------------------------------------- 0030 00486 send_zero ; we are going to release all the CPU time to the main line for display. 00487 ;-------------------------------------------------------------------------------------- 00488 0030 2269 00489 call get_next_tx_bit ; 2 + 11 cycles A04-A16 0031 2833 00490 goto drive_main_leds MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00491 00492 ;-------------------------------------------------------------------------------------- 0032 00493 send_nothing ; Drive the main LEDs. 00494 ;-------------------------------------------------------------------------------------- 00495 0032 225E 00496 call read_ir_in 00497 #ifdef DEDICATED_BUTTON 00498 call read_button_in 00499 #endif 00500 ; goto drive_main_leds 00501 00502 ;-------------------------------------------------------------------------------------- 0033 00503 drive_main_leds ; Drive the main LEDs. 00504 ;-------------------------------------------------------------------------------------- 00505 00506 var fcount 00000026 M fcount equ mem 00000027 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00507 #ifndef S19 00508 #ifndef C19 00509 var Ar_reg 00510 var Ag_reg 00511 var Ab_reg 00512 var Br_reg 00513 var Bg_reg 00514 var Bb_reg 00515 var Cr_reg 00516 var Cg_reg 00517 var Cb_reg 00518 var Dr_reg 00519 var Dg_reg 00520 var Db_reg 00521 #endif 00522 #endif 00523 #ifdef BADGE 00524 var Center_reg 00525 #endif 00526 #ifdef S19 00527 var A0_A1_reg 00000027 M A0_A1_reg equ mem 00000028 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00528 var A0_A2_reg 00000028 M A0_A2_reg equ mem 00000029 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00529 var A0_A4_reg 00000029 M A0_A4_reg equ mem 0000002A M mem = mem + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem > 0xef) M error 'Too much var space used' 00530 var A0_A5_reg 0000002A M A0_A5_reg equ mem 0000002B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00531 var A1_A0_reg 0000002B M A1_A0_reg equ mem 0000002C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00532 var A1_A2_reg 0000002C M A1_A2_reg equ mem 0000002D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00533 var A1_A4_reg 0000002D M A1_A4_reg equ mem 0000002E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00534 var A1_A5_reg 0000002E M A1_A5_reg equ mem 0000002F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00535 var A2_A0_reg 0000002F M A2_A0_reg equ mem 00000030 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00536 var A2_A1_reg 00000030 M A2_A1_reg equ mem 00000031 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00537 var A2_A4_reg 00000031 M A2_A4_reg equ mem 00000032 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00538 var A2_A5_reg 00000032 M A2_A5_reg equ mem 00000033 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00539 var A4_A0_reg 00000033 M A4_A0_reg equ mem 00000034 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00540 var A4_A1_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000034 M A4_A1_reg equ mem 00000035 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00541 var A4_A2_reg 00000035 M A4_A2_reg equ mem 00000036 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00542 var A4_A5_reg 00000036 M A4_A5_reg equ mem 00000037 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00543 var A5_A0_reg 00000037 M A5_A0_reg equ mem 00000038 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00544 var A5_A1_reg 00000038 M A5_A1_reg equ mem 00000039 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00545 var A5_A2_reg 00000039 M A5_A2_reg equ mem 0000003A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00546 var A5_A4_reg 0000003A M A5_A4_reg equ mem 0000003B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00547 #endif 00548 #ifdef C19 00549 var A0_A1_reg 00550 var A0_A2_reg 00551 var A0_C0_reg 00552 var A0_C1_reg 00553 var A0_C2_reg 00554 var A0_C4_reg 00555 var A1_A0_reg 00556 var A1_A2_reg 00557 var A1_C0_reg 00558 var A1_C1_reg 00559 var A1_C2_reg 00560 var A1_C4_reg 00561 var A2_A0_reg 00562 var A2_A1_reg 00563 var A2_C0_reg 00564 var A2_C1_reg 00565 var A2_C2_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00566 var A2_C4_reg 00567 var C0_A0_reg 00568 var C0_A1_reg 00569 var C0_A2_reg 00570 var C0_C1_reg 00571 var C0_C2_reg 00572 var C0_C4_reg 00573 ; var C1_A0_reg 00574 ; var C1_A1_reg 00575 ; var C1_A2_reg 00576 ; var C1_C0_reg 00577 ; var C1_C2_reg 00578 ; var C1_C4_reg 00579 ; var C2_A0_reg 00580 ; var C2_A1_reg 00581 ; var C2_A2_reg 00582 ; var C2_C0_reg 00583 ; var C2_C1_reg 00584 ; var C2_C4_reg 00585 ; var C4_A0_reg 00586 ; var C4_A1_reg 00587 ; var C4_A2_reg 00588 ; var C4_C0_reg 00589 ; var C4_C1_reg 00590 ; var C4_C2_reg 00591 #endif 00592 var_all_bank Ax_dir 000000F4 M Ax_dir equ mem2 000000F5 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 00593 #ifdef C19 00594 var_all_bank Cx_dir 00595 #endif 00596 00597 ; 00598 ; This is the number of times the display logic should cycle before exiting. It's been hand timed from t he 00599 ; start of the interupt to the end to be around 800usec. This leaves 90 usec for the main loop. 00600 ; The 19 stick has an extra display line strobe cycle. 00601 ; 00602 #ifdef S19 0033 3030 00603 movlw 0x30 00604 #else 00605 #ifdef C19 00606 movlw 0x21 00607 #else 00608 movlw 0x3a 00609 #endif 00610 #endif 00611 0034 00A6 00612 movwf fcount 00613 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0035 3008 00614 movlw b'00001000' ;set LED matrix pins to input (tri-stated) 0036 00F4 00615 movwf Ax_dir 00616 #ifdef C19 00617 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 00618 #endif 00619 0037 0822 00620 movf dcycle,w ; testing for 0 0038 1903 00621 btfsc STATUS,Z 0039 2051 00622 call display_cycle0 00623 003A 3001 00624 movlw 0x01 ; testing for 1 003B 0222 00625 subwf dcycle,w 003C 1903 00626 btfsc STATUS,Z 003D 205D 00627 call display_cycle1 00628 003E 3002 00629 movlw 0x02 ; testing for 2 003F 0222 00630 subwf dcycle,w 0040 1903 00631 btfsc STATUS,Z 0041 2069 00632 call display_cycle2 00633 0042 3003 00634 movlw 0x03 ; testing for 3 0043 0222 00635 subwf dcycle,w 0044 1903 00636 btfsc STATUS,Z 0045 2075 00637 call display_cycle3 00638 00639 #ifdef S19 0046 3004 00640 movlw 0x04 ; testing for 4 0047 0222 00641 subwf dcycle,w 0048 1903 00642 btfsc STATUS,Z 0049 2081 00643 call display_cycle4 00644 #endif 00645 #ifdef C19 00646 movlw 0x04 ; testing for 4 00647 subwf dcycle,w 00648 btfsc STATUS,Z 00649 call display_cycle4 00650 00651 movlw 0x05 ; testing for 5 00652 subwf dcycle,w 00653 btfsc STATUS,Z 00654 call display_cycle5 00655 00656 movlw 0x06 ; testing for 6 00657 subwf dcycle,w 00658 btfsc STATUS,Z 00659 call display_cycle6 00660 00661 #endif 00662 00663 ;-------------------------------------------------------------------------------------- 004A 00664 exit_tx 00665 ;-------------------------------------------------------------------------------------- 00666 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 004A 0185 00667 clrf PORTA ;DDF debug hack ; turn all the LED off 00668 00669 ; clear timer0 interupt 004B 110B 00670 bcf INTCON,T0IF 00671 00672 ; restore state, return form interupt 00673 004C 00674 exit_int 00675 #ifdef __12F683 004C 0E71 00676 swapf status_temp,w 004D 0083 00677 movwf STATUS 004E 0EF0 00678 swapf w_temp,f 004F 0E70 00679 swapf w_temp,w 00680 #else 00681 movf pclath_temp,w ; retrieve copy of PCLATH register 00682 movwf PCLATH ; restore pre-isr PCLATH register contents 00683 movf status_temp,w ; retrieve copy of STATUS register 00684 movwf STATUS ; restore pre-isr STATUS register contents 00685 swapf w_temp,f 00686 swapf w_temp,w ; restore pre-isr W register content 00687 #endif 0050 0009 00688 retfie ; return from interrupt 00689 00690 ;-------------------------------------------------------------------------------------- 0051 00691 display_cycle0 00692 ;-------------------------------------------------------------------------------------- 00693 0051 208D 00694 call strobe_a0 0052 0BA6 00695 decfsz fcount,f 0053 2851 00696 goto display_cycle0 00697 00698 0054 2100 00699 call get_state_tbl_hi_address 0055 208D 00700 call strobe_a0 0056 2106 00701 call get_state_tbl_low_address 0057 208D 00702 call strobe_a0 0058 2114 00703 call go_state_table 0059 208D 00704 call strobe_a0 005A 2262 00705 call set_max_state 005B 208D 00706 call strobe_a0 00707 005C 0008 00708 return 00709 00710 ;-------------------------------------------------------------------------------------- 005D 00711 display_cycle1 00712 ;-------------------------------------------------------------------------------------- 00713 005D 20A4 00714 call strobe_a1 005E 0BA6 00715 decfsz fcount,f 005F 285D 00716 goto display_cycle1 00717 0060 2100 00718 call get_state_tbl_hi_address 0061 20A4 00719 call strobe_a1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0062 2106 00720 call get_state_tbl_low_address 0063 20A4 00721 call strobe_a1 0064 2114 00722 call go_state_table 0065 20A4 00723 call strobe_a1 0066 2262 00724 call set_max_state 0067 20A4 00725 call strobe_a1 00726 0068 0008 00727 return 00728 00729 ;-------------------------------------------------------------------------------------- 0069 00730 display_cycle2 00731 ;-------------------------------------------------------------------------------------- 00732 0069 20BB 00733 call strobe_a2 006A 0BA6 00734 decfsz fcount,f 006B 2869 00735 goto display_cycle2 00736 006C 2100 00737 call get_state_tbl_hi_address 006D 20BB 00738 call strobe_a2 006E 2106 00739 call get_state_tbl_low_address 006F 20BB 00740 call strobe_a2 0070 2114 00741 call go_state_table 0071 20BB 00742 call strobe_a2 0072 2262 00743 call set_max_state 0073 20BB 00744 call strobe_a2 00745 0074 0008 00746 return 00747 00748 ;-------------------------------------------------------------------------------------- 0075 00749 display_cycle3 00750 ;-------------------------------------------------------------------------------------- 00751 00752 #ifndef C19 0075 20E9 00753 call strobe_a5 0076 0BA6 00754 decfsz fcount,f 0077 2875 00755 goto display_cycle3 00756 00757 #ifdef ENABLE_IR 0078 2100 00758 call get_state_tbl_hi_address 0079 20E9 00759 call strobe_a5 007A 2106 00760 call get_state_tbl_low_address 007B 20E9 00761 call strobe_a5 007C 2114 00762 call go_state_table 007D 20E9 00763 call strobe_a5 007E 2262 00764 call set_max_state 007F 20E9 00765 call strobe_a5 00766 0080 0008 00767 return 00768 #else 00769 call strobe_c0 00770 decfsz fcount,f 00771 goto display_cycle3 00772 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00773 call get_state_tbl_hi_address 00774 call strobe_c0 00775 call get_state_tbl_low_address 00776 call strobe_c0 00777 call go_state_table 00778 call strobe_c0 00779 call set_max_state 00780 call strobe_c0 00781 00782 return 00783 #endif 00784 00785 #ifdef S19 00786 ;-------------------------------------------------------------------------------------- 0081 00787 display_cycle4 00788 ;-------------------------------------------------------------------------------------- 00789 0081 20D2 00790 call strobe_a4 0082 0BA6 00791 decfsz fcount,f 0083 2881 00792 goto display_cycle4 00793 0084 2100 00794 call get_state_tbl_hi_address 0085 20D2 00795 call strobe_a4 0086 2106 00796 call get_state_tbl_low_address 0087 20D2 00797 call strobe_a4 0088 2114 00798 call go_state_table 0089 20D2 00799 call strobe_a4 008A 2262 00800 call set_max_state 008B 20D2 00801 call strobe_a4 00802 008C 0008 00803 return 00804 #endif 00805 #ifdef C19 00806 ;-------------------------------------------------------------------------------------- 00807 display_cycle4 00808 ;-------------------------------------------------------------------------------------- 00809 00810 call strobe_c1 00811 decfsz fcount,f 00812 goto display_cycle4 00813 00814 call get_state_tbl_hi_address 00815 call strobe_c1 00816 call get_state_tbl_low_address 00817 call strobe_c1 00818 call go_state_table 00819 call strobe_c1 00820 call set_max_state 00821 call strobe_c1 00822 00823 return 00824 00825 ;-------------------------------------------------------------------------------------- MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00826 display_cycle5 00827 ;-------------------------------------------------------------------------------------- 00828 00829 call strobe_c2 00830 decfsz fcount,f 00831 goto display_cycle5 00832 00833 call get_state_tbl_hi_address 00834 call strobe_c2 00835 call get_state_tbl_low_address 00836 call strobe_c2 00837 call go_state_table 00838 call strobe_c2 00839 call set_max_state 00840 call strobe_c2 00841 00842 return 00843 00844 ;-------------------------------------------------------------------------------------- 00845 display_cycle6 00846 ;-------------------------------------------------------------------------------------- 00847 00848 call strobe_c4 00849 decfsz fcount,f 00850 goto display_cycle6 00851 00852 call get_state_tbl_hi_address 00853 call strobe_c4 00854 call get_state_tbl_low_address 00855 call strobe_c4 00856 call go_state_table 00857 call strobe_c4 00858 call set_max_state 00859 call strobe_c4 00860 00861 return 00862 #endif 00863 00864 ;-------------------------------------------------------------------------------------- 008D 00865 strobe_a0 00866 ;-------------------------------------------------------------------------------------- 00867 #ifdef RGB4 00868 #ifdef Common_Cathode 00869 LedOut Dr_reg,Ax_dir,1 ;LED Dr A0-A1 00870 LedOut Dg_reg,Ax_dir,2 ;LED Dg A0-A2 00871 LedOut Db_reg,Ax_dir,5 ;LED Db A0-A5 00872 #else 00873 LedOut Ab_reg,Ax_dir,1 ;LED Ab A0-A1 00874 LedOut Bg_reg,Ax_dir,2 ;LED Bg A0-A2 00875 LedOut Cr_reg,Ax_dir,5 ;LED Cr A0-A5 00876 #endif 00877 #endif 00878 #ifdef BI6 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00879 LedOut Ab_reg,Ax_dir,1 ;LED Dr A0-A1 00880 LedOut Cr_reg,Ax_dir,2 ;LED Dg A0-A2 00881 LedOut Db_reg,Ax_dir,5 ;LED Db A0-A5 00882 #endif 00883 #ifdef S19 00884 LedOut A0_A1_reg,Ax_dir,1 ;LED A0-A1 008D 0801 M movfw TMR0 008E 0227 M subwf A0_A1_reg,w 008F 1C03 M btfss STATUS,C 0090 14F4 M bsf Ax_dir, 1 00885 LedOut A0_A2_reg,Ax_dir,2 ;LED A0-A2 0091 0801 M movfw TMR0 0092 0228 M subwf A0_A2_reg,w 0093 1C03 M btfss STATUS,C 0094 1574 M bsf Ax_dir, 2 00886 LedOut A0_A4_reg,Ax_dir,4 ;LED A0-A4 0095 0801 M movfw TMR0 0096 0229 M subwf A0_A4_reg,w 0097 1C03 M btfss STATUS,C 0098 1674 M bsf Ax_dir, 4 00887 LedOut A0_A5_reg,Ax_dir,5 ;LED A0-A5 0099 0801 M movfw TMR0 009A 022A M subwf A0_A5_reg,w 009B 1C03 M btfss STATUS,C 009C 16F4 M bsf Ax_dir, 5 00888 #endif 00889 00890 #ifdef C19 00891 LedOut A0_A1_reg,Ax_dir,1 ;LED A0-A1 00892 LedOut A0_A2_reg,Ax_dir,2 ;LED A0-A2 00893 LedOut A0_C0_reg,Cx_dir,0 ;LED A0-C0 00894 LedOut A0_C1_reg,Cx_dir,1 ;LED A0-C1 00895 LedOut A0_C2_reg,Cx_dir,2 ;LED A0-C2 00896 LedOut A0_C4_reg,Cx_dir,4 ;LED A0-C4 00897 #endif 00898 009D 1683 00899 setbank1 009E 0874 00900 movf Ax_dir,w ;set portA direction 009F 0085 00901 movwf TRISA 00902 #ifdef C19 00903 movf Cx_dir,w ;set portA direction 00904 movwf TRISC 00905 #endif 00A0 1283 00906 setbank0 00907 00A1 3001 00908 movlw b'00000001' 00A2 0085 00909 movwf PORTA 00910 #ifdef C19 00911 movlw b'00000000' 00912 movwf PORTC 00913 #endif 00A3 0008 00914 return 00915 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00916 ;-------------------------------------------------------------------------------------- 00A4 00917 strobe_a1 00918 ;-------------------------------------------------------------------------------------- 00919 #ifdef RGB4 00920 #ifdef Common_Cathode 00921 LedOut Ab_reg,Ax_dir,0 ;LED Ab A1-A0 00922 LedOut Ar_reg,Ax_dir,2 ;LED Ar A1-A2 00923 LedOut Ag_reg,Ax_dir,5 ;LED Ag A1-A5 00924 #else 00925 LedOut Dr_reg,Ax_dir,0 ;LED Dr A1-A0 00926 LedOut Bb_reg,Ax_dir,2 ;LED Bb A1-A2 00927 LedOut Cg_reg,Ax_dir,5 ;LED Cg A1-A5 00928 #endif 00929 #endif 00930 #ifdef BI6 00931 LedOut Bb_reg,Ax_dir,0 ;LED Dr A1-A0 00932 LedOut Ag_reg,Ax_dir,2 ;LED Dg A1-A2 00933 LedOut Ar_reg,Ax_dir,5 ;LED Db A1-A5 00934 #endif 00935 #ifdef S19 00936 LedOut A1_A0_reg,Ax_dir,0 ;LED A1-A0 00A4 0801 M movfw TMR0 00A5 022B M subwf A1_A0_reg,w 00A6 1C03 M btfss STATUS,C 00A7 1474 M bsf Ax_dir, 0 00937 LedOut A1_A2_reg,Ax_dir,2 ;LED A1-A2 00A8 0801 M movfw TMR0 00A9 022C M subwf A1_A2_reg,w 00AA 1C03 M btfss STATUS,C 00AB 1574 M bsf Ax_dir, 2 00938 LedOut A1_A4_reg,Ax_dir,4 ;LED A1-A4 00AC 0801 M movfw TMR0 00AD 022D M subwf A1_A4_reg,w 00AE 1C03 M btfss STATUS,C 00AF 1674 M bsf Ax_dir, 4 00939 LedOut A1_A5_reg,Ax_dir,5 ;LED A1-A5 00B0 0801 M movfw TMR0 00B1 022E M subwf A1_A5_reg,w 00B2 1C03 M btfss STATUS,C 00B3 16F4 M bsf Ax_dir, 5 00940 #endif 00941 #ifdef C19 00942 LedOut A1_A0_reg,Ax_dir,0 ;LED A1-A0 00943 LedOut A1_A2_reg,Ax_dir,2 ;LED A1-A2 00944 LedOut A1_C0_reg,Cx_dir,0 ;LED A1-C0 00945 LedOut A1_C1_reg,Cx_dir,1 ;LED A1-C1 00946 LedOut A1_C2_reg,Cx_dir,2 ;LED A1-C2 00947 LedOut A1_C4_reg,Cx_dir,4 ;LED A1-C4 00948 #endif 00949 00B4 1683 00950 setbank1 00B5 0874 00951 movf Ax_dir,w ;set portA direction 00B6 0085 00952 movwf TRISA MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00953 #ifdef C19 00954 movf Cx_dir,w ;set portA direction 00955 movwf TRISC 00956 #endif 00B7 1283 00957 setbank0 00B8 3002 00958 movlw b'00000010' 00B9 0085 00959 movwf PORTA 00960 #ifdef C19 00961 movlw b'00000000' 00962 movwf PORTC 00963 #endif 00BA 0008 00964 return 00965 00966 ;-------------------------------------------------------------------------------------- 00BB 00967 strobe_a2 00968 ;-------------------------------------------------------------------------------------- 00969 #ifdef RGB4 00970 #ifdef Common_Cathode 00971 LedOut Bg_reg,Ax_dir,0 ;LED Bg A2-A0 00972 LedOut Bb_reg,Ax_dir,1 ;LED Bb A2-A1 00973 LedOut Br_reg,Ax_dir,5 ;LED Br A2-A5 00974 #else 00975 LedOut Dg_reg,Ax_dir,0 ;LED Dg A2-A0 00976 LedOut Ar_reg,Ax_dir,1 ;LED Ar A2-A1 00977 LedOut Cb_reg,Ax_dir,5 ;LED Cb A2-A5 00978 #endif 00979 #endif 00980 #ifdef BI6 00981 LedOut Dr_reg,Ax_dir,0 ;LED Dr A2-A0 00982 LedOut Bg_reg,Ax_dir,1 ;LED Dg A2-A1 00983 LedOut Dg_reg,Ax_dir,5 ;LED Db A2-A5 00984 #endif 00985 #ifdef S19 00986 LedOut A2_A0_reg,Ax_dir,0 ;LED A2-A0 00BB 0801 M movfw TMR0 00BC 022F M subwf A2_A0_reg,w 00BD 1C03 M btfss STATUS,C 00BE 1474 M bsf Ax_dir, 0 00987 LedOut A2_A1_reg,Ax_dir,1 ;LED A2-A1 00BF 0801 M movfw TMR0 00C0 0230 M subwf A2_A1_reg,w 00C1 1C03 M btfss STATUS,C 00C2 14F4 M bsf Ax_dir, 1 00988 LedOut A2_A4_reg,Ax_dir,4 ;LED A2-A4 00C3 0801 M movfw TMR0 00C4 0231 M subwf A2_A4_reg,w 00C5 1C03 M btfss STATUS,C 00C6 1674 M bsf Ax_dir, 4 00989 LedOut A2_A5_reg,Ax_dir,5 ;LED A2-A5 00C7 0801 M movfw TMR0 00C8 0232 M subwf A2_A5_reg,w 00C9 1C03 M btfss STATUS,C 00CA 16F4 M bsf Ax_dir, 5 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00990 #endif 00991 #ifdef C19 00992 LedOut A2_A0_reg,Ax_dir,0 ;LED A2-A0 00993 LedOut A2_A1_reg,Ax_dir,1 ;LED A2-A1 00994 LedOut A2_C0_reg,Cx_dir,0 ;LED A2-C0 00995 LedOut A2_C1_reg,Cx_dir,1 ;LED A2-C1 00996 LedOut A2_C2_reg,Cx_dir,2 ;LED A2-C2 00997 LedOut A2_C4_reg,Cx_dir,4 ;LED A2-C4 00998 #endif 00999 01000 00CB 1683 01001 setbank1 00CC 0874 01002 movf Ax_dir,w ;set portA direction 00CD 0085 01003 movwf TRISA 01004 #ifdef C19 01005 movf Cx_dir,w ;set portA direction 01006 movwf TRISC 01007 #endif 00CE 1283 01008 setbank0 01009 00CF 3004 01010 movlw b'00000100' 00D0 0085 01011 movwf PORTA 01012 #ifdef C19 01013 movlw b'00000000' 01014 movwf PORTC 01015 #endif 00D1 0008 01016 return 01017 01018 ;-------------------------------------------------------------------------------------- 00D2 01019 strobe_c0 01020 ;-------------------------------------------------------------------------------------- 01021 01022 #ifdef C19 01023 LedOut C0_A0_reg,Ax_dir,0 ;LED C0-A0 01024 LedOut C0_A1_reg,Ax_dir,1 ;LED C0-A1 01025 LedOut C0_A2_reg,Ax_dir,2 ;LED C0-A4 01026 LedOut C0_C1_reg,Cx_dir,1 ;LED C0-C1 01027 LedOut C0_C2_reg,Cx_dir,2 ;LED C0-C2 01028 LedOut C0_C4_reg,Cx_dir,4 ;LED C0-C4 01029 01030 setbank1 01031 movf Ax_dir,w ;set portA direction 01032 movwf TRISA 01033 movf Cx_dir,w ;set portA direction 01034 movwf TRISC 01035 setbank0 01036 01037 movlw b'00000000' 01038 movwf PORTA 01039 01040 movlw b'00000001' 01041 movwf PORTC 01042 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01043 return 01044 #endif 01045 ;-------------------------------------------------------------------------------------- 00D2 01046 strobe_c1 01047 ;-------------------------------------------------------------------------------------- 01048 01049 #ifdef C19 01050 #ifdef DDF 01051 LedOut C1_A0_reg,Ax_dir,0 ;LED C1-A0 01052 LedOut C1_A1_reg,Ax_dir,1 ;LED C1-A1 01053 LedOut C1_A2_reg,Ax_dir,2 ;LED C1-A4 01054 LedOut C1_C0_reg,Cx_dir,0 ;LED C1-C0 01055 LedOut C1_C2_reg,Cx_dir,2 ;LED C1-C2 01056 LedOut C1_C4_reg,Cx_dir,4 ;LED C1-C4 01057 01058 setbank1 01059 movf Ax_dir,w ;set portA direction 01060 movwf TRISA 01061 movf Cx_dir,w ;set portA direction 01062 movwf TRISC 01063 setbank0 01064 01065 movlw b'00000000' 01066 movwf PORTA 01067 01068 movlw b'00000010' 01069 movwf PORTC 01070 01071 return 01072 #endif 01073 #endif 01074 01075 ;-------------------------------------------------------------------------------------- 00D2 01076 strobe_c2 01077 ;-------------------------------------------------------------------------------------- 01078 01079 #ifdef C19 01080 #ifdef DDF 01081 LedOut C2_A0_reg,Ax_dir,0 ;LED C2-A0 01082 LedOut C2_A1_reg,Ax_dir,1 ;LED C2-A1 01083 LedOut C2_A2_reg,Ax_dir,2 ;LED C2-A4 01084 LedOut C2_C0_reg,Cx_dir,0 ;LED C2-C0 01085 LedOut C2_C1_reg,Cx_dir,1 ;LED C2-C1 01086 LedOut C2_C4_reg,Cx_dir,4 ;LED C2-C4 01087 01088 setbank1 01089 movf Ax_dir,w ;set portA direction 01090 movwf TRISA 01091 movf Cx_dir,w ;set portA direction 01092 movwf TRISC 01093 setbank0 01094 01095 movlw b'00000000' MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01096 movwf PORTA 01097 01098 movlw b'00000100' 01099 movwf PORTC 01100 01101 return 01102 #endif 01103 #endif 01104 01105 ;-------------------------------------------------------------------------------------- 00D2 01106 strobe_c4 01107 ;-------------------------------------------------------------------------------------- 01108 01109 #ifdef C19 01110 #ifdef DDF 01111 LedOut C4_A0_reg,Ax_dir,0 ;LED C4-A0 01112 LedOut C4_A1_reg,Ax_dir,1 ;LED C4-A1 01113 LedOut C4_A2_reg,Ax_dir,2 ;LED C4-A4 01114 LedOut C4_C0_reg,Cx_dir,0 ;LED C4-C0 01115 LedOut C4_C1_reg,Cx_dir,1 ;LED C4-C1 01116 LedOut C4_C2_reg,Cx_dir,2 ;LED C4-C2 01117 01118 setbank1 01119 movf Ax_dir,w ;set portA direction 01120 movwf TRISA 01121 movf Cx_dir,w ;set portA direction 01122 movwf TRISC 01123 setbank0 01124 01125 movlw b'00000000' 01126 movwf PORTA 01127 01128 movlw b'00010000' 01129 movwf PORTC 01130 01131 return 01132 #endif 01133 #endif 01134 01135 #ifdef S19 01136 ;-------------------------------------------------------------------------------------- 00D2 01137 strobe_a4 01138 ;-------------------------------------------------------------------------------------- 01139 01140 LedOut A4_A0_reg,Ax_dir,0 ;LED A4-A0 00D2 0801 M movfw TMR0 00D3 0233 M subwf A4_A0_reg,w 00D4 1C03 M btfss STATUS,C 00D5 1474 M bsf Ax_dir, 0 01141 LedOut A4_A1_reg,Ax_dir,1 ;LED A4-A1 00D6 0801 M movfw TMR0 00D7 0234 M subwf A4_A1_reg,w 00D8 1C03 M btfss STATUS,C MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00D9 14F4 M bsf Ax_dir, 1 01142 LedOut A4_A2_reg,Ax_dir,2 ;LED A4-A2 00DA 0801 M movfw TMR0 00DB 0235 M subwf A4_A2_reg,w 00DC 1C03 M btfss STATUS,C 00DD 1574 M bsf Ax_dir, 2 01143 LedOut A4_A5_reg,Ax_dir,5 ;LED A4-A5 00DE 0801 M movfw TMR0 00DF 0236 M subwf A4_A5_reg,w 00E0 1C03 M btfss STATUS,C 00E1 16F4 M bsf Ax_dir, 5 01144 00E2 1683 01145 setbank1 00E3 0874 01146 movf Ax_dir,w ;set portA direction 00E4 0085 01147 movwf TRISA 00E5 1283 01148 setbank0 01149 00E6 3010 01150 movlw b'00010000' 00E7 0085 01151 movwf PORTA 01152 00E8 0008 01153 return 01154 #endif 01155 01156 ;-------------------------------------------------------------------------------------- 00E9 01157 strobe_a5 01158 ;-------------------------------------------------------------------------------------- 01159 #ifdef RGB4 01160 #ifdef Common_Cathode 01161 LedOut Cr_reg,Ax_dir,0 ;LED Cr A5-A0 01162 LedOut Cg_reg,Ax_dir,1 ;LED Cg A5-A1 01163 LedOut Cb_reg,Ax_dir,2 ;LED Cb A5-A2 01164 #else 01165 LedOut Db_reg,Ax_dir,0 ;LED Db A5-A0 01166 LedOut Ag_reg,Ax_dir,1 ;LED Ag A5-A1 01167 LedOut Br_reg,Ax_dir,2 ;LED Br A5-A2 01168 #endif 01169 #endif 01170 #ifdef BI6 01171 LedOut Cb_reg,Ax_dir,0 ;LED Dr A5-A0 01172 LedOut Cg_reg,Ax_dir,2 ;LED Db A5-A2 01173 LedOut Br_reg,Ax_dir,1 ;LED Dg A5-A1 01174 #endif 01175 #ifdef S19 01176 LedOut A5_A0_reg,Ax_dir,0 ;LED A5-A0 00E9 0801 M movfw TMR0 00EA 0237 M subwf A5_A0_reg,w 00EB 1C03 M btfss STATUS,C 00EC 1474 M bsf Ax_dir, 0 01177 LedOut A5_A1_reg,Ax_dir,1 ;LED A5-A1 00ED 0801 M movfw TMR0 00EE 0238 M subwf A5_A1_reg,w 00EF 1C03 M btfss STATUS,C 00F0 14F4 M bsf Ax_dir, 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01178 LedOut A5_A2_reg,Ax_dir,2 ;LED A5-A2 00F1 0801 M movfw TMR0 00F2 0239 M subwf A5_A2_reg,w 00F3 1C03 M btfss STATUS,C 00F4 1574 M bsf Ax_dir, 2 01179 LedOut A5_A4_reg,Ax_dir,4 ;LED A5-A4 00F5 0801 M movfw TMR0 00F6 023A M subwf A5_A4_reg,w 00F7 1C03 M btfss STATUS,C 00F8 1674 M bsf Ax_dir, 4 01180 #endif 01181 00F9 1683 01182 setbank1 00FA 0874 01183 movf Ax_dir,w ;set portA direction 00FB 0085 01184 movwf TRISA 00FC 1283 01185 setbank0 01186 01187 #ifdef BADGE 01188 var a_out 01189 01190 movlw b'00110000' ; Badge Center LED A4-Ground 01191 movwf a_out 01192 movfw TMR0 01193 subwf Center_reg,w 01194 btfss STATUS,C 01195 bcf a_out,4 01196 movfw a_out 01197 movwf PORTA 01198 #else 00FD 3020 01199 movlw b'00100000' 00FE 0085 01200 movwf PORTA 01201 #endif 01202 00FF 0008 01203 return 01204 01205 ;************************************************************************************** 01206 ; 01207 ; State Machine 01208 ; 01209 ;************************************************************************************** 01210 01211 var instate 0000003B M instate equ mem 0000003C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01212 var max_instate 0000003C M max_instate equ mem 0000003D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01213 var IR_in 0000003D M IR_in equ mem MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000003E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01214 var command 0000003E M command equ mem 0000003F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01215 var address 0000003F M address equ mem 00000040 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01216 var toggle 00000040 M toggle equ mem 00000041 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01217 var IR_lhalf 00000041 M IR_lhalf equ mem 00000042 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01218 var button 00000042 M button equ mem 00000043 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01219 var tx_1 00000043 M tx_1 equ mem 00000044 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01220 var pindex2 00000044 M pindex2 equ mem 00000045 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01221 var IR_in_good 00000045 M IR_in_good equ mem 00000046 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01222 var butcount 00000046 M butcount equ mem 00000047 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01223 01224 ;-------------------------------------------------------------------------------------- 0100 01225 get_state_tbl_hi_address ; 17 cycles 01226 ;-------------------------------------------------------------------------------------- 01227 var tbl2_hi MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000047 M tbl2_hi equ mem 00000048 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01228 0100 1003 01229 bcf STATUS,0 ; clear carry flag ; 1 0101 0D3B 01230 rlf instate,w ; entry = table * 2 ; 2 0102 00C4 01231 movwf pindex2 ; 3 0103 210D 01232 call table_lookup2 ; 14 (9+2) 0104 00C7 01233 movwf tbl2_hi ; 15 0105 0008 01234 return ; 16/17 01235 01236 ;-------------------------------------------------------------------------------------- 0106 01237 get_state_tbl_low_address ; 18 cycles 01238 ;-------------------------------------------------------------------------------------- 01239 var tbl2_low 00000048 M tbl2_low equ mem 00000049 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01240 0106 1003 01241 bcf STATUS,0 ; clear carry flag (just in case) ; 1 0107 0D3B 01242 rlf instate,w ; entry = table * 2 + 1 ; 2 0108 3E01 01243 addlw 1 ; 3 0109 00C4 01244 movwf pindex2 ; 4 010A 210D 01245 call table_lookup2 ; 15 (9+2) 010B 00C8 01246 movwf tbl2_low ; 16 010C 0008 01247 return ; 17/18 01248 01249 ;********************************************************************** 010D 01250 table_lookup2 ; 9 cycles 01251 ;********************************************************************** 010D 3001 01252 movlw HIGH state_jump_table ; 1 010E 008A 01253 movwf PCLATH ; 2 010F 0844 01254 movf pindex2,w ; 3 0110 3E18 01255 addlw LOW state_jump_table ; 4 0111 1803 01256 btfsc STATUS,0 ; check carry flag ; 5 0112 0A8A 01257 incf PCLATH,f ; 6 0113 0082 01258 movwf PCL ; 7 + 2 01259 01260 ;********************************************************************** 0114 01261 go_state_table ; 18 cycles 01262 ;********************************************************************** 0114 0847 01263 movf tbl2_hi,w ; 1 0115 008A 01264 movwf PCLATH ; 2 0116 0848 01265 movf tbl2_low,w ; 3 0117 0082 01266 movwf PCL ; 4 01267 01268 ;********************************************************************** 0118 01269 state_jump_table 01270 ;********************************************************************** 01271 make_state_jump_table d'31' 0000 M local i = 0 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE M while i <= d'31' 0118 3401 3458 M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 011A 3401 3463 M dt HIGH Lstate1, LOW Lstate1 00000002 M i += 1 011C 3401 346B M dt HIGH Lstate2, LOW Lstate2 00000003 M i += 1 011E 3401 3473 M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 0120 3401 347B M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 0122 3401 3483 M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 0124 3401 348B M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 0126 3401 3497 M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 0128 3401 349B M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 012A 3401 34A7 M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 012C 3401 34AB M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 012E 3401 34B7 M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 0130 3401 34BB M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 0132 3401 34C7 M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 0134 3401 34CB M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 0136 3401 34D7 M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 0138 3401 34DB M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 013A 3401 34E7 M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 013C 3401 34EB M dt HIGH Lstate18, LOW Lstate18 00000013 M i += 1 013E 3401 34F7 M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 0140 3401 34FB M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 0142 3402 3407 M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 0144 3402 340B M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 0146 3402 3417 M dt HIGH Lstate23, LOW Lstate23 00000018 M i += 1 0148 3402 341B M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 014A 3402 3427 M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 014C 3402 342B M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 014E 3402 3437 M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 0150 3402 343B M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 0152 3402 3447 M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 0154 3402 344B M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 0156 3402 3457 M dt HIGH Lstate31, LOW Lstate31 00000020 M i += 1 M endw 01272 01273 state_tbl 0, 6, 1, 0 0158 M Lstate0 M if (0 == 0) 0158 01C2 M clrf button 0159 3030 M movlw 0x30 015A 00C6 M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M 015B 183D M btfsc IR_in,0 015C 2960 M goto Lstate0a M 015D 3006 M movlw 6 015E 00BB M movwf instate M 015F 2A59 M goto Lcontinue M 0160 M Lstate0a 0160 3001 M movlw 1 0161 00BB M movwf instate M 0162 2A59 M goto Lcontinue 01274 state_tbl 1, 0, 2, -1 0163 M Lstate1 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M 0163 183D M btfsc IR_in,0 0164 2968 M goto Lstate1a M 0165 3000 M movlw 0 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0166 00BB M movwf instate M 0167 2A59 M goto Lcontinue M 0168 M Lstate1a 0168 3002 M movlw 2 0169 00BB M movwf instate M 016A 2A59 M goto Lcontinue 01275 state_tbl 2, 0, 3, -1 016B M Lstate2 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M 016B 183D M btfsc IR_in,0 016C 2970 M goto Lstate2a M 016D 3000 M movlw 0 016E 00BB M movwf instate M 016F 2A59 M goto Lcontinue M 0170 M Lstate2a 0170 3003 M movlw 3 0171 00BB M movwf instate M 0172 2A59 M goto Lcontinue 01276 state_tbl 3, 4, 3, -1 0173 M Lstate3 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M 0173 183D M btfsc IR_in,0 0174 2978 M goto Lstate3a M 0175 3004 M movlw 4 0176 00BB M movwf instate M 0177 2A59 M goto Lcontinue M 0178 M Lstate3a MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0178 3003 M movlw 3 0179 00BB M movwf instate M 017A 2A59 M goto Lcontinue 01277 state_tbl 4, 0, 5, -1 017B M Lstate4 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M 017B 183D M btfsc IR_in,0 017C 2980 M goto Lstate4a M 017D 3000 M movlw 0 017E 00BB M movwf instate M 017F 2A59 M goto Lcontinue M 0180 M Lstate4a 0180 3005 M movlw 5 0181 00BB M movwf instate M 0182 2A59 M goto Lcontinue 01278 state_tbl 5, 7, 0, -1 0183 M Lstate5 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M 0183 183D M btfsc IR_in,0 0184 2988 M goto Lstate5a M 0185 3007 M movlw 7 0186 00BB M movwf instate M 0187 2A59 M goto Lcontinue M 0188 M Lstate5a 0188 3000 M movlw 0 0189 00BB M movwf instate M 018A 2A59 M goto Lcontinue 01279 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 018B 01280 Lstate6 01281 018B 183D 01282 btfsc IR_in,0 018C 2995 01283 goto Lstate6a 01284 018D 3000 01285 movlw 0 018E 0746 01286 addwf butcount,w 018F 1903 01287 btfsc STATUS,Z 0190 2993 01288 goto Lstate6b 01289 0191 0BC6 01290 decfsz butcount,f 0192 2A59 01291 goto Lcontinue 01292 0193 01293 Lstate6b 01294 0193 1442 01295 bsf button,0 0194 2A59 01296 goto Lcontinue 01297 0195 01298 Lstate6a 0195 01BB 01299 clrf instate 0196 2A59 01300 goto Lcontinue 01301 01302 state2_tbl 7, toggle, 0 0197 M Lstate7 M ; save the 1st half of word 0197 083D M movf IR_in,w ; save 1st half 0198 00C1 M movwf IR_lhalf 0199 0ABB M incf instate,f M 019A 2A59 M goto Lcontinue M 019B M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 019B 0841 M movf IR_lhalf,w 019C 063D M xorwf IR_in,w 019D 1D03 M btfss STATUS,Z 019E 29A1 M goto Lstate8a 019F 01BB M clrf instate ; error state = zero M 01A0 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 01A1 M Lstate8a 01A1 183D M btfsc IR_in,0 01A2 1040 M bcf toggle,0 01A3 1C3D M btfss IR_in,0 01A4 1440 M bsf toggle,0 M 01A5 0ABB M incf instate,f 01A6 2A59 M goto Lcontinue 01303 state2_tbl 9, address, 4 01A7 M Lstate9 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE M ; save the 1st half of word 01A7 083D M movf IR_in,w ; save 1st half 01A8 00C1 M movwf IR_lhalf 01A9 0ABB M incf instate,f M 01AA 2A59 M goto Lcontinue M 01AB M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01AB 0841 M movf IR_lhalf,w 01AC 063D M xorwf IR_in,w 01AD 1D03 M btfss STATUS,Z 01AE 29B1 M goto Lstate10a 01AF 01BB M clrf instate ; error state = zero M 01B0 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 01B1 M Lstate10a 01B1 183D M btfsc IR_in,0 01B2 123F M bcf address,4 01B3 1C3D M btfss IR_in,0 01B4 163F M bsf address,4 M 01B5 0ABB M incf instate,f 01B6 2A59 M goto Lcontinue 01304 state2_tbl d'11', address, 3 01B7 M Lstate11 M ; save the 1st half of word 01B7 083D M movf IR_in,w ; save 1st half 01B8 00C1 M movwf IR_lhalf 01B9 0ABB M incf instate,f M 01BA 2A59 M goto Lcontinue M 01BB M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01BB 0841 M movf IR_lhalf,w 01BC 063D M xorwf IR_in,w 01BD 1D03 M btfss STATUS,Z 01BE 29C1 M goto Lstate12a 01BF 01BB M clrf instate ; error state = zero M 01C0 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 01C1 M Lstate12a 01C1 183D M btfsc IR_in,0 01C2 11BF M bcf address,3 01C3 1C3D M btfss IR_in,0 01C4 15BF M bsf address,3 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 01C5 0ABB M incf instate,f 01C6 2A59 M goto Lcontinue 01305 state2_tbl d'13', address, 2 01C7 M Lstate13 M ; save the 1st half of word 01C7 083D M movf IR_in,w ; save 1st half 01C8 00C1 M movwf IR_lhalf 01C9 0ABB M incf instate,f M 01CA 2A59 M goto Lcontinue M 01CB M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01CB 0841 M movf IR_lhalf,w 01CC 063D M xorwf IR_in,w 01CD 1D03 M btfss STATUS,Z 01CE 29D1 M goto Lstate14a 01CF 01BB M clrf instate ; error state = zero M 01D0 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 01D1 M Lstate14a 01D1 183D M btfsc IR_in,0 01D2 113F M bcf address,2 01D3 1C3D M btfss IR_in,0 01D4 153F M bsf address,2 M 01D5 0ABB M incf instate,f 01D6 2A59 M goto Lcontinue 01306 state2_tbl d'15', address, 1 01D7 M Lstate15 M ; save the 1st half of word 01D7 083D M movf IR_in,w ; save 1st half 01D8 00C1 M movwf IR_lhalf 01D9 0ABB M incf instate,f M 01DA 2A59 M goto Lcontinue M 01DB M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01DB 0841 M movf IR_lhalf,w 01DC 063D M xorwf IR_in,w 01DD 1D03 M btfss STATUS,Z 01DE 29E1 M goto Lstate16a 01DF 01BB M clrf instate ; error state = zero M 01E0 2A59 M goto Lcontinue M M ; set the correct bit in output vars. MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01E1 M Lstate16a 01E1 183D M btfsc IR_in,0 01E2 10BF M bcf address,1 01E3 1C3D M btfss IR_in,0 01E4 14BF M bsf address,1 M 01E5 0ABB M incf instate,f 01E6 2A59 M goto Lcontinue 01307 state2_tbl d'17', address, 0 01E7 M Lstate17 M ; save the 1st half of word 01E7 083D M movf IR_in,w ; save 1st half 01E8 00C1 M movwf IR_lhalf 01E9 0ABB M incf instate,f M 01EA 2A59 M goto Lcontinue M 01EB M Lstate18 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01EB 0841 M movf IR_lhalf,w 01EC 063D M xorwf IR_in,w 01ED 1D03 M btfss STATUS,Z 01EE 29F1 M goto Lstate18a 01EF 01BB M clrf instate ; error state = zero M 01F0 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 01F1 M Lstate18a 01F1 183D M btfsc IR_in,0 01F2 103F M bcf address,0 01F3 1C3D M btfss IR_in,0 01F4 143F M bsf address,0 M 01F5 0ABB M incf instate,f 01F6 2A59 M goto Lcontinue 01308 state2_tbl d'19', command, 5 01F7 M Lstate19 M ; save the 1st half of word 01F7 083D M movf IR_in,w ; save 1st half 01F8 00C1 M movwf IR_lhalf 01F9 0ABB M incf instate,f M 01FA 2A59 M goto Lcontinue M 01FB M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01FB 0841 M movf IR_lhalf,w 01FC 063D M xorwf IR_in,w 01FD 1D03 M btfss STATUS,Z 01FE 2A01 M goto Lstate20a MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01FF 01BB M clrf instate ; error state = zero M 0200 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 0201 M Lstate20a 0201 183D M btfsc IR_in,0 0202 12BE M bcf command,5 0203 1C3D M btfss IR_in,0 0204 16BE M bsf command,5 M 0205 0ABB M incf instate,f 0206 2A59 M goto Lcontinue 01309 state2_tbl d'21', command, 4 0207 M Lstate21 M ; save the 1st half of word 0207 083D M movf IR_in,w ; save 1st half 0208 00C1 M movwf IR_lhalf 0209 0ABB M incf instate,f M 020A 2A59 M goto Lcontinue M 020B M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 020B 0841 M movf IR_lhalf,w 020C 063D M xorwf IR_in,w 020D 1D03 M btfss STATUS,Z 020E 2A11 M goto Lstate22a 020F 01BB M clrf instate ; error state = zero M 0210 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 0211 M Lstate22a 0211 183D M btfsc IR_in,0 0212 123E M bcf command,4 0213 1C3D M btfss IR_in,0 0214 163E M bsf command,4 M 0215 0ABB M incf instate,f 0216 2A59 M goto Lcontinue 01310 state2_tbl d'23', command, 3 0217 M Lstate23 M ; save the 1st half of word 0217 083D M movf IR_in,w ; save 1st half 0218 00C1 M movwf IR_lhalf 0219 0ABB M incf instate,f M 021A 2A59 M goto Lcontinue M 021B M Lstate24 M ; save the 2nd half of word MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE M ; check for protocal error should get 01 or 10 021B 0841 M movf IR_lhalf,w 021C 063D M xorwf IR_in,w 021D 1D03 M btfss STATUS,Z 021E 2A21 M goto Lstate24a 021F 01BB M clrf instate ; error state = zero M 0220 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 0221 M Lstate24a 0221 183D M btfsc IR_in,0 0222 11BE M bcf command,3 0223 1C3D M btfss IR_in,0 0224 15BE M bsf command,3 M 0225 0ABB M incf instate,f 0226 2A59 M goto Lcontinue 01311 state2_tbl d'25', command, 2 0227 M Lstate25 M ; save the 1st half of word 0227 083D M movf IR_in,w ; save 1st half 0228 00C1 M movwf IR_lhalf 0229 0ABB M incf instate,f M 022A 2A59 M goto Lcontinue M 022B M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 022B 0841 M movf IR_lhalf,w 022C 063D M xorwf IR_in,w 022D 1D03 M btfss STATUS,Z 022E 2A31 M goto Lstate26a 022F 01BB M clrf instate ; error state = zero M 0230 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 0231 M Lstate26a 0231 183D M btfsc IR_in,0 0232 113E M bcf command,2 0233 1C3D M btfss IR_in,0 0234 153E M bsf command,2 M 0235 0ABB M incf instate,f 0236 2A59 M goto Lcontinue 01312 state2_tbl d'27', command, 1 0237 M Lstate27 M ; save the 1st half of word 0237 083D M movf IR_in,w ; save 1st half 0238 00C1 M movwf IR_lhalf 0239 0ABB M incf instate,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 023A 2A59 M goto Lcontinue M 023B M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 023B 0841 M movf IR_lhalf,w 023C 063D M xorwf IR_in,w 023D 1D03 M btfss STATUS,Z 023E 2A41 M goto Lstate28a 023F 01BB M clrf instate ; error state = zero M 0240 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 0241 M Lstate28a 0241 183D M btfsc IR_in,0 0242 10BE M bcf command,1 0243 1C3D M btfss IR_in,0 0244 14BE M bsf command,1 M 0245 0ABB M incf instate,f 0246 2A59 M goto Lcontinue 01313 state2_tbl d'29', command, 0 0247 M Lstate29 M ; save the 1st half of word 0247 083D M movf IR_in,w ; save 1st half 0248 00C1 M movwf IR_lhalf 0249 0ABB M incf instate,f M 024A 2A59 M goto Lcontinue M 024B M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 024B 0841 M movf IR_lhalf,w 024C 063D M xorwf IR_in,w 024D 1D03 M btfss STATUS,Z 024E 2A51 M goto Lstate30a 024F 01BB M clrf instate ; error state = zero M 0250 2A59 M goto Lcontinue M M ; set the correct bit in output vars. 0251 M Lstate30a 0251 183D M btfsc IR_in,0 0252 103E M bcf command,0 0253 1C3D M btfss IR_in,0 0254 143E M bsf command,0 M 0255 0ABB M incf instate,f 0256 2A59 M goto Lcontinue 01314 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0257 01315 Lstate31 0257 01BB 01316 clrf instate 0258 1445 01317 bsf IR_in_good,0 01318 0259 01319 Lcontinue 0259 0008 01320 return 01321 01322 ;-------------------------------------------------------------------------------------- 025A 01323 read_button_in ; 5 cycles 01324 ;-------------------------------------------------------------------------------------- 01325 ; Portability : hardcoded button port 01326 ; 01327 025A 1042 01328 bcf button,0 ; 1 025B 1E85 01329 btfss PORTA,5 ; 2 025C 1442 01330 bsf button,0 ; 3 01331 025D 0008 01332 return 01333 01334 ;-------------------------------------------------------------------------------------- 025E 01335 read_ir_in ; 5 cycles 01336 ;-------------------------------------------------------------------------------------- 01337 025E 103D 01338 bcf IR_in,0 ; 1 025F 1985 01339 btfsc PORTA,3 ; 2 0260 143D 01340 bsf IR_in,0 ; 3 01341 01342 ; movf tx_1,w ; loopback for testing HACK!! ;1 01343 ; xorlw 0x01 ; loopback for testing HACK!! ;2 01344 ; movwf IR_in ; loopback for testing HACK!! ;3 0261 0008 01345 return ; 4/5 01346 01347 ;-------------------------------------------------------------------------------------- 0262 01348 set_max_state ; 5-7 cycles 01349 ;-------------------------------------------------------------------------------------- 0262 083C 01350 movf max_instate,w 0263 023B 01351 subwf instate,w 0264 1C03 01352 btfss STATUS,C 0265 2A68 01353 goto smi_l1 0266 083B 01354 movf instate,w 0267 00BC 01355 movwf max_instate 0268 01356 smi_l1 0268 0008 01357 return 01358 01359 ;-------------------------------------------------------------------------------------- 0269 01360 get_next_tx_bit ; 11 cycles 01361 ;-------------------------------------------------------------------------------------- 01362 0269 1043 01363 bcf tx_1,0 ;1 026A 03D2 01364 decf scount,f ;2 026B 1003 01365 bcf STATUS, C ; clear carry bit ;3 026C 0CD1 01366 rrf out3,f ;4 026D 0CD0 01367 rrf out2,f ;5 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 026E 0CCF 01368 rrf out1,f ;6 026F 0CCE 01369 rrf out0,f ;7 0270 1803 01370 btfsc STATUS, C ;8 0271 1443 01371 bsf tx_1,0 ;9 01372 01373 ; movf tx_1,w ; loopback for testing HACK!! 01374 ; xorlw 0x01 ; loopback for testing HACK!! 01375 ; movwf tx_1 ; loopback for testing HACK!! 01376 ; mult_nop d'6' ; for debuging 01377 0272 0008 01378 return ;10/11 01379 01380 ;********************************************************************** 0273 01381 qdelay 01382 ;********************************************************************** 01383 var qcount 00000049 M qcount equ mem 0000004A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01384 0273 00C9 01385 movwf qcount 0274 01386 delay_loop2 0274 0BC9 01387 decfsz qcount,1 0275 2A74 01388 goto delay_loop2 0276 0008 01389 return 01390 ;********************************************************************** 0277 01391 rf_command_out 01392 ;********************************************************************** 01393 01394 var out_address 0000004A M out_address equ mem 0000004B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01395 var out_command 0000004B M out_command equ mem 0000004C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01396 var out_toggle 0000004C M out_toggle equ mem 0000004D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01397 var out_pattern 0000004D M out_pattern equ mem 0000004E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01398 var out0 0000004E M out0 equ mem 0000004F M mem = mem + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem > 0xef) M error 'Too much var space used' 01399 var out1 0000004F M out1 equ mem 00000050 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01400 var out2 00000050 M out2 equ mem 00000051 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01401 var out3 00000051 M out3 equ mem 00000052 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01402 var scount 00000052 M scount equ mem 00000053 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01403 0277 01CF 01404 clrf out1 0278 01D0 01405 clrf out2 0279 01D1 01406 clrf out3 01407 01408 ; start flag 027A 30A0 01409 movlw B'10100000' 027B 00CE 01410 movwf out0 01411 01412 01413 ; toggle bit 027C 09CC 01414 comf out_toggle,f ; toggle the toggle flag 027D 1C4C 01415 btfss out_toggle,0 027E 144F 01416 bsf out1,0 027F 184C 01417 btfsc out_toggle,0 0280 14CF 01418 bsf out1,1 01419 01420 ; address bits 0281 1E4A 01421 btfss out_address,4 0282 154F 01422 bsf out1,2 0283 1A4A 01423 btfsc out_address,4 0284 15CF 01424 bsf out1,3 01425 0285 1DCA 01426 btfss out_address,3 0286 164F 01427 bsf out1,4 0287 19CA 01428 btfsc out_address,3 0288 16CF 01429 bsf out1,5 01430 0289 1D4A 01431 btfss out_address,2 028A 174F 01432 bsf out1,6 028B 194A 01433 btfsc out_address,2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 028C 17CF 01434 bsf out1,7 01435 028D 1CCA 01436 btfss out_address,1 028E 1450 01437 bsf out2,0 028F 18CA 01438 btfsc out_address,1 0290 14D0 01439 bsf out2,1 01440 0291 1C4A 01441 btfss out_address,0 0292 1550 01442 bsf out2,2 0293 184A 01443 btfsc out_address,0 0294 15D0 01444 bsf out2,3 01445 01446 ; command bits 0295 1ECB 01447 btfss out_command,5 0296 1650 01448 bsf out2,4 0297 1ACB 01449 btfsc out_command,5 0298 16D0 01450 bsf out2,5 01451 0299 1E4B 01452 btfss out_command,4 029A 1750 01453 bsf out2,6 029B 1A4B 01454 btfsc out_command,4 029C 17D0 01455 bsf out2,7 01456 029D 1DCB 01457 btfss out_command,3 029E 1451 01458 bsf out3,0 029F 19CB 01459 btfsc out_command,3 02A0 14D1 01460 bsf out3,1 01461 02A1 1D4B 01462 btfss out_command,2 02A2 1551 01463 bsf out3,2 02A3 194B 01464 btfsc out_command,2 02A4 15D1 01465 bsf out3,3 01466 02A5 1CCB 01467 btfss out_command,1 02A6 1651 01468 bsf out3,4 02A7 18CB 01469 btfsc out_command,1 02A8 16D1 01470 bsf out3,5 01471 02A9 1C4B 01472 btfss out_command,0 02AA 1751 01473 bsf out3,6 02AB 184B 01474 btfsc out_command,0 02AC 17D1 01475 bsf out3,7 01476 02AD 3021 01477 movlw 0x21 02AE 00D2 01478 movwf scount 01479 02AF 0008 01480 return 01481 01482 #ifdef BIN2LED 01483 ;********************************************************************** 01484 bin2led 01485 ;********************************************************************** 01486 var b2l_out_hi MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01487 var b2l_out_low 01488 var b2l_lcount 01489 var b2l_in_red 01490 var b2l_in_green 01491 01492 clrf b2l_out_hi 01493 clrf b2l_out_low 01494 movlw 0x08 01495 movwf b2l_lcount 01496 b2l_loop 01497 bcf STATUS, C 01498 rrf b2l_in_green,f 01499 rlf b2l_out_low,f 01500 rlf b2l_out_hi,f 01501 rrf b2l_in_red,f 01502 rlf b2l_out_low,f 01503 rlf b2l_out_hi,f 01504 01505 decfsz b2l_lcount,f 01506 goto b2l_loop 01507 return 01508 #endif 01509 01510 #ifdef FLIPBYTE 01511 ;********************************************************************** 02B0 01512 flipbyte 01513 ;********************************************************************** 01514 var flip_in 00000053 M flip_in equ mem 00000054 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01515 var flip_out 00000054 M flip_out equ mem 00000055 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01516 var flip_lcount 00000055 M flip_lcount equ mem 00000056 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01517 02B0 00D3 01518 movwf flip_in 02B1 01D4 01519 clrf flip_out 02B2 3008 01520 movlw 0x08 02B3 00D5 01521 movwf flip_lcount 02B4 01522 fbyte_loop 02B4 1003 01523 bcf STATUS, C 02B5 0CD3 01524 rrf flip_in,f 02B6 0DD4 01525 rlf flip_out,f 01526 02B7 0BD5 01527 decfsz flip_lcount,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02B8 2AB4 01528 goto fbyte_loop 01529 02B9 0854 01530 movfw flip_out 02BA 0008 01531 return 01532 #endif 01533 01534 ;********************************************************************** 02BB 01535 delay 01536 ;********************************************************************** 01537 01538 var delay_count 00000056 M delay_count equ mem 00000057 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01539 01540 ; movlw 0ffh 02BB 00D6 01541 movwf delay_count 02BC 01542 delay_loop 02BC 0000 01543 nop 02BD 0BD6 01544 decfsz delay_count,1 02BE 2ABC 01545 goto delay_loop 02BF 0008 01546 return 01547 01548 ;********************************************************************** 02C0 01549 next_pattern 01550 ;********************************************************************** 02C0 0ADF 01551 incf pattern,f 02C1 085F 01552 movf pattern,w 02C2 3C18 01553 sublw NUM_TAB+1 ; max pattern? 02C3 1903 01554 btfsc STATUS,2 ; z bit check 02C4 01DF 01555 clrf pattern ; reset to zero 02C5 085F 01556 movfw pattern 02C6 00CD 01557 movwf out_pattern 02C7 0008 01558 return 01559 01560 ;********************************************************************** 02C8 01561 past_pattern 01562 ;********************************************************************** 02C8 03DF 01563 decf pattern,f 02C9 085F 01564 movf pattern,w 02CA 3E01 01565 addlw 1 ; max pattern? 02CB 1D03 01566 btfss STATUS,2 ; z bit check 02CC 2AD0 01567 goto past_exit 02CD 3017 01568 movlw NUM_TAB 02CE 00DF 01569 movwf pattern 02CF 00CD 01570 movwf out_pattern 02D0 01571 past_exit 02D0 0008 01572 return 01573 01574 ;********************************************************************** 02D1 01575 set_pattern ;set pattern from IR 01576 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01577 ; extra logic because all the different blinkes talk to each other, but 01578 ; do not have the same number of patterns. So if blinkie "A" sents a 01579 ; pattern 22 to blinkie "B" which only has 10 patterns, Blinkie "B" 01580 ; starts to show pattern 2. (22 % 10 a mod function.) But to make 01581 ; things fair in blinkie wars, it will transmit pattern 22 to other 01582 ; blinkies. 01583 ;********************************************************************** 01584 02D1 083E 01585 movfw command 02D2 00DF 01586 movwf pattern 02D3 00CD 01587 movwf out_pattern 02D4 01588 set_loop 02D4 3EE8 01589 addlw 0xff-NUM_TAB 02D5 1C03 01590 btfss STATUS, C 02D6 2ADB 01591 goto set_exit 01592 02D7 3017 01593 movlw NUM_TAB 02D8 02DF 01594 subwf pattern,f 02D9 085F 01595 movfw pattern 02DA 2AD4 01596 goto set_loop 01597 02DB 01598 set_exit 02DB 0008 01599 return 01600 01601 ;********************************************************************** 02DC 01602 strobe_delay 01603 ;********************************************************************** 01604 01605 var strobe_count 00000057 M strobe_count equ mem 00000058 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01606 02DC 00D7 01607 movwf strobe_count 02DD 01608 strobe_delay1 02DD 1021 01609 bcf nextf,0 01610 02DE 01611 strobe_delay2 02DE 1C21 01612 btfss nextf,0 02DF 2ADE 01613 goto strobe_delay2 01614 02E0 0BD7 01615 decfsz strobe_count,f 02E1 2ADD 01616 goto strobe_delay1 01617 02E2 0008 01618 return 01619 01620 ;********************************************************************** 02E3 01621 display_pattern_id 01622 ;********************************************************************** 02E3 0A5F 01623 incf pattern,w ; W = pattern + 1 02E4 00E1 01624 movwf in0 01625 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01626 #ifdef S19 02E5 22B0 01627 call flipbyte 02E6 00E1 01628 movwf in0 01629 #endif 01630 #ifdef BI6 01631 #ifdef MONO 01632 call flipbyte 01633 movwf in0 01634 #else 01635 movwf b2l_in_green 01636 clrf b2l_in_red 01637 call bin2led 01638 movf b2l_out_hi,w 01639 movwf in0 01640 movf b2l_out_low,w 01641 movwf in1 01642 #endif 01643 #endif 01644 01645 #ifdef S19 02E7 01E2 01646 clrf in1 02E8 01E3 01647 clrf in2 01648 02E9 30E0 01649 movlw b'11100000' 02EA 1866 01650 btfsc demo_mode,0 02EB 00E3 01651 movwf in2 01652 #else 01653 clrf in1 01654 movlw b'10000000' 01655 btfsc demo_mode,0 01656 movwf in1 01657 #endif 01658 02EC 30FF 01659 movlw 0xFF 02ED 244C 01660 call display_1bit 01661 02EE 01E1 01662 clrf in0 02EF 01E2 01663 clrf in1 02F0 01E3 01664 clrf in2 02F1 3001 01665 movlw 0x01 02F2 244C 01666 call display_1bit 02F3 0008 01667 return 01668 01669 ;********************************************************************** 02F4 01670 setup_pattern_table 01671 ;********************************************************************** 01672 var tbl_hi 00000058 M tbl_hi equ mem 00000059 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01673 var tbl_low 00000059 M tbl_low equ mem MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000005A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01674 var setup_pattern_temp 0000005A M setup_pattern_temp equ mem 0000005B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01675 var temp_high 0000005B M temp_high equ mem 0000005C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01676 02F4 01677 stop2 02F4 085F 01678 movf pattern,w 02F5 1D03 01679 btfss STATUS,Z 02F6 2B02 01680 goto slabel1 01681 ; 01682 ; if patten is zero, check eeprom and verify 1st entry is not a 0x00 01683 ; if it is switch to next pattern. 01684 02F7 0103 01685 clrw 02F8 233A 01686 call read_eeprom 02F9 00DA 01687 movwf setup_pattern_temp 01688 02FA 01E6 01689 clrf demo_mode 02FB 1BDA 01690 btfsc setup_pattern_temp,7 02FC 1466 01691 bsf demo_mode,0 01692 02FD 085A 01693 movfw setup_pattern_temp 02FE 1D03 01694 btfss STATUS,Z 02FF 2B16 01695 goto sreturn 01696 0300 22C0 01697 call next_pattern 0301 2AF4 01698 goto stop2 01699 0302 01700 slabel1 01701 ; 01702 ; Set the pattern (table) 01703 ; 0302 3004 01704 movlw HIGH MasterTable 0303 00D8 01705 movwf tbl_hi 0304 30ED 01706 movlw LOW MasterTable 0305 00D9 01707 movwf tbl_low 01708 01709 ; get the high address for the pattern table 0306 1003 01710 bcf STATUS,0 ; clear carry flag 0307 0D5F 01711 rlf pattern,w ; entry = table * 2 0308 00F5 01712 movwf pindex 0309 138B 01713 bcf INTCON, GIE ; disable INTs 030A 24E6 01714 call table_lookup 030B 178B 01715 bsf INTCON, GIE ; enable INTs MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 030C 00DB 01716 movwf temp_high ; can't put it in tbl_high yet 01717 01718 ; get the low address for the pattern table 030D 1403 01719 bsf STATUS,0 ; set carry 030E 0D5F 01720 rlf pattern,w ; entry = table * 2 + 1 030F 00F5 01721 movwf pindex 0310 138B 01722 bcf INTCON, GIE ; disable INTs 0311 24E6 01723 call table_lookup 0312 178B 01724 bsf INTCON, GIE ; enable INTs 0313 00D9 01725 movwf tbl_low 01726 0314 085B 01727 movf temp_high,w 0315 00D8 01728 movwf tbl_hi 01729 0316 01730 sreturn 0316 0008 01731 return 01732 01733 ;********************************************************************** 0317 01734 get_next_pattern_entry 01735 ;********************************************************************** 01736 var pclath_save 0000005C M pclath_save equ mem 0000005D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01737 var temp2 0000005D M temp2 equ mem 0000005E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01738 0317 085F 01739 movf pattern,w 0318 1D03 01740 btfss STATUS,Z 0319 2B1D 01741 goto glabel1 01742 031A 0875 01743 movf pindex,w 031B 233A 01744 call read_eeprom 01745 031C 2B27 01746 goto greturn 031D 01747 glabel1 031D 080A 01748 movfw PCLATH 031E 00DC 01749 movwf pclath_save 031F 0875 01750 movf pindex,w 0320 138B 01751 bcf INTCON, GIE ; disable INTs 0321 24E6 01752 call table_lookup 0322 178B 01753 bsf INTCON, GIE ; enable INTs 0323 00DD 01754 movwf temp2 0324 085C 01755 movfw pclath_save 0325 008A 01756 movwf PCLATH 0326 085D 01757 movfw temp2 01758 0327 01759 greturn 0327 0AF5 01760 incf pindex,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0328 0008 01761 return 01762 01763 01764 ;********************************************************************** 0329 01765 write_eeprom 01766 ; expects EEPROM address and data in pindex and input 01767 ; makes sure previous write (if any) has completed before proceeding 01768 ;********************************************************************** 0329 1683 01769 setbank1 01770 032A 189C 01771 btfsc EECON1,WR ;wait for WR to clear 032B 2B2A 01772 goto $-1 01773 032C 138B 01774 bcf INTCON, GIE ; disable INTs 032D 151C 01775 bsf EECON1,WREN ;enable writes 032E 0875 01776 movf pindex,w ;set address 032F 009B 01777 movwf EEADR 0330 0876 01778 movf input,w ;set data 0331 009A 01779 movwf EEDAT 0332 3055 01780 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 0333 009D 01781 movwf EECON2 0334 30AA 01782 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 0335 009D 01783 movwf EECON2 0336 149C 01784 bsf EECON1,WR ;initiate a write cycle 0337 178B 01785 bsf INTCON, GIE ; enable INT 01786 0338 1283 01787 setbank0 0339 0008 01788 return 01789 01790 01791 ;********************************************************************** 033A 01792 read_eeprom 01793 ; expects EEPROM address in W 01794 ; returns EEPROM data in W 01795 ; makes sure previous write (if any) has completed before proceeding 01796 ;********************************************************************** 033A 1683 01797 setbank1 01798 033B 189C 01799 btfsc EECON1,WR ;wait for WR to clear 033C 2B3B 01800 goto $-1 01801 033D 111C 01802 bcf EECON1,WREN ;disable writes 033E 009B 01803 movwf EEADR ;EEADR = W 033F 139C 01804 bcf EECON1,7 ;clear EEPGD 0340 141C 01805 bsf EECON1,RD ;initiate a read cycle 0341 081A 01806 movf EEDAT,w ;W = EEDAT 01807 0342 1283 01808 setbank0 0343 0008 01809 return 01810 01811 ;********************************************************************** 0344 01812 toggle_demo 01813 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01814 var toggle_demo_temp 0000005E M toggle_demo_temp equ mem 0000005F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01815 0344 0103 01816 clrw 0345 233A 01817 call read_eeprom 0346 00DE 01818 movwf toggle_demo_temp 01819 0347 1FDE 01820 btfss toggle_demo_temp,7 ; 0348 2B4C 01821 goto tdemo_on 01822 01823 ; toggle off 0349 13DE 01824 bcf toggle_demo_temp,7 034A 01E6 01825 clrf demo_mode 034B 2B4E 01826 goto tdemo_cont 01827 034C 01828 tdemo_on 034C 17DE 01829 bsf toggle_demo_temp,7 034D 1466 01830 bsf demo_mode,0 01831 034E 01832 tdemo_cont 034E 01F5 01833 clrf pindex 034F 085E 01834 movfw toggle_demo_temp 0350 00F6 01835 movwf input 0351 2329 01836 call write_eeprom 01837 0352 22E3 01838 call display_pattern_id 0353 22E3 01839 call display_pattern_id 01840 0354 0008 01841 return 01842 01843 ;********************************************************************** 0355 01844 pattern_driver 01845 ;********************************************************************** 01846 01847 var pattern 0000005F M pattern equ mem 00000060 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01848 var tbltype 00000060 M tbltype equ mem 00000061 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01849 var in0 00000061 M in0 equ mem 00000062 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01850 var in1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000062 M in1 equ mem 00000063 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01851 var in2 00000063 M in2 equ mem 00000064 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01852 #ifdef C19 01853 var in3 01854 var in4 01855 #endif 01856 #ifdef BADGE 01857 var in3 01858 #endif 01859 var speed 00000064 M speed equ mem 00000065 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01860 var pspeed 00000065 M pspeed equ mem 00000066 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01861 var demo_mode 00000066 M demo_mode equ mem 00000067 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01862 var psize 00000067 M psize equ mem 00000068 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01863 01864 ; need to be able to access from page1 & page2 for eeprom read/write 01865 var_all_bank pindex ; pattern index 000000F5 M pindex equ mem2 000000F6 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 01866 var_all_bank input 000000F6 M input equ mem2 000000F7 M mem2 = mem2 + 1 M if (mem2 > 0xFf) M error 'Too much var space used' 01867 0355 01868 ptop 01869 01870 0355 22F4 01871 call setup_pattern_table MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01872 0356 01F5 01873 clrf pindex 01874 01875 ; load the table type (Currently only 1 type) 0357 2317 01876 call get_next_pattern_entry 0358 00E0 01877 movwf tbltype 0359 13E0 01878 bcf tbltype,7 ; using top bit for demo mode. 01879 01880 ; load the speed (someday this will be a table type 1 only thing.) 035A 2317 01881 call get_next_pattern_entry 035B 00E5 01882 movwf pspeed 035C 0AE5 01883 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 01884 01885 ; load the table size 035D 2317 01886 call get_next_pattern_entry ;4rgb 035E 00E7 01887 movwf psize ;4rgb 01888 035F 01889 ploop0 01890 ; 01891 ; Check for IR command in 01892 ; 035F 1C45 01893 btfss IR_in_good,0 0360 2B7D 01894 goto button_check 01895 0361 01896 blinkie_check 0361 3007 01897 movlw 0x07 ; blinkines use address 0x07 (Experimental) 0362 023F 01898 subwf address,w 0363 1D03 01899 btfss STATUS,Z 0364 2B68 01900 goto remote_check 01901 0365 22D1 01902 call set_pattern 0366 01C5 01903 clrf IR_in_good 0367 2B55 01904 goto ptop 01905 0368 01906 remote_check 0368 08BF 01907 movf address,f ; remote giving "0" for address (TV)? 0369 1D03 01908 btfss STATUS,Z 036A 2B7D 01909 goto button_check 01910 036B 3020 01911 movlw 0x20 ; remote curser right (pattern ++) 036C 023E 01912 subwf command,w 036D 1903 01913 btfsc STATUS,Z 036E 22C0 01914 call next_pattern 01915 036F 3021 01916 movlw 0x21 ; remote curser left (pattern --) 0370 023E 01917 subwf command,w 0371 1903 01918 btfsc STATUS,Z 0372 22C8 01919 call past_pattern 01920 0373 3000 01921 movlw 0x00 ; remote "0" key (pattern = 0) 0374 023E 01922 subwf command,w 0375 1903 01923 btfsc STATUS,Z 0376 01DF 01924 clrf pattern MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01925 0377 300C 01926 movlw 0x0c ; remote on/off key (togle demo mode!) 0378 023E 01927 subwf command,w 0379 1903 01928 btfsc STATUS,Z 037A 2344 01929 call toggle_demo 01930 037B 01C5 01931 clrf IR_in_good 037C 2B55 01932 goto ptop 01933 037D 01934 button_check 01935 ; ploop1 01936 037D 1C42 01937 btfss button,0 ; if putton pressed show pattern id 037E 2B89 01938 goto ploop2 01939 037F 22E3 01940 call display_pattern_id 0380 22E3 01941 call display_pattern_id 01942 0381 1C42 01943 btfss button,0 ; if putton still pressed inc pattern 0382 2B89 01944 goto ploop2 01945 0383 01946 ploop1a 0383 22C0 01947 call next_pattern 0384 22E3 01948 call display_pattern_id 0385 22E3 01949 call display_pattern_id 01950 0386 1842 01951 btfsc button,0 0387 2B83 01952 goto ploop1a 0388 2B55 01953 goto ptop 01954 0389 01955 ploop2 01956 01957 #ifdef PATTERN1 01958 movlw 0x01 ; pattern1 01959 subwf tbltype,w 01960 btfsc STATUS,Z 01961 call table_type_1 01962 #endif 01963 01964 #ifdef PATTERN2 01965 movlw 0x02 ; pattern2 01966 subwf tbltype,w 01967 btfsc STATUS,Z 01968 call table_type_2 01969 #endif 01970 01971 #ifdef PATTERN3 01972 movlw 0x03 ; pattern3 01973 subwf tbltype,w 01974 btfsc STATUS,Z 01975 call table_type_3 01976 #endif 01977 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01978 #ifdef PATTERN4 01979 movlw 0x04 ; pattern4 01980 subwf tbltype,w 01981 btfsc STATUS,Z 01982 call table_type_4 01983 #endif 01984 01985 #ifdef PATTERN5 01986 movlw 0x05 ; pattern5 01987 subwf tbltype,w 01988 btfsc STATUS,Z 01989 call table_type_5 01990 #endif 01991 01992 #ifdef PATTERN6 0389 3006 01993 movlw 0x06 ; pattern6 038A 0260 01994 subwf tbltype,w 038B 1903 01995 btfsc STATUS,Z 038C 23A8 01996 call table_type_6 01997 #endif 01998 01999 #ifdef PATTERN7 038D 3007 02000 movlw 0x07 ; pattern7 038E 0260 02001 subwf tbltype,w 038F 1903 02002 btfsc STATUS,Z 0390 23B9 02003 call table_type_7 02004 #endif 02005 02006 #ifdef PATTERN8 0391 3008 02007 movlw 0x08 ; pattern8 0392 0260 02008 subwf tbltype,w 0393 1903 02009 btfsc STATUS,Z 0394 2429 02010 call table_type_8 02011 #endif 02012 02013 #ifdef PATTERN9 02014 movlw 0x09 ; pattern8 02015 subwf tbltype,w 02016 btfsc STATUS,Z 02017 call table_type_9 02018 #endif 02019 02020 #ifdef PATTERN10 02021 movlw 0x0A ; pattern8 02022 subwf tbltype,w 02023 btfsc STATUS,Z 02024 call table_type_10 02025 #endif 02026 02027 #ifdef PATTERN11 02028 movlw 0x0B ; pattern8 02029 subwf tbltype,w 02030 btfsc STATUS,Z MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02031 call table_type_11 02032 #endif 02033 02034 02035 ; make sure we are not sending a IR signel 0395 0852 02036 movf scount,w ; F22 0396 3E00 02037 addlw 0 ; F23 0397 1D03 02038 btfss STATUS,Z ; F24 0398 2BA5 02039 goto ploop3 02040 02041 ; count down till net IR signel 0399 1CA1 02042 btfss nextf,1 039A 2BA5 02043 goto ploop3 02044 039B 10A1 02045 bcf nextf,1 039C 1C66 02046 btfss demo_mode,0 039D 2BA0 02047 goto ploop2a 02048 039E 22C0 02049 call next_pattern 039F 2B55 02050 goto ptop 02051 03A0 02052 ploop2a 02053 ; send an IR signel 02054 #ifdef ENABLE_IR 03A0 3007 02055 movlw 0x07 ; address 0x07 "Experimental" 03A1 00CA 02056 movwf out_address 03A2 084D 02057 movfw out_pattern 03A3 00CB 02058 movwf out_command ; copy out_pettern 02059 03A4 2277 02060 call rf_command_out 02061 #endif 02062 03A5 02063 ploop3 03A5 0BE7 02064 decfsz psize,f ;check for end of pattern (4rgb) 03A6 2B5F 02065 goto ploop0 02066 03A7 2B55 02067 goto ptop 02068 02069 #ifdef PATTERN1 02070 ;********************************************************************** 02071 table_type_1 02072 ;********************************************************************** 02073 ; 76543210 <-- bits 02074 ; AABBCCDD <-- LEDs 02075 ; 01010101 <-- stays on for 1 unit - b'01' 02076 ; 10101010 <-- stays on for 2 units - b'10' 02077 ; 11111111 <-- stays on for 3 units - b'11' 02078 02079 ; in0 red 02080 ; in1 green 02081 ; in2 blu 02082 02083 call get_next_pattern_entry MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02084 movwf in0 02085 02086 call get_next_pattern_entry 02087 movwf in1 02088 02089 call get_next_pattern_entry ;4rgb 02090 movwf in2 ;4rgb 02091 02092 movf pspeed,w 02093 movwf speed 02094 call display_2bit 02095 02096 return 02097 #endif 02098 02099 #ifdef PATTERN2 02100 ;********************************************************************** 02101 table_type_2 02102 ;********************************************************************** 02103 02104 var delay1 02105 var fad 02106 var color 02107 var fad2 02108 02109 incf delay1,f 02110 02111 movf delay1,w ; testing for 0 02112 btfss STATUS,Z 02113 goto cf_loop2 02114 02115 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02116 movwf delay1 02117 02118 ; 02119 ; select a pattern 02120 ; 02121 comf fad,f 02122 movf fad,w ; testing for 0 02123 incf color,f 02124 02125 cf_loop2 02126 movf delay1,w ; fading up 02127 btfsc fad,0 02128 comf delay1,w ; dafinf down 02129 movwf fad2 02130 02131 movlw 0x03 ; greater then 3? 02132 subwf color,w 02133 btfsc STATUS,C 02134 clrf color 02135 02136 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02137 movlw 0x00 ; testing for 0 02138 subwf color,w 02139 btfss STATUS,Z 02140 goto next1 02141 02142 movfw fad2 02143 movwf Ar_reg 02144 movwf Br_reg 02145 movwf Cr_reg 02146 movwf Dr_reg 02147 02148 next1 02149 movlw 0x01 ; testing for 1 02150 subwf color,w 02151 btfss STATUS,Z 02152 goto next2 02153 02154 movfw fad2 02155 movwf Ag_reg 02156 movwf Bg_reg 02157 movwf Cg_reg 02158 movwf Dg_reg 02159 02160 next2 02161 movlw 0x02 ; testing for 2 02162 subwf color,w 02163 btfss STATUS,Z 02164 goto next3 02165 02166 movfw fad2 02167 movwf Ab_reg 02168 movwf Bb_reg 02169 movwf Cb_reg 02170 movwf Db_reg 02171 02172 next3 02173 movfw pspeed 02174 call strobe_delay 02175 02176 return 02177 #endif 02178 02179 02180 #ifdef PATTERN3 02181 ;********************************************************************** 02182 table_type_3 02183 ;********************************************************************** 02184 ; 02185 ; 2 bytes 02186 ; 02187 ; RRRRGGGG BBBBCDDD 02188 ; 02189 ; RRRR = bit of red LEDs to turn on MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02190 ; GGGG = bit of red LEDs to turn on 02191 ; BBBB = bit of red LEDs to turn on 02192 ; CDDD = a repeat counter. 02193 ; 02194 ; For badge blinkies 02195 ; C is 13th LED 02196 ; DDD = is repeat count 02197 02198 var p2count 02199 02200 call get_next_pattern_entry 02201 movwf in0 02202 02203 call get_next_pattern_entry 02204 movwf in1 02205 02206 #ifdef BADGE 02207 movlw b'00000111' 02208 #else 02209 movlw b'00001111' 02210 #endif 02211 andwf in1,w 02212 movwf p2count 02213 incf p2count,f 02214 rlf p2count,f 02215 rlf p2count,f 02216 02217 p2loop 02218 movfw pspeed 02219 call display_1bit 02220 02221 decfsz p2count,f 02222 goto p2loop 02223 02224 return 02225 #endif 02226 02227 02228 #ifdef PATTERN4 02229 ;********************************************************************** 02230 table_type_4 02231 ;********************************************************************** 02232 02233 ;use delay1 02234 ;use fad 02235 ;use color 02236 02237 02238 incf delay1,f 02239 02240 movf delay1,w ; testing for 0 02241 btfss STATUS,Z 02242 goto cf_loop2a MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02243 02244 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02245 movwf delay1 02246 02247 ; 02248 ; select a pattern 02249 ; 02250 comf fad,f 02251 movf fad,w ; testing for 0 02252 btfss fad,0 02253 incf color,f 02254 02255 cf_loop2a 02256 movf delay1,w ; fading up 02257 btfsc fad,0 02258 comf delay1,w ; dafinf down 02259 02260 movwf Ar_reg 02261 movwf Ag_reg 02262 movwf Ab_reg 02263 movwf Br_reg 02264 movwf Bg_reg 02265 movwf Bb_reg 02266 movwf Cr_reg 02267 movwf Cg_reg 02268 movwf Cb_reg 02269 movwf Dr_reg 02270 movwf Dg_reg 02271 movwf Db_reg 02272 02273 btfsc color,0 02274 clrf Ar_reg 02275 btfsc color,1 02276 clrf Ag_reg 02277 btfsc color,2 02278 clrf Ab_reg 02279 btfsc color,0 02280 clrf Br_reg 02281 btfsc color,1 02282 clrf Bg_reg 02283 btfsc color,2 02284 clrf Bb_reg 02285 btfsc color,0 02286 clrf Cr_reg 02287 btfsc color,1 02288 clrf Cg_reg 02289 btfsc color,2 02290 clrf Cb_reg 02291 btfsc color,0 02292 clrf Dr_reg 02293 btfsc color,1 02294 clrf Dg_reg 02295 btfsc color,2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02296 clrf Db_reg 02297 02298 btfsc color,3 02299 clrf Ar_reg 02300 btfsc color,3 02301 clrf Ag_reg 02302 btfsc color,3 02303 clrf Ab_reg 02304 02305 btfsc color,4 02306 clrf Br_reg 02307 btfsc color,4 02308 clrf Bg_reg 02309 btfsc color,4 02310 clrf Bb_reg 02311 02312 btfsc color,5 02313 clrf Cr_reg 02314 btfsc color,5 02315 clrf Cg_reg 02316 btfsc color,5 02317 clrf Cb_reg 02318 02319 btfsc color,6 02320 clrf Dr_reg 02321 btfsc color,6 02322 clrf Dg_reg 02323 btfsc color,6 02324 clrf Db_reg 02325 02326 movlw 0x20 02327 call strobe_delay 02328 02329 return 02330 #endif 02331 02332 #ifdef PATTERN5 02333 ;********************************************************************** 02334 table_type_5 02335 ;********************************************************************** 02336 ; 02337 ; 1 bytes 02338 ; 02339 ; ABCDEFX = 7 bits for LEDs. 02340 ; 02341 02342 var p2count 02343 02344 call get_next_pattern_entry 02345 movwf in0 02346 02347 movlw 0x04 ; call display 4 times, speed thing 02348 movwf p2count MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02349 02350 p2loop 02351 movfw pspeed 02352 call display_1bit 02353 02354 decfsz p2count,f 02355 goto p2loop 02356 02357 return 02358 #endif 02359 02360 #ifdef PATTERN6 02361 ;********************************************************************** 03A8 02362 table_type_6 02363 ;********************************************************************** 02364 ; 02365 ; 3 bytes 02366 ; 02367 ; AAAAAAAA AAAAAAAA AAADDDDD 02368 ; 02369 ; A = 19 bits of LED 02370 ; DDDDD = a repeat counter. 02371 02372 var p2count 00000068 M p2count equ mem 00000069 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02373 03A8 2317 02374 call get_next_pattern_entry 03A9 00E1 02375 movwf in0 02376 03AA 2317 02377 call get_next_pattern_entry 03AB 00E2 02378 movwf in1 02379 03AC 2317 02380 call get_next_pattern_entry 03AD 00E3 02381 movwf in2 02382 03AE 301F 02383 movlw b'00011111' 03AF 0563 02384 andwf in2,w 03B0 00E8 02385 movwf p2count 03B1 0AE8 02386 incf p2count,f 03B2 0DE8 02387 rlf p2count,f 03B3 0DE8 02388 rlf p2count,f 02389 03B4 02390 p2loop 03B4 0865 02391 movfw pspeed 03B5 244C 02392 call display_1bit 02393 03B6 0BE8 02394 decfsz p2count,f 03B7 2BB4 02395 goto p2loop 02396 03B8 0008 02397 return MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02398 #endif 02399 02400 #define BRIGHT1 0x40 02401 #define BRIGHT2 0xA0 02402 02403 #ifdef PATTERN7 02404 ;********************************************************************** 03B9 02405 table_type_7 02406 ;********************************************************************** 02407 ; 02408 ; 1 bytes 02409 ; 02410 ; ABBCCCCC 02411 ; 02412 ; A = shire Right/Left 02413 ; BB = two bit intensity to shift on 02414 ; CCCCC = Number of shifts to loop 02415 ; 02416 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 02417 ; 02418 02419 var t7count 00000069 M t7count equ mem 0000006A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02420 03B9 2317 02421 call get_next_pattern_entry 03BA 00E1 02422 movwf in0 02423 03BB 301F 02424 movlw b'00011111' 03BC 0561 02425 andwf in0,w 03BD 00E9 02426 movwf t7count 02427 03BE 301F 02428 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 03BF 0269 02429 subwf t7count,w 03C0 1D03 02430 btfss STATUS,Z 03C1 2BC7 02431 goto t7_loop 02432 03C2 01E1 02433 clrf in0 ; quick way to clear all the LEDS. 03C3 01E2 02434 clrf in1 03C4 01E3 02435 clrf in2 03C5 244C 02436 call display_1bit 03C6 2C28 02437 goto t7_return 02438 02439 03C7 02440 t7_loop 03C7 1BE1 02441 btfsc in0,7 03C8 2BF5 02442 goto t7_set19 02443 ; 02444 ; set LED 1 03C9 082D 02445 movfw A1_A4_reg ; 18 -> 19 03CA 00B4 02446 movwf A4_A1_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02447 03CB 0830 02448 movfw A2_A1_reg ; 17 -> 18 03CC 00AD 02449 movwf A1_A4_reg 02450 03CD 082C 02451 movfw A1_A2_reg ; 16 -> 17 03CE 00B0 02452 movwf A2_A1_reg 02453 03CF 0831 02454 movfw A2_A4_reg ; 15 -> 16 03D0 00AC 02455 movwf A1_A2_reg 02456 03D1 0835 02457 movfw A4_A2_reg ; 14 -> 15 03D2 00B1 02458 movwf A2_A4_reg 02459 03D3 0827 02460 movfw A0_A1_reg ; 13 -> 14 03D4 00B5 02461 movwf A4_A2_reg 02462 03D5 082B 02463 movfw A1_A0_reg ; 12 -> 13 03D6 00A7 02464 movwf A0_A1_reg 02465 03D7 0829 02466 movfw A0_A4_reg ; 11 -> 12 03D8 00AB 02467 movwf A1_A0_reg 02468 03D9 0833 02469 movfw A4_A0_reg ; 10 -> 11 03DA 00A9 02470 movwf A0_A4_reg 02471 03DB 0828 02472 movfw A0_A2_reg ; 09 -> 10 03DC 00B3 02473 movwf A4_A0_reg 02474 03DD 082F 02475 movfw A2_A0_reg ; 08 -> 09 03DE 00A8 02476 movwf A0_A2_reg 02477 03DF 0838 02478 movfw A5_A1_reg ; 07 -> 08 03E0 00AF 02479 movwf A2_A0_reg 02480 03E1 082E 02481 movfw A1_A5_reg ; 06 -> 07 03E2 00B8 02482 movwf A5_A1_reg 02483 03E3 083A 02484 movfw A5_A4_reg ; 05 -> 06 03E4 00AE 02485 movwf A1_A5_reg 02486 03E5 0836 02487 movfw A4_A5_reg ; 04 -> 05 03E6 00BA 02488 movwf A5_A4_reg 02489 03E7 0839 02490 movfw A5_A2_reg ; 03 -> 04 03E8 00B6 02491 movwf A4_A5_reg 02492 03E9 0832 02493 movfw A2_A5_reg ; 02 -> 03 03EA 00B9 02494 movwf A5_A2_reg 02495 03EB 0837 02496 movfw A5_A0_reg ; 01 -> 02 03EC 00B2 02497 movwf A2_A5_reg 02498 03ED 01B7 02499 clrf A5_A0_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03EE 3040 02500 movlw BRIGHT1 03EF 1AE1 02501 btfsc in0,5 03F0 07B7 02502 addwf A5_A0_reg,f 03F1 30A0 02503 movlw BRIGHT2 03F2 1B61 02504 btfsc in0,6 03F3 07B7 02505 addwf A5_A0_reg,f 03F4 2C20 02506 goto t7_cont 02507 ; 02508 ; set LED 19 03F5 02509 t7_set19 03F5 0832 02510 movfw A2_A5_reg ; 02 -> 01 03F6 00B7 02511 movwf A5_A0_reg 02512 03F7 0839 02513 movfw A5_A2_reg ; 03 -> 02 03F8 00B2 02514 movwf A2_A5_reg 02515 03F9 0836 02516 movfw A4_A5_reg ; 04 -> 03 03FA 00B9 02517 movwf A5_A2_reg 02518 03FB 083A 02519 movfw A5_A4_reg ; 05 -> 04 03FC 00B6 02520 movwf A4_A5_reg 02521 03FD 082E 02522 movfw A1_A5_reg ; 06 -> 05 03FE 00BA 02523 movwf A5_A4_reg 02524 03FF 0838 02525 movfw A5_A1_reg ; 07 -> 06 0400 00AE 02526 movwf A1_A5_reg 02527 0401 082F 02528 movfw A2_A0_reg ; 08 -> 07 0402 00B8 02529 movwf A5_A1_reg 02530 0403 0828 02531 movfw A0_A2_reg ; 09 -> 08 0404 00AF 02532 movwf A2_A0_reg 02533 0405 0833 02534 movfw A4_A0_reg ; 10 -> 09 0406 00A8 02535 movwf A0_A2_reg 02536 0407 0829 02537 movfw A0_A4_reg ; 11 -> 10 0408 00B3 02538 movwf A4_A0_reg 02539 0409 082B 02540 movfw A1_A0_reg ; 12 -> 11 040A 00A9 02541 movwf A0_A4_reg 02542 040B 0827 02543 movfw A0_A1_reg ; 13 -> 12 040C 00AB 02544 movwf A1_A0_reg 02545 040D 0835 02546 movfw A4_A2_reg ; 14 -> 13 040E 00A7 02547 movwf A0_A1_reg 02548 040F 0831 02549 movfw A2_A4_reg ; 15 -> 14 0410 00B5 02550 movwf A4_A2_reg 02551 0411 082C 02552 movfw A1_A2_reg ; 16 -> 15 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0412 00B1 02553 movwf A2_A4_reg 02554 0413 0830 02555 movfw A2_A1_reg ; 17 -> 16 0414 00AC 02556 movwf A1_A2_reg 02557 0415 082D 02558 movfw A1_A4_reg ; 18 -> 17 0416 00B0 02559 movwf A2_A1_reg 02560 0417 0834 02561 movfw A4_A1_reg ; 19 -> 18 0418 00AD 02562 movwf A1_A4_reg 02563 0419 01B4 02564 clrf A4_A1_reg 041A 3040 02565 movlw BRIGHT1 041B 1AE1 02566 btfsc in0,5 041C 07B4 02567 addwf A4_A1_reg,f 041D 30A0 02568 movlw BRIGHT2 041E 1B61 02569 btfsc in0,6 041F 07B4 02570 addwf A4_A1_reg,f 02571 0420 02572 t7_cont 02573 0420 0865 02574 movf pspeed,w 0421 22DC 02575 call strobe_delay 02576 ; 02577 ; This is a quick hack, because without this button presses are not seen for minutes 02578 ; This early exit might impact the pattern getting displayed. 02579 ; 0422 1842 02580 btfsc button,0 ; if putton pressed show pattern id 0423 2C28 02581 goto t7_return 02582 0424 1845 02583 btfsc IR_in_good,0 0425 2C28 02584 goto t7_return 02585 0426 0BE9 02586 decfsz t7count,f 0427 2BC7 02587 goto t7_loop 02588 0428 02589 t7_return 0428 0008 02590 return 02591 #endif 02592 02593 02594 #ifdef PATTERN8 02595 ;********************************************************************** 0429 02596 table_type_8 ; - 19 LED fader 02597 ;********************************************************************** 02598 02599 var delay1 0000006A M delay1 equ mem 0000006B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02600 var fad 0000006B M fad equ mem MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000006C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02601 var color 0000006C M color equ mem 0000006D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02602 02603 0429 0AEA 02604 incf delay1,f 02605 042A 086A 02606 movf delay1,w ; testing for 0 042B 1D03 02607 btfss STATUS,Z 042C 2C33 02608 goto cf8_loop2a 02609 042D 3023 02610 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 042E 00EA 02611 movwf delay1 02612 02613 ; 02614 ; select a pattern 02615 ; 042F 09EB 02616 comf fad,f 0430 086B 02617 movf fad,w ; testing for 0 0431 1C6B 02618 btfss fad,0 0432 0AEC 02619 incf color,f 02620 0433 02621 cf8_loop2a 0433 086A 02622 movf delay1,w ; fading up 0434 186B 02623 btfsc fad,0 0435 096A 02624 comf delay1,w ; fading down 02625 0436 00B7 02626 movwf A5_A0_reg ; 01 0437 00B2 02627 movwf A2_A5_reg ; 02 0438 00B9 02628 movwf A5_A2_reg ; 03 0439 00B6 02629 movwf A4_A5_reg ; 04 043A 00BA 02630 movwf A5_A4_reg ; 05 043B 00AE 02631 movwf A1_A5_reg ; 06 043C 00B8 02632 movwf A5_A1_reg ; 07 043D 00AF 02633 movwf A2_A0_reg ; 08 043E 00A8 02634 movwf A0_A2_reg ; 09 043F 00B3 02635 movwf A4_A0_reg ; 10 0440 00A9 02636 movwf A0_A4_reg ; 11 0441 00AB 02637 movwf A1_A0_reg ; 12 0442 00A7 02638 movwf A0_A1_reg ; 13 0443 00B5 02639 movwf A4_A2_reg ; 14 0444 00B1 02640 movwf A2_A4_reg ; 15 0445 00AC 02641 movwf A1_A2_reg ; 16 0446 00B0 02642 movwf A2_A1_reg ; 17 0447 00AD 02643 movwf A1_A4_reg ; 18 0448 00B4 02644 movwf A4_A1_reg ; 19 02645 0449 3003 02646 movlw 0x03 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 044A 22DC 02647 call strobe_delay 02648 044B 0008 02649 return 02650 #endif 02651 02652 #ifdef PATTERN9 02653 ;********************************************************************** 02654 table_type_9 02655 ;********************************************************************** 02656 ; 02657 ; 3 bytes 02658 ; 02659 ; AAAAAAAA AAAAAAAA AAADDDDD 02660 ; 02661 ; A = 19 bits of LED 02662 ; DDDDD = a repeat counter. 02663 02664 var p2count 02665 02666 call get_next_pattern_entry 02667 movwf in0 02668 02669 call get_next_pattern_entry 02670 movwf in1 02671 02672 call get_next_pattern_entry 02673 movwf in2 02674 02675 call get_next_pattern_entry 02676 movwf in3 02677 02678 call get_next_pattern_entry 02679 movwf in4 02680 02681 movlw b'00011111' 02682 andwf in2,w 02683 movwf p2count 02684 incf p2count,f 02685 rlf p2count,f 02686 rlf p2count,f 02687 02688 p2loop 02689 movfw pspeed 02690 call display_1bit 02691 02692 decfsz p2count,f 02693 goto p2loop 02694 02695 return 02696 #endif 02697 02698 #ifdef PATTERN10 02699 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02700 table_type_10 02701 ;********************************************************************** 02702 ; 76543210 <-- bits 02703 ; AABBCCDD <-- LEDs 02704 ; 01010101 <-- stays on for 1 unit - b'01' 02705 ; 10101010 <-- stays on for 2 units - b'10' 02706 ; 11111111 <-- stays on for 3 units - b'11' 02707 02708 ; in0 LEDs 0,1 02709 ; in1 LEDs 2,3 02710 ; in2 LEDs 4,5 02711 ; in3 LED 6 02712 02713 call get_next_pattern_entry 02714 movwf in0 02715 02716 call get_next_pattern_entry 02717 movwf in1 02718 02719 call get_next_pattern_entry ;4rgb 02720 movwf in2 ;4rgb 02721 02722 call get_next_pattern_entry ;4rgb 02723 movwf in3 ;4rgb 02724 02725 02726 02727 movf pspeed,w 02728 movwf speed 02729 call display_2bit 02730 02731 return 02732 #endif 02733 02734 #ifdef PATTERN11 02735 ;********************************************************************** 02736 table_type_11 02737 ;********************************************************************** 02738 ; 76543210 <-- bits 02739 ; AABBCCDD <-- LEDs 02740 ; 01010101 <-- stays on for 1 unit - b'01' 02741 ; 10101010 <-- stays on for 2 units - b'10' 02742 ; 11111111 <-- stays on for 3 units - b'11' 02743 02744 ; in0 LEDs 0,1,3,4 02745 ; in1 LEDs 5,6,C 02746 02747 call get_next_pattern_entry 02748 movwf in0 02749 02750 call get_next_pattern_entry 02751 movwf in1 02752 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02753 movf pspeed,w 02754 movwf speed 02755 call display_2bit 02756 02757 return 02758 #endif 02759 02760 #ifdef DISPLAY_1BIT_A 02761 ;********************************************************************** 02762 display_1bit ; Mono 6 LEDs, Badge LED add center (IR) for 7 02763 ;********************************************************************** 02764 02765 movwf speed ;w has the speed/delay 02766 02767 clrf Ar_reg 02768 btfsc in0,7 02769 comf Ar_reg,f 02770 02771 clrf Ag_reg 02772 btfsc in0,5 02773 comf Ag_reg,f 02774 02775 clrf Ab_reg 02776 btfsc in0,3 02777 comf Ab_reg,f 02778 02779 clrf Cr_reg 02780 btfsc in0,6 02781 comf Cr_reg,f 02782 02783 clrf Cg_reg 02784 btfsc in0,4 02785 comf Cg_reg,f 02786 02787 clrf Cb_reg 02788 btfsc in0,2 02789 comf Cb_reg,f 02790 02791 #ifdef BADGE 02792 clrf Center_reg 02793 btfsc in0,1 02794 comf Center_reg,f 02795 #endif 02796 02797 movf speed,w 02798 call strobe_delay 02799 02800 return 02801 #endif 02802 #ifdef DISPLAY_1BIT_B 02803 ;********************************************************************** 02804 display_1bit ; 19 Circle LEDs (38 LEDs) 02805 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02806 02807 movwf speed ;w has the speed/delay 02808 02809 clrf A0_A1_reg ; 12R 02810 btfsc in2,1 02811 comf A0_A1_reg,f 02812 02813 clrf A0_A2_reg ; 11R 02814 btfsc in2,3 02815 comf A0_A2_reg,f 02816 02817 clrf A0_C0_reg ; 10R 02818 btfsc in2,5 02819 comf A0_C0_reg,f 02820 02821 clrf A0_C1_reg ; 9R 02822 btfsc in2,7 02823 comf A0_C1_reg,f 02824 02825 clrf A0_C2_reg ; 18R 02826 btfsc in2,4 02827 comf A0_C2_reg,f 02828 02829 clrf A0_C4_reg ; 17R 02830 btfsc in0,3 02831 comf A0_C4_reg,f 02832 02833 clrf A1_A0_reg ; 12G 02834 btfsc in2,0 02835 comf A1_A0_reg,f 02836 02837 clrf A1_A2_reg ; 1R 02838 btfsc in0,7 02839 comf A1_A2_reg,f 02840 02841 clrf A1_C0_reg ; 2R 02842 btfsc in0,5 02843 comf A1_C0_reg,f 02844 02845 clrf A1_C1_reg ; 14R 02846 btfsc in3,5 02847 comf A1_C1_reg,f 02848 02849 clrf A1_C2_reg ; 13R 02850 btfsc in3,7 02851 comf A1_C2_reg,f 02852 02853 clrf A1_C4_reg ; 19R 02854 btfsc in4,3 02855 comf A1_C4_reg,f 02856 02857 clrf A2_A0_reg ; 11G 02858 btfsc in2,2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02859 comf A2_A0_reg,f 02860 02861 clrf A2_A1_reg ; 1G 02862 btfsc in0,6 02863 comf A2_A1_reg,f 02864 02865 clrf A2_C0_reg ; 3R 02866 btfsc in0,3 02867 comf A2_C0_reg,f 02868 02869 clrf A2_C1_reg ; 4R 02870 btfsc in0,1 02871 comf A2_C1_reg,f 02872 02873 clrf A2_C2_reg ; 15R 02874 btfsc in3,3 02875 comf A2_C2_reg,f 02876 02877 clrf A2_C4_reg ; 16R 02878 btfsc in3,1 02879 comf A2_C4_reg,f 02880 02881 clrf C0_A0_reg ; 10G 02882 btfsc in2,4 02883 comf C0_A0_reg,f 02884 02885 clrf C0_A1_reg ; 2G 02886 btfsc in0,4 02887 comf C0_A1_reg,f 02888 02889 clrf C0_A2_reg ; 3G 02890 btfsc in0,2 02891 comf C0_A2_reg,f 02892 02893 clrf C0_C1_reg ; 5G 02894 btfsc in1,7 02895 comf C0_C1_reg,f 02896 02897 clrf C0_C2_reg ; 6R 02898 btfsc in1,5 02899 comf C0_C2_reg,f 02900 02901 clrf C0_C4_reg ; 7R 02902 btfsc in1,3 02903 comf C0_C4_reg,f 02904 02905 ; clrf C1_A0_reg ; 9G 02906 ; btfsc in2,6 02907 ; comf C1_A0_reg,f 02908 02909 ; clrf C1_A1_reg ; 14G 02910 ; btfsc in3,4 02911 ; comf C1_A1_reg,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02912 02913 ; clrf C1_A2_reg ; 4G 02914 ; btfsc in0,0 02915 ; comf C1_A2_reg,f 02916 02917 ; clrf C1_C0_reg ; 5G 02918 ; btfsc in1,6 02919 ; comf C1_C0_reg,f 02920 02921 ; clrf C1_C2_reg ; no LED 02922 02923 ; clrf C1_C4_reg ; 8R 02924 ; btfsc in1,1 02925 ; comf C1_C4_reg,f 02926 02927 ; clrf C2_A0_reg ; 18G 02928 ; btfsc in4,4 02929 ; comf C2_A0_reg,f 02930 02931 ; clrf C2_A1_reg ; 13G 02932 ; btfsc in3,6 02933 ; comf C2_A1_reg,f 02934 02935 ; clrf C2_A2_reg ; 15G 02936 ; btfsc in3,2 02937 ; comf C2_A2_reg,f 02938 02939 ; clrf C2_C0_reg ; 6G 02940 ; btfsc in1,4 02941 ; comf C2_C0_reg,f 02942 02943 ; clrf C2_C1_reg ; no LED 02944 02945 ; clrf C2_C4_reg ; no LED 02946 02947 ; clrf C4_A0_reg ; 17G 02948 ; btfsc in4,6 02949 ; comf C4_A0_reg,f 02950 02951 ; clrf C4_A1_reg ; 19G 02952 ; btfsc in4,2 02953 ; comf C4_A1_reg,f 02954 02955 ; clrf C4_A2_reg ; 16G 02956 ; btfsc in3,0 02957 ; comf C4_A2_reg,f 02958 02959 ; clrf C4_C0_reg ; 7G 02960 ; btfsc in1,2 02961 ; comf C4_C0_reg,f 02962 02963 ; clrf C4_C1_reg ; 8G 02964 ; btfsc in1,0 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02965 ; comf C4_C1_reg,f 02966 02967 ; clrf C4_C2_reg ; no LED 02968 02969 ; movf speed,w 02970 ; call strobe_delay 02971 02972 return 02973 #endif 02974 #ifdef DISPLAY_1BIT_C 02975 ;********************************************************************** 02976 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 02977 ;********************************************************************** 02978 02979 movwf speed ;w has the speed/delay 02980 02981 clrf Ar_reg 02982 btfsc in0,7 02983 comf Ar_reg,f 02984 02985 clrf Ag_reg 02986 btfsc in0,3 02987 comf Ag_reg,f 02988 02989 clrf Ab_reg 02990 btfsc in1,7 02991 comf Ab_reg,f 02992 02993 clrf Br_reg 02994 btfsc in0,6 02995 comf Br_reg,f 02996 02997 clrf Bg_reg 02998 btfsc in0,2 02999 comf Bg_reg,f 03000 03001 clrf Bb_reg 03002 btfsc in1,6 03003 comf Bb_reg,f 03004 03005 clrf Cr_reg 03006 btfsc in0,5 03007 comf Cr_reg,f 03008 03009 clrf Cg_reg 03010 btfsc in0,1 03011 comf Cg_reg,f 03012 03013 clrf Cb_reg 03014 btfsc in1,5 03015 comf Cb_reg,f 03016 03017 clrf Dr_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03018 btfsc in0,4 03019 comf Dr_reg,f 03020 03021 clrf Dg_reg 03022 btfsc in0,0 03023 comf Dg_reg,f 03024 03025 clrf Db_reg 03026 btfsc in1,4 03027 comf Db_reg,f 03028 03029 #ifdef BADGE 03030 clrf Center_reg 03031 btfsc in1,3 03032 comf Center_reg,f 03033 #endif 03034 03035 movf speed,w 03036 call strobe_delay 03037 03038 return 03039 #endif 03040 #ifdef DISPLAY_1BIT_D 03041 ;********************************************************************** 044C 03042 display_1bit ; 20 LEDs 03043 ;********************************************************************** 03044 044C 00E4 03045 movwf speed ;w has the speed/delay 03046 044D 01AA 03047 clrf A0_A5_reg ; IR 03048 044E 01B7 03049 clrf A5_A0_reg ; 01 044F 1BE1 03050 btfsc in0,7 0450 09B7 03051 comf A5_A0_reg,f 03052 0451 01B2 03053 clrf A2_A5_reg ; 02 0452 1B61 03054 btfsc in0,6 0453 09B2 03055 comf A2_A5_reg,f 03056 0454 01B9 03057 clrf A5_A2_reg ; 03 0455 1AE1 03058 btfsc in0,5 0456 09B9 03059 comf A5_A2_reg,f 03060 0457 01B6 03061 clrf A4_A5_reg ; 04 0458 1A61 03062 btfsc in0,4 0459 09B6 03063 comf A4_A5_reg,f 03064 045A 01BA 03065 clrf A5_A4_reg ; 05 045B 19E1 03066 btfsc in0,3 045C 09BA 03067 comf A5_A4_reg,f 03068 045D 01AE 03069 clrf A1_A5_reg ; 06 045E 1961 03070 btfsc in0,2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 045F 09AE 03071 comf A1_A5_reg,f 03072 0460 01B8 03073 clrf A5_A1_reg ; 07 0461 18E1 03074 btfsc in0,1 0462 09B8 03075 comf A5_A1_reg,f 03076 0463 01AF 03077 clrf A2_A0_reg ; 08 0464 1861 03078 btfsc in0,0 0465 09AF 03079 comf A2_A0_reg,f 03080 0466 01A8 03081 clrf A0_A2_reg ; 09 0467 1BE2 03082 btfsc in1,7 0468 09A8 03083 comf A0_A2_reg,f 03084 0469 01B3 03085 clrf A4_A0_reg ; 10 046A 1B62 03086 btfsc in1,6 046B 09B3 03087 comf A4_A0_reg,f 03088 046C 01A9 03089 clrf A0_A4_reg ; 11 046D 1AE2 03090 btfsc in1,5 046E 09A9 03091 comf A0_A4_reg,f 03092 046F 01AB 03093 clrf A1_A0_reg ; 12 0470 1A62 03094 btfsc in1,4 0471 09AB 03095 comf A1_A0_reg,f 03096 0472 01A7 03097 clrf A0_A1_reg ; 13 0473 19E2 03098 btfsc in1,3 0474 09A7 03099 comf A0_A1_reg,f 03100 0475 01B5 03101 clrf A4_A2_reg ; 14 0476 1962 03102 btfsc in1,2 0477 09B5 03103 comf A4_A2_reg,f 03104 0478 01B1 03105 clrf A2_A4_reg ; 15 0479 18E2 03106 btfsc in1,1 047A 09B1 03107 comf A2_A4_reg,f 03108 047B 01AC 03109 clrf A1_A2_reg ; 16 047C 1862 03110 btfsc in1,0 047D 09AC 03111 comf A1_A2_reg,f 03112 047E 01B0 03113 clrf A2_A1_reg ; 17 047F 1BE3 03114 btfsc in2,7 0480 09B0 03115 comf A2_A1_reg,f 03116 0481 01AD 03117 clrf A1_A4_reg ; 18 0482 1B63 03118 btfsc in2,6 0483 09AD 03119 comf A1_A4_reg,f 03120 0484 01B4 03121 clrf A4_A1_reg ; 19 0485 1AE3 03122 btfsc in2,5 0486 09B4 03123 comf A4_A1_reg,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03124 03125 0487 0864 03126 movf speed,w 0488 22DC 03127 call strobe_delay 03128 0489 0008 03129 return 03130 #endif 03131 #ifdef DISPLAY_2BIT_A 03132 ;********************************************************************** 03133 display_2bit 03134 ;********************************************************************** 03135 movf speed,w ;enter here if repeat count is in speed 03136 display_w_2bit ;enter here if repeat count is in W reg 03137 03138 ; 76543210 <-- bits 03139 ; AABBCCDD <-- LEDs 03140 ; 01010101 <-- stays on for 1 unit - b'01' 03141 ; 10101010 <-- stays on for 2 units - b'10' 03142 ; 11111111 <-- stays on for 3 units - b'11' 03143 03144 ; in0 LEDs 1,2,3,4 03145 ; in1 LEDs 5,6,C 03146 03147 03148 clrf Ar_reg 03149 movlw BRIGHT1 03150 btfsc in0,6 03151 addwf Ar_reg,f 03152 movlw BRIGHT2 03153 btfsc in0,7 03154 addwf Ar_reg,f 03155 03156 clrf Ag_reg 03157 movlw BRIGHT1 03158 btfsc in0,2 03159 addwf Ag_reg,f 03160 movlw BRIGHT2 03161 btfsc in0,3 03162 addwf Ag_reg,f 03163 03164 clrf Ab_reg 03165 movlw BRIGHT1 03166 btfsc in1,6 03167 addwf Ab_reg,f 03168 movlw BRIGHT2 03169 btfsc in1,7 03170 addwf Ab_reg,f 03171 03172 clrf Cr_reg 03173 movlw BRIGHT1 03174 btfsc in0,4 03175 addwf Cr_reg,f 03176 movlw BRIGHT2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03177 btfsc in0,5 03178 addwf Cr_reg,f 03179 03180 clrf Cg_reg 03181 movlw BRIGHT1 03182 btfsc in0,0 03183 addwf Cg_reg,f 03184 movlw BRIGHT2 03185 btfsc in0,1 03186 addwf Cg_reg,f 03187 03188 clrf Cb_reg 03189 movlw BRIGHT1 03190 btfsc in1,4 03191 addwf Cb_reg,f 03192 movlw BRIGHT2 03193 btfsc in1,5 03194 addwf Cb_reg,f 03195 03196 #ifdef BADGE 03197 clrf Center_reg 03198 movlw BRIGHT1 03199 btfsc in1,2 03200 addwf Center_reg,f 03201 movlw BRIGHT2 03202 btfsc in1,3 03203 addwf Center_reg,f 03204 #endif 03205 03206 movf speed,w 03207 call strobe_delay 03208 movf speed,w 03209 call strobe_delay 03210 movf speed,w 03211 call strobe_delay 03212 03213 return 03214 #endif 03215 03216 #ifdef DISPLAY_2BIT_C 03217 ;********************************************************************** 03218 display_2bit 03219 ;********************************************************************** 03220 movf speed,w ;enter here if repeat count is in speed 03221 display_w_2bit ;enter here if repeat count is in W reg 03222 03223 ; 76543210 <-- bits 03224 ; AABBCCDD <-- LEDs 03225 ; 01010101 <-- stays on for 1 unit - b'01' 03226 ; 10101010 <-- stays on for 2 units - b'10' 03227 ; 11111111 <-- stays on for 3 units - b'11' 03228 03229 ; in0 red MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03230 ; in1 green 03231 ; in2 blue 03232 03233 clrf Ar_reg 03234 movlw BRIGHT1 03235 btfsc in0,6 03236 addwf Ar_reg,f 03237 movlw BRIGHT2 03238 btfsc in0,7 03239 addwf Ar_reg,f 03240 03241 clrf Ag_reg 03242 movlw BRIGHT1 03243 btfsc in1,6 03244 addwf Ag_reg,f 03245 movlw BRIGHT2 03246 btfsc in1,7 03247 addwf Ag_reg,f 03248 03249 clrf Ab_reg 03250 movlw BRIGHT1 03251 btfsc in2,6 03252 addwf Ab_reg,f 03253 movlw BRIGHT2 03254 btfsc in2,7 03255 addwf Ab_reg,f 03256 03257 clrf Br_reg 03258 movlw BRIGHT1 03259 btfsc in0,4 03260 addwf Br_reg,f 03261 movlw BRIGHT2 03262 btfsc in0,5 03263 addwf Br_reg,f 03264 03265 clrf Bg_reg 03266 movlw BRIGHT1 03267 btfsc in1,4 03268 addwf Bg_reg,f 03269 movlw BRIGHT2 03270 btfsc in1,5 03271 addwf Bg_reg,f 03272 03273 clrf Bb_reg 03274 movlw BRIGHT1 03275 btfsc in2,4 03276 addwf Bb_reg,f 03277 movlw BRIGHT2 03278 btfsc in2,5 03279 addwf Bb_reg,f 03280 03281 clrf Cr_reg 03282 movlw BRIGHT1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03283 btfsc in0,2 03284 addwf Cr_reg,f 03285 movlw BRIGHT2 03286 btfsc in0,3 03287 addwf Cr_reg,f 03288 03289 clrf Cg_reg 03290 movlw BRIGHT1 03291 btfsc in1,2 03292 addwf Cg_reg,f 03293 movlw BRIGHT2 03294 btfsc in1,3 03295 addwf Cg_reg,f 03296 03297 clrf Cb_reg 03298 movlw BRIGHT1 03299 btfsc in2,2 03300 addwf Cb_reg,f 03301 movlw BRIGHT2 03302 btfsc in2,3 03303 addwf Cb_reg,f 03304 03305 clrf Dr_reg 03306 movlw BRIGHT1 03307 btfsc in0,0 03308 addwf Dr_reg,f 03309 movlw BRIGHT2 03310 btfsc in0,1 03311 addwf Dr_reg,f 03312 03313 clrf Dg_reg 03314 movlw BRIGHT1 03315 btfsc in1,0 03316 addwf Dg_reg,f 03317 movlw BRIGHT2 03318 btfsc in1,1 03319 addwf Dg_reg,f 03320 03321 clrf Db_reg 03322 movlw BRIGHT1 03323 btfsc in2,0 03324 addwf Db_reg,f 03325 movlw BRIGHT2 03326 btfsc in2,1 03327 addwf Db_reg,f 03328 03329 #ifdef BADGE 03330 clrf Center_reg 03331 movlw BRIGHT1 03332 btfsc in3,6 03333 addwf Center_reg,f 03334 movlw BRIGHT2 03335 btfsc in3,7 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03336 addwf Center_reg,f 03337 #endif 03338 03339 movf speed,w 03340 call strobe_delay 03341 movf speed,w 03342 call strobe_delay 03343 movf speed,w 03344 call strobe_delay 03345 03346 return 03347 #endif 03348 03349 ;********************************************************************** 03350 ; IR Tester 03351 ;********************************************************************** 048A 03352 IR_Tester 048A 03353 itop 048A 3002 03354 movlw 0x02 048B 023B 03355 subwf instate,w 048C 1C03 03356 btfss STATUS,C 048D 0103 03357 clrw 048E 00E1 03358 movwf in0 03359 048F 3000 03360 movlw 0x00 0490 00E2 03361 movwf in1 03362 0491 3001 03363 movlw 0x01 0492 244C 03364 call display_1bit 03365 03366 ; 03367 ; Check for push button 03368 ; 0493 1C42 03369 btfss button,0 0494 2CA4 03370 goto iloop1 0495 01BC 03371 clrf max_instate 0496 01BB 03372 clrf instate 03373 0497 0852 03374 movf scount,w ; F22 0498 3E00 03375 addlw 0 ; F23 0499 1D03 03376 btfss STATUS,Z ; F24 049A 2CA4 03377 goto iloop1 03378 049B 01E1 03379 clrf in0 049C 01E2 03380 clrf in1 049D 09E2 03381 comf in1,f 03382 049E 30FF 03383 movlw 0xFF 049F 244C 03384 call display_1bit 03385 03386 ; send an IR signel 04A0 01CA 03387 clrf out_address ; address 0x00 "TV remote" 04A1 300C 03388 movlw 0x0c MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04A2 00CB 03389 movwf out_command ; code 0x0c (on/off) 04A3 2277 03390 call rf_command_out 03391 03392 ; 03393 ; Check for IR Command 03394 ; 04A4 03395 iloop1 04A4 1C45 03396 btfss IR_in_good,0 04A5 2C8A 03397 goto itop 04A6 01C5 03398 clrf IR_in_good 03399 03400 ; flash all LEDs Red 04A7 30F0 03401 movlw 0xF0 04A8 00E1 03402 movwf in0 04A9 01E2 03403 clrf in1 03404 04AA 307F 03405 movlw 0x7f 04AB 244C 03406 call display_1bit 03407 03408 ; flash all LEDs off 04AC 01E1 03409 clrf in0 04AD 01E2 03410 clrf in1 03411 04AE 303F 03412 movlw 0x3f 04AF 244C 03413 call display_1bit 03414 03415 ; flash all LEDs Red 04B0 30F0 03416 movlw 0xF0 04B1 00E1 03417 movwf in0 04B2 01E2 03418 clrf in1 03419 04B3 307F 03420 movlw 0x7f 04B4 244C 03421 call display_1bit 03422 03423 ; display command and address 04B5 083E 03424 movf command,w 04B6 00E1 03425 movwf in0 04B7 083F 03426 movf address,w 04B8 00E2 03427 movwf in1 03428 04B9 30FF 03429 movlw 0xff 04BA 244C 03430 call display_1bit 04BB 30FF 03431 movlw 0xff 04BC 244C 03432 call display_1bit 04BD 01BC 03433 clrf max_instate 04BE 01BB 03434 clrf instate 03435 04BF 2C8A 03436 goto itop 03437 03438 03439 ; 03440 ; M A I N 03441 ; MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03442 ;********************************************************************** 04C0 03443 main 03444 ;********************************************************************** 04C0 01C2 03445 clrf button 04C1 0185 03446 clrf PORTA 04C2 0181 03447 clrf TMR0 04C3 01DF 03448 clrf pattern 04C4 01D2 03449 clrf scount 04C5 01C0 03450 clrf toggle 04C6 01BF 03451 clrf address 04C7 01BE 03452 clrf command 04C8 01C1 03453 clrf IR_lhalf 04C9 01BB 03454 clrf instate 04CA 01BC 03455 clrf max_instate 04CB 01C5 03456 clrf IR_in_good 04CC 01A2 03457 clrf dcycle 03458 #ifdef PATTERN2 03459 clrf delay1 03460 clrf fad 03461 clrf color 03462 #endif 03463 #ifdef MONO 03464 clrf Br_reg 03465 clrf Bg_reg 03466 clrf Bb_reg 03467 clrf Dr_reg 03468 clrf Dg_reg 03469 clrf Db_reg 03470 #endif 03471 04CD 3007 03472 movlw 0x07 04CE 0099 03473 movwf CMCON0 ;turn off comparator 03474 04CF 1683 03475 setbank1 03476 03477 ; set up TMR0 & pullups 03478 ; +---------- disable pullups (1) 03479 ; |+--------- interrupt edge select (don't care) 03480 ; ||+-------- TMR0 source = internal clock (0) 03481 ; |||+------- TMR0 source edge select (don't care) 03482 ; ||||+------ assign prescaler to TMR0 (0) 03483 ; |||||+++--- prescaler set to 8X (010) 03484 ; |||||||| 04D0 3082 03485 movlw b'10000010' 04D1 0081 03486 movwf OPTION_REG 03487 03488 04D2 3070 03489 movlw b'01110000' ;switch to 8 MHz clock 04D3 048F 03490 iorwf OSCCON,f 03491 04D4 019F 03492 clrf ANSEL ;set pins to digital 03493 03494 #ifdef __16F688 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03495 ; setup timer0 03496 bcf OPTION_REG,T0CS 03497 #endif 03498 04D5 1283 03499 setbank0 03500 03501 ; enable timer0 interupt 04D6 168B 03502 bsf INTCON,T0IE 04D7 178B 03503 bsf INTCON,GIE 03504 04D8 03505 loop_ddf 03506 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 04D8 30FF 03507 movlw b'11111111' 03508 04D9 00E1 03509 movwf in0 04DA 00E2 03510 movwf in1 04DB 00E3 03511 movwf in2 03512 #ifdef C19 03513 movwf in3 03514 movwf in4 03515 #endif 03516 04DC 30FF 03517 movlw 0xff 04DD 244C 03518 call display_1bit 03519 03520 03521 ; Trun all the LEDs off 04DE 01E1 03522 clrf in0 04DF 01E2 03523 clrf in1 04E0 01E3 03524 clrf in2 03525 #ifdef C19 03526 clrf in3 03527 clrf in4 03528 #endif 03529 04E1 30FF 03530 movlw 0xff 04E2 244C 03531 call display_1bit 03532 03533 ; if button pressed durring powerup run IR_Tester 03534 ; else run pattern driver 03535 ; 04E3 1C42 03536 btfss button,0 04E4 2B55 03537 goto pattern_driver 03538 #ifdef ENABLE_IR 04E5 2C8A 03539 goto IR_Tester 03540 #else 03541 call toggle_demo 03542 goto pattern_driver 03543 #endif 03544 03545 ;********************************************************************** 04E6 03546 table_lookup 03547 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04E6 0858 03548 movf tbl_hi,w 04E7 008A 03549 movwf PCLATH 04E8 0875 03550 movf pindex,w 04E9 0759 03551 addwf tbl_low,w 04EA 1803 03552 btfsc STATUS,0 ; check carry flag 04EB 0A8A 03553 incf PCLATH,f 04EC 0082 03554 movwf PCL 03555 03556 ;********************************************************************** 04ED 03557 MasterTable 03558 ;********************************************************************** 03559 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 04ED 3405 341D M dt HIGH table0, LOW table0 00000001 M i += 1 04EF 3405 341D M dt HIGH table1, LOW table1 00000002 M i += 1 04F1 3405 3426 M dt HIGH table2, LOW table2 00000003 M i += 1 04F3 3405 342F M dt HIGH table3, LOW table3 00000004 M i += 1 04F5 3405 3432 M dt HIGH table4, LOW table4 00000005 M i += 1 04F7 3405 3437 M dt HIGH table5, LOW table5 00000006 M i += 1 04F9 3405 3440 M dt HIGH table6, LOW table6 00000007 M i += 1 04FB 3405 3449 M dt HIGH table7, LOW table7 00000008 M i += 1 04FD 3405 3450 M dt HIGH table8, LOW table8 00000009 M i += 1 04FF 3405 3459 M dt HIGH table9, LOW table9 0000000A M i += 1 0501 3405 345E M dt HIGH table10, LOW table10 0000000B M i += 1 0503 3405 347F M dt HIGH table11, LOW table11 0000000C M i += 1 0505 3405 3486 M dt HIGH table12, LOW table12 0000000D M i += 1 0507 3405 3495 M dt HIGH table13, LOW table13 0000000E M i += 1 0509 3405 34DA M dt HIGH table14, LOW table14 0000000F M i += 1 050B 3406 3413 M dt HIGH table15, LOW table15 00000010 M i += 1 050D 3406 344E M dt HIGH table16, LOW table16 00000011 M i += 1 050F 3406 34E1 M dt HIGH table17, LOW table17 00000012 M i += 1 0511 3406 34E6 M dt HIGH table18, LOW table18 00000013 M i += 1 0513 3406 34EB M dt HIGH table19, LOW table19 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000014 M i += 1 0515 3406 34F7 M dt HIGH table20, LOW table20 00000015 M i += 1 0517 3407 3403 M dt HIGH table21, LOW table21 00000016 M i += 1 0519 3407 3445 M dt HIGH table22, LOW table22 00000017 M i += 1 051B 3407 3481 M dt HIGH table23, LOW table23 00000018 M i += 1 M endw 03560 03561 03562 03563 ;********************************************************************** 051D 03564 table0 ; dummy entry, actual data for pattern 0 is in the EEPROM 03565 ;********************************************************************** 03566 03567 #ifdef RGB4 03568 #include <4rgb_patterns.asm> 03569 #endif 03570 #ifdef BI6 03571 #ifdef MONO 03572 #ifdef BADGE 03573 #include <6led+c_patterns.asm> 03574 #else 03575 #include <6led_patterns.asm> 03576 #endif 03577 #else 03578 #ifdef BADGE 03579 #include <6bi+c_patterns.asm> 03580 #else 03581 #include <6bi_patterns.asm> 03582 #endif 03583 #endif 03584 #endif 03585 #ifdef S19 03586 #include <19led_stick_patterns.asm> 00001 ;********************************************************************** 00002 ; Copyright (C) 2005,2006,2007 Dwayne Forsyth 00003 ; 00004 ; This program is free software; you can redistribute it and/or 00005 ; modify it under the terms of the GNU General Public License 00006 ; as published by the Free Software Foundation; either version 2 00007 ; of the License, or (at your option) any later version. 00008 ; 00009 ; This program is distributed in the hope that it will be useful, 00010 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 ; GNU General Public License for more details. 00013 ; 00014 ; You should have received a copy of the GNU General Public License 00015 ; along with this program; if not, write to the 00016 ; MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00017 ; Free Software Foundation, Inc. 00018 ; 51 Franklin Street, Fifth Floor 00019 ; Boston, MA 02110-1301, USA. 00020 ; 00021 ;********************************************************************** 00022 00023 00024 ;********************************************************************** 00025 ; DF1 - retro 00026 ;********************************************************************** 00027 start_pattern 7, 0x40 051D M table1 M if (7 == 1) || (7 == 6) M dt 7,0x40,(endpat1-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x40,(endpat1-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x40,(endpat1-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x40,(endpat1-$)/4 ;tbltype1,speed,length M else 051D 3407 3440 3406 M dt 7,0x40,(endpat1-$-1) M endif M endif M endif M endif 0520 34A1 00028 dt b'10100001' ; left shift /w set low time. 0521 34C1 00029 dt b'11000001' ; left shift /w set med time 0522 34E1 00030 dt b'11100001' ; left shift /w set hi time 0523 34C1 00031 dt b'11000001' ; left shift /w set med time 0524 34A1 00032 dt b'10100001' ; left shift /w set low time. 0525 3492 00033 dt b'10010010' ; left shift /w clear 18 times. 00034 end_pattern 0526 M endpat1 00000002 M patternc = patternc + 1 00035 00036 ;********************************************************************** 00037 ; DF1 - retro 00038 ;********************************************************************** 00039 start_pattern 7, 0x27 0526 M table2 M if (7 == 1) || (7 == 6) M dt 7,0x27,(endpat2-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x27,(endpat2-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x27,(endpat2-$)/5 ;tbltype1,speed,length M else MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (7 == 0x0a) M dt 7,0x27,(endpat2-$)/4 ;tbltype1,speed,length M else 0526 3407 3427 3406 M dt 7,0x27,(endpat2-$-1) M endif M endif M endif M endif 0529 3461 00040 dt b'01100001' ; right shift /w set hi time 052A 3423 00041 dt b'00100011' ; right shift /w set low time 3 times 052B 3418 00042 dt b'00011000' ; right shift /w clear 25 times. 052C 34E1 00043 dt b'11100001' ; left shift /w set hi time 052D 34A3 00044 dt b'10100011' ; left shift /w set low time 3 times 052E 3498 00045 dt b'10011000' ; left shift /w clear 25 times 00046 end_pattern 052F M endpat2 00000003 M patternc = patternc + 1 00047 00048 ;********************************************************************** 00049 ; DF1 - fader 00050 ;********************************************************************** 00051 start_pattern 8, 0x27 052F M table3 M if (8 == 1) || (8 == 6) M dt 8,0x27,(endpat3-$)/3 ;tbltype1,speed,length M else M if (8 == 3) || (8 == 0x0b) M dt 8,0x27,(endpat3-$)/2 ;tbltype1,speed,length M else M if (8 == 9) M dt 8,0x27,(endpat3-$)/5 ;tbltype1,speed,length M else M if (8 == 0x0a) M dt 8,0x27,(endpat3-$)/4 ;tbltype1,speed,length M else 052F 3408 3427 3400 M dt 8,0x27,(endpat3-$-1) M endif M endif M endif M endif 00052 end_pattern 0532 M endpat3 00000004 M patternc = patternc + 1 00053 00054 ;********************************************************************** 00055 ; DF2 - xmas 00056 ;********************************************************************** 00057 start_pattern 7, 0x20 0532 M table4 M if (7 == 1) || (7 == 6) M dt 7,0x20,(endpat4-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE M dt 7,0x20,(endpat4-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x20,(endpat4-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x20,(endpat4-$)/4 ;tbltype1,speed,length M else 0532 3407 3420 3402 M dt 7,0x20,(endpat4-$-1) M endif M endif M endif M endif 0535 34F3 00058 dt b'11110011' ; left shift /w set 19 times. 0536 341F 00059 dt b'00011111' ; clear all LEDs 00060 end_pattern 0537 M endpat4 00000005 M patternc = patternc + 1 00061 ;********************************************************************** 00062 ; DF2 - xmas 00063 ;********************************************************************** 00064 start_pattern 7, 0x20 0537 M table5 M if (7 == 1) || (7 == 6) M dt 7,0x20,(endpat5-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x20,(endpat5-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x20,(endpat5-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x20,(endpat5-$)/4 ;tbltype1,speed,length M else 0537 3407 3420 3406 M dt 7,0x20,(endpat5-$-1) M endif M endif M endif M endif 053A 34B3 00065 dt b'10110011' ; left shift /w low set 19 times. 053B 3453 00066 dt b'01010011' ; right shift /w med set 19 times. 053C 34F3 00067 dt b'11110011' ; left shift /w hi set 19 times. 053D 3453 00068 dt b'01010011' ; right shift /w med set 19 times. 053E 34B3 00069 dt b'10110011' ; left shift /w low set 19 times. 053F 341E 00070 dt b'00011110' ; right shift /w off set 30 times. 00071 end_pattern 0540 M endpat5 00000006 M patternc = patternc + 1 00072 ;********************************************************************** 00073 ; DF2 - xmas 00074 ;********************************************************************** 00075 start_pattern 7, 0x20 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0540 M table6 M if (7 == 1) || (7 == 6) M dt 7,0x20,(endpat6-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x20,(endpat6-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x20,(endpat6-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x20,(endpat6-$)/4 ;tbltype1,speed,length M else 0540 3407 3420 3406 M dt 7,0x20,(endpat6-$-1) M endif M endif M endif M endif 0543 3428 00076 dt b'00101000' ; right shift /w low set 8 times. 0544 3448 00077 dt b'01001000' ; right shift /w med set 8 times. 0545 346E 00078 dt b'01101110' ; right shift /w hi set 30 times. 0546 3448 00079 dt b'01001000' ; right shift /w med set 8 times. 0547 3428 00080 dt b'00101000' ; right shift /w low set 8 times. 0548 3408 00081 dt b'00001000' ; right shift /w off set 8 times. 00082 end_pattern 0549 M endpat6 00000007 M patternc = patternc + 1 00083 ;********************************************************************** 00084 ; DF3 - train 00085 ;********************************************************************** 00086 start_pattern 7, 0x20 0549 M table7 M if (7 == 1) || (7 == 6) M dt 7,0x20,(endpat7-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x20,(endpat7-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x20,(endpat7-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x20,(endpat7-$)/4 ;tbltype1,speed,length M else 0549 3407 3420 3404 M dt 7,0x20,(endpat7-$-1) M endif M endif M endif M endif 054C 34E1 00087 dt b'11100001' ; left shift /w set 1 time. 054D 3493 00088 dt b'10010011' ; left shift /w clear 19 times 054E 3461 00089 dt b'01100001' ; right shift /w set 1 time. 054F 3413 00090 dt b'00010011' ; right shift /w clear 19 times MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00091 end_pattern 0550 M endpat7 00000008 M patternc = patternc + 1 00092 00093 ;********************************************************************** 00094 ; DF4 - on off 00095 ;********************************************************************** 00096 start_pattern 6, 0x30 0550 M table8 M if (6 == 1) || (6 == 6) 0550 3406 3430 3402 M dt 6,0x30,(endpat8-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x30,(endpat8-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x30,(endpat8-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x30,(endpat8-$)/4 ;tbltype1,speed,length M else M dt 6,0x30,(endpat8-$-1) M endif M endif M endif M endif 0553 3455 3455 3440 00097 dt 0x55, 0x55, 0x40 ; 1 0556 34AA 34AA 34A0 00098 dt 0xAA, 0xAA, 0xA0 ; 2 00099 end_pattern 0559 M endpat8 00000009 M patternc = patternc + 1 00100 00101 ;********************************************************************** 00102 ; DF5 - fast 00103 ;********************************************************************** 00104 start_pattern 7, 0x05 0559 M table9 M if (7 == 1) || (7 == 6) M dt 7,0x05,(endpat9-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x05,(endpat9-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x05,(endpat9-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x05,(endpat9-$)/4 ;tbltype1,speed,length M else 0559 3407 3405 3402 M dt 7,0x05,(endpat9-$-1) M endif M endif M endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 055C 34E1 00105 dt b'11100001' ; left shift /w set 1 time. 055D 3492 00106 dt b'10010010' ; left shift /w clear 18 times 00107 end_pattern 055E M endpat9 0000000A M patternc = patternc + 1 00108 00109 ;********************************************************************** 00110 ; DF6 - center 00111 ;********************************************************************** 00112 start_pattern 6, 0x30 055E M table10 M if (6 == 1) || (6 == 6) 055E 3406 3430 340A M dt 6,0x30,(endpat10-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x30,(endpat10-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x30,(endpat10-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x30,(endpat10-$)/4 ;tbltype1,speed,length M else M dt 6,0x30,(endpat10-$-1) M endif M endif M endif M endif 0561 3480 3400 3420 00113 dt 0x80, 0x00, 0x20 ; L19 0564 3440 3400 3440 00114 dt 0x40, 0x00, 0x40 ; L18 0567 3420 3400 3480 00115 dt 0x20, 0x00, 0x80 ; L17 056A 3410 3401 3400 00116 dt 0x10, 0x01, 0x00 ; L16 056D 3408 3402 3400 00117 dt 0x08, 0x02, 0x00 ; L15 0570 3404 3404 3400 00118 dt 0x04, 0x04, 0x00 ; L14 0573 3402 3408 3400 00119 dt 0x02, 0x08, 0x00 ; L13 0576 3401 3410 3400 00120 dt 0x01, 0x10, 0x00 ; L12 0579 3400 34A0 3400 00121 dt 0x00, 0xA0, 0x00 ; L11 057C 3400 3440 3400 00122 dt 0x00, 0x40, 0x00 ; L10 00123 end_pattern 057F M endpat10 0000000B M patternc = patternc + 1 00124 00125 ;********************************************************************** 00126 ; DF7 - right 00127 ;********************************************************************** 00128 start_pattern 7, 0x20 057F M table11 M if (7 == 1) || (7 == 6) M dt 7,0x20,(endpat11-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x20,(endpat11-$)/2 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (7 == 9) M dt 7,0x20,(endpat11-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x20,(endpat11-$)/4 ;tbltype1,speed,length M else 057F 3407 3420 3404 M dt 7,0x20,(endpat11-$-1) M endif M endif M endif M endif 0582 34E1 00129 dt b'11100001' ; left shift /w set 1 time. 0583 3483 00130 dt b'10000011' ; left shift /w clear 3 times 0584 34E1 00131 dt b'11100001' ; left shift /w set 1 time. 0585 3492 00132 dt b'10010010' ; left shift /w clear 18 times. 00133 end_pattern 0586 M endpat11 0000000C M patternc = patternc + 1 00134 00135 ;********************************************************************** 00136 ; DF8 - chaser 00137 ;********************************************************************** 00138 start_pattern 6, 0x10 0586 M table12 M if (6 == 1) || (6 == 6) 0586 3406 3410 3404 M dt 6,0x10,(endpat12-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x10,(endpat12-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x10,(endpat12-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x10,(endpat12-$)/4 ;tbltype1,speed,length M else M dt 6,0x10,(endpat12-$-1) M endif M endif M endif M endif 0589 3411 3411 3400 00139 dt 0x11, 0x11, 0x00 ; L18 058C 3422 3422 3420 00140 dt 0x22, 0x22, 0x20 ; L17 058F 3444 3444 3440 00141 dt 0x44, 0x44, 0x40 ; L16 0592 3488 3488 3480 00142 dt 0x88, 0x88, 0x80 ; L15 00143 end_pattern 0595 M endpat12 0000000D M patternc = patternc + 1 00144 ;********************************************************************** 00145 ; DF8 - forward/backward chaser 00146 ;********************************************************************** 00147 start_pattern 6, 0x07 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0595 M table13 M if (6 == 1) || (6 == 6) 0595 3406 3407 3416 M dt 6,0x07,(endpat13-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x07,(endpat13-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x07,(endpat13-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x07,(endpat13-$)/4 ;tbltype1,speed,length M else M dt 6,0x07,(endpat13-$-1) M endif M endif M endif M endif 0598 3411 3411 3400 00148 dt 0x11, 0x11, 0x00 ; L18 059B 3422 3422 3420 00149 dt 0x22, 0x22, 0x20 ; L17 059E 3444 3444 3440 00150 dt 0x44, 0x44, 0x40 ; L16 05A1 3488 3488 3480 00151 dt 0x88, 0x88, 0x80 ; L15 05A4 3411 3411 3400 00152 dt 0x11, 0x11, 0x00 ; L18 05A7 3422 3422 3420 00153 dt 0x22, 0x22, 0x20 ; L17 05AA 3444 3444 3440 00154 dt 0x44, 0x44, 0x40 ; L16 05AD 3488 3488 3480 00155 dt 0x88, 0x88, 0x80 ; L15 05B0 3411 3411 3400 00156 dt 0x11, 0x11, 0x00 ; L18 05B3 3422 3422 3420 00157 dt 0x22, 0x22, 0x20 ; L17 05B6 3444 3444 3440 00158 dt 0x44, 0x44, 0x40 ; L16 05B9 3488 3488 3480 00159 dt 0x88, 0x88, 0x80 ; L15 05BC 3444 3444 3440 00160 dt 0x44, 0x44, 0x40 ; L16 05BF 3422 3422 3420 00161 dt 0x22, 0x22, 0x20 ; L17 05C2 3411 3411 3400 00162 dt 0x11, 0x11, 0x00 ; 05C5 3488 3488 3480 00163 dt 0x88, 0x88, 0x80 ; L15 05C8 3444 3444 3440 00164 dt 0x44, 0x44, 0x40 ; L16 05CB 3422 3422 3420 00165 dt 0x22, 0x22, 0x20 ; L17 05CE 3411 3411 3400 00166 dt 0x11, 0x11, 0x00 ; 05D1 3488 3488 3480 00167 dt 0x88, 0x88, 0x80 ; L15 05D4 3444 3444 3440 00168 dt 0x44, 0x44, 0x40 ; L16 05D7 3422 3422 3420 00169 dt 0x22, 0x22, 0x20 ; L17 00170 end_pattern 05DA M endpat13 0000000E M patternc = patternc + 1 00171 ;********************************************************************** 00172 ; DF8 - shift 00173 ;********************************************************************** 00174 start_pattern 6, 0x20 05DA M table14 M if (6 == 1) || (6 == 6) 05DA 3406 3420 3412 M dt 6,0x20,(endpat14-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x20,(endpat14-$)/2 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (6 == 9) M dt 6,0x20,(endpat14-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x20,(endpat14-$)/4 ;tbltype1,speed,length M else M dt 6,0x20,(endpat14-$-1) M endif M endif M endif M endif 05DD 342A 34AA 34A0 00175 dt 0x2A, 0xAA, 0xA0 ; 1 05E0 344A 34AA 34A0 00176 dt 0x4A, 0xAA, 0xA0 ; 2 05E3 3452 34AA 34A0 00177 dt 0x52, 0xAA, 0xA0 ; 3 05E6 3454 34AA 34A0 00178 dt 0x54, 0xAA, 0xA0 ; 4 05E9 3455 342A 34A0 00179 dt 0x55, 0x2A, 0xA0 ; 5 05EC 3455 344A 34A0 00180 dt 0x55, 0x4A, 0xA0 ; 6 05EF 3455 3452 34A0 00181 dt 0x55, 0x52, 0xA0 ; 7 05F2 3455 3454 34A0 00182 dt 0x55, 0x54, 0xA0 ; 8 05F5 3455 3455 3420 00183 dt 0x55, 0x55, 0x20 ; 9 05F8 3455 3455 3440 00184 dt 0x55, 0x55, 0x40 ; 10 05FB 34A5 3455 3440 00185 dt 0xA5, 0x55, 0x40 ; 11 05FE 34A9 3455 3440 00186 dt 0xA9, 0x55, 0x40 ; 12 0601 34AA 3455 3440 00187 dt 0xAA, 0x55, 0x40 ; 13 0604 34AA 3495 3440 00188 dt 0xAA, 0x95, 0x40 ; 14 0607 34AA 34A5 3440 00189 dt 0xAA, 0xA5, 0x40 ; 15 060A 34AA 34A9 3440 00190 dt 0xAA, 0xA9, 0x40 ; 16 060D 34AA 34AA 3480 00191 dt 0xAA, 0xAA, 0x80 ; 17 0610 34AA 34AA 34A0 00192 dt 0xAA, 0xAA, 0xA0 ; 18 00193 end_pattern 0613 M endpat14 0000000F M patternc = patternc + 1 00194 00195 ;********************************************************************** 00196 ; Moris Code "Duckon" 00197 ;********************************************************************** 00198 start_pattern 7, 0x70 0613 M table15 M if (7 == 1) || (7 == 6) M dt 7,0x70,(endpat15-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x70,(endpat15-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x70,(endpat15-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x70,(endpat15-$)/4 ;tbltype1,speed,length M else 0613 3407 3470 3438 M dt 7,0x70,(endpat15-$-1) M endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif 00199 ; D 0616 34E3 00200 dt b'11100011' ; left shift /w set 3 time. - 0617 3483 00201 dt b'10000011' ; left shift /w clear 3 times 0618 34E1 00202 dt b'11100001' ; left shift /w set 1 time. . 0619 3483 00203 dt b'10000011' ; left shift /w clear 3 times 061A 34E1 00204 dt b'11100001' ; left shift /w set 1 time. . 061B 3487 00205 dt b'10000111' ; left shift /w clear 7 times 00206 ; U 061C 34E1 00207 dt b'11100001' ; left shift /w set 1 time. . 061D 3483 00208 dt b'10000011' ; left shift /w clear 3 times 061E 34E1 00209 dt b'11100001' ; left shift /w set 1 time. . 061F 3483 00210 dt b'10000011' ; left shift /w clear 3 times 0620 34E3 00211 dt b'11100011' ; left shift /w set 3 time. - 0621 3487 00212 dt b'10000111' ; left shift /w clear 7 times 00213 ; C 0622 34E3 00214 dt b'11100011' ; left shift /w set 3 time. - 0623 3483 00215 dt b'10000011' ; left shift /w clear 3 times 0624 34E1 00216 dt b'11100001' ; left shift /w set 1 time. . 0625 3483 00217 dt b'10000011' ; left shift /w clear 3 times 0626 34E3 00218 dt b'11100011' ; left shift /w set 3 time. - 0627 3483 00219 dt b'10000011' ; left shift /w clear 3 times 0628 34E1 00220 dt b'11100001' ; left shift /w set 1 time. . 0629 3487 00221 dt b'10000111' ; left shift /w clear 7 times 00222 ; K 062A 34E3 00223 dt b'11100011' ; left shift /w set 3 time. - 062B 3483 00224 dt b'10000011' ; left shift /w clear 3 times 062C 34E1 00225 dt b'11100001' ; left shift /w set 1 time. . 062D 3483 00226 dt b'10000011' ; left shift /w clear 3 times 062E 34E3 00227 dt b'11100011' ; left shift /w set 3 time. - 062F 3487 00228 dt b'10000111' ; left shift /w clear 7 times 00229 ; O 0630 34E3 00230 dt b'11100011' ; left shift /w set 3 time. - 0631 3483 00231 dt b'10000011' ; left shift /w clear 3 times 0632 34E3 00232 dt b'11100011' ; left shift /w set 3 time. - 0633 3483 00233 dt b'10000011' ; left shift /w clear 3 times 0634 34E3 00234 dt b'11100011' ; left shift /w set 3 time. - 0635 3487 00235 dt b'10000111' ; left shift /w clear 7 times 00236 ; N 0636 34E3 00237 dt b'11100011' ; left shift /w set 3 time. - 0637 3483 00238 dt b'10000011' ; left shift /w clear 3 times 0638 34E1 00239 dt b'11100001' ; left shift /w set 1 time. . 0639 3487 00240 dt b'10000111' ; left shift /w clear 7 times 00241 ; 1 063A 34E1 00242 dt b'11100001' ; left shift /w set 1 time. . 063B 3483 00243 dt b'10000011' ; left shift /w clear 3 times 063C 34E3 00244 dt b'11100011' ; left shift /w set 3 time. - 063D 3483 00245 dt b'10000011' ; left shift /w clear 3 times 063E 34E3 00246 dt b'11100011' ; left shift /w set 3 time. - 063F 3483 00247 dt b'10000011' ; left shift /w clear 3 times 0640 34E3 00248 dt b'11100011' ; left shift /w set 3 time. - MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0641 3483 00249 dt b'10000011' ; left shift /w clear 3 times 0642 34E3 00250 dt b'11100011' ; left shift /w set 3 time. - 0643 3487 00251 dt b'10000111' ; left shift /w clear 7 times 00252 ; 6 0644 34E3 00253 dt b'11100011' ; left shift /w set 3 time. - 0645 3483 00254 dt b'10000011' ; left shift /w clear 3 times 0646 34E1 00255 dt b'11100001' ; left shift /w set 1 time. . 0647 3483 00256 dt b'10000011' ; left shift /w clear 3 times 0648 34E1 00257 dt b'11100001' ; left shift /w set 1 time. . 0649 3483 00258 dt b'10000011' ; left shift /w clear 3 times 064A 34E1 00259 dt b'11100001' ; left shift /w set 1 time. . 064B 3483 00260 dt b'10000011' ; left shift /w clear 3 times 064C 34E1 00261 dt b'11100001' ; left shift /w set 1 time. . 00262 ; 064D 3492 00263 dt b'10010010' ; left shift /w clear 18 times. 00264 end_pattern 064E M endpat15 00000010 M patternc = patternc + 1 00265 00266 ;********************************************************************** 00267 ; Ward's Bounce 00268 ;********************************************************************** 00269 00270 00271 start_pattern 6, 0x20 064E M table16 M if (6 == 1) || (6 == 6) 064E 3406 3420 3430 M dt 6,0x20,(endpat16-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x20,(endpat16-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x20,(endpat16-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x20,(endpat16-$)/4 ;tbltype1,speed,length M else M dt 6,0x20,(endpat16-$-1) M endif M endif M endif M endif 0651 3480 3400 3400 00272 dt b'10000000',b'00000000',b'00000000' 0654 3480 3400 3400 00273 dt b'10000000',b'00000000',b'00000000' 0657 3480 3400 3400 00274 dt b'10000000',b'00000000',b'00000000' 065A 3440 3400 3400 00275 dt b'01000000',b'00000000',b'00000000' 065D 3410 3400 3400 00276 dt b'00010000',b'00000000',b'00000000' 0660 3402 3400 3400 00277 dt b'00000010',b'00000000',b'00000000' 0663 3400 3440 3400 00278 dt b'00000000',b'01000000',b'00000000' 0666 3400 3408 3400 00279 dt b'00000000',b'00001000',b'00000000' 0669 3400 3401 3400 00280 dt b'00000000',b'00000001',b'00000000' 066C 3400 3400 3420 00281 dt b'00000000',b'00000000',b'00100000' MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 066F 3400 3401 3400 00282 dt b'00000000',b'00000001',b'00000000' 0672 3400 3408 3400 00283 dt b'00000000',b'00001000',b'00000000' 0675 3400 3420 3400 00284 dt b'00000000',b'00100000',b'00000000' 0678 3400 3440 3400 00285 dt b'00000000',b'01000000',b'00000000' 067B 3400 3440 3400 00286 dt b'00000000',b'01000000',b'00000000' 067E 3400 3420 3400 00287 dt b'00000000',b'00100000',b'00000000' 0681 3400 3408 3400 00288 dt b'00000000',b'00001000',b'00000000' 0684 3400 3401 3400 00289 dt b'00000000',b'00000001',b'00000000' 0687 3400 3400 3420 00290 dt b'00000000',b'00000000',b'00100000' 068A 3400 3400 3480 00291 dt b'00000000',b'00000000',b'10000000' 068D 3400 3402 3400 00292 dt b'00000000',b'00000010',b'00000000' 0690 3400 3404 3400 00293 dt b'00000000',b'00000100',b'00000000' 0693 3400 3404 3400 00294 dt b'00000000',b'00000100',b'00000000' 0696 3400 3402 3400 00295 dt b'00000000',b'00000010',b'00000000' 0699 3400 3400 3480 00296 dt b'00000000',b'00000000',b'10000000' 069C 3400 3400 3420 00297 dt b'00000000',b'00000000',b'00100000' 069F 3400 3400 3480 00298 dt b'00000000',b'00000000',b'10000000' 06A2 3400 3401 3400 00299 dt b'00000000',b'00000001',b'00000000' 06A5 3400 3401 3400 00300 dt b'00000000',b'00000001',b'00000000' 06A8 3400 3400 3480 00301 dt b'00000000',b'00000000',b'10000000' 06AB 3400 3400 3420 00302 dt b'00000000',b'00000000',b'00100000' 06AE 3400 3400 3440 00303 dt b'00000000',b'00000000',b'01000000' 06B1 3400 3400 3480 00304 dt b'00000000',b'00000000',b'10000000' 06B4 3400 3400 3480 00305 dt b'00000000',b'00000000',b'10000000' 06B7 3400 3400 3440 00306 dt b'00000000',b'00000000',b'01000000' 06BA 3400 3400 3420 00307 dt b'00000000',b'00000000',b'00100000' 06BD 3400 3400 3440 00308 dt b'00000000',b'00000000',b'01000000' 06C0 3400 3400 3440 00309 dt b'00000000',b'00000000',b'01000000' 06C3 3400 3400 3420 00310 dt b'00000000',b'00000000',b'00100000' 06C6 3400 3400 3420 00311 dt b'00000000',b'00000000',b'00100000' 06C9 3400 3400 3420 00312 dt b'00000000',b'00000000',b'00100000' 06CC 3400 3400 3420 00313 dt b'00000000',b'00000000',b'00100000' 06CF 3400 3400 3420 00314 dt b'00000000',b'00000000',b'00100000' 06D2 3400 3400 3420 00315 dt b'00000000',b'00000000',b'00100000' 06D5 3400 3400 3420 00316 dt b'00000000',b'00000000',b'00100000' 06D8 3400 3400 3420 00317 dt b'00000000',b'00000000',b'00100000' 06DB 3400 3400 3420 00318 dt b'00000000',b'00000000',b'00100000' 06DE 3400 3400 3401 00319 dt b'00000000',b'00000000',b'00000001' ;blank 00320 end_pattern 06E1 M endpat16 00000011 M patternc = patternc + 1 00321 00322 00323 ;********************************************************************** 00324 ; DF8 - four running 00325 ;********************************************************************** 00326 start_pattern 7, 0x20 06E1 M table17 M if (7 == 1) || (7 == 6) M dt 7,0x20,(endpat17-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x20,(endpat17-$)/2 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (7 == 9) M dt 7,0x20,(endpat17-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x20,(endpat17-$)/4 ;tbltype1,speed,length M else 06E1 3407 3420 3402 M dt 7,0x20,(endpat17-$-1) M endif M endif M endif M endif 06E4 3464 00327 dt b'01100100' ; right shift /w set 4 time. 06E5 3413 00328 dt b'00010011' ; right shift /w clear 19 times 00329 end_pattern 06E6 M endpat17 00000012 M patternc = patternc + 1 00330 ;********************************************************************** 00331 ; DF8 - down 00332 ;********************************************************************** 00333 start_pattern 7, 0x10 06E6 M table18 M if (7 == 1) || (7 == 6) M dt 7,0x10,(endpat18-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x10,(endpat18-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x10,(endpat18-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x10,(endpat18-$)/4 ;tbltype1,speed,length M else 06E6 3407 3410 3402 M dt 7,0x10,(endpat18-$-1) M endif M endif M endif M endif 06E9 34F3 00334 dt b'11110011' ; left shift /w set 19 time. 06EA 3493 00335 dt b'10010011' ; left shift /w clear 19 times 00336 end_pattern 06EB M endpat18 00000013 M patternc = patternc + 1 00337 ;********************************************************************** 00338 ; DF8 - down 00339 ;********************************************************************** 00340 start_pattern 6, 0x10 06EB M table19 M if (6 == 1) || (6 == 6) 06EB 3406 3410 3403 M dt 6,0x10,(endpat19-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE M dt 6,0x10,(endpat19-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x10,(endpat19-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x10,(endpat19-$)/4 ;tbltype1,speed,length M else M dt 6,0x10,(endpat19-$-1) M endif M endif M endif M endif 06EE 3492 3449 3420 00341 dt 0x92, 0x49, 0x20 ; Red 06F1 3424 3492 3440 00342 dt 0x24, 0x92, 0x40 ; Red 06F4 3449 3424 3480 00343 dt 0x49, 0x24, 0x80 ; Red 00344 end_pattern 06F7 M endpat19 00000014 M patternc = patternc + 1 00345 ;********************************************************************** 00346 ; DF8 - down 00347 ;********************************************************************** 00348 start_pattern 6, 0x10 06F7 M table20 M if (6 == 1) || (6 == 6) 06F7 3406 3410 3403 M dt 6,0x10,(endpat20-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x10,(endpat20-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x10,(endpat20-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x10,(endpat20-$)/4 ;tbltype1,speed,length M else M dt 6,0x10,(endpat20-$-1) M endif M endif M endif M endif 06FA 3492 3449 3420 00349 dt 0x92, 0x49, 0x20 ; Red 06FD 3449 3424 3480 00350 dt 0x49, 0x24, 0x80 ; Red 0700 3424 3492 3440 00351 dt 0x24, 0x92, 0x40 ; Red 00352 end_pattern 0703 M endpat20 00000015 M patternc = patternc + 1 00353 ;********************************************************************** 00354 ; DF8 - down 00355 ;********************************************************************** 00356 start_pattern 6, 0x05 0703 M table21 M if (6 == 1) || (6 == 6) MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0703 3406 3405 3415 M dt 6,0x05,(endpat21-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x05,(endpat21-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x05,(endpat21-$)/5 ;tbltype1,speed,length M else M if (6 == 0x0a) M dt 6,0x05,(endpat21-$)/4 ;tbltype1,speed,length M else M dt 6,0x05,(endpat21-$-1) M endif M endif M endif M endif 0706 3400 3400 3420 00357 dt 0x00, 0x00, 0x20 ; L19 0709 3400 3400 3480 00358 dt 0x00, 0x00, 0x80 ; L17 070C 3400 3402 3400 00359 dt 0x00, 0x02, 0x00 ; L15 070F 3400 3408 3400 00360 dt 0x00, 0x08, 0x00 ; L13 0712 3400 3420 3400 00361 dt 0x00, 0x20, 0x00 ; L11 0715 3400 3480 3400 00362 dt 0x00, 0x80, 0x00 ; L9 0718 3402 3400 3400 00363 dt 0x02, 0x00, 0x00 ; L7 071B 3408 3400 3400 00364 dt 0x08, 0x00, 0x00 ; L5 071E 3420 3400 3400 00365 dt 0x20, 0x00, 0x00 ; L3 0721 3480 3400 3400 00366 dt 0x80, 0x00, 0x00 ; L1 0724 3400 3400 3400 00367 dt 0x00, 0x00, 0x00 ; Blank 0727 3400 3400 3440 00368 dt 0x00, 0x00, 0x40 ; L18 072A 3400 3401 3400 00369 dt 0x00, 0x01, 0x00 ; L16 072D 3400 3404 3400 00370 dt 0x00, 0x04, 0x00 ; L14 0730 3400 3410 3400 00371 dt 0x00, 0x10, 0x00 ; L12 0733 3400 3440 3400 00372 dt 0x00, 0x40, 0x00 ; L10 0736 3401 3400 3400 00373 dt 0x01, 0x00, 0x00 ; L8 0739 3404 3400 3400 00374 dt 0x04, 0x00, 0x00 ; L6 073C 3410 3400 3400 00375 dt 0x10, 0x00, 0x00 ; L4 073F 3440 3400 3400 00376 dt 0x40, 0x00, 0x00 ; L2 0742 3400 3400 3400 00377 dt 0x00, 0x00, 0x00 ; Blank 00378 end_pattern 0745 M endpat21 00000016 M patternc = patternc + 1 00379 ;********************************************************************** 00380 ; DF8 - round 00381 ;********************************************************************** 00382 start_pattern 6, 0x05 0745 M table22 M if (6 == 1) || (6 == 6) 0745 3406 3405 3413 M dt 6,0x05,(endpat22-$)/3 ;tbltype1,speed,length M else M if (6 == 3) || (6 == 0x0b) M dt 6,0x05,(endpat22-$)/2 ;tbltype1,speed,length M else M if (6 == 9) M dt 6,0x05,(endpat22-$)/5 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (6 == 0x0a) M dt 6,0x05,(endpat22-$)/4 ;tbltype1,speed,length M else M dt 6,0x05,(endpat22-$-1) M endif M endif M endif M endif 0748 3400 3400 3420 00383 dt 0x00, 0x00, 0x20 ; L19 074B 3400 3400 3480 00384 dt 0x00, 0x00, 0x80 ; L17 074E 3400 3402 3400 00385 dt 0x00, 0x02, 0x00 ; L15 0751 3400 3408 3400 00386 dt 0x00, 0x08, 0x00 ; L13 0754 3400 3420 3400 00387 dt 0x00, 0x20, 0x00 ; L11 0757 3400 3480 3400 00388 dt 0x00, 0x80, 0x00 ; L9 075A 3402 3400 3400 00389 dt 0x02, 0x00, 0x00 ; L7 075D 3408 3400 3400 00390 dt 0x08, 0x00, 0x00 ; L5 0760 3420 3400 3400 00391 dt 0x20, 0x00, 0x00 ; L3 0763 3480 3400 3400 00392 dt 0x80, 0x00, 0x00 ; L1 0766 3440 3400 3400 00393 dt 0x40, 0x00, 0x00 ; L2 0769 3410 3400 3400 00394 dt 0x10, 0x00, 0x00 ; L4 076C 3404 3400 3400 00395 dt 0x04, 0x00, 0x00 ; L6 076F 3401 3400 3400 00396 dt 0x01, 0x00, 0x00 ; L8 0772 3400 3440 3400 00397 dt 0x00, 0x40, 0x00 ; L10 0775 3400 3410 3400 00398 dt 0x00, 0x10, 0x00 ; L12 0778 3400 3404 3400 00399 dt 0x00, 0x04, 0x00 ; L14 077B 3400 3401 3400 00400 dt 0x00, 0x01, 0x00 ; L16 077E 3400 3400 3440 00401 dt 0x00, 0x00, 0x40 ; L18 00402 end_pattern 0781 M endpat22 00000017 M patternc = patternc + 1 00403 ;********************************************************************** 00404 ; DF1 - retro 00405 ;********************************************************************** 00406 start_pattern 7, 0x10 0781 M table23 M if (7 == 1) || (7 == 6) M dt 7,0x10,(endpat23-$)/3 ;tbltype1,speed,length M else M if (7 == 3) || (7 == 0x0b) M dt 7,0x10,(endpat23-$)/2 ;tbltype1,speed,length M else M if (7 == 9) M dt 7,0x10,(endpat23-$)/5 ;tbltype1,speed,length M else M if (7 == 0x0a) M dt 7,0x10,(endpat23-$)/4 ;tbltype1,speed,length M else 0781 3407 3410 3402 M dt 7,0x10,(endpat23-$-1) M endif M endif M endif M endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0784 34E1 00407 dt b'11100001' ; left shift /w set 2 time. 0785 3492 00408 dt b'10010010' ; left shift /w clear 18 timesk 00409 end_pattern 0786 M endpat23 00000018 M patternc = patternc + 1 00410 00411 ;********************************************************************** 00412 ; eeprom 00413 ;********************************************************************** 00414 2100 00415 ORG 0x2100 ; data EEPROM location 2100 0007 0090 0002 00416 DE 0x07,0x90,(endpat0-$-1) 2103 0061 00417 DE b'01100001' ; right shift /w set 1 time. 2104 0012 00418 DE b'00010010' ; right shift /w set 18 times. 00419 00420 ; DE 0x80, 0x00, 0x00 ; L1 00421 ; DE 0x40, 0x00, 0x00 ; L2 00422 ; DE 0x20, 0x00, 0x00 ; L3 00423 ; DE 0x10, 0x00, 0x00 ; L4 00424 ; DE 0x08, 0x00, 0x00 ; L5 00425 ; DE 0x04, 0x00, 0x00 ; L6 00426 ; DE 0x02, 0x00, 0x00 ; L7 00427 ; DE 0x01, 0x00, 0x00 ; L8 00428 ; DE 0x00, 0x80, 0x00 ; L9 00429 ; DE 0x00, 0x40, 0x00 ; L10 00430 ; DE 0x00, 0x20, 0x00 ; L11 00431 ; DE 0x00, 0x10, 0x00 ; L12 00432 ; DE 0x00, 0x08, 0x00 ; L13 00433 ; DE 0x00, 0x04, 0x00 ; L14 00434 ; DE 0x00, 0x02, 0x00 ; L15 00435 ; DE 0x00, 0x01, 0x00 ; L16 00436 ; DE 0x00, 0x00, 0x80 ; L17 00437 ; DE 0x00, 0x00, 0x40 ; L18 00438 ; DE 0x00, 0x00, 0x20 ; L19 00439 ; DE 0x00, 0x00, 0x00 ; BLank 2105 00440 endpat0 03587 #endif 03588 #ifdef C19 03589 #include <19bi_circle_patterns.asm> 03590 #endif 03591 Warning[212]: Expected (ENDIF) 03592 END ; directive 'end of program' MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 105 SYMBOL TABLE LABEL VALUE A0_A1_reg 00000027 A0_A2_reg 00000028 A0_A4_reg 00000029 A0_A5_reg 0000002A A1_A0_reg 0000002B A1_A2_reg 0000002C A1_A4_reg 0000002D A1_A5_reg 0000002E A2_A0_reg 0000002F A2_A1_reg 00000030 A2_A4_reg 00000031 A2_A5_reg 00000032 A4_A0_reg 00000033 A4_A1_reg 00000034 A4_A2_reg 00000035 A4_A5_reg 00000036 A5_A0_reg 00000037 A5_A1_reg 00000038 A5_A2_reg 00000039 A5_A4_reg 0000003A ADCON0 0000001F ADCS0 00000004 ADCS1 00000005 ADCS2 00000006 ADFM 00000007 ADIE 00000006 ADIF 00000006 ADON 00000000 ADRESH 0000001E ADRESL 0000009E ANS0 00000000 ANS1 00000001 ANS2 00000002 ANS3 00000003 ANSEL 0000009F Ax_dir 000000F4 BRIGHT1 0x40 BRIGHT2 0xA0 C 00000000 CCP1CON 00000015 CCP1IE 00000005 CCP1IF 00000005 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCPR1H 00000014 CCPR1L 00000013 CHS0 00000002 CHS1 00000003 CHS2 00000004 CINV 00000004 CIS 00000003 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 106 SYMBOL TABLE LABEL VALUE CM0 00000000 CM1 00000001 CM2 00000002 CMCON0 00000019 CMCON1 0000001A CMIE 00000003 CMIF 00000003 CMSYNC 00000000 COUT 00000006 DC 00000001 DC1B0 00000004 DC1B1 00000005 DISPLAY_1BIT_D EEADR 0000009B EECON1 0000009C EECON2 0000009D EEDAT 0000009A EEDATA 0000009A EEIE 00000007 EEIF 00000007 ENABLE_IR F 00000001 FLIPBYTE FSR 00000004 GIE 00000007 GO 00000001 GO_DONE 00000001 GPIE 00000003 GPIF 00000000 GPIO 00000005 HTS 00000002 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IOC 00000096 IOC0 00000000 IOC1 00000001 IOC2 00000002 IOC3 00000003 IOC4 00000004 IOC5 00000005 IOCA 00000096 IOCA0 00000000 IOCA1 00000001 IOCA2 00000002 IOCA3 00000003 IOCA4 00000004 IOCA5 00000005 IRBIT 0 IRCF0 00000004 IRCF1 00000005 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 107 SYMBOL TABLE LABEL VALUE IRCF2 00000006 IRP 00000007 IR_Tester 0000048A IR_in 0000003D IR_in_good 00000045 IR_lhalf 00000041 LTS 00000001 Lcontinue 00000259 LedOut Lstate0 00000158 Lstate0a 00000160 Lstate1 00000163 Lstate10 000001AB Lstate10a 000001B1 Lstate11 000001B7 Lstate12 000001BB Lstate12a 000001C1 Lstate13 000001C7 Lstate14 000001CB Lstate14a 000001D1 Lstate15 000001D7 Lstate16 000001DB Lstate16a 000001E1 Lstate17 000001E7 Lstate18 000001EB Lstate18a 000001F1 Lstate19 000001F7 Lstate1a 00000168 Lstate2 0000016B Lstate20 000001FB Lstate20a 00000201 Lstate21 00000207 Lstate22 0000020B Lstate22a 00000211 Lstate23 00000217 Lstate24 0000021B Lstate24a 00000221 Lstate25 00000227 Lstate26 0000022B Lstate26a 00000231 Lstate27 00000237 Lstate28 0000023B Lstate28a 00000241 Lstate29 00000247 Lstate2a 00000170 Lstate3 00000173 Lstate30 0000024B Lstate30a 00000251 Lstate31 00000257 Lstate3a 00000178 Lstate4 0000017B Lstate4a 00000180 Lstate5 00000183 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 108 SYMBOL TABLE LABEL VALUE Lstate5a 00000188 Lstate6 0000018B Lstate6a 00000195 Lstate6b 00000193 Lstate7 00000197 Lstate8 0000019B Lstate8a 000001A1 Lstate9 000001A7 MasterTable 000004ED NOT_BOD 00000000 NOT_DONE 00000001 NOT_GPPU 00000007 NOT_PD 00000003 NOT_POR 00000001 NOT_RAPU 00000007 NOT_T1SYNC 00000002 NOT_TO 00000004 NUM_TAB 00000017 OPTION_REG 00000081 OSCCON 0000008F OSCTUNE 00000090 OSFIE 00000002 OSFIF 00000002 OSTS 00000003 PATTERN6 PATTERN7 PATTERN8 PCL 00000002 PCLATH 0000000A PCON 0000008E PEIE 00000006 PIE1 0000008C PIR1 0000000C PORTA 00000005 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RD 00000000 RP0 00000005 RP1 00000006 S19 SBODEN 00000004 SCS 00000000 STATUS 00000003 SWDTEN 00000000 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 109 SYMBOL TABLE LABEL VALUE T1CON 00000010 T1GE 00000006 T1GINV 00000007 T1GSS 00000001 T1IE 00000000 T1IF 00000000 T1OSCEN 00000003 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 T2IE 00000001 T2IF 00000001 TICK_VALUE D'35' TMR0 00000001 TMR1CS 00000001 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISIO 00000085 TUN0 00000000 TUN1 00000001 TUN2 00000002 TUN3 00000003 TUN4 00000004 ULPWUE 00000005 VCFG 00000006 VR0 00000000 VR1 00000001 VR2 00000002 VR3 00000003 VRCON 00000099 VREN 00000007 VRR 00000005 W 00000000 WDTCON 00000018 WDTPS0 00000001 WDTPS1 00000002 WDTPS2 00000003 WDTPS3 00000004 WPU 00000095 WPUA 00000095 WR 00000001 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 110 SYMBOL TABLE LABEL VALUE WREN 00000002 WRERR 00000003 Z 00000002 _BOD_NSLEEP 00003EFF _BOD_OFF 00003CFF _BOD_ON 00003FFF _BOD_SBODEN 00003DFF _CPD_OFF 00003FFF _CPD_ON 00003F7F _CP_OFF 00003FFF _CP_ON 00003FBF _EC_OSC 00003FFB _EXTRC 00003FFF _EXTRCIO 00003FFE _EXTRC_OSC_CLKOUT 00003FFF _EXTRC_OSC_NOCLKOUT 00003FFE _FCMEN_OFF 000037FF _FCMEN_ON 00003FFF _HS_OSC 00003FFA _IESO_OFF 00003BFF _IESO_ON 00003FFF _INTOSC 00003FFD _INTOSCIO 00003FFC _INTRC_OSC_CLKOUT 00003FFD _INTRC_OSC_NOCLKOUT 00003FFC _LP_OSC 00003FF8 _MCLRE_OFF 00003FDF _MCLRE_ON 00003FFF _PWRTE_OFF 00003FFF _PWRTE_ON 00003FEF _WDT_OFF 00003FF7 _WDT_ON 00003FFF _XT_OSC 00003FF9 __12F683 00000001 address 0000003F blinkie_check 00000361 butcount 00000046 button 00000042 button_check 0000037D cf8_loop2a 00000433 color 0000006C command 0000003E count1 00000023 count2 00000024 dcycle 00000022 delay 000002BB delay1 0000006A delay_count 00000056 delay_loop 000002BC delay_loop2 00000274 demo_mode 00000066 display_1bit 0000044C display_cycle0 00000051 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 111 SYMBOL TABLE LABEL VALUE display_cycle1 0000005D display_cycle2 00000069 display_cycle3 00000075 display_cycle4 00000081 display_pattern_id 000002E3 drive_main_leds 00000033 dupvar end_pattern endpat0 00002105 endpat1 00000526 endpat10 0000057F endpat11 00000586 endpat12 00000595 endpat13 000005DA endpat14 00000613 endpat15 0000064E endpat16 000006E1 endpat17 000006E6 endpat18 000006EB endpat19 000006F7 endpat2 0000052F endpat20 00000703 endpat21 00000745 endpat22 00000781 endpat23 00000786 endpat3 00000532 endpat4 00000537 endpat5 00000540 endpat6 00000549 endpat7 00000550 endpat8 00000559 endpat9 0000055E entry exit_int 0000004C exit_tx 0000004A fad 0000006B fbyte_loop 000002B4 fcount 00000026 flip_in 00000053 flip_lcount 00000055 flip_out 00000054 flipbyte 000002B0 get_next_pattern_entry 00000317 get_next_tx_bit 00000269 get_state_tbl_hi_address 00000100 get_state_tbl_low_address 00000106 glabel1 0000031D go_state_table 00000114 greturn 00000327 iloop1 000004A4 in0 00000061 in1 00000062 in2 00000063 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 112 SYMBOL TABLE LABEL VALUE input 000000F6 instate 0000003B intcon_save 000000F2 itop 0000048A loop_ddf 000004D8 main 000004C0 make_mtab make_state_jump_table max_instate 0000003C mem 0000006D mem2 000000F7 mult_nop next_pattern 000002C0 nextf 00000021 out0 0000004E out1 0000004F out2 00000050 out3 00000051 out_address 0000004A out_command 0000004B out_pattern 0000004D out_toggle 0000004C p2count 00000068 p2loop 000003B4 past_exit 000002D0 past_pattern 000002C8 pattern 0000005F pattern_driver 00000355 patternc 00000018 pclath_save 0000005C pclath_temp 000000F3 pindex 000000F5 pindex2 00000044 ploop0 0000035F ploop1a 00000383 ploop2 00000389 ploop2a 000003A0 ploop3 000003A5 psize 00000067 pspeed 00000065 ptop 00000355 qcount 00000049 qdelay 00000273 read_button_in 0000025A read_eeprom 0000033A read_ir_in 0000025E remote_check 00000368 repeat 00000025 repeat_loop 00000026 rf_command_out 00000277 scount 00000052 send_nothing 00000032 send_one 0000001B MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 113 SYMBOL TABLE LABEL VALUE send_zero 00000030 set_exit 000002DB set_loop 000002D4 set_max_state 00000262 set_pattern 000002D1 setbank0 bcf STATUS,RP0 setbank1 bsf STATUS,RP0 setup_pattern_table 000002F4 setup_pattern_temp 0000005A skip1 00000015 slabel1 00000302 smi_l1 00000268 speed 00000064 sreturn 00000316 start_pattern state2_tbl state_jump_table 00000118 state_tbl status_temp 000000F1 stop2 000002F4 strobe_a0 0000008D strobe_a1 000000A4 strobe_a2 000000BB strobe_a4 000000D2 strobe_a5 000000E9 strobe_c0 000000D2 strobe_c1 000000D2 strobe_c2 000000D2 strobe_c4 000000D2 strobe_count 00000057 strobe_delay 000002DC strobe_delay1 000002DD strobe_delay2 000002DE t7_cont 00000420 t7_loop 000003C7 t7_return 00000428 t7_set19 000003F5 t7count 00000069 table0 0000051D table1 0000051D table10 0000055E table11 0000057F table12 00000586 table13 00000595 table14 000005DA table15 00000613 table16 0000064E table17 000006E1 table18 000006E6 table19 000006EB table2 00000526 table20 000006F7 table21 00000703 MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 114 SYMBOL TABLE LABEL VALUE table22 00000745 table23 00000781 table3 0000052F table4 00000532 table5 00000537 table6 00000540 table7 00000549 table8 00000550 table9 00000559 table_lookup 000004E6 table_lookup2 0000010D table_type_6 000003A8 table_type_7 000003B9 table_type_8 00000429 tbl2_hi 00000047 tbl2_low 00000048 tbl_hi 00000058 tbl_low 00000059 tbltype 00000060 tbltype1 tdemo_cont 0000034E tdemo_on 0000034C temp2 0000005D temp_high 0000005B toggle 00000040 toggle_demo 00000344 toggle_demo_temp 0000005E tx_1 00000043 var var_all_bank w_temp 000000F0 write_eeprom 00000329 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.06 GENERIC_683.ASM 5-31-2007 19:41:25 PAGE 115 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 06C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0780 : XXXXXX---------- ---------------- ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXX----------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 1923 Program Memory Words Free: 125 Errors : 0 Warnings : 1 reported, 0 suppressed Messages : 0 reported, 64 suppressed