MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 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 18:56:47 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 00001 LIST 00002 ; P12F683.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00339 LIST 00081 LIST P=PIC12F683 0000000E 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 ;********************************* MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00103 ;#define BI6 00104 ;#define BIN2LED 00105 ;#define PATTERN1 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00156 ;NUM_TAB equ d'19' ;highest pattern table number 00157 00158 ;********************************* 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 00169 ; LIST P=PIC12F683 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 18:56:47 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 18:56:47 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 18:56:47 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 2CB1 00366 goto main ; go to beginning of program 00367 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 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 18:56:47 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 00410 movlw 0x05 00411 #else 00412 #ifdef C19 00413 movlw 0x07 00414 #else 000B 3004 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 084A 00434 movf scount,w ; F22 0016 3E00 00435 addlw 0 ; F23 0017 1903 00436 btfsc STATUS,Z ; F24 0018 282E 00437 goto send_nothing ; F25 00438 0019 1C3B 00439 btfss tx_1,0 ; F26 001A 282C 00440 goto send_zero ; F27 00441 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 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 00448 setbank1 00449 movlw b'00010010' ;set A0 & A5 led to outpu 00450 movwf TRISA 00451 setbank0 00452 #define IRBIT 0 00453 #else 00454 #define IRBIT 4 00455 #endif 001B 1605 00456 bsf PORTA,IRBIT ; A01 00457 001C 222E 00458 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00459 ; mult_nop d'9' ; A17-A25 001D 3001 00460 movlw 01h 001E 2238 00461 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 001F 0000 00462 nop 00463 0020 301E 00464 movlw 0x1E ; C26 (23) 0021 00A5 00465 movwf repeat ; C27 0022 00466 repeat_loop 0022 1205 00467 bcf PORTA,IRBIT ; D01 00468 00469 ; mult_nop d'26' ; D02-D27 0023 3007 00470 movlw 07h 0024 2238 00471 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 00472 0025 1605 00473 bsf PORTA,IRBIT ; E01 (27) 00474 00475 ; mult_nop d'23' ; E02-E24 0026 3006 00476 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 0027 2238 00477 call qdelay 00478 0028 0BA5 00479 decfsz repeat,f ; E25 (24) 0029 2822 00480 goto repeat_loop ; E26/E27 00481 002A 1205 00482 bcf PORTA,IRBIT 002B 2842 00483 goto exit_tx 00484 00485 ;-------------------------------------------------------------------------------------- 002C 00486 send_zero ; we are going to release all the CPU time to the main line for display. 00487 ;-------------------------------------------------------------------------------------- 00488 002C 222E 00489 call get_next_tx_bit ; 2 + 11 cycles A04-A16 002D 282F 00490 goto drive_main_leds MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00491 00492 ;-------------------------------------------------------------------------------------- 002E 00493 send_nothing ; Drive the main LEDs. 00494 ;-------------------------------------------------------------------------------------- 00495 002E 2223 00496 call read_ir_in 00497 #ifdef DEDICATED_BUTTON 00498 call read_button_in 00499 #endif 00500 ; goto drive_main_leds 00501 00502 ;-------------------------------------------------------------------------------------- 002F 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 00000027 M Ar_reg equ mem 00000028 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00510 var Ag_reg 00000028 M Ag_reg equ mem 00000029 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00511 var Ab_reg 00000029 M Ab_reg equ mem 0000002A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00512 var Br_reg 0000002A M Br_reg equ mem 0000002B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00513 var Bg_reg 0000002B M Bg_reg equ mem 0000002C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00514 var Bb_reg 0000002C M Bb_reg equ mem 0000002D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00515 var Cr_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000002D M Cr_reg equ mem 0000002E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00516 var Cg_reg 0000002E M Cg_reg equ mem 0000002F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00517 var Cb_reg 0000002F M Cb_reg equ mem 00000030 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00518 var Dr_reg 00000030 M Dr_reg equ mem 00000031 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00519 var Dg_reg 00000031 M Dg_reg equ mem 00000032 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00520 var Db_reg 00000032 M Db_reg equ mem 00000033 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 00521 #endif 00522 #endif 00523 #ifdef BADGE 00524 var Center_reg 00525 #endif 00526 #ifdef S19 00527 var A0_A1_reg 00528 var A0_A2_reg 00529 var A0_A4_reg 00530 var A0_A5_reg 00531 var A1_A0_reg 00532 var A1_A2_reg 00533 var A1_A4_reg 00534 var A1_A5_reg 00535 var A2_A0_reg 00536 var A2_A1_reg 00537 var A2_A4_reg 00538 var A2_A5_reg 00539 var A4_A0_reg 00540 var A4_A1_reg 00541 var A4_A2_reg 00542 var A4_A5_reg 00543 var A5_A0_reg 00544 var A5_A1_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00545 var A5_A2_reg 00546 var A5_A4_reg 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 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 00603 movlw 0x30 00604 #else 00605 #ifdef C19 00606 movlw 0x21 00607 #else 002F 303A 00608 movlw 0x3a 00609 #endif 00610 #endif 00611 0030 00A6 00612 movwf fcount 00613 0031 3008 00614 movlw b'00001000' ;set LED matrix pins to input (tri-stated) 0032 00F4 00615 movwf Ax_dir 00616 #ifdef C19 00617 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 00618 #endif 00619 0033 0822 00620 movf dcycle,w ; testing for 0 0034 1903 00621 btfsc STATUS,Z 0035 2049 00622 call display_cycle0 00623 0036 3001 00624 movlw 0x01 ; testing for 1 0037 0222 00625 subwf dcycle,w 0038 1903 00626 btfsc STATUS,Z 0039 2055 00627 call display_cycle1 00628 003A 3002 00629 movlw 0x02 ; testing for 2 003B 0222 00630 subwf dcycle,w 003C 1903 00631 btfsc STATUS,Z 003D 2061 00632 call display_cycle2 00633 003E 3003 00634 movlw 0x03 ; testing for 3 003F 0222 00635 subwf dcycle,w 0040 1903 00636 btfsc STATUS,Z 0041 206D 00637 call display_cycle3 00638 00639 #ifdef S19 00640 movlw 0x04 ; testing for 4 00641 subwf dcycle,w 00642 btfsc STATUS,Z 00643 call display_cycle4 00644 #endif 00645 #ifdef C19 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;-------------------------------------------------------------------------------------- 0042 00664 exit_tx 00665 ;-------------------------------------------------------------------------------------- 00666 0042 0185 00667 clrf PORTA ;DDF debug hack ; turn all the LED off 00668 00669 ; clear timer0 interupt 0043 110B 00670 bcf INTCON,T0IF 00671 00672 ; restore state, return form interupt 00673 0044 00674 exit_int 00675 #ifdef __12F683 0044 0E71 00676 swapf status_temp,w 0045 0083 00677 movwf STATUS 0046 0EF0 00678 swapf w_temp,f 0047 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 0048 0009 00688 retfie ; return from interrupt 00689 00690 ;-------------------------------------------------------------------------------------- 0049 00691 display_cycle0 00692 ;-------------------------------------------------------------------------------------- 00693 0049 2079 00694 call strobe_a0 004A 0BA6 00695 decfsz fcount,f 004B 2849 00696 goto display_cycle0 00697 00698 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 004C 20C5 00699 call get_state_tbl_hi_address 004D 2079 00700 call strobe_a0 004E 20CB 00701 call get_state_tbl_low_address 004F 2079 00702 call strobe_a0 0050 20D9 00703 call go_state_table 0051 2079 00704 call strobe_a0 0052 2227 00705 call set_max_state 0053 2079 00706 call strobe_a0 00707 0054 0008 00708 return 00709 00710 ;-------------------------------------------------------------------------------------- 0055 00711 display_cycle1 00712 ;-------------------------------------------------------------------------------------- 00713 0055 208C 00714 call strobe_a1 0056 0BA6 00715 decfsz fcount,f 0057 2855 00716 goto display_cycle1 00717 0058 20C5 00718 call get_state_tbl_hi_address 0059 208C 00719 call strobe_a1 005A 20CB 00720 call get_state_tbl_low_address 005B 208C 00721 call strobe_a1 005C 20D9 00722 call go_state_table 005D 208C 00723 call strobe_a1 005E 2227 00724 call set_max_state 005F 208C 00725 call strobe_a1 00726 0060 0008 00727 return 00728 00729 ;-------------------------------------------------------------------------------------- 0061 00730 display_cycle2 00731 ;-------------------------------------------------------------------------------------- 00732 0061 209F 00733 call strobe_a2 0062 0BA6 00734 decfsz fcount,f 0063 2861 00735 goto display_cycle2 00736 0064 20C5 00737 call get_state_tbl_hi_address 0065 209F 00738 call strobe_a2 0066 20CB 00739 call get_state_tbl_low_address 0067 209F 00740 call strobe_a2 0068 20D9 00741 call go_state_table 0069 209F 00742 call strobe_a2 006A 2227 00743 call set_max_state 006B 209F 00744 call strobe_a2 00745 006C 0008 00746 return 00747 00748 ;-------------------------------------------------------------------------------------- 006D 00749 display_cycle3 00750 ;-------------------------------------------------------------------------------------- 00751 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00752 #ifndef C19 006D 20B2 00753 call strobe_a5 006E 0BA6 00754 decfsz fcount,f 006F 286D 00755 goto display_cycle3 00756 00757 #ifdef ENABLE_IR 0070 20C5 00758 call get_state_tbl_hi_address 0071 20B2 00759 call strobe_a5 0072 20CB 00760 call get_state_tbl_low_address 0073 20B2 00761 call strobe_a5 0074 20D9 00762 call go_state_table 0075 20B2 00763 call strobe_a5 0076 2227 00764 call set_max_state 0077 20B2 00765 call strobe_a5 00766 0078 0008 00767 return 00768 #else 00769 call strobe_c0 00770 decfsz fcount,f 00771 goto display_cycle3 00772 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 ;-------------------------------------------------------------------------------------- 00787 display_cycle4 00788 ;-------------------------------------------------------------------------------------- 00789 00790 call strobe_a4 00791 decfsz fcount,f 00792 goto display_cycle4 00793 00794 call get_state_tbl_hi_address 00795 call strobe_a4 00796 call get_state_tbl_low_address 00797 call strobe_a4 00798 call go_state_table 00799 call strobe_a4 00800 call set_max_state 00801 call strobe_a4 00802 00803 return 00804 #endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;-------------------------------------------------------------------------------------- 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00858 call set_max_state 00859 call strobe_c4 00860 00861 return 00862 #endif 00863 00864 ;-------------------------------------------------------------------------------------- 0079 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 0079 0801 M movfw TMR0 007A 0229 M subwf Ab_reg,w 007B 1C03 M btfss STATUS,C 007C 14F4 M bsf Ax_dir, 1 00874 LedOut Bg_reg,Ax_dir,2 ;LED Bg A0-A2 007D 0801 M movfw TMR0 007E 022B M subwf Bg_reg,w 007F 1C03 M btfss STATUS,C 0080 1574 M bsf Ax_dir, 2 00875 LedOut Cr_reg,Ax_dir,5 ;LED Cr A0-A5 0081 0801 M movfw TMR0 0082 022D M subwf Cr_reg,w 0083 1C03 M btfss STATUS,C 0084 16F4 M bsf Ax_dir, 5 00876 #endif 00877 #endif 00878 #ifdef BI6 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 00885 LedOut A0_A2_reg,Ax_dir,2 ;LED A0-A2 00886 LedOut A0_A4_reg,Ax_dir,4 ;LED A0-A4 00887 LedOut A0_A5_reg,Ax_dir,5 ;LED A0-A5 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0085 1683 00899 setbank1 0086 0874 00900 movf Ax_dir,w ;set portA direction 0087 0085 00901 movwf TRISA 00902 #ifdef C19 00903 movf Cx_dir,w ;set portA direction 00904 movwf TRISC 00905 #endif 0088 1283 00906 setbank0 00907 0089 3001 00908 movlw b'00000001' 008A 0085 00909 movwf PORTA 00910 #ifdef C19 00911 movlw b'00000000' 00912 movwf PORTC 00913 #endif 008B 0008 00914 return 00915 00916 ;-------------------------------------------------------------------------------------- 008C 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 008C 0801 M movfw TMR0 008D 0230 M subwf Dr_reg,w 008E 1C03 M btfss STATUS,C 008F 1474 M bsf Ax_dir, 0 00926 LedOut Bb_reg,Ax_dir,2 ;LED Bb A1-A2 0090 0801 M movfw TMR0 0091 022C M subwf Bb_reg,w 0092 1C03 M btfss STATUS,C 0093 1574 M bsf Ax_dir, 2 00927 LedOut Cg_reg,Ax_dir,5 ;LED Cg A1-A5 0094 0801 M movfw TMR0 0095 022E M subwf Cg_reg,w 0096 1C03 M btfss STATUS,C 0097 16F4 M bsf Ax_dir, 5 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 00937 LedOut A1_A2_reg,Ax_dir,2 ;LED A1-A2 00938 LedOut A1_A4_reg,Ax_dir,4 ;LED A1-A4 00939 LedOut A1_A5_reg,Ax_dir,5 ;LED A1-A5 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 0098 1683 00950 setbank1 0099 0874 00951 movf Ax_dir,w ;set portA direction 009A 0085 00952 movwf TRISA 00953 #ifdef C19 00954 movf Cx_dir,w ;set portA direction 00955 movwf TRISC 00956 #endif 009B 1283 00957 setbank0 009C 3002 00958 movlw b'00000010' 009D 0085 00959 movwf PORTA 00960 #ifdef C19 00961 movlw b'00000000' 00962 movwf PORTC 00963 #endif 009E 0008 00964 return 00965 00966 ;-------------------------------------------------------------------------------------- 009F 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 009F 0801 M movfw TMR0 00A0 0231 M subwf Dg_reg,w 00A1 1C03 M btfss STATUS,C 00A2 1474 M bsf Ax_dir, 0 00976 LedOut Ar_reg,Ax_dir,1 ;LED Ar A2-A1 00A3 0801 M movfw TMR0 00A4 0227 M subwf Ar_reg,w 00A5 1C03 M btfss STATUS,C 00A6 14F4 M bsf Ax_dir, 1 00977 LedOut Cb_reg,Ax_dir,5 ;LED Cb A2-A5 00A7 0801 M movfw TMR0 00A8 022F M subwf Cb_reg,w 00A9 1C03 M btfss STATUS,C 00AA 16F4 M bsf Ax_dir, 5 00978 #endif 00979 #endif 00980 #ifdef BI6 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 00987 LedOut A2_A1_reg,Ax_dir,1 ;LED A2-A1 00988 LedOut A2_A4_reg,Ax_dir,4 ;LED A2-A4 00989 LedOut A2_A5_reg,Ax_dir,5 ;LED A2-A5 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 00AB 1683 01001 setbank1 00AC 0874 01002 movf Ax_dir,w ;set portA direction 00AD 0085 01003 movwf TRISA 01004 #ifdef C19 01005 movf Cx_dir,w ;set portA direction 01006 movwf TRISC 01007 #endif 00AE 1283 01008 setbank0 01009 00AF 3004 01010 movlw b'00000100' 00B0 0085 01011 movwf PORTA 01012 #ifdef C19 01013 movlw b'00000000' 01014 movwf PORTC 01015 #endif 00B1 0008 01016 return 01017 01018 ;-------------------------------------------------------------------------------------- 00B2 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01034 movwf TRISC 01035 setbank0 01036 01037 movlw b'00000000' 01038 movwf PORTA 01039 01040 movlw b'00000001' 01041 movwf PORTC 01042 01043 return 01044 #endif 01045 ;-------------------------------------------------------------------------------------- 00B2 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 ;-------------------------------------------------------------------------------------- 00B2 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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' 01096 movwf PORTA 01097 01098 movlw b'00000100' 01099 movwf PORTC 01100 01101 return 01102 #endif 01103 #endif 01104 01105 ;-------------------------------------------------------------------------------------- 00B2 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 ;-------------------------------------------------------------------------------------- 01137 strobe_a4 01138 ;-------------------------------------------------------------------------------------- 01139 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01140 LedOut A4_A0_reg,Ax_dir,0 ;LED A4-A0 01141 LedOut A4_A1_reg,Ax_dir,1 ;LED A4-A1 01142 LedOut A4_A2_reg,Ax_dir,2 ;LED A4-A2 01143 LedOut A4_A5_reg,Ax_dir,5 ;LED A4-A5 01144 01145 setbank1 01146 movf Ax_dir,w ;set portA direction 01147 movwf TRISA 01148 setbank0 01149 01150 movlw b'00010000' 01151 movwf PORTA 01152 01153 return 01154 #endif 01155 01156 ;-------------------------------------------------------------------------------------- 00B2 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 00B2 0801 M movfw TMR0 00B3 0232 M subwf Db_reg,w 00B4 1C03 M btfss STATUS,C 00B5 1474 M bsf Ax_dir, 0 01166 LedOut Ag_reg,Ax_dir,1 ;LED Ag A5-A1 00B6 0801 M movfw TMR0 00B7 0228 M subwf Ag_reg,w 00B8 1C03 M btfss STATUS,C 00B9 14F4 M bsf Ax_dir, 1 01167 LedOut Br_reg,Ax_dir,2 ;LED Br A5-A2 00BA 0801 M movfw TMR0 00BB 022A M subwf Br_reg,w 00BC 1C03 M btfss STATUS,C 00BD 1574 M bsf Ax_dir, 2 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 01177 LedOut A5_A1_reg,Ax_dir,1 ;LED A5-A1 01178 LedOut A5_A2_reg,Ax_dir,2 ;LED A5-A2 01179 LedOut A5_A4_reg,Ax_dir,4 ;LED A5-A4 01180 #endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01181 00BE 1683 01182 setbank1 00BF 0874 01183 movf Ax_dir,w ;set portA direction 00C0 0085 01184 movwf TRISA 00C1 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 00C2 3020 01199 movlw b'00100000' 00C3 0085 01200 movwf PORTA 01201 #endif 01202 00C4 0008 01203 return 01204 01205 ;************************************************************************************** 01206 ; 01207 ; State Machine 01208 ; 01209 ;************************************************************************************** 01210 01211 var instate 00000033 M instate equ mem 00000034 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01212 var max_instate 00000034 M max_instate equ mem 00000035 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01213 var IR_in 00000035 M IR_in equ mem 00000036 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01214 var command 00000036 M command equ mem 00000037 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01215 var address 00000037 M address equ mem 00000038 M mem = mem + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem > 0xef) M error 'Too much var space used' 01216 var toggle 00000038 M toggle equ mem 00000039 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01217 var IR_lhalf 00000039 M IR_lhalf equ mem 0000003A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01218 var button 0000003A M button equ mem 0000003B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01219 var tx_1 0000003B M tx_1 equ mem 0000003C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01220 var pindex2 0000003C M pindex2 equ mem 0000003D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01221 var IR_in_good 0000003D M IR_in_good equ mem 0000003E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01222 var butcount 0000003E M butcount equ mem 0000003F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01223 01224 ;-------------------------------------------------------------------------------------- 00C5 01225 get_state_tbl_hi_address ; 17 cycles 01226 ;-------------------------------------------------------------------------------------- 01227 var tbl2_hi 0000003F M tbl2_hi equ mem 00000040 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01228 00C5 1003 01229 bcf STATUS,0 ; clear carry flag ; 1 00C6 0D33 01230 rlf instate,w ; entry = table * 2 ; 2 00C7 00BC 01231 movwf pindex2 ; 3 00C8 20D2 01232 call table_lookup2 ; 14 (9+2) 00C9 00BF 01233 movwf tbl2_hi ; 15 00CA 0008 01234 return ; 16/17 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01235 01236 ;-------------------------------------------------------------------------------------- 00CB 01237 get_state_tbl_low_address ; 18 cycles 01238 ;-------------------------------------------------------------------------------------- 01239 var tbl2_low 00000040 M tbl2_low equ mem 00000041 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01240 00CB 1003 01241 bcf STATUS,0 ; clear carry flag (just in case) ; 1 00CC 0D33 01242 rlf instate,w ; entry = table * 2 + 1 ; 2 00CD 3E01 01243 addlw 1 ; 3 00CE 00BC 01244 movwf pindex2 ; 4 00CF 20D2 01245 call table_lookup2 ; 15 (9+2) 00D0 00C0 01246 movwf tbl2_low ; 16 00D1 0008 01247 return ; 17/18 01248 01249 ;********************************************************************** 00D2 01250 table_lookup2 ; 9 cycles 01251 ;********************************************************************** 00D2 3000 01252 movlw HIGH state_jump_table ; 1 00D3 008A 01253 movwf PCLATH ; 2 00D4 083C 01254 movf pindex2,w ; 3 00D5 3EDD 01255 addlw LOW state_jump_table ; 4 00D6 1803 01256 btfsc STATUS,0 ; check carry flag ; 5 00D7 0A8A 01257 incf PCLATH,f ; 6 00D8 0082 01258 movwf PCL ; 7 + 2 01259 01260 ;********************************************************************** 00D9 01261 go_state_table ; 18 cycles 01262 ;********************************************************************** 00D9 083F 01263 movf tbl2_hi,w ; 1 00DA 008A 01264 movwf PCLATH ; 2 00DB 0840 01265 movf tbl2_low,w ; 3 00DC 0082 01266 movwf PCL ; 4 01267 01268 ;********************************************************************** 00DD 01269 state_jump_table 01270 ;********************************************************************** 01271 make_state_jump_table d'31' 0000 M local i = 0 M while i <= d'31' 00DD 3401 341D M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 00DF 3401 3428 M dt HIGH Lstate1, LOW Lstate1 00000002 M i += 1 00E1 3401 3430 M dt HIGH Lstate2, LOW Lstate2 00000003 M i += 1 00E3 3401 3438 M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 00E5 3401 3440 M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00E7 3401 3448 M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 00E9 3401 3450 M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 00EB 3401 345C M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 00ED 3401 3460 M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 00EF 3401 346C M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 00F1 3401 3470 M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 00F3 3401 347C M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 00F5 3401 3480 M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 00F7 3401 348C M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 00F9 3401 3490 M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 00FB 3401 349C M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 00FD 3401 34A0 M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 00FF 3401 34AC M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 0101 3401 34B0 M dt HIGH Lstate18, LOW Lstate18 00000013 M i += 1 0103 3401 34BC M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 0105 3401 34C0 M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 0107 3401 34CC M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 0109 3401 34D0 M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 010B 3401 34DC M dt HIGH Lstate23, LOW Lstate23 00000018 M i += 1 010D 3401 34E0 M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 010F 3401 34EC M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 0111 3401 34F0 M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 0113 3401 34FC M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 0115 3402 3400 M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 0117 3402 340C M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 0119 3402 3410 M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 011B 3402 341C M dt HIGH Lstate31, LOW Lstate31 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000020 M i += 1 M endw 01272 01273 state_tbl 0, 6, 1, 0 011D M Lstate0 M if (0 == 0) 011D 01BA M clrf button 011E 3030 M movlw 0x30 011F 00BE M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M 0120 1835 M btfsc IR_in,0 0121 2925 M goto Lstate0a M 0122 3006 M movlw 6 0123 00B3 M movwf instate M 0124 2A1E M goto Lcontinue M 0125 M Lstate0a 0125 3001 M movlw 1 0126 00B3 M movwf instate M 0127 2A1E M goto Lcontinue 01274 state_tbl 1, 0, 2, -1 0128 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 0128 1835 M btfsc IR_in,0 0129 292D M goto Lstate1a M 012A 3000 M movlw 0 012B 00B3 M movwf instate M 012C 2A1E M goto Lcontinue M 012D M Lstate1a 012D 3002 M movlw 2 012E 00B3 M movwf instate M 012F 2A1E M goto Lcontinue 01275 state_tbl 2, 0, 3, -1 0130 M Lstate2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 0130 1835 M btfsc IR_in,0 0131 2935 M goto Lstate2a M 0132 3000 M movlw 0 0133 00B3 M movwf instate M 0134 2A1E M goto Lcontinue M 0135 M Lstate2a 0135 3003 M movlw 3 0136 00B3 M movwf instate M 0137 2A1E M goto Lcontinue 01276 state_tbl 3, 4, 3, -1 0138 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 0138 1835 M btfsc IR_in,0 0139 293D M goto Lstate3a M 013A 3004 M movlw 4 013B 00B3 M movwf instate M 013C 2A1E M goto Lcontinue M 013D M Lstate3a 013D 3003 M movlw 3 013E 00B3 M movwf instate M 013F 2A1E M goto Lcontinue 01277 state_tbl 4, 0, 5, -1 0140 M Lstate4 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (-1 == 1) M bsf button,0 M endif M 0140 1835 M btfsc IR_in,0 0141 2945 M goto Lstate4a M 0142 3000 M movlw 0 0143 00B3 M movwf instate M 0144 2A1E M goto Lcontinue M 0145 M Lstate4a 0145 3005 M movlw 5 0146 00B3 M movwf instate M 0147 2A1E M goto Lcontinue 01278 state_tbl 5, 7, 0, -1 0148 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 0148 1835 M btfsc IR_in,0 0149 294D M goto Lstate5a M 014A 3007 M movlw 7 014B 00B3 M movwf instate M 014C 2A1E M goto Lcontinue M 014D M Lstate5a 014D 3000 M movlw 0 014E 00B3 M movwf instate M 014F 2A1E M goto Lcontinue 01279 0150 01280 Lstate6 01281 0150 1835 01282 btfsc IR_in,0 0151 295A 01283 goto Lstate6a 01284 0152 3000 01285 movlw 0 0153 073E 01286 addwf butcount,w 0154 1903 01287 btfsc STATUS,Z 0155 2958 01288 goto Lstate6b 01289 0156 0BBE 01290 decfsz butcount,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0157 2A1E 01291 goto Lcontinue 01292 0158 01293 Lstate6b 01294 0158 143A 01295 bsf button,0 0159 2A1E 01296 goto Lcontinue 01297 015A 01298 Lstate6a 015A 01B3 01299 clrf instate 015B 2A1E 01300 goto Lcontinue 01301 01302 state2_tbl 7, toggle, 0 015C M Lstate7 M ; save the 1st half of word 015C 0835 M movf IR_in,w ; save 1st half 015D 00B9 M movwf IR_lhalf 015E 0AB3 M incf instate,f M 015F 2A1E M goto Lcontinue M 0160 M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0160 0839 M movf IR_lhalf,w 0161 0635 M xorwf IR_in,w 0162 1D03 M btfss STATUS,Z 0163 2966 M goto Lstate8a 0164 01B3 M clrf instate ; error state = zero M 0165 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 0166 M Lstate8a 0166 1835 M btfsc IR_in,0 0167 1038 M bcf toggle,0 0168 1C35 M btfss IR_in,0 0169 1438 M bsf toggle,0 M 016A 0AB3 M incf instate,f 016B 2A1E M goto Lcontinue 01303 state2_tbl 9, address, 4 016C M Lstate9 M ; save the 1st half of word 016C 0835 M movf IR_in,w ; save 1st half 016D 00B9 M movwf IR_lhalf 016E 0AB3 M incf instate,f M 016F 2A1E M goto Lcontinue M 0170 M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0170 0839 M movf IR_lhalf,w MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0171 0635 M xorwf IR_in,w 0172 1D03 M btfss STATUS,Z 0173 2976 M goto Lstate10a 0174 01B3 M clrf instate ; error state = zero M 0175 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 0176 M Lstate10a 0176 1835 M btfsc IR_in,0 0177 1237 M bcf address,4 0178 1C35 M btfss IR_in,0 0179 1637 M bsf address,4 M 017A 0AB3 M incf instate,f 017B 2A1E M goto Lcontinue 01304 state2_tbl d'11', address, 3 017C M Lstate11 M ; save the 1st half of word 017C 0835 M movf IR_in,w ; save 1st half 017D 00B9 M movwf IR_lhalf 017E 0AB3 M incf instate,f M 017F 2A1E M goto Lcontinue M 0180 M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0180 0839 M movf IR_lhalf,w 0181 0635 M xorwf IR_in,w 0182 1D03 M btfss STATUS,Z 0183 2986 M goto Lstate12a 0184 01B3 M clrf instate ; error state = zero M 0185 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 0186 M Lstate12a 0186 1835 M btfsc IR_in,0 0187 11B7 M bcf address,3 0188 1C35 M btfss IR_in,0 0189 15B7 M bsf address,3 M 018A 0AB3 M incf instate,f 018B 2A1E M goto Lcontinue 01305 state2_tbl d'13', address, 2 018C M Lstate13 M ; save the 1st half of word 018C 0835 M movf IR_in,w ; save 1st half 018D 00B9 M movwf IR_lhalf 018E 0AB3 M incf instate,f M 018F 2A1E M goto Lcontinue MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0190 M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0190 0839 M movf IR_lhalf,w 0191 0635 M xorwf IR_in,w 0192 1D03 M btfss STATUS,Z 0193 2996 M goto Lstate14a 0194 01B3 M clrf instate ; error state = zero M 0195 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 0196 M Lstate14a 0196 1835 M btfsc IR_in,0 0197 1137 M bcf address,2 0198 1C35 M btfss IR_in,0 0199 1537 M bsf address,2 M 019A 0AB3 M incf instate,f 019B 2A1E M goto Lcontinue 01306 state2_tbl d'15', address, 1 019C M Lstate15 M ; save the 1st half of word 019C 0835 M movf IR_in,w ; save 1st half 019D 00B9 M movwf IR_lhalf 019E 0AB3 M incf instate,f M 019F 2A1E M goto Lcontinue M 01A0 M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01A0 0839 M movf IR_lhalf,w 01A1 0635 M xorwf IR_in,w 01A2 1D03 M btfss STATUS,Z 01A3 29A6 M goto Lstate16a 01A4 01B3 M clrf instate ; error state = zero M 01A5 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 01A6 M Lstate16a 01A6 1835 M btfsc IR_in,0 01A7 10B7 M bcf address,1 01A8 1C35 M btfss IR_in,0 01A9 14B7 M bsf address,1 M 01AA 0AB3 M incf instate,f 01AB 2A1E M goto Lcontinue 01307 state2_tbl d'17', address, 0 01AC M Lstate17 M ; save the 1st half of word MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01AC 0835 M movf IR_in,w ; save 1st half 01AD 00B9 M movwf IR_lhalf 01AE 0AB3 M incf instate,f M 01AF 2A1E M goto Lcontinue M 01B0 M Lstate18 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01B0 0839 M movf IR_lhalf,w 01B1 0635 M xorwf IR_in,w 01B2 1D03 M btfss STATUS,Z 01B3 29B6 M goto Lstate18a 01B4 01B3 M clrf instate ; error state = zero M 01B5 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 01B6 M Lstate18a 01B6 1835 M btfsc IR_in,0 01B7 1037 M bcf address,0 01B8 1C35 M btfss IR_in,0 01B9 1437 M bsf address,0 M 01BA 0AB3 M incf instate,f 01BB 2A1E M goto Lcontinue 01308 state2_tbl d'19', command, 5 01BC M Lstate19 M ; save the 1st half of word 01BC 0835 M movf IR_in,w ; save 1st half 01BD 00B9 M movwf IR_lhalf 01BE 0AB3 M incf instate,f M 01BF 2A1E M goto Lcontinue M 01C0 M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01C0 0839 M movf IR_lhalf,w 01C1 0635 M xorwf IR_in,w 01C2 1D03 M btfss STATUS,Z 01C3 29C6 M goto Lstate20a 01C4 01B3 M clrf instate ; error state = zero M 01C5 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 01C6 M Lstate20a 01C6 1835 M btfsc IR_in,0 01C7 12B6 M bcf command,5 01C8 1C35 M btfss IR_in,0 01C9 16B6 M bsf command,5 M MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01CA 0AB3 M incf instate,f 01CB 2A1E M goto Lcontinue 01309 state2_tbl d'21', command, 4 01CC M Lstate21 M ; save the 1st half of word 01CC 0835 M movf IR_in,w ; save 1st half 01CD 00B9 M movwf IR_lhalf 01CE 0AB3 M incf instate,f M 01CF 2A1E M goto Lcontinue M 01D0 M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01D0 0839 M movf IR_lhalf,w 01D1 0635 M xorwf IR_in,w 01D2 1D03 M btfss STATUS,Z 01D3 29D6 M goto Lstate22a 01D4 01B3 M clrf instate ; error state = zero M 01D5 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 01D6 M Lstate22a 01D6 1835 M btfsc IR_in,0 01D7 1236 M bcf command,4 01D8 1C35 M btfss IR_in,0 01D9 1636 M bsf command,4 M 01DA 0AB3 M incf instate,f 01DB 2A1E M goto Lcontinue 01310 state2_tbl d'23', command, 3 01DC M Lstate23 M ; save the 1st half of word 01DC 0835 M movf IR_in,w ; save 1st half 01DD 00B9 M movwf IR_lhalf 01DE 0AB3 M incf instate,f M 01DF 2A1E M goto Lcontinue M 01E0 M Lstate24 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01E0 0839 M movf IR_lhalf,w 01E1 0635 M xorwf IR_in,w 01E2 1D03 M btfss STATUS,Z 01E3 29E6 M goto Lstate24a 01E4 01B3 M clrf instate ; error state = zero M 01E5 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 01E6 M Lstate24a MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01E6 1835 M btfsc IR_in,0 01E7 11B6 M bcf command,3 01E8 1C35 M btfss IR_in,0 01E9 15B6 M bsf command,3 M 01EA 0AB3 M incf instate,f 01EB 2A1E M goto Lcontinue 01311 state2_tbl d'25', command, 2 01EC M Lstate25 M ; save the 1st half of word 01EC 0835 M movf IR_in,w ; save 1st half 01ED 00B9 M movwf IR_lhalf 01EE 0AB3 M incf instate,f M 01EF 2A1E M goto Lcontinue M 01F0 M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01F0 0839 M movf IR_lhalf,w 01F1 0635 M xorwf IR_in,w 01F2 1D03 M btfss STATUS,Z 01F3 29F6 M goto Lstate26a 01F4 01B3 M clrf instate ; error state = zero M 01F5 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 01F6 M Lstate26a 01F6 1835 M btfsc IR_in,0 01F7 1136 M bcf command,2 01F8 1C35 M btfss IR_in,0 01F9 1536 M bsf command,2 M 01FA 0AB3 M incf instate,f 01FB 2A1E M goto Lcontinue 01312 state2_tbl d'27', command, 1 01FC M Lstate27 M ; save the 1st half of word 01FC 0835 M movf IR_in,w ; save 1st half 01FD 00B9 M movwf IR_lhalf 01FE 0AB3 M incf instate,f M 01FF 2A1E M goto Lcontinue M 0200 M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0200 0839 M movf IR_lhalf,w 0201 0635 M xorwf IR_in,w 0202 1D03 M btfss STATUS,Z 0203 2A06 M goto Lstate28a 0204 01B3 M clrf instate ; error state = zero MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0205 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 0206 M Lstate28a 0206 1835 M btfsc IR_in,0 0207 10B6 M bcf command,1 0208 1C35 M btfss IR_in,0 0209 14B6 M bsf command,1 M 020A 0AB3 M incf instate,f 020B 2A1E M goto Lcontinue 01313 state2_tbl d'29', command, 0 020C M Lstate29 M ; save the 1st half of word 020C 0835 M movf IR_in,w ; save 1st half 020D 00B9 M movwf IR_lhalf 020E 0AB3 M incf instate,f M 020F 2A1E M goto Lcontinue M 0210 M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0210 0839 M movf IR_lhalf,w 0211 0635 M xorwf IR_in,w 0212 1D03 M btfss STATUS,Z 0213 2A16 M goto Lstate30a 0214 01B3 M clrf instate ; error state = zero M 0215 2A1E M goto Lcontinue M M ; set the correct bit in output vars. 0216 M Lstate30a 0216 1835 M btfsc IR_in,0 0217 1036 M bcf command,0 0218 1C35 M btfss IR_in,0 0219 1436 M bsf command,0 M 021A 0AB3 M incf instate,f 021B 2A1E M goto Lcontinue 01314 021C 01315 Lstate31 021C 01B3 01316 clrf instate 021D 143D 01317 bsf IR_in_good,0 01318 021E 01319 Lcontinue 021E 0008 01320 return 01321 01322 ;-------------------------------------------------------------------------------------- 021F 01323 read_button_in ; 5 cycles 01324 ;-------------------------------------------------------------------------------------- 01325 ; Portability : hardcoded button port MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01326 ; 01327 021F 103A 01328 bcf button,0 ; 1 0220 1E85 01329 btfss PORTA,5 ; 2 0221 143A 01330 bsf button,0 ; 3 01331 0222 0008 01332 return 01333 01334 ;-------------------------------------------------------------------------------------- 0223 01335 read_ir_in ; 5 cycles 01336 ;-------------------------------------------------------------------------------------- 01337 0223 1035 01338 bcf IR_in,0 ; 1 0224 1985 01339 btfsc PORTA,3 ; 2 0225 1435 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 0226 0008 01345 return ; 4/5 01346 01347 ;-------------------------------------------------------------------------------------- 0227 01348 set_max_state ; 5-7 cycles 01349 ;-------------------------------------------------------------------------------------- 0227 0834 01350 movf max_instate,w 0228 0233 01351 subwf instate,w 0229 1C03 01352 btfss STATUS,C 022A 2A2D 01353 goto smi_l1 022B 0833 01354 movf instate,w 022C 00B4 01355 movwf max_instate 022D 01356 smi_l1 022D 0008 01357 return 01358 01359 ;-------------------------------------------------------------------------------------- 022E 01360 get_next_tx_bit ; 11 cycles 01361 ;-------------------------------------------------------------------------------------- 01362 022E 103B 01363 bcf tx_1,0 ;1 022F 03CA 01364 decf scount,f ;2 0230 1003 01365 bcf STATUS, C ; clear carry bit ;3 0231 0CC9 01366 rrf out3,f ;4 0232 0CC8 01367 rrf out2,f ;5 0233 0CC7 01368 rrf out1,f ;6 0234 0CC6 01369 rrf out0,f ;7 0235 1803 01370 btfsc STATUS, C ;8 0236 143B 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 0237 0008 01378 return ;10/11 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01379 01380 ;********************************************************************** 0238 01381 qdelay 01382 ;********************************************************************** 01383 var qcount 00000041 M qcount equ mem 00000042 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01384 0238 00C1 01385 movwf qcount 0239 01386 delay_loop2 0239 0BC1 01387 decfsz qcount,1 023A 2A39 01388 goto delay_loop2 023B 0008 01389 return 01390 ;********************************************************************** 023C 01391 rf_command_out 01392 ;********************************************************************** 01393 01394 var out_address 00000042 M out_address equ mem 00000043 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01395 var out_command 00000043 M out_command equ mem 00000044 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01396 var out_toggle 00000044 M out_toggle equ mem 00000045 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01397 var out_pattern 00000045 M out_pattern equ mem 00000046 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01398 var out0 00000046 M out0 equ mem 00000047 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01399 var out1 00000047 M out1 equ mem 00000048 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01400 var out2 00000048 M out2 equ mem 00000049 M mem = mem + 1 M if (mem > 0xef) MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 01401 var out3 00000049 M out3 equ mem 0000004A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01402 var scount 0000004A M scount equ mem 0000004B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01403 023C 01C7 01404 clrf out1 023D 01C8 01405 clrf out2 023E 01C9 01406 clrf out3 01407 01408 ; start flag 023F 30A0 01409 movlw B'10100000' 0240 00C6 01410 movwf out0 01411 01412 01413 ; toggle bit 0241 09C4 01414 comf out_toggle,f ; toggle the toggle flag 0242 1C44 01415 btfss out_toggle,0 0243 1447 01416 bsf out1,0 0244 1844 01417 btfsc out_toggle,0 0245 14C7 01418 bsf out1,1 01419 01420 ; address bits 0246 1E42 01421 btfss out_address,4 0247 1547 01422 bsf out1,2 0248 1A42 01423 btfsc out_address,4 0249 15C7 01424 bsf out1,3 01425 024A 1DC2 01426 btfss out_address,3 024B 1647 01427 bsf out1,4 024C 19C2 01428 btfsc out_address,3 024D 16C7 01429 bsf out1,5 01430 024E 1D42 01431 btfss out_address,2 024F 1747 01432 bsf out1,6 0250 1942 01433 btfsc out_address,2 0251 17C7 01434 bsf out1,7 01435 0252 1CC2 01436 btfss out_address,1 0253 1448 01437 bsf out2,0 0254 18C2 01438 btfsc out_address,1 0255 14C8 01439 bsf out2,1 01440 0256 1C42 01441 btfss out_address,0 0257 1548 01442 bsf out2,2 0258 1842 01443 btfsc out_address,0 0259 15C8 01444 bsf out2,3 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01445 01446 ; command bits 025A 1EC3 01447 btfss out_command,5 025B 1648 01448 bsf out2,4 025C 1AC3 01449 btfsc out_command,5 025D 16C8 01450 bsf out2,5 01451 025E 1E43 01452 btfss out_command,4 025F 1748 01453 bsf out2,6 0260 1A43 01454 btfsc out_command,4 0261 17C8 01455 bsf out2,7 01456 0262 1DC3 01457 btfss out_command,3 0263 1449 01458 bsf out3,0 0264 19C3 01459 btfsc out_command,3 0265 14C9 01460 bsf out3,1 01461 0266 1D43 01462 btfss out_command,2 0267 1549 01463 bsf out3,2 0268 1943 01464 btfsc out_command,2 0269 15C9 01465 bsf out3,3 01466 026A 1CC3 01467 btfss out_command,1 026B 1649 01468 bsf out3,4 026C 18C3 01469 btfsc out_command,1 026D 16C9 01470 bsf out3,5 01471 026E 1C43 01472 btfss out_command,0 026F 1749 01473 bsf out3,6 0270 1843 01474 btfsc out_command,0 0271 17C9 01475 bsf out3,7 01476 0272 3021 01477 movlw 0x21 0273 00CA 01478 movwf scount 01479 0274 0008 01480 return 01481 01482 #ifdef BIN2LED 01483 ;********************************************************************** 01484 bin2led 01485 ;********************************************************************** 01486 var b2l_out_hi 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 01512 flipbyte 01513 ;********************************************************************** 01514 var flip_in 01515 var flip_out 01516 var flip_lcount 01517 01518 movwf flip_in 01519 clrf flip_out 01520 movlw 0x08 01521 movwf flip_lcount 01522 fbyte_loop 01523 bcf STATUS, C 01524 rrf flip_in,f 01525 rlf flip_out,f 01526 01527 decfsz flip_lcount,f 01528 goto fbyte_loop 01529 01530 movfw flip_out 01531 return 01532 #endif 01533 01534 ;********************************************************************** 0275 01535 delay 01536 ;********************************************************************** 01537 01538 var delay_count 0000004B M delay_count equ mem 0000004C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01539 01540 ; movlw 0ffh 0275 00CB 01541 movwf delay_count 0276 01542 delay_loop 0276 0000 01543 nop 0277 0BCB 01544 decfsz delay_count,1 0278 2A76 01545 goto delay_loop 0279 0008 01546 return MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01547 01548 ;********************************************************************** 027A 01549 next_pattern 01550 ;********************************************************************** 027A 0AD4 01551 incf pattern,f 027B 0854 01552 movf pattern,w 027C 3C0F 01553 sublw NUM_TAB+1 ; max pattern? 027D 1903 01554 btfsc STATUS,2 ; z bit check 027E 01D4 01555 clrf pattern ; reset to zero 027F 0854 01556 movfw pattern 0280 00C5 01557 movwf out_pattern 0281 0008 01558 return 01559 01560 ;********************************************************************** 0282 01561 past_pattern 01562 ;********************************************************************** 0282 03D4 01563 decf pattern,f 0283 0854 01564 movf pattern,w 0284 3E01 01565 addlw 1 ; max pattern? 0285 1D03 01566 btfss STATUS,2 ; z bit check 0286 2A8A 01567 goto past_exit 0287 300E 01568 movlw NUM_TAB 0288 00D4 01569 movwf pattern 0289 00C5 01570 movwf out_pattern 028A 01571 past_exit 028A 0008 01572 return 01573 01574 ;********************************************************************** 028B 01575 set_pattern ;set pattern from IR 01576 ;********************************************************************** 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 028B 0836 01585 movfw command 028C 00D4 01586 movwf pattern 028D 00C5 01587 movwf out_pattern 028E 01588 set_loop 028E 3EF1 01589 addlw 0xff-NUM_TAB 028F 1C03 01590 btfss STATUS, C 0290 2A95 01591 goto set_exit 01592 0291 300E 01593 movlw NUM_TAB 0292 02D4 01594 subwf pattern,f 0293 0854 01595 movfw pattern 0294 2A8E 01596 goto set_loop 01597 0295 01598 set_exit 0295 0008 01599 return MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01600 01601 ;********************************************************************** 0296 01602 strobe_delay 01603 ;********************************************************************** 01604 01605 var strobe_count 0000004C M strobe_count equ mem 0000004D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01606 0296 00CC 01607 movwf strobe_count 0297 01608 strobe_delay1 0297 1021 01609 bcf nextf,0 01610 0298 01611 strobe_delay2 0298 1C21 01612 btfss nextf,0 0299 2A98 01613 goto strobe_delay2 01614 029A 0BCC 01615 decfsz strobe_count,f 029B 2A97 01616 goto strobe_delay1 01617 029C 0008 01618 return 01619 01620 ;********************************************************************** 029D 01621 display_pattern_id 01622 ;********************************************************************** 029D 0A54 01623 incf pattern,w ; W = pattern + 1 029E 00D6 01624 movwf in0 01625 01626 #ifdef S19 01627 call flipbyte 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 01646 clrf in1 01647 clrf in2 01648 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01649 movlw b'11100000' 01650 btfsc demo_mode,0 01651 movwf in2 01652 #else 029F 01D7 01653 clrf in1 02A0 3080 01654 movlw b'10000000' 02A1 185B 01655 btfsc demo_mode,0 02A2 00D7 01656 movwf in1 01657 #endif 01658 02A3 30FF 01659 movlw 0xFF 02A4 23F7 01660 call display_1bit 01661 02A5 01D6 01662 clrf in0 02A6 01D7 01663 clrf in1 02A7 01D8 01664 clrf in2 02A8 3001 01665 movlw 0x01 02A9 23F7 01666 call display_1bit 02AA 0008 01667 return 01668 01669 ;********************************************************************** 02AB 01670 setup_pattern_table 01671 ;********************************************************************** 01672 var tbl_hi 0000004D M tbl_hi equ mem 0000004E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01673 var tbl_low 0000004E M tbl_low equ mem 0000004F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01674 var setup_pattern_temp 0000004F M setup_pattern_temp equ mem 00000050 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01675 var temp_high 00000050 M temp_high equ mem 00000051 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01676 02AB 01677 stop2 02AB 0854 01678 movf pattern,w 02AC 1D03 01679 btfss STATUS,Z 02AD 2AB9 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 02AE 0103 01685 clrw MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02AF 22F1 01686 call read_eeprom 02B0 00CF 01687 movwf setup_pattern_temp 01688 02B1 01DB 01689 clrf demo_mode 02B2 1BCF 01690 btfsc setup_pattern_temp,7 02B3 145B 01691 bsf demo_mode,0 01692 02B4 084F 01693 movfw setup_pattern_temp 02B5 1D03 01694 btfss STATUS,Z 02B6 2ACD 01695 goto sreturn 01696 02B7 227A 01697 call next_pattern 02B8 2AAB 01698 goto stop2 01699 02B9 01700 slabel1 01701 ; 01702 ; Set the pattern (table) 01703 ; 02B9 3004 01704 movlw HIGH MasterTable 02BA 00CD 01705 movwf tbl_hi 02BB 30E1 01706 movlw LOW MasterTable 02BC 00CE 01707 movwf tbl_low 01708 01709 ; get the high address for the pattern table 02BD 1003 01710 bcf STATUS,0 ; clear carry flag 02BE 0D54 01711 rlf pattern,w ; entry = table * 2 02BF 00F5 01712 movwf pindex 02C0 138B 01713 bcf INTCON, GIE ; disable INTs 02C1 24DA 01714 call table_lookup 02C2 178B 01715 bsf INTCON, GIE ; enable INTs 02C3 00D0 01716 movwf temp_high ; can't put it in tbl_high yet 01717 01718 ; get the low address for the pattern table 02C4 1403 01719 bsf STATUS,0 ; set carry 02C5 0D54 01720 rlf pattern,w ; entry = table * 2 + 1 02C6 00F5 01721 movwf pindex 02C7 138B 01722 bcf INTCON, GIE ; disable INTs 02C8 24DA 01723 call table_lookup 02C9 178B 01724 bsf INTCON, GIE ; enable INTs 02CA 00CE 01725 movwf tbl_low 01726 02CB 0850 01727 movf temp_high,w 02CC 00CD 01728 movwf tbl_hi 01729 02CD 01730 sreturn 02CD 0008 01731 return 01732 01733 ;********************************************************************** 02CE 01734 get_next_pattern_entry 01735 ;********************************************************************** 01736 var pclath_save 00000051 M pclath_save equ mem 00000052 M mem = mem + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem > 0xef) M error 'Too much var space used' 01737 var temp2 00000052 M temp2 equ mem 00000053 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01738 02CE 0854 01739 movf pattern,w 02CF 1D03 01740 btfss STATUS,Z 02D0 2AD4 01741 goto glabel1 01742 02D1 0875 01743 movf pindex,w 02D2 22F1 01744 call read_eeprom 01745 02D3 2ADE 01746 goto greturn 02D4 01747 glabel1 02D4 080A 01748 movfw PCLATH 02D5 00D1 01749 movwf pclath_save 02D6 0875 01750 movf pindex,w 02D7 138B 01751 bcf INTCON, GIE ; disable INTs 02D8 24DA 01752 call table_lookup 02D9 178B 01753 bsf INTCON, GIE ; enable INTs 02DA 00D2 01754 movwf temp2 02DB 0851 01755 movfw pclath_save 02DC 008A 01756 movwf PCLATH 02DD 0852 01757 movfw temp2 01758 02DE 01759 greturn 02DE 0AF5 01760 incf pindex,f 02DF 0008 01761 return 01762 01763 01764 ;********************************************************************** 02E0 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 ;********************************************************************** 02E0 1683 01769 setbank1 01770 02E1 189C 01771 btfsc EECON1,WR ;wait for WR to clear 02E2 2AE1 01772 goto $-1 01773 02E3 138B 01774 bcf INTCON, GIE ; disable INTs 02E4 151C 01775 bsf EECON1,WREN ;enable writes 02E5 0875 01776 movf pindex,w ;set address 02E6 009B 01777 movwf EEADR 02E7 0876 01778 movf input,w ;set data 02E8 009A 01779 movwf EEDAT 02E9 3055 01780 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 02EA 009D 01781 movwf EECON2 02EB 30AA 01782 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 02EC 009D 01783 movwf EECON2 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02ED 149C 01784 bsf EECON1,WR ;initiate a write cycle 02EE 178B 01785 bsf INTCON, GIE ; enable INT 01786 02EF 1283 01787 setbank0 02F0 0008 01788 return 01789 01790 01791 ;********************************************************************** 02F1 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 ;********************************************************************** 02F1 1683 01797 setbank1 01798 02F2 189C 01799 btfsc EECON1,WR ;wait for WR to clear 02F3 2AF2 01800 goto $-1 01801 02F4 111C 01802 bcf EECON1,WREN ;disable writes 02F5 009B 01803 movwf EEADR ;EEADR = W 02F6 139C 01804 bcf EECON1,7 ;clear EEPGD 02F7 141C 01805 bsf EECON1,RD ;initiate a read cycle 02F8 081A 01806 movf EEDAT,w ;W = EEDAT 01807 02F9 1283 01808 setbank0 02FA 0008 01809 return 01810 01811 ;********************************************************************** 02FB 01812 toggle_demo 01813 ;********************************************************************** 01814 var toggle_demo_temp 00000053 M toggle_demo_temp equ mem 00000054 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01815 02FB 0103 01816 clrw 02FC 22F1 01817 call read_eeprom 02FD 00D3 01818 movwf toggle_demo_temp 01819 02FE 1FD3 01820 btfss toggle_demo_temp,7 ; 02FF 2B03 01821 goto tdemo_on 01822 01823 ; toggle off 0300 13D3 01824 bcf toggle_demo_temp,7 0301 01DB 01825 clrf demo_mode 0302 2B05 01826 goto tdemo_cont 01827 0303 01828 tdemo_on 0303 17D3 01829 bsf toggle_demo_temp,7 0304 145B 01830 bsf demo_mode,0 01831 0305 01832 tdemo_cont MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0305 01F5 01833 clrf pindex 0306 0853 01834 movfw toggle_demo_temp 0307 00F6 01835 movwf input 0308 22E0 01836 call write_eeprom 01837 0309 229D 01838 call display_pattern_id 030A 229D 01839 call display_pattern_id 01840 030B 0008 01841 return 01842 01843 ;********************************************************************** 030C 01844 pattern_driver 01845 ;********************************************************************** 01846 01847 var pattern 00000054 M pattern equ mem 00000055 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01848 var tbltype 00000055 M tbltype equ mem 00000056 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01849 var in0 00000056 M in0 equ mem 00000057 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01850 var in1 00000057 M in1 equ mem 00000058 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01851 var in2 00000058 M in2 equ mem 00000059 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 00000059 M speed equ mem 0000005A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01860 var pspeed 0000005A M pspeed equ mem MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000005B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01861 var demo_mode 0000005B M demo_mode equ mem 0000005C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01862 var psize 0000005C M psize equ mem 0000005D 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 030C 01868 ptop 01869 01870 030C 22AB 01871 call setup_pattern_table 01872 030D 01F5 01873 clrf pindex 01874 01875 ; load the table type (Currently only 1 type) 030E 22CE 01876 call get_next_pattern_entry 030F 00D5 01877 movwf tbltype 0310 13D5 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.) 0311 22CE 01881 call get_next_pattern_entry 0312 00DA 01882 movwf pspeed 0313 0ADA 01883 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 01884 01885 ; load the table size 0314 22CE 01886 call get_next_pattern_entry ;4rgb 0315 00DC 01887 movwf psize ;4rgb 01888 0316 01889 ploop0 01890 ; 01891 ; Check for IR command in 01892 ; 0316 1C3D 01893 btfss IR_in_good,0 0317 2B34 01894 goto button_check MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01895 0318 01896 blinkie_check 0318 3007 01897 movlw 0x07 ; blinkines use address 0x07 (Experimental) 0319 0237 01898 subwf address,w 031A 1D03 01899 btfss STATUS,Z 031B 2B1F 01900 goto remote_check 01901 031C 228B 01902 call set_pattern 031D 01BD 01903 clrf IR_in_good 031E 2B0C 01904 goto ptop 01905 031F 01906 remote_check 031F 08B7 01907 movf address,f ; remote giving "0" for address (TV)? 0320 1D03 01908 btfss STATUS,Z 0321 2B34 01909 goto button_check 01910 0322 3020 01911 movlw 0x20 ; remote curser right (pattern ++) 0323 0236 01912 subwf command,w 0324 1903 01913 btfsc STATUS,Z 0325 227A 01914 call next_pattern 01915 0326 3021 01916 movlw 0x21 ; remote curser left (pattern --) 0327 0236 01917 subwf command,w 0328 1903 01918 btfsc STATUS,Z 0329 2282 01919 call past_pattern 01920 032A 3000 01921 movlw 0x00 ; remote "0" key (pattern = 0) 032B 0236 01922 subwf command,w 032C 1903 01923 btfsc STATUS,Z 032D 01D4 01924 clrf pattern 01925 032E 300C 01926 movlw 0x0c ; remote on/off key (togle demo mode!) 032F 0236 01927 subwf command,w 0330 1903 01928 btfsc STATUS,Z 0331 22FB 01929 call toggle_demo 01930 0332 01BD 01931 clrf IR_in_good 0333 2B0C 01932 goto ptop 01933 0334 01934 button_check 01935 ; ploop1 01936 0334 1C3A 01937 btfss button,0 ; if putton pressed show pattern id 0335 2B40 01938 goto ploop2 01939 0336 229D 01940 call display_pattern_id 0337 229D 01941 call display_pattern_id 01942 0338 1C3A 01943 btfss button,0 ; if putton still pressed inc pattern 0339 2B40 01944 goto ploop2 01945 033A 01946 ploop1a 033A 227A 01947 call next_pattern MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 033B 229D 01948 call display_pattern_id 033C 229D 01949 call display_pattern_id 01950 033D 183A 01951 btfsc button,0 033E 2B3A 01952 goto ploop1a 033F 2B0C 01953 goto ptop 01954 0340 01955 ploop2 01956 01957 #ifdef PATTERN1 0340 3001 01958 movlw 0x01 ; pattern1 0341 0255 01959 subwf tbltype,w 0342 1903 01960 btfsc STATUS,Z 0343 2363 01961 call table_type_1 01962 #endif 01963 01964 #ifdef PATTERN2 0344 3002 01965 movlw 0x02 ; pattern2 0345 0255 01966 subwf tbltype,w 0346 1903 01967 btfsc STATUS,Z 0347 236D 01968 call table_type_2 01969 #endif 01970 01971 #ifdef PATTERN3 0348 3003 01972 movlw 0x03 ; pattern3 0349 0255 01973 subwf tbltype,w 034A 1903 01974 btfsc STATUS,Z 034B 239C 01975 call table_type_3 01976 #endif 01977 01978 #ifdef PATTERN4 034C 3004 01979 movlw 0x04 ; pattern4 034D 0255 01980 subwf tbltype,w 034E 1903 01981 btfsc STATUS,Z 034F 23AB 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 01993 movlw 0x06 ; pattern6 01994 subwf tbltype,w 01995 btfsc STATUS,Z 01996 call table_type_6 01997 #endif 01998 01999 #ifdef PATTERN7 02000 movlw 0x07 ; pattern7 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02001 subwf tbltype,w 02002 btfsc STATUS,Z 02003 call table_type_7 02004 #endif 02005 02006 #ifdef PATTERN8 02007 movlw 0x08 ; pattern8 02008 subwf tbltype,w 02009 btfsc STATUS,Z 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 02031 call table_type_11 02032 #endif 02033 02034 02035 ; make sure we are not sending a IR signel 0350 084A 02036 movf scount,w ; F22 0351 3E00 02037 addlw 0 ; F23 0352 1D03 02038 btfss STATUS,Z ; F24 0353 2B60 02039 goto ploop3 02040 02041 ; count down till net IR signel 0354 1CA1 02042 btfss nextf,1 0355 2B60 02043 goto ploop3 02044 0356 10A1 02045 bcf nextf,1 0357 1C5B 02046 btfss demo_mode,0 0358 2B5B 02047 goto ploop2a 02048 0359 227A 02049 call next_pattern 035A 2B0C 02050 goto ptop 02051 035B 02052 ploop2a 02053 ; send an IR signel MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02054 #ifdef ENABLE_IR 035B 3007 02055 movlw 0x07 ; address 0x07 "Experimental" 035C 00C2 02056 movwf out_address 035D 0845 02057 movfw out_pattern 035E 00C3 02058 movwf out_command ; copy out_pettern 02059 035F 223C 02060 call rf_command_out 02061 #endif 02062 0360 02063 ploop3 0360 0BDC 02064 decfsz psize,f ;check for end of pattern (4rgb) 0361 2B16 02065 goto ploop0 02066 0362 2B0C 02067 goto ptop 02068 02069 #ifdef PATTERN1 02070 ;********************************************************************** 0363 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 0363 22CE 02083 call get_next_pattern_entry 0364 00D6 02084 movwf in0 02085 0365 22CE 02086 call get_next_pattern_entry 0366 00D7 02087 movwf in1 02088 0367 22CE 02089 call get_next_pattern_entry ;4rgb 0368 00D8 02090 movwf in2 ;4rgb 02091 0369 085A 02092 movf pspeed,w 036A 00D9 02093 movwf speed 036B 241F 02094 call display_2bit 02095 036C 0008 02096 return 02097 #endif 02098 02099 #ifdef PATTERN2 02100 ;********************************************************************** 036D 02101 table_type_2 02102 ;********************************************************************** 02103 02104 var delay1 0000005D M delay1 equ mem 0000005E M mem = mem + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem > 0xef) M error 'Too much var space used' 02105 var fad 0000005E M fad equ mem 0000005F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02106 var color 0000005F M color equ mem 00000060 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02107 var fad2 00000060 M fad2 equ mem 00000061 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02108 036D 0ADD 02109 incf delay1,f 02110 036E 085D 02111 movf delay1,w ; testing for 0 036F 1D03 02112 btfss STATUS,Z 0370 2B76 02113 goto cf_loop2 02114 0371 3023 02115 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 0372 00DD 02116 movwf delay1 02117 02118 ; 02119 ; select a pattern 02120 ; 0373 09DE 02121 comf fad,f 0374 085E 02122 movf fad,w ; testing for 0 0375 0ADF 02123 incf color,f 02124 0376 02125 cf_loop2 0376 085D 02126 movf delay1,w ; fading up 0377 185E 02127 btfsc fad,0 0378 095D 02128 comf delay1,w ; dafinf down 0379 00E0 02129 movwf fad2 02130 037A 3003 02131 movlw 0x03 ; greater then 3? 037B 025F 02132 subwf color,w 037C 1803 02133 btfsc STATUS,C 037D 01DF 02134 clrf color 02135 02136 037E 3000 02137 movlw 0x00 ; testing for 0 037F 025F 02138 subwf color,w 0380 1D03 02139 btfss STATUS,Z 0381 2B87 02140 goto next1 02141 0382 0860 02142 movfw fad2 0383 00A7 02143 movwf Ar_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0384 00AA 02144 movwf Br_reg 0385 00AD 02145 movwf Cr_reg 0386 00B0 02146 movwf Dr_reg 02147 0387 02148 next1 0387 3001 02149 movlw 0x01 ; testing for 1 0388 025F 02150 subwf color,w 0389 1D03 02151 btfss STATUS,Z 038A 2B90 02152 goto next2 02153 038B 0860 02154 movfw fad2 038C 00A8 02155 movwf Ag_reg 038D 00AB 02156 movwf Bg_reg 038E 00AE 02157 movwf Cg_reg 038F 00B1 02158 movwf Dg_reg 02159 0390 02160 next2 0390 3002 02161 movlw 0x02 ; testing for 2 0391 025F 02162 subwf color,w 0392 1D03 02163 btfss STATUS,Z 0393 2B99 02164 goto next3 02165 0394 0860 02166 movfw fad2 0395 00A9 02167 movwf Ab_reg 0396 00AC 02168 movwf Bb_reg 0397 00AF 02169 movwf Cb_reg 0398 00B2 02170 movwf Db_reg 02171 0399 02172 next3 0399 085A 02173 movfw pspeed 039A 2296 02174 call strobe_delay 02175 039B 0008 02176 return 02177 #endif 02178 02179 02180 #ifdef PATTERN3 02181 ;********************************************************************** 039C 02182 table_type_3 02183 ;********************************************************************** 02184 ; 02185 ; 2 bytes 02186 ; 02187 ; RRRRGGGG BBBBCDDD 02188 ; 02189 ; RRRR = bit of red LEDs to turn on 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02197 02198 var p2count 00000061 M p2count equ mem 00000062 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02199 039C 22CE 02200 call get_next_pattern_entry 039D 00D6 02201 movwf in0 02202 039E 22CE 02203 call get_next_pattern_entry 039F 00D7 02204 movwf in1 02205 02206 #ifdef BADGE 02207 movlw b'00000111' 02208 #else 03A0 300F 02209 movlw b'00001111' 02210 #endif 03A1 0557 02211 andwf in1,w 03A2 00E1 02212 movwf p2count 03A3 0AE1 02213 incf p2count,f 03A4 0DE1 02214 rlf p2count,f 03A5 0DE1 02215 rlf p2count,f 02216 03A6 02217 p2loop 03A6 085A 02218 movfw pspeed 03A7 23F7 02219 call display_1bit 02220 03A8 0BE1 02221 decfsz p2count,f 03A9 2BA6 02222 goto p2loop 02223 03AA 0008 02224 return 02225 #endif 02226 02227 02228 #ifdef PATTERN4 02229 ;********************************************************************** 03AB 02230 table_type_4 02231 ;********************************************************************** 02232 02233 ;use delay1 02234 ;use fad 02235 ;use color 02236 02237 03AB 0ADD 02238 incf delay1,f 02239 03AC 085D 02240 movf delay1,w ; testing for 0 03AD 1D03 02241 btfss STATUS,Z 03AE 2BB5 02242 goto cf_loop2a 02243 03AF 3023 02244 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 03B0 00DD 02245 movwf delay1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02246 02247 ; 02248 ; select a pattern 02249 ; 03B1 09DE 02250 comf fad,f 03B2 085E 02251 movf fad,w ; testing for 0 03B3 1C5E 02252 btfss fad,0 03B4 0ADF 02253 incf color,f 02254 03B5 02255 cf_loop2a 03B5 085D 02256 movf delay1,w ; fading up 03B6 185E 02257 btfsc fad,0 03B7 095D 02258 comf delay1,w ; dafinf down 02259 03B8 00A7 02260 movwf Ar_reg 03B9 00A8 02261 movwf Ag_reg 03BA 00A9 02262 movwf Ab_reg 03BB 00AA 02263 movwf Br_reg 03BC 00AB 02264 movwf Bg_reg 03BD 00AC 02265 movwf Bb_reg 03BE 00AD 02266 movwf Cr_reg 03BF 00AE 02267 movwf Cg_reg 03C0 00AF 02268 movwf Cb_reg 03C1 00B0 02269 movwf Dr_reg 03C2 00B1 02270 movwf Dg_reg 03C3 00B2 02271 movwf Db_reg 02272 03C4 185F 02273 btfsc color,0 03C5 01A7 02274 clrf Ar_reg 03C6 18DF 02275 btfsc color,1 03C7 01A8 02276 clrf Ag_reg 03C8 195F 02277 btfsc color,2 03C9 01A9 02278 clrf Ab_reg 03CA 185F 02279 btfsc color,0 03CB 01AA 02280 clrf Br_reg 03CC 18DF 02281 btfsc color,1 03CD 01AB 02282 clrf Bg_reg 03CE 195F 02283 btfsc color,2 03CF 01AC 02284 clrf Bb_reg 03D0 185F 02285 btfsc color,0 03D1 01AD 02286 clrf Cr_reg 03D2 18DF 02287 btfsc color,1 03D3 01AE 02288 clrf Cg_reg 03D4 195F 02289 btfsc color,2 03D5 01AF 02290 clrf Cb_reg 03D6 185F 02291 btfsc color,0 03D7 01B0 02292 clrf Dr_reg 03D8 18DF 02293 btfsc color,1 03D9 01B1 02294 clrf Dg_reg 03DA 195F 02295 btfsc color,2 03DB 01B2 02296 clrf Db_reg 02297 03DC 19DF 02298 btfsc color,3 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03DD 01A7 02299 clrf Ar_reg 03DE 19DF 02300 btfsc color,3 03DF 01A8 02301 clrf Ag_reg 03E0 19DF 02302 btfsc color,3 03E1 01A9 02303 clrf Ab_reg 02304 03E2 1A5F 02305 btfsc color,4 03E3 01AA 02306 clrf Br_reg 03E4 1A5F 02307 btfsc color,4 03E5 01AB 02308 clrf Bg_reg 03E6 1A5F 02309 btfsc color,4 03E7 01AC 02310 clrf Bb_reg 02311 03E8 1ADF 02312 btfsc color,5 03E9 01AD 02313 clrf Cr_reg 03EA 1ADF 02314 btfsc color,5 03EB 01AE 02315 clrf Cg_reg 03EC 1ADF 02316 btfsc color,5 03ED 01AF 02317 clrf Cb_reg 02318 03EE 1B5F 02319 btfsc color,6 03EF 01B0 02320 clrf Dr_reg 03F0 1B5F 02321 btfsc color,6 03F1 01B1 02322 clrf Dg_reg 03F2 1B5F 02323 btfsc color,6 03F3 01B2 02324 clrf Db_reg 02325 03F4 3020 02326 movlw 0x20 03F5 2296 02327 call strobe_delay 02328 03F6 0008 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 02349 02350 p2loop 02351 movfw pspeed MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02352 call display_1bit 02353 02354 decfsz p2count,f 02355 goto p2loop 02356 02357 return 02358 #endif 02359 02360 #ifdef PATTERN6 02361 ;********************************************************************** 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 02373 02374 call get_next_pattern_entry 02375 movwf in0 02376 02377 call get_next_pattern_entry 02378 movwf in1 02379 02380 call get_next_pattern_entry 02381 movwf in2 02382 02383 movlw b'00011111' 02384 andwf in2,w 02385 movwf p2count 02386 incf p2count,f 02387 rlf p2count,f 02388 rlf p2count,f 02389 02390 p2loop 02391 movfw pspeed 02392 call display_1bit 02393 02394 decfsz p2count,f 02395 goto p2loop 02396 02397 return 02398 #endif 02399 02400 #define BRIGHT1 0x40 02401 #define BRIGHT2 0xA0 02402 02403 #ifdef PATTERN7 02404 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 02420 02421 call get_next_pattern_entry 02422 movwf in0 02423 02424 movlw b'00011111' 02425 andwf in0,w 02426 movwf t7count 02427 02428 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 02429 subwf t7count,w 02430 btfss STATUS,Z 02431 goto t7_loop 02432 02433 clrf in0 ; quick way to clear all the LEDS. 02434 clrf in1 02435 clrf in2 02436 call display_1bit 02437 goto t7_return 02438 02439 02440 t7_loop 02441 btfsc in0,7 02442 goto t7_set19 02443 ; 02444 ; set LED 1 02445 movfw A1_A4_reg ; 18 -> 19 02446 movwf A4_A1_reg 02447 02448 movfw A2_A1_reg ; 17 -> 18 02449 movwf A1_A4_reg 02450 02451 movfw A1_A2_reg ; 16 -> 17 02452 movwf A2_A1_reg 02453 02454 movfw A2_A4_reg ; 15 -> 16 02455 movwf A1_A2_reg 02456 02457 movfw A4_A2_reg ; 14 -> 15 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02458 movwf A2_A4_reg 02459 02460 movfw A0_A1_reg ; 13 -> 14 02461 movwf A4_A2_reg 02462 02463 movfw A1_A0_reg ; 12 -> 13 02464 movwf A0_A1_reg 02465 02466 movfw A0_A4_reg ; 11 -> 12 02467 movwf A1_A0_reg 02468 02469 movfw A4_A0_reg ; 10 -> 11 02470 movwf A0_A4_reg 02471 02472 movfw A0_A2_reg ; 09 -> 10 02473 movwf A4_A0_reg 02474 02475 movfw A2_A0_reg ; 08 -> 09 02476 movwf A0_A2_reg 02477 02478 movfw A5_A1_reg ; 07 -> 08 02479 movwf A2_A0_reg 02480 02481 movfw A1_A5_reg ; 06 -> 07 02482 movwf A5_A1_reg 02483 02484 movfw A5_A4_reg ; 05 -> 06 02485 movwf A1_A5_reg 02486 02487 movfw A4_A5_reg ; 04 -> 05 02488 movwf A5_A4_reg 02489 02490 movfw A5_A2_reg ; 03 -> 04 02491 movwf A4_A5_reg 02492 02493 movfw A2_A5_reg ; 02 -> 03 02494 movwf A5_A2_reg 02495 02496 movfw A5_A0_reg ; 01 -> 02 02497 movwf A2_A5_reg 02498 02499 clrf A5_A0_reg 02500 movlw BRIGHT1 02501 btfsc in0,5 02502 addwf A5_A0_reg,f 02503 movlw BRIGHT2 02504 btfsc in0,6 02505 addwf A5_A0_reg,f 02506 goto t7_cont 02507 ; 02508 ; set LED 19 02509 t7_set19 02510 movfw A2_A5_reg ; 02 -> 01 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02511 movwf A5_A0_reg 02512 02513 movfw A5_A2_reg ; 03 -> 02 02514 movwf A2_A5_reg 02515 02516 movfw A4_A5_reg ; 04 -> 03 02517 movwf A5_A2_reg 02518 02519 movfw A5_A4_reg ; 05 -> 04 02520 movwf A4_A5_reg 02521 02522 movfw A1_A5_reg ; 06 -> 05 02523 movwf A5_A4_reg 02524 02525 movfw A5_A1_reg ; 07 -> 06 02526 movwf A1_A5_reg 02527 02528 movfw A2_A0_reg ; 08 -> 07 02529 movwf A5_A1_reg 02530 02531 movfw A0_A2_reg ; 09 -> 08 02532 movwf A2_A0_reg 02533 02534 movfw A4_A0_reg ; 10 -> 09 02535 movwf A0_A2_reg 02536 02537 movfw A0_A4_reg ; 11 -> 10 02538 movwf A4_A0_reg 02539 02540 movfw A1_A0_reg ; 12 -> 11 02541 movwf A0_A4_reg 02542 02543 movfw A0_A1_reg ; 13 -> 12 02544 movwf A1_A0_reg 02545 02546 movfw A4_A2_reg ; 14 -> 13 02547 movwf A0_A1_reg 02548 02549 movfw A2_A4_reg ; 15 -> 14 02550 movwf A4_A2_reg 02551 02552 movfw A1_A2_reg ; 16 -> 15 02553 movwf A2_A4_reg 02554 02555 movfw A2_A1_reg ; 17 -> 16 02556 movwf A1_A2_reg 02557 02558 movfw A1_A4_reg ; 18 -> 17 02559 movwf A2_A1_reg 02560 02561 movfw A4_A1_reg ; 19 -> 18 02562 movwf A1_A4_reg 02563 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02564 clrf A4_A1_reg 02565 movlw BRIGHT1 02566 btfsc in0,5 02567 addwf A4_A1_reg,f 02568 movlw BRIGHT2 02569 btfsc in0,6 02570 addwf A4_A1_reg,f 02571 02572 t7_cont 02573 02574 movf pspeed,w 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 ; 02580 btfsc button,0 ; if putton pressed show pattern id 02581 goto t7_return 02582 02583 btfsc IR_in_good,0 02584 goto t7_return 02585 02586 decfsz t7count,f 02587 goto t7_loop 02588 02589 t7_return 02590 return 02591 #endif 02592 02593 02594 #ifdef PATTERN8 02595 ;********************************************************************** 02596 table_type_8 ; - 19 LED fader 02597 ;********************************************************************** 02598 02599 var delay1 02600 var fad 02601 var color 02602 02603 02604 incf delay1,f 02605 02606 movf delay1,w ; testing for 0 02607 btfss STATUS,Z 02608 goto cf8_loop2a 02609 02610 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02611 movwf delay1 02612 02613 ; 02614 ; select a pattern 02615 ; 02616 comf fad,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02617 movf fad,w ; testing for 0 02618 btfss fad,0 02619 incf color,f 02620 02621 cf8_loop2a 02622 movf delay1,w ; fading up 02623 btfsc fad,0 02624 comf delay1,w ; fading down 02625 02626 movwf A5_A0_reg ; 01 02627 movwf A2_A5_reg ; 02 02628 movwf A5_A2_reg ; 03 02629 movwf A4_A5_reg ; 04 02630 movwf A5_A4_reg ; 05 02631 movwf A1_A5_reg ; 06 02632 movwf A5_A1_reg ; 07 02633 movwf A2_A0_reg ; 08 02634 movwf A0_A2_reg ; 09 02635 movwf A4_A0_reg ; 10 02636 movwf A0_A4_reg ; 11 02637 movwf A1_A0_reg ; 12 02638 movwf A0_A1_reg ; 13 02639 movwf A4_A2_reg ; 14 02640 movwf A2_A4_reg ; 15 02641 movwf A1_A2_reg ; 16 02642 movwf A2_A1_reg ; 17 02643 movwf A1_A4_reg ; 18 02644 movwf A4_A1_reg ; 19 02645 02646 movlw 0x03 02647 call strobe_delay 02648 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 ;********************************************************************** 03F7 02976 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 02977 ;********************************************************************** 02978 03F7 00D9 02979 movwf speed ;w has the speed/delay 02980 03F8 01A7 02981 clrf Ar_reg 03F9 1BD6 02982 btfsc in0,7 03FA 09A7 02983 comf Ar_reg,f 02984 03FB 01A8 02985 clrf Ag_reg 03FC 19D6 02986 btfsc in0,3 03FD 09A8 02987 comf Ag_reg,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02988 03FE 01A9 02989 clrf Ab_reg 03FF 1BD7 02990 btfsc in1,7 0400 09A9 02991 comf Ab_reg,f 02992 0401 01AA 02993 clrf Br_reg 0402 1B56 02994 btfsc in0,6 0403 09AA 02995 comf Br_reg,f 02996 0404 01AB 02997 clrf Bg_reg 0405 1956 02998 btfsc in0,2 0406 09AB 02999 comf Bg_reg,f 03000 0407 01AC 03001 clrf Bb_reg 0408 1B57 03002 btfsc in1,6 0409 09AC 03003 comf Bb_reg,f 03004 040A 01AD 03005 clrf Cr_reg 040B 1AD6 03006 btfsc in0,5 040C 09AD 03007 comf Cr_reg,f 03008 040D 01AE 03009 clrf Cg_reg 040E 18D6 03010 btfsc in0,1 040F 09AE 03011 comf Cg_reg,f 03012 0410 01AF 03013 clrf Cb_reg 0411 1AD7 03014 btfsc in1,5 0412 09AF 03015 comf Cb_reg,f 03016 0413 01B0 03017 clrf Dr_reg 0414 1A56 03018 btfsc in0,4 0415 09B0 03019 comf Dr_reg,f 03020 0416 01B1 03021 clrf Dg_reg 0417 1856 03022 btfsc in0,0 0418 09B1 03023 comf Dg_reg,f 03024 0419 01B2 03025 clrf Db_reg 041A 1A57 03026 btfsc in1,4 041B 09B2 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 041C 0859 03035 movf speed,w 041D 2296 03036 call strobe_delay 03037 041E 0008 03038 return 03039 #endif 03040 #ifdef DISPLAY_1BIT_D MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03041 ;********************************************************************** 03042 display_1bit ; 20 LEDs 03043 ;********************************************************************** 03044 03045 movwf speed ;w has the speed/delay 03046 03047 clrf A0_A5_reg ; IR 03048 03049 clrf A5_A0_reg ; 01 03050 btfsc in0,7 03051 comf A5_A0_reg,f 03052 03053 clrf A2_A5_reg ; 02 03054 btfsc in0,6 03055 comf A2_A5_reg,f 03056 03057 clrf A5_A2_reg ; 03 03058 btfsc in0,5 03059 comf A5_A2_reg,f 03060 03061 clrf A4_A5_reg ; 04 03062 btfsc in0,4 03063 comf A4_A5_reg,f 03064 03065 clrf A5_A4_reg ; 05 03066 btfsc in0,3 03067 comf A5_A4_reg,f 03068 03069 clrf A1_A5_reg ; 06 03070 btfsc in0,2 03071 comf A1_A5_reg,f 03072 03073 clrf A5_A1_reg ; 07 03074 btfsc in0,1 03075 comf A5_A1_reg,f 03076 03077 clrf A2_A0_reg ; 08 03078 btfsc in0,0 03079 comf A2_A0_reg,f 03080 03081 clrf A0_A2_reg ; 09 03082 btfsc in1,7 03083 comf A0_A2_reg,f 03084 03085 clrf A4_A0_reg ; 10 03086 btfsc in1,6 03087 comf A4_A0_reg,f 03088 03089 clrf A0_A4_reg ; 11 03090 btfsc in1,5 03091 comf A0_A4_reg,f 03092 03093 clrf A1_A0_reg ; 12 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03094 btfsc in1,4 03095 comf A1_A0_reg,f 03096 03097 clrf A0_A1_reg ; 13 03098 btfsc in1,3 03099 comf A0_A1_reg,f 03100 03101 clrf A4_A2_reg ; 14 03102 btfsc in1,2 03103 comf A4_A2_reg,f 03104 03105 clrf A2_A4_reg ; 15 03106 btfsc in1,1 03107 comf A2_A4_reg,f 03108 03109 clrf A1_A2_reg ; 16 03110 btfsc in1,0 03111 comf A1_A2_reg,f 03112 03113 clrf A2_A1_reg ; 17 03114 btfsc in2,7 03115 comf A2_A1_reg,f 03116 03117 clrf A1_A4_reg ; 18 03118 btfsc in2,6 03119 comf A1_A4_reg,f 03120 03121 clrf A4_A1_reg ; 19 03122 btfsc in2,5 03123 comf A4_A1_reg,f 03124 03125 03126 movf speed,w 03127 call strobe_delay 03128 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 041F 03218 display_2bit 03219 ;********************************************************************** 041F 0859 03220 movf speed,w ;enter here if repeat count is in speed 0420 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 03230 ; in1 green 03231 ; in2 blue 03232 0420 01A7 03233 clrf Ar_reg 0421 3040 03234 movlw BRIGHT1 0422 1B56 03235 btfsc in0,6 0423 07A7 03236 addwf Ar_reg,f 0424 30A0 03237 movlw BRIGHT2 0425 1BD6 03238 btfsc in0,7 0426 07A7 03239 addwf Ar_reg,f 03240 0427 01A8 03241 clrf Ag_reg 0428 3040 03242 movlw BRIGHT1 0429 1B57 03243 btfsc in1,6 042A 07A8 03244 addwf Ag_reg,f 042B 30A0 03245 movlw BRIGHT2 042C 1BD7 03246 btfsc in1,7 042D 07A8 03247 addwf Ag_reg,f 03248 042E 01A9 03249 clrf Ab_reg 042F 3040 03250 movlw BRIGHT1 0430 1B58 03251 btfsc in2,6 0431 07A9 03252 addwf Ab_reg,f MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0432 30A0 03253 movlw BRIGHT2 0433 1BD8 03254 btfsc in2,7 0434 07A9 03255 addwf Ab_reg,f 03256 0435 01AA 03257 clrf Br_reg 0436 3040 03258 movlw BRIGHT1 0437 1A56 03259 btfsc in0,4 0438 07AA 03260 addwf Br_reg,f 0439 30A0 03261 movlw BRIGHT2 043A 1AD6 03262 btfsc in0,5 043B 07AA 03263 addwf Br_reg,f 03264 043C 01AB 03265 clrf Bg_reg 043D 3040 03266 movlw BRIGHT1 043E 1A57 03267 btfsc in1,4 043F 07AB 03268 addwf Bg_reg,f 0440 30A0 03269 movlw BRIGHT2 0441 1AD7 03270 btfsc in1,5 0442 07AB 03271 addwf Bg_reg,f 03272 0443 01AC 03273 clrf Bb_reg 0444 3040 03274 movlw BRIGHT1 0445 1A58 03275 btfsc in2,4 0446 07AC 03276 addwf Bb_reg,f 0447 30A0 03277 movlw BRIGHT2 0448 1AD8 03278 btfsc in2,5 0449 07AC 03279 addwf Bb_reg,f 03280 044A 01AD 03281 clrf Cr_reg 044B 3040 03282 movlw BRIGHT1 044C 1956 03283 btfsc in0,2 044D 07AD 03284 addwf Cr_reg,f 044E 30A0 03285 movlw BRIGHT2 044F 19D6 03286 btfsc in0,3 0450 07AD 03287 addwf Cr_reg,f 03288 0451 01AE 03289 clrf Cg_reg 0452 3040 03290 movlw BRIGHT1 0453 1957 03291 btfsc in1,2 0454 07AE 03292 addwf Cg_reg,f 0455 30A0 03293 movlw BRIGHT2 0456 19D7 03294 btfsc in1,3 0457 07AE 03295 addwf Cg_reg,f 03296 0458 01AF 03297 clrf Cb_reg 0459 3040 03298 movlw BRIGHT1 045A 1958 03299 btfsc in2,2 045B 07AF 03300 addwf Cb_reg,f 045C 30A0 03301 movlw BRIGHT2 045D 19D8 03302 btfsc in2,3 045E 07AF 03303 addwf Cb_reg,f 03304 045F 01B0 03305 clrf Dr_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0460 3040 03306 movlw BRIGHT1 0461 1856 03307 btfsc in0,0 0462 07B0 03308 addwf Dr_reg,f 0463 30A0 03309 movlw BRIGHT2 0464 18D6 03310 btfsc in0,1 0465 07B0 03311 addwf Dr_reg,f 03312 0466 01B1 03313 clrf Dg_reg 0467 3040 03314 movlw BRIGHT1 0468 1857 03315 btfsc in1,0 0469 07B1 03316 addwf Dg_reg,f 046A 30A0 03317 movlw BRIGHT2 046B 18D7 03318 btfsc in1,1 046C 07B1 03319 addwf Dg_reg,f 03320 046D 01B2 03321 clrf Db_reg 046E 3040 03322 movlw BRIGHT1 046F 1858 03323 btfsc in2,0 0470 07B2 03324 addwf Db_reg,f 0471 30A0 03325 movlw BRIGHT2 0472 18D8 03326 btfsc in2,1 0473 07B2 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 03336 addwf Center_reg,f 03337 #endif 03338 0474 0859 03339 movf speed,w 0475 2296 03340 call strobe_delay 0476 0859 03341 movf speed,w 0477 2296 03342 call strobe_delay 0478 0859 03343 movf speed,w 0479 2296 03344 call strobe_delay 03345 047A 0008 03346 return 03347 #endif 03348 03349 ;********************************************************************** 03350 ; IR Tester 03351 ;********************************************************************** 047B 03352 IR_Tester 047B 03353 itop 047B 3002 03354 movlw 0x02 047C 0233 03355 subwf instate,w 047D 1C03 03356 btfss STATUS,C 047E 0103 03357 clrw 047F 00D6 03358 movwf in0 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03359 0480 3000 03360 movlw 0x00 0481 00D7 03361 movwf in1 03362 0482 3001 03363 movlw 0x01 0483 23F7 03364 call display_1bit 03365 03366 ; 03367 ; Check for push button 03368 ; 0484 1C3A 03369 btfss button,0 0485 2C95 03370 goto iloop1 0486 01B4 03371 clrf max_instate 0487 01B3 03372 clrf instate 03373 0488 084A 03374 movf scount,w ; F22 0489 3E00 03375 addlw 0 ; F23 048A 1D03 03376 btfss STATUS,Z ; F24 048B 2C95 03377 goto iloop1 03378 048C 01D6 03379 clrf in0 048D 01D7 03380 clrf in1 048E 09D7 03381 comf in1,f 03382 048F 30FF 03383 movlw 0xFF 0490 23F7 03384 call display_1bit 03385 03386 ; send an IR signel 0491 01C2 03387 clrf out_address ; address 0x00 "TV remote" 0492 300C 03388 movlw 0x0c 0493 00C3 03389 movwf out_command ; code 0x0c (on/off) 0494 223C 03390 call rf_command_out 03391 03392 ; 03393 ; Check for IR Command 03394 ; 0495 03395 iloop1 0495 1C3D 03396 btfss IR_in_good,0 0496 2C7B 03397 goto itop 0497 01BD 03398 clrf IR_in_good 03399 03400 ; flash all LEDs Red 0498 30F0 03401 movlw 0xF0 0499 00D6 03402 movwf in0 049A 01D7 03403 clrf in1 03404 049B 307F 03405 movlw 0x7f 049C 23F7 03406 call display_1bit 03407 03408 ; flash all LEDs off 049D 01D6 03409 clrf in0 049E 01D7 03410 clrf in1 03411 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 049F 303F 03412 movlw 0x3f 04A0 23F7 03413 call display_1bit 03414 03415 ; flash all LEDs Red 04A1 30F0 03416 movlw 0xF0 04A2 00D6 03417 movwf in0 04A3 01D7 03418 clrf in1 03419 04A4 307F 03420 movlw 0x7f 04A5 23F7 03421 call display_1bit 03422 03423 ; display command and address 04A6 0836 03424 movf command,w 04A7 00D6 03425 movwf in0 04A8 0837 03426 movf address,w 04A9 00D7 03427 movwf in1 03428 04AA 30FF 03429 movlw 0xff 04AB 23F7 03430 call display_1bit 04AC 30FF 03431 movlw 0xff 04AD 23F7 03432 call display_1bit 04AE 01B4 03433 clrf max_instate 04AF 01B3 03434 clrf instate 03435 04B0 2C7B 03436 goto itop 03437 03438 03439 ; 03440 ; M A I N 03441 ; 03442 ;********************************************************************** 04B1 03443 main 03444 ;********************************************************************** 04B1 01BA 03445 clrf button 04B2 0185 03446 clrf PORTA 04B3 0181 03447 clrf TMR0 04B4 01D4 03448 clrf pattern 04B5 01CA 03449 clrf scount 04B6 01B8 03450 clrf toggle 04B7 01B7 03451 clrf address 04B8 01B6 03452 clrf command 04B9 01B9 03453 clrf IR_lhalf 04BA 01B3 03454 clrf instate 04BB 01B4 03455 clrf max_instate 04BC 01BD 03456 clrf IR_in_good 04BD 01A2 03457 clrf dcycle 03458 #ifdef PATTERN2 04BE 01DD 03459 clrf delay1 04BF 01DE 03460 clrf fad 04C0 01DF 03461 clrf color 03462 #endif 03463 #ifdef MONO 03464 clrf Br_reg MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03465 clrf Bg_reg 03466 clrf Bb_reg 03467 clrf Dr_reg 03468 clrf Dg_reg 03469 clrf Db_reg 03470 #endif 03471 04C1 3007 03472 movlw 0x07 04C2 0099 03473 movwf CMCON0 ;turn off comparator 03474 04C3 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 ; |||||||| 04C4 3082 03485 movlw b'10000010' 04C5 0081 03486 movwf OPTION_REG 03487 03488 04C6 3070 03489 movlw b'01110000' ;switch to 8 MHz clock 04C7 048F 03490 iorwf OSCCON,f 03491 04C8 019F 03492 clrf ANSEL ;set pins to digital 03493 03494 #ifdef __16F688 03495 ; setup timer0 03496 bcf OPTION_REG,T0CS 03497 #endif 03498 04C9 1283 03499 setbank0 03500 03501 ; enable timer0 interupt 04CA 168B 03502 bsf INTCON,T0IE 04CB 178B 03503 bsf INTCON,GIE 03504 04CC 03505 loop_ddf 03506 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 04CC 30FF 03507 movlw b'11111111' 03508 04CD 00D6 03509 movwf in0 04CE 00D7 03510 movwf in1 04CF 00D8 03511 movwf in2 03512 #ifdef C19 03513 movwf in3 03514 movwf in4 03515 #endif 03516 04D0 30FF 03517 movlw 0xff MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04D1 23F7 03518 call display_1bit 03519 03520 03521 ; Trun all the LEDs off 04D2 01D6 03522 clrf in0 04D3 01D7 03523 clrf in1 04D4 01D8 03524 clrf in2 03525 #ifdef C19 03526 clrf in3 03527 clrf in4 03528 #endif 03529 04D5 30FF 03530 movlw 0xff 04D6 23F7 03531 call display_1bit 03532 03533 ; if button pressed durring powerup run IR_Tester 03534 ; else run pattern driver 03535 ; 04D7 1C3A 03536 btfss button,0 04D8 2B0C 03537 goto pattern_driver 03538 #ifdef ENABLE_IR 04D9 2C7B 03539 goto IR_Tester 03540 #else 03541 call toggle_demo 03542 goto pattern_driver 03543 #endif 03544 03545 ;********************************************************************** 04DA 03546 table_lookup 03547 ;********************************************************************** 04DA 084D 03548 movf tbl_hi,w 04DB 008A 03549 movwf PCLATH 04DC 0875 03550 movf pindex,w 04DD 074E 03551 addwf tbl_low,w 04DE 1803 03552 btfsc STATUS,0 ; check carry flag 04DF 0A8A 03553 incf PCLATH,f 04E0 0082 03554 movwf PCL 03555 03556 ;********************************************************************** 04E1 03557 MasterTable 03558 ;********************************************************************** 03559 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 04E1 3404 34FF M dt HIGH table0, LOW table0 00000001 M i += 1 04E3 3404 34FF M dt HIGH table1, LOW table1 00000002 M i += 1 04E5 3405 3422 M dt HIGH table2, LOW table2 00000003 M i += 1 04E7 3405 3443 M dt HIGH table3, LOW table3 00000004 M i += 1 04E9 3405 34C4 M dt HIGH table4, LOW table4 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000005 M i += 1 04EB 3405 34F7 M dt HIGH table5, LOW table5 00000006 M i += 1 04ED 3406 3416 M dt HIGH table6, LOW table6 00000007 M i += 1 04EF 3406 3425 M dt HIGH table7, LOW table7 00000008 M i += 1 04F1 3406 3438 M dt HIGH table8, LOW table8 00000009 M i += 1 04F3 3406 343F M dt HIGH table9, LOW table9 0000000A M i += 1 04F5 3406 34A2 M dt HIGH table10, LOW table10 0000000B M i += 1 04F7 3407 342F M dt HIGH table11, LOW table11 0000000C M i += 1 04F9 3407 345F M dt HIGH table12, LOW table12 0000000D M i += 1 04FB 3407 34CE M dt HIGH table13, LOW table13 0000000E M i += 1 04FD 3407 34D1 M dt HIGH table14, LOW table14 0000000F M i += 1 M endw 03560 03561 03562 03563 ;********************************************************************** 04FF 03564 table0 ; dummy entry, actual data for pattern 0 is in the EEPROM 03565 ;********************************************************************** 03566 03567 #ifdef RGB4 03568 #include <4rgb_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 ; 00017 ; Free Software Foundation, Inc. 00018 ; 51 Franklin Street, Fifth Floor 00019 ; Boston, MA 02110-1301, USA. 00020 ; 00021 ;********************************************************************** 00022 ; MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00023 ; A number of these tables were created by Dave Holle 00024 ; 00025 00026 00027 ;********************************************************************** 00028 ; Cops (Dwayne Forsyth) 00029 ;********************************************************************** 00030 start_pattern 3, 0x07 04FF M table1 M if (3 == 1) || (3 == 6) M dt 3,0x07,(endpat1-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 04FF 3403 3407 3410 M dt 3,0x07,(endpat1-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x07,(endpat1-$)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M dt 3,0x07,(endpat1-$)/4 ;tbltype1,speed,length M else M dt 3,0x07,(endpat1-$-1) M endif M endif M endif M endif 00031 ; R G B D 0502 34C0 3400 00032 dt b'11000000',b'00000000' ; 0504 3400 3400 00033 dt b'00000000',b'00000000' ; 0506 34C0 3400 00034 dt b'11000000',b'00000000' ; 0508 3400 3401 00035 dt b'00000000',b'00000001' ; 050A 3400 34C0 00036 dt b'00000000',b'11000000' ; 050C 3400 3400 00037 dt b'00000000',b'00000000' ; 050E 3400 34C0 00038 dt b'00000000',b'11000000' ; 0510 3400 340F 00039 dt b'00000000',b'00001111' ; 0512 3430 3400 00040 dt b'00110000',b'00000000' ; 0514 3400 3400 00041 dt b'00000000',b'00000000' ; 0516 3430 3400 00042 dt b'00110000',b'00000000' ; 0518 3400 3401 00043 dt b'00000000',b'00000001' ; 051A 3400 3430 00044 dt b'00000000',b'00110000' ; 051C 3400 3400 00045 dt b'00000000',b'00000000' ; 051E 3400 3430 00046 dt b'00000000',b'00110000' ; 0520 3400 340F 00047 dt b'00000000',b'00001111' ; 00048 end_pattern 0522 M endpat1 00000002 M patternc = patternc + 1 00049 00050 ;********************************************************************** 00051 ; For testing the LEDs. (Dwayne Forsyth) 00052 ;********************************************************************** 00053 start_pattern 3, 0x20 0522 M table2 M if (3 == 1) || (3 == 6) MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE M dt 3,0x20,(endpat2-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 0522 3403 3420 340F M dt 3,0x20,(endpat2-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x20,(endpat2-$)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M dt 3,0x20,(endpat2-$)/4 ;tbltype1,speed,length M else M dt 3,0x20,(endpat2-$-1) M endif M endif M endif M endif 00054 ; R G B 0525 3480 3400 00055 dt b'10000000',b'00000000' ; 0527 3440 3400 00056 dt b'01000000',b'00000000' ; 0529 3420 3400 00057 dt b'00100000',b'00000000' ; 052B 3410 3400 00058 dt b'00010000',b'00000000' ; 052D 3400 3407 00059 dt b'00000000',b'00000111' ; 052F 3408 3400 00060 dt b'00001000',b'00000000' ; 0531 3404 3400 00061 dt b'00000100',b'00000000' ; 0533 3402 3400 00062 dt b'00000010',b'00000000' ; 0535 3401 3400 00063 dt b'00000001',b'00000000' ; 0537 3400 3407 00064 dt b'00000000',b'00000111' ; 0539 3400 3480 00065 dt b'00000000',b'10000000' ; 053B 3400 3440 00066 dt b'00000000',b'01000000' ; 053D 3400 3420 00067 dt b'00000000',b'00100000' ; 053F 3400 3410 00068 dt b'00000000',b'00010000' ; 0541 3400 340F 00069 dt b'00000000',b'00001111' ; 00070 00071 end_pattern 0543 M endpat2 00000003 M patternc = patternc + 1 00072 00073 00074 ;********************************************************************** 00075 ; fade in/out: white, red, green, blue, yellow, cyan, violet (Dave Holle) 00076 ;********************************************************************** 00077 start_pattern 1, 0x80 0543 M table3 M if (1 == 1) || (1 == 6) 0543 3401 3480 342A M dt 1,0x80,(endpat3-$)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) M dt 1,0x80,(endpat3-$)/2 ;tbltype1,speed,length M else M if (1 == 9) M dt 1,0x80,(endpat3-$)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE M dt 1,0x80,(endpat3-$)/4 ;tbltype1,speed,length M else M dt 1,0x80,(endpat3-$-1) M endif M endif M endif M endif 00078 ; R G B 0546 3400 3400 3400 00079 dt b'00000000',b'00000000',b'00000000' ; 0/3 0549 3455 3455 3455 00080 dt b'01010101',b'01010101',b'01010101' ; 1/3 all LEDs 054C 34AA 34AA 34AA 00081 dt b'10101010',b'10101010',b'10101010' ; 2/3 all LEDs 054F 34FF 34FF 34FF 00082 dt b'11111111',b'11111111',b'11111111' ; 3/3 all LEDs 0552 34AA 34AA 34AA 00083 dt b'10101010',b'10101010',b'10101010' ; 2/3 all LEDs; 0555 3455 3455 3455 00084 dt b'01010101',b'01010101',b'01010101' ; 1/3 all LEDs 0558 3400 3400 3400 00085 dt b'00000000',b'00000000',b'00000000' ; 0/3 055B 3455 3400 3400 00086 dt b'01010101',b'00000000',b'00000000' ; 1/3 all RED LEDs 055E 34AA 3400 3400 00087 dt b'10101010',b'00000000',b'00000000' ; 2/3 all RED LEDs 0561 34FF 3400 3400 00088 dt b'11111111',b'00000000',b'00000000' ; 3/3 all RED LEDs 0564 34AA 3400 3400 00089 dt b'10101010',b'00000000',b'00000000' ; 2/3 all RED LEDs 0567 3455 3400 3400 00090 dt b'01010101',b'00000000',b'00000000' ; 1/3 all RED LEDs 056A 3400 3400 3400 00091 dt b'00000000',b'00000000',b'00000000' ; 0/3 056D 3400 3455 3400 00092 dt b'00000000',b'01010101',b'00000000' ; 1/3 all GREEN LEDs 0570 3400 34AA 3400 00093 dt b'00000000',b'10101010',b'00000000' ; 2/3 all GREEN LEDs 0573 3400 34FF 3400 00094 dt b'00000000',b'11111111',b'00000000' ; 3/3 all GREEN LEDs 0576 3400 34AA 3400 00095 dt b'00000000',b'10101010',b'00000000' ; 2/3 all GREEN LEDs 0579 3400 3455 3400 00096 dt b'00000000',b'01010101',b'00000000' ; 1/3 all GREEN LEDs 057C 3400 3400 3400 00097 dt b'00000000',b'00000000',b'00000000' ; 0/3 057F 3400 3400 3455 00098 dt b'00000000',b'00000000',b'01010101' ; 1/3 all BLUE LEDs 0582 3400 3400 34AA 00099 dt b'00000000',b'00000000',b'10101010' ; 2/3 all BLUE LEDs 0585 3400 3400 34FF 00100 dt b'00000000',b'00000000',b'11111111' ; 3/3 all BLUE LEDs 0588 3400 3400 34AA 00101 dt b'00000000',b'00000000',b'10101010' ; 2/3 all BLUE LEDs 058B 3400 3400 3455 00102 dt b'00000000',b'00000000',b'01010101' ; 1/3 all BLUE LEDs 058E 3400 3400 3400 00103 dt b'00000000',b'00000000',b'00000000' ; 0/3 0591 3455 3455 3400 00104 dt b'01010101',b'01010101',b'00000000' ; 1/3 all RED & GREEN LEDs 0594 34AA 34AA 3400 00105 dt b'10101010',b'10101010',b'00000000' ; 2/3 all RED & GREEN LEDs 0597 34FF 34FF 3400 00106 dt b'11111111',b'11111111',b'00000000' ; 3/3 all RED & GREEN LEDs 059A 34AA 34AA 3400 00107 dt b'10101010',b'10101010',b'00000000' ; 2/3 all RED & GREEN LEDs 059D 3455 3455 3400 00108 dt b'01010101',b'01010101',b'00000000' ; 1/3 all RED & GREEN LEDs 05A0 3400 3400 3400 00109 dt b'00000000',b'00000000',b'00000000' ; 0/3 05A3 3400 3455 3455 00110 dt b'00000000',b'01010101',b'01010101' ; 1/3 all GREEN & BLUE LEDs 05A6 3400 34AA 34AA 00111 dt b'00000000',b'10101010',b'10101010' ; 2/3 all GREEN & BLUE LEDs 05A9 3400 34FF 34FF 00112 dt b'00000000',b'11111111',b'11111111' ; 3/3 all GREEN & BLUE LEDs 05AC 3400 34AA 34AA 00113 dt b'00000000',b'10101010',b'10101010' ; 2/3 all GREEN & BLUE LEDs 05AF 3400 3455 3455 00114 dt b'00000000',b'01010101',b'01010101' ; 1/3 all GREEN & BLUE LEDs 05B2 3400 3400 3400 00115 dt b'00000000',b'00000000',b'00000000' ; 0/3 05B5 3455 3400 3455 00116 dt b'01010101',b'00000000',b'01010101' ; 1/3 all BLUE & RED LEDs 05B8 34AA 3400 34AA 00117 dt b'10101010',b'00000000',b'10101010' ; 2/3 all BLUE & RED LEDs 05BB 34FF 3400 34FF 00118 dt b'11111111',b'00000000',b'11111111' ; 3/3 all BLUE & RED LEDs 05BE 34AA 3400 34AA 00119 dt b'10101010',b'00000000',b'10101010' ; 2/3 all BLUE & RED LEDs 05C1 3455 3400 3455 00120 dt b'01010101',b'00000000',b'01010101' ; 1/3 all BLUE & RED LEDs 00121 end_pattern 05C4 M endpat3 00000004 M patternc = patternc + 1 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00122 00123 ;********************************************************************** 00124 ; march colors back and forth (Dave Holle) 00125 ;********************************************************************** 00126 start_pattern 3, 0x30 05C4 M table4 M if (3 == 1) || (3 == 6) M dt 3,0x30,(endpat4-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 05C4 3403 3430 3418 M dt 3,0x30,(endpat4-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x30,(endpat4-$)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M dt 3,0x30,(endpat4-$)/4 ;tbltype1,speed,length M else M dt 3,0x30,(endpat4-$-1) M endif M endif M endif M endif 00127 ; R G B 05C7 3480 3400 00128 dt b'10000000',b'00000000' ; R___ red marches L to R 05C9 3440 3400 00129 dt b'01000000',b'00000000' ; _R__ 05CB 3420 3400 00130 dt b'00100000',b'00000000' ; __R_ 05CD 3410 3400 00131 dt b'00010000',b'00000000' ; ___R 05CF 3411 3400 00132 dt b'00010001',b'00000000' ; ___Y yellow marches R to L 05D1 3422 3400 00133 dt b'00100010',b'00000000' ; __Y_ 05D3 3444 3400 00134 dt b'01000100',b'00000000' ; _Y__ 05D5 3488 3400 00135 dt b'10001000',b'00000000' ; Y___ 05D7 3408 3400 00136 dt b'00001000',b'00000000' ; G___ green marches L to R 05D9 3404 3400 00137 dt b'00000100',b'00000000' ; _G__ 05DB 3402 3400 00138 dt b'00000010',b'00000000' ; __G_ 05DD 3401 3400 00139 dt b'00000001',b'00000000' ; ___G 05DF 3401 3410 00140 dt b'00000001',b'00010000' ; ___C cyan marches R to L 05E1 3402 3420 00141 dt b'00000010',b'00100000' ; __C_ 05E3 3404 3440 00142 dt b'00000100',b'01000000' ; _C__ 05E5 3408 3480 00143 dt b'00001000',b'10000000' ; C___ 05E7 3400 3480 00144 dt b'00000000',b'10000000' ; B___ blue marches L to R 05E9 3400 3440 00145 dt b'00000000',b'01000000' ; _B__ 05EB 3400 3420 00146 dt b'00000000',b'00100000' ; __B_ 05ED 3400 3410 00147 dt b'00000000',b'00010000' ; ___B 05EF 3410 3410 00148 dt b'00010000',b'00010000' ; ___V violet marches R to L 05F1 3420 3420 00149 dt b'00100000',b'00100000' ; __V_ 05F3 3440 3440 00150 dt b'01000000',b'01000000' ; _V__ 05F5 3480 3480 00151 dt b'10000000',b'10000000' ; V___ 00152 end_pattern 05F7 M endpat4 00000005 M patternc = patternc + 1 00153 00154 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00155 ; marching R,G,B sequence (Dave Holle) 00156 ;********************************************************************** 00157 start_pattern 3, 0x30 05F7 M table5 M if (3 == 1) || (3 == 6) M dt 3,0x30,(endpat5-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 05F7 3403 3430 340E M dt 3,0x30,(endpat5-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x30,(endpat5-$)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M dt 3,0x30,(endpat5-$)/4 ;tbltype1,speed,length M else M dt 3,0x30,(endpat5-$-1) M endif M endif M endif M endif 00158 ; R G B 05FA 3400 3480 00159 dt b'00000000',b'10000000' ; B___ 05FC 3408 3440 00160 dt b'00001000',b'01000000' ; GB__ 05FE 3484 3420 00161 dt b'10000100',b'00100000' ; RGB_ 0600 3442 3410 00162 dt b'01000010',b'00010000' ; _RGB 0602 3421 3400 00163 dt b'00100001',b'00000000' ; __RG 0604 3410 3400 00164 dt b'00010000',b'00000000' ; ___R 0606 3400 3400 00165 dt b'00000000',b'00000000' ; ____ 0608 3410 3400 00166 dt b'00010000',b'00000000' ; ___R 060A 3421 3400 00167 dt b'00100001',b'00000000' ; __RG 060C 3442 3410 00168 dt b'01000010',b'00010000' ; _RGB 060E 3484 3420 00169 dt b'10000100',b'00100000' ; RGB_ 0610 3408 3440 00170 dt b'00001000',b'01000000' ; GB__ 0612 3400 3480 00171 dt b'00000000',b'10000000' ; B___ 0614 3400 3400 00172 dt b'00000000',b'00000000' ; ____ 00173 end_pattern 0616 M endpat5 00000006 M patternc = patternc + 1 00174 00175 ;********************************************************************** 00176 ; triple crosser (Dave Holle) 00177 ;********************************************************************** 00178 start_pattern 3, 0x30 0616 M table6 M if (3 == 1) || (3 == 6) M dt 3,0x30,(endpat6-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 0616 3403 3430 3406 M dt 3,0x30,(endpat6-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x30,(endpat6-$)/5 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (3 == 0x0a) M dt 3,0x30,(endpat6-$)/4 ;tbltype1,speed,length M else M dt 3,0x30,(endpat6-$-1) M endif M endif M endif M endif 00179 ; R G B 0619 3480 3424 00180 dt b'10000000',b'00100100' ;RBG_ 061B 3440 3442 00181 dt b'01000000',b'01000010' ;_YB_ Y = R+G 061D 3420 3481 00182 dt b'00100000',b'10000001' ;G_RB 061F 3410 3442 00183 dt b'00010000',b'01000010' ;_GBR 0621 3420 3424 00184 dt b'00100000',b'00100100' ;_BY_ 0623 3440 3418 00185 dt b'01000000',b'00011000' ;BR_G 00186 end_pattern 0625 M endpat6 00000007 M patternc = patternc + 1 00187 00188 ;********************************************************************** 00189 ; mars lite (Dave Holle) 00190 ;********************************************************************** 00191 start_pattern 3, 0x22 0625 M table7 M if (3 == 1) || (3 == 6) M dt 3,0x22,(endpat7-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 0625 3403 3422 3408 M dt 3,0x22,(endpat7-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x22,(endpat7-$)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M dt 3,0x22,(endpat7-$)/4 ;tbltype1,speed,length M else M dt 3,0x22,(endpat7-$-1) M endif M endif M endif M endif 00192 ; R G B 0628 3480 3410 00193 dt b'10000000',b'00010000' ;R__B 062A 3440 3420 00194 dt b'01000000',b'00100000' ;_RB_ 062C 3420 3440 00195 dt b'00100000',b'01000000' ;_BR_ 062E 3410 3480 00196 dt b'00010000',b'10000000' ;B__R 0630 3410 3480 00197 dt b'00010000',b'10000000' ;B__R 0632 3420 3440 00198 dt b'00100000',b'01000000' ;_BR_ 0634 3440 3420 00199 dt b'01000000',b'00100000' ;_RB_ 0636 3480 3410 00200 dt b'10000000',b'00010000' ;R__B 00201 end_pattern 0638 M endpat7 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000008 M patternc = patternc + 1 00202 00203 ;********************************************************************** 00204 ; xmas? (Dave Holle) 00205 ;********************************************************************** 00206 start_pattern 3, 0x22 0638 M table8 M if (3 == 1) || (3 == 6) M dt 3,0x22,(endpat8-$)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) 0638 3403 3422 3402 M dt 3,0x22,(endpat8-$)/2 ;tbltype1,speed,length M else M if (3 == 9) M dt 3,0x22,(endpat8-$)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M dt 3,0x22,(endpat8-$)/4 ;tbltype1,speed,length M else M dt 3,0x22,(endpat8-$-1) M endif M endif M endif M endif 00207 ; R G B 063B 34A5 3400 00208 dt b'10100101',b'00000000' ;RGRG 063D 345A 3400 00209 dt b'01011010',b'00000000' ;GRGR 00210 end_pattern 063F M endpat8 00000009 M patternc = patternc + 1 00211 00212 ;********************************************************************** 00213 ; Ward's 3 bears (Dave Holle) 00214 ;********************************************************************** 00215 start_pattern 1, 0x22 063F M table9 M if (1 == 1) || (1 == 6) 063F 3401 3422 3420 M dt 1,0x22,(endpat9-$)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) M dt 1,0x22,(endpat9-$)/2 ;tbltype1,speed,length M else M if (1 == 9) M dt 1,0x22,(endpat9-$)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M dt 1,0x22,(endpat9-$)/4 ;tbltype1,speed,length M else M dt 1,0x22,(endpat9-$-1) M endif M endif M endif M endif MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00216 ; R G B 0642 3440 3400 3400 00217 dt b'01000000',b'00000000',b'00000000' 0645 3480 3400 3400 00218 dt b'10000000',b'00000000',b'00000000' 0648 34C0 3400 3400 00219 dt b'11000000',b'00000000',b'00000000' 064B 3480 3400 3400 00220 dt b'10000000',b'00000000',b'00000000' 064E 3460 3400 3400 00221 dt b'01100000',b'00000000',b'00000000' 0651 3420 3400 3400 00222 dt b'00100000',b'00000000',b'00000000' 0654 3430 3400 3400 00223 dt b'00110000',b'00000000',b'00000000' 0657 3424 3400 3400 00224 dt b'00100100',b'00000000',b'00000000' 065A 3418 3400 3400 00225 dt b'00011000',b'00000000',b'00000000' 065D 340C 3400 3400 00226 dt b'00001100',b'00000000',b'00000000' 0660 3408 3400 3400 00227 dt b'00001000',b'00000000',b'00000000' 0663 3405 3400 3400 00228 dt b'00000101',b'00000000',b'00000000' 0666 3402 3400 3400 00229 dt b'00000010',b'00000000',b'00000000' 0669 3403 3400 3400 00230 dt b'00000011',b'00000000',b'00000000' 066C 3402 3400 3400 00231 dt b'00000010',b'00000000',b'00000000' 066F 3401 3400 3400 00232 dt b'00000001',b'00000000',b'00000000' 0672 3400 34C0 3400 00233 dt b'00000000',b'11000000',b'00000000' 0675 3400 34C0 3400 00234 dt b'00000000',b'11000000',b'00000000' 0678 3400 34C0 3400 00235 dt b'00000000',b'11000000',b'00000000' 067B 3400 3430 3400 00236 dt b'00000000',b'00110000',b'00000000' 067E 3400 3430 3400 00237 dt b'00000000',b'00110000',b'00000000' 0681 3400 3430 3400 00238 dt b'00000000',b'00110000',b'00000000' 0684 3400 340C 3400 00239 dt b'00000000',b'00001100',b'00000000' 0687 3400 340C 3400 00240 dt b'00000000',b'00001100',b'00000000' 068A 3400 340C 3400 00241 dt b'00000000',b'00001100',b'00000000' 068D 3400 3403 3400 00242 dt b'00000000',b'00000011',b'00000000' 0690 3400 3403 3400 00243 dt b'00000000',b'00000011',b'00000000' 0693 3400 3403 3400 00244 dt b'00000000',b'00000011',b'00000000' 0696 3400 3400 34C0 00245 dt b'00000000',b'00000000',b'11000000' 0699 3400 3400 3430 00246 dt b'00000000',b'00000000',b'00110000' 069C 3400 3400 340C 00247 dt b'00000000',b'00000000',b'00001100' 069F 3400 3400 3403 00248 dt b'00000000',b'00000000',b'00000011' 00249 end_pattern 06A2 M endpat9 0000000A M patternc = patternc + 1 00250 00251 ;********************************************************************** 00252 ; Ward's walking b'11' (Dave Holle) 00253 ;********************************************************************** 00254 start_pattern 1, 0x30 06A2 M table10 M if (1 == 1) || (1 == 6) 06A2 3401 3430 342E M dt 1,0x30,(endpat10-$)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) M dt 1,0x30,(endpat10-$)/2 ;tbltype1,speed,length M else M if (1 == 9) M dt 1,0x30,(endpat10-$)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M dt 1,0x30,(endpat10-$)/4 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M dt 1,0x30,(endpat10-$-1) M endif M endif M endif M endif 00255 ; R G B 06A5 34C0 3400 3400 00256 dt b'11000000',b'00000000',b'00000000' 06A8 3460 3400 3400 00257 dt b'01100000',b'00000000',b'00000000' 06AB 3430 3400 3400 00258 dt b'00110000',b'00000000',b'00000000' 06AE 3418 3400 3400 00259 dt b'00011000',b'00000000',b'00000000' 06B1 340C 3400 3400 00260 dt b'00001100',b'00000000',b'00000000' 06B4 3406 3400 3400 00261 dt b'00000110',b'00000000',b'00000000' 06B7 3403 3400 3400 00262 dt b'00000011',b'00000000',b'00000000' 06BA 3401 3480 3400 00263 dt b'00000001',b'10000000',b'00000000' 06BD 3400 34C0 3400 00264 dt b'00000000',b'11000000',b'00000000' 06C0 3400 3460 3400 00265 dt b'00000000',b'01100000',b'00000000' 06C3 3400 3430 3400 00266 dt b'00000000',b'00110000',b'00000000' 06C6 3400 3418 3400 00267 dt b'00000000',b'00011000',b'00000000' 06C9 3400 340C 3400 00268 dt b'00000000',b'00001100',b'00000000' 06CC 3400 3406 3400 00269 dt b'00000000',b'00000110',b'00000000' 06CF 3400 3403 3400 00270 dt b'00000000',b'00000011',b'00000000' 06D2 3400 3401 3480 00271 dt b'00000000',b'00000001',b'10000000' 06D5 3400 3400 34C0 00272 dt b'00000000',b'00000000',b'11000000' 06D8 3400 3400 3460 00273 dt b'00000000',b'00000000',b'01100000' 06DB 3400 3400 3430 00274 dt b'00000000',b'00000000',b'00110000' 06DE 3400 3400 3418 00275 dt b'00000000',b'00000000',b'00011000' 06E1 3400 3400 340C 00276 dt b'00000000',b'00000000',b'00001100' 06E4 3400 3400 3406 00277 dt b'00000000',b'00000000',b'00000110' 06E7 3400 3400 3403 00278 dt b'00000000',b'00000000',b'00000011' 06EA 3400 3400 3403 00279 dt b'00000000',b'00000000',b'00000011' 06ED 3400 3400 3406 00280 dt b'00000000',b'00000000',b'00000110' 06F0 3400 3400 340C 00281 dt b'00000000',b'00000000',b'00001100' 06F3 3400 3400 3418 00282 dt b'00000000',b'00000000',b'00011000' 06F6 3400 3400 3430 00283 dt b'00000000',b'00000000',b'00110000' 06F9 3400 3400 3460 00284 dt b'00000000',b'00000000',b'01100000' 06FC 3400 3400 34C0 00285 dt b'00000000',b'00000000',b'11000000' 06FF 3400 3401 3480 00286 dt b'00000000',b'00000001',b'10000000' 0702 3400 3403 3400 00287 dt b'00000000',b'00000011',b'00000000' 0705 3400 3406 3400 00288 dt b'00000000',b'00000110',b'00000000' 0708 3400 340C 3400 00289 dt b'00000000',b'00001100',b'00000000' 070B 3400 3418 3400 00290 dt b'00000000',b'00011000',b'00000000' 070E 3400 3430 3400 00291 dt b'00000000',b'00110000',b'00000000' 0711 3400 3460 3400 00292 dt b'00000000',b'01100000',b'00000000' 0714 3400 34C0 3400 00293 dt b'00000000',b'11000000',b'00000000' 0717 3401 3480 3400 00294 dt b'00000001',b'10000000',b'00000000' 071A 3403 3400 3400 00295 dt b'00000011',b'00000000',b'00000000' 071D 3406 3400 3400 00296 dt b'00000110',b'00000000',b'00000000' 0720 340C 3400 3400 00297 dt b'00001100',b'00000000',b'00000000' 0723 3418 3400 3400 00298 dt b'00011000',b'00000000',b'00000000' 0726 3430 3400 3400 00299 dt b'00110000',b'00000000',b'00000000' 0729 3460 3400 3400 00300 dt b'01100000',b'00000000',b'00000000' 072C 34C0 3400 3400 00301 dt b'11000000',b'00000000',b'00000000' MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00302 end_pattern 072F M endpat10 0000000B M patternc = patternc + 1 00303 00304 ;********************************************************************** 00305 ; fade across (Dave Holle) 00306 ;********************************************************************** 00307 start_pattern 1, 0x30 072F M table11 M if (1 == 1) || (1 == 6) 072F 3401 3430 340F M dt 1,0x30,(endpat11-$)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) M dt 1,0x30,(endpat11-$)/2 ;tbltype1,speed,length M else M if (1 == 9) M dt 1,0x30,(endpat11-$)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M dt 1,0x30,(endpat11-$)/4 ;tbltype1,speed,length M else M dt 1,0x30,(endpat11-$-1) M endif M endif M endif M endif 00308 ; R G B 0732 3440 3402 3409 00309 dt b'01000000',b'00000010',b'00001001' 0735 3480 3401 3406 00310 dt b'10000000',b'00000001',b'00000110' 0738 34C0 3400 3403 00311 dt b'11000000',b'00000000',b'00000011' 073B 3490 3440 3402 00312 dt b'10010000',b'01000000',b'00000010' 073E 3460 3480 3401 00313 dt b'01100000',b'10000000',b'00000001' 0741 3430 34C0 3400 00314 dt b'00110000',b'11000000',b'00000000' 0744 3424 3490 3440 00315 dt b'00100100',b'10010000',b'01000000' 0747 3418 3460 3480 00316 dt b'00011000',b'01100000',b'10000000' 074A 340C 3430 34C0 00317 dt b'00001100',b'00110000',b'11000000' 074D 3409 3424 3490 00318 dt b'00001001',b'00100100',b'10010000' 0750 3406 3418 3460 00319 dt b'00000110',b'00011000',b'01100000' 0753 3403 340C 3430 00320 dt b'00000011',b'00001100',b'00110000' 0756 3402 3409 3424 00321 dt b'00000010',b'00001001',b'00100100' 0759 3401 3406 3418 00322 dt b'00000001',b'00000110',b'00011000' 075C 3400 3403 340C 00323 dt b'00000000',b'00000011',b'00001100' 00324 end_pattern 075F M endpat11 0000000C M patternc = patternc + 1 00325 00326 ;********************************************************************** 00327 ; march colors move side to side with a dim trail (Dave Holle) 00328 ;********************************************************************** 00329 start_pattern 1, 0x30 075F M table12 M if (1 == 1) || (1 == 6) 075F 3401 3430 3424 M dt 1,0x30,(endpat12-$)/3 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (1 == 3) || (1 == 0x0b) M dt 1,0x30,(endpat12-$)/2 ;tbltype1,speed,length M else M if (1 == 9) M dt 1,0x30,(endpat12-$)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M dt 1,0x30,(endpat12-$)/4 ;tbltype1,speed,length M else M dt 1,0x30,(endpat12-$-1) M endif M endif M endif M endif 00330 ; R G B 0762 34C0 3400 3400 00331 dt b'11000000',b'00000000',b'00000000' ; R___ red marches L to R 0765 3470 3400 3400 00332 dt b'01110000',b'00000000',b'00000000' ; rR__ 0768 345C 3400 3400 00333 dt b'01011100',b'00000000',b'00000000' ; rrR_ 076B 3417 3400 3400 00334 dt b'00010111',b'00000000',b'00000000' ; _rrR 076E 3405 3400 3400 00335 dt b'00000101',b'00000000',b'00000000' ; __rr 0771 3401 3400 3400 00336 dt b'00000001',b'00000000',b'00000000' ; ___r 0774 3403 3400 3400 00337 dt b'00000011',b'00000000',b'00000000' ; ___R 0777 340D 3400 3400 00338 dt b'00001101',b'00000000',b'00000000' ; __Rr 077A 3435 3400 3400 00339 dt b'00110101',b'00000000',b'00000000' ; _Rrr 077D 34D4 3400 3400 00340 dt b'11010100',b'00000000',b'00000000' ; Rrr_ 0780 3450 3400 3400 00341 dt b'01010000',b'00000000',b'00000000' ; rr__ 0783 3440 3400 3400 00342 dt b'01000000',b'00000000',b'00000000' ; r___ 0786 3400 34C0 3400 00343 dt b'00000000',b'11000000',b'00000000' ; G___ green marches L to R 0789 3400 3470 3400 00344 dt b'00000000',b'01110000',b'00000000' ; gG__ 078C 3400 345C 3400 00345 dt b'00000000',b'01011100',b'00000000' ; ggG_ 078F 3400 341B 3400 00346 dt b'00000000',b'00011011',b'00000000' ; _ggG 0792 3400 3405 3400 00347 dt b'00000000',b'00000101',b'00000000' ; __gg 0795 3400 3401 3400 00348 dt b'00000000',b'00000001',b'00000000' ; ___g 0798 3400 3403 3400 00349 dt b'00000000',b'00000011',b'00000000' ; ___G 079B 3400 340D 3400 00350 dt b'00000000',b'00001101',b'00000000' ; __Gg 079E 3400 3435 3400 00351 dt b'00000000',b'00110101',b'00000000' ; _Ggg 07A1 3400 34D4 3400 00352 dt b'00000000',b'11010100',b'00000000' ; Ggg_ 07A4 3400 3450 3400 00353 dt b'00000000',b'01010000',b'00000000' ; gg__ 07A7 3400 3440 3400 00354 dt b'00000000',b'01000000',b'00000000' ; g___ 07AA 3400 3400 34C0 00355 dt b'00000000',b'00000000',b'11000000' ; B___ blue marches L to R 07AD 3400 3400 3470 00356 dt b'00000000',b'00000000',b'01110000' ; bB__ 07B0 3400 3400 345C 00357 dt b'00000000',b'00000000',b'01011100' ; bbB_ 07B3 3400 3400 341B 00358 dt b'00000000',b'00000000',b'00011011' ; _bbB 07B6 3400 3400 3405 00359 dt b'00000000',b'00000000',b'00000101' ; __bb 07B9 3400 3400 3401 00360 dt b'00000000',b'00000000',b'00000001' ; ___b 07BC 3400 3400 3403 00361 dt b'00000000',b'00000000',b'00000011' ; ___B 07BF 3400 3400 340D 00362 dt b'00000000',b'00000000',b'00001101' ; __Bb 07C2 3400 3400 3435 00363 dt b'00000000',b'00000000',b'00110101' ; _Bbb 07C5 3400 3400 34D4 00364 dt b'00000000',b'00000000',b'11010100' ; Bbb_ 07C8 3400 3400 3450 00365 dt b'00000000',b'00000000',b'01010000' ; bb__ 07CB 3400 3400 3440 00366 dt b'00000000',b'00000000',b'01000000' ; b___ 00367 end_pattern MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07CE M endpat12 0000000D M patternc = patternc + 1 00368 00369 ;********************************************************************** 00370 ; fader (Dwayne Forsyth) 00371 ;********************************************************************** 00372 start_pattern 2, 0x07 07CE M table13 M if (2 == 1) || (2 == 6) M dt 2,0x07,(endpat13-$)/3 ;tbltype1,speed,length M else M if (2 == 3) || (2 == 0x0b) M dt 2,0x07,(endpat13-$)/2 ;tbltype1,speed,length M else M if (2 == 9) M dt 2,0x07,(endpat13-$)/5 ;tbltype1,speed,length M else M if (2 == 0x0a) M dt 2,0x07,(endpat13-$)/4 ;tbltype1,speed,length M else 07CE 3402 3407 3400 M dt 2,0x07,(endpat13-$-1) M endif M endif M endif M endif 00373 end_pattern 07D1 M endpat13 0000000E M patternc = patternc + 1 00374 00375 ;********************************************************************** 00376 ; fader (Dwayne Forsyth) 00377 ;********************************************************************** 00378 start_pattern 4, 0x07 07D1 M table14 M if (4 == 1) || (4 == 6) M dt 4,0x07,(endpat14-$)/3 ;tbltype1,speed,length M else M if (4 == 3) || (4 == 0x0b) M dt 4,0x07,(endpat14-$)/2 ;tbltype1,speed,length M else M if (4 == 9) M dt 4,0x07,(endpat14-$)/5 ;tbltype1,speed,length M else M if (4 == 0x0a) M dt 4,0x07,(endpat14-$)/4 ;tbltype1,speed,length M else 07D1 3404 3407 3400 M dt 4,0x07,(endpat14-$-1) M endif M endif M endif M endif 00379 end_pattern 07D4 M endpat14 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000000F M patternc = patternc + 1 00380 00381 ;********************************************************************** 00382 ; EEPROM ;test pattern for 4RGB with 2 bits of luminance per LED (Dave Holle) 00383 ;********************************************************************** 2100 00384 org 0x2100 ; data EEPROM location 00385 ; 00386 ; Because there are no extra bits in the LED buffer to use as an 00387 ; end-of-pattern flag, the pattern table header has a length byte. 00388 ; 2100 0001 0030 0012 00389 de 0x01,0x30,(endpat0-$)/3 ;tbltype1,speed,length 00390 00391 ; R G B 2103 00FF 001B 0000 00392 de b'11111111',b'00011011',b'00000000' ; red -> yellow 2106 00FE 006F 0000 00393 de b'11111110',b'01101111',b'00000000' 2109 00F9 00BF 0000 00394 de b'11111001',b'10111111',b'00000000' 210C 00E4 00FF 0000 00395 de b'11100100',b'11111111',b'00000000' ; yellow -> green 210F 0090 00FF 0001 00396 de b'10010000',b'11111111',b'00000001' 2112 0040 00FF 0006 00397 de b'01000000',b'11111111',b'00000110' 2115 0000 00FF 001B 00398 de b'00000000',b'11111111',b'00011011' ; green -> cyan 2118 0000 00FE 006F 00399 de b'00000000',b'11111110',b'01101111' 211B 0000 00F9 00BF 00400 de b'00000000',b'11111001',b'10111111' 211E 0000 00E4 00FF 00401 de b'00000000',b'11100100',b'11111111' ; cyan -> blue 2121 0001 0090 00FF 00402 de b'00000001',b'10010000',b'11111111' 2124 0006 0040 00FF 00403 de b'00000110',b'01000000',b'11111111' 2127 001B 0000 00FF 00404 de b'00011011',b'00000000',b'11111111' ; blue -> violet 212A 006F 0000 00FE 00405 de b'01101111',b'00000000',b'11111110' 212D 00BF 0000 00F9 00406 de b'10111111',b'00000000',b'11111001' 2130 00FF 0000 00E4 00407 de b'11111111',b'00000000',b'11100100' ; violet -> red 2133 00FF 0001 0090 00408 de b'11111111',b'00000001',b'10010000' 2136 00FF 0006 0040 00409 de b'11111111',b'00000110',b'01000000' 2139 00410 endpat0 00411 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> 03587 #endif 03588 #ifdef C19 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 18:56:47 PAGE 100 SYMBOL TABLE LABEL VALUE 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 Ab_reg 00000029 Ag_reg 00000028 Ar_reg 00000027 Ax_dir 000000F4 BRIGHT1 0x40 BRIGHT2 0xA0 Bb_reg 0000002C Bg_reg 0000002B Br_reg 0000002A 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 CM0 00000000 CM1 00000001 CM2 00000002 CMCON0 00000019 CMCON1 0000001A CMIE 00000003 CMIF 00000003 CMSYNC 00000000 COUT 00000006 Cb_reg 0000002F Cg_reg 0000002E Cr_reg 0000002D DC 00000001 DC1B0 00000004 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 101 SYMBOL TABLE LABEL VALUE DC1B1 00000005 DISPLAY_1BIT_C DISPLAY_2BIT_C Db_reg 00000032 Dg_reg 00000031 Dr_reg 00000030 EEADR 0000009B EECON1 0000009C EECON2 0000009D EEDAT 0000009A EEDATA 0000009A EEIE 00000007 EEIF 00000007 ENABLE_IR F 00000001 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 4 IRCF0 00000004 IRCF1 00000005 IRCF2 00000006 IRP 00000007 IR_Tester 0000047B IR_in 00000035 IR_in_good 0000003D IR_lhalf 00000039 LTS 00000001 Lcontinue 0000021E MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 102 SYMBOL TABLE LABEL VALUE LedOut Lstate0 0000011D Lstate0a 00000125 Lstate1 00000128 Lstate10 00000170 Lstate10a 00000176 Lstate11 0000017C Lstate12 00000180 Lstate12a 00000186 Lstate13 0000018C Lstate14 00000190 Lstate14a 00000196 Lstate15 0000019C Lstate16 000001A0 Lstate16a 000001A6 Lstate17 000001AC Lstate18 000001B0 Lstate18a 000001B6 Lstate19 000001BC Lstate1a 0000012D Lstate2 00000130 Lstate20 000001C0 Lstate20a 000001C6 Lstate21 000001CC Lstate22 000001D0 Lstate22a 000001D6 Lstate23 000001DC Lstate24 000001E0 Lstate24a 000001E6 Lstate25 000001EC Lstate26 000001F0 Lstate26a 000001F6 Lstate27 000001FC Lstate28 00000200 Lstate28a 00000206 Lstate29 0000020C Lstate2a 00000135 Lstate3 00000138 Lstate30 00000210 Lstate30a 00000216 Lstate31 0000021C Lstate3a 0000013D Lstate4 00000140 Lstate4a 00000145 Lstate5 00000148 Lstate5a 0000014D Lstate6 00000150 Lstate6a 0000015A Lstate6b 00000158 Lstate7 0000015C Lstate8 00000160 Lstate8a 00000166 Lstate9 0000016C MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 103 SYMBOL TABLE LABEL VALUE MasterTable 000004E1 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 0000000E OPTION_REG 00000081 OSCCON 0000008F OSCTUNE 00000090 OSFIE 00000002 OSFIF 00000002 OSTS 00000003 PATTERN1 PATTERN2 PATTERN3 PATTERN4 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 RGB4 RP0 00000005 RP1 00000006 SBODEN 00000004 SCS 00000000 STATUS 00000003 SWDTEN 00000000 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1GE 00000006 T1GINV 00000007 T1GSS 00000001 T1IE 00000000 T1IF 00000000 T1OSCEN 00000003 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 104 SYMBOL TABLE LABEL VALUE 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 WREN 00000002 WRERR 00000003 Z 00000002 _BOD_NSLEEP 00003EFF _BOD_OFF 00003CFF _BOD_ON 00003FFF _BOD_SBODEN 00003DFF MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 105 SYMBOL TABLE LABEL VALUE _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 00000037 blinkie_check 00000318 butcount 0000003E button 0000003A button_check 00000334 cf_loop2 00000376 cf_loop2a 000003B5 color 0000005F command 00000036 count1 00000023 count2 00000024 dcycle 00000022 delay 00000275 delay1 0000005D delay_count 0000004B delay_loop 00000276 delay_loop2 00000239 demo_mode 0000005B display_1bit 000003F7 display_2bit 0000041F display_cycle0 00000049 display_cycle1 00000055 display_cycle2 00000061 display_cycle3 0000006D display_pattern_id 0000029D display_w_2bit 00000420 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 106 SYMBOL TABLE LABEL VALUE drive_main_leds 0000002F dupvar end_pattern endpat0 00002139 endpat1 00000522 endpat10 0000072F endpat11 0000075F endpat12 000007CE endpat13 000007D1 endpat14 000007D4 endpat2 00000543 endpat3 000005C4 endpat4 000005F7 endpat5 00000616 endpat6 00000625 endpat7 00000638 endpat8 0000063F endpat9 000006A2 entry exit_int 00000044 exit_tx 00000042 fad 0000005E fad2 00000060 fcount 00000026 get_next_pattern_entry 000002CE get_next_tx_bit 0000022E get_state_tbl_hi_address 000000C5 get_state_tbl_low_address 000000CB glabel1 000002D4 go_state_table 000000D9 greturn 000002DE iloop1 00000495 in0 00000056 in1 00000057 in2 00000058 input 000000F6 instate 00000033 intcon_save 000000F2 itop 0000047B loop_ddf 000004CC main 000004B1 make_mtab make_state_jump_table max_instate 00000034 mem 00000062 mem2 000000F7 mult_nop next1 00000387 next2 00000390 next3 00000399 next_pattern 0000027A nextf 00000021 out0 00000046 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 107 SYMBOL TABLE LABEL VALUE out1 00000047 out2 00000048 out3 00000049 out_address 00000042 out_command 00000043 out_pattern 00000045 out_toggle 00000044 p2count 00000061 p2loop 000003A6 past_exit 0000028A past_pattern 00000282 pattern 00000054 pattern_driver 0000030C patternc 0000000F pclath_save 00000051 pclath_temp 000000F3 pindex 000000F5 pindex2 0000003C ploop0 00000316 ploop1a 0000033A ploop2 00000340 ploop2a 0000035B ploop3 00000360 psize 0000005C pspeed 0000005A ptop 0000030C qcount 00000041 qdelay 00000238 read_button_in 0000021F read_eeprom 000002F1 read_ir_in 00000223 remote_check 0000031F repeat 00000025 repeat_loop 00000022 rf_command_out 0000023C scount 0000004A send_nothing 0000002E send_one 0000001B send_zero 0000002C set_exit 00000295 set_loop 0000028E set_max_state 00000227 set_pattern 0000028B setbank0 bcf STATUS,RP0 setbank1 bsf STATUS,RP0 setup_pattern_table 000002AB setup_pattern_temp 0000004F skip1 00000015 slabel1 000002B9 smi_l1 0000022D speed 00000059 sreturn 000002CD start_pattern MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 108 SYMBOL TABLE LABEL VALUE state2_tbl state_jump_table 000000DD state_tbl status_temp 000000F1 stop2 000002AB strobe_a0 00000079 strobe_a1 0000008C strobe_a2 0000009F strobe_a5 000000B2 strobe_c0 000000B2 strobe_c1 000000B2 strobe_c2 000000B2 strobe_c4 000000B2 strobe_count 0000004C strobe_delay 00000296 strobe_delay1 00000297 strobe_delay2 00000298 table0 000004FF table1 000004FF table10 000006A2 table11 0000072F table12 0000075F table13 000007CE table14 000007D1 table2 00000522 table3 00000543 table4 000005C4 table5 000005F7 table6 00000616 table7 00000625 table8 00000638 table9 0000063F table_lookup 000004DA table_lookup2 000000D2 table_type_1 00000363 table_type_2 0000036D table_type_3 0000039C table_type_4 000003AB tbl2_hi 0000003F tbl2_low 00000040 tbl_hi 0000004D tbl_low 0000004E tbltype 00000055 tbltype1 tdemo_cont 00000305 tdemo_on 00000303 temp2 00000052 temp_high 00000050 toggle 00000038 toggle_demo 000002FB toggle_demo_temp 00000053 tx_1 0000003B var MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 109 SYMBOL TABLE LABEL VALUE var_all_bank w_temp 000000F0 write_eeprom 000002E0 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 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 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 07C0 : XXXXXXXXXXXXXXXX XXXX------------ ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- All other memory blocks unused. Program Memory Words Used: 2001 Program Memory Words Free: 47 MPASM 5.06 GENERIC_683.ASM 5-31-2007 18:56:47 PAGE 110 Errors : 0 Warnings : 1 reported, 0 suppressed Messages : 0 reported, 53 suppressed