MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 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 6-1-2007 20:34:37 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00054 ; 00055 ; Help from: Dave Holle 00056 ; 7N204 Parkside Ave 00057 ; Itasca, IL 60143 00058 ; 00059 ;********************************************************************** 00060 00061 errorlevel -302 ; suppress banking messages 2007 30C4 00062 __CONFIG _CP_OFF & _CPD_OFF & _BOD_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _ FCMEN_OFF & _IESO_OFF 00063 00064 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00065 ; The labels following the directive are located in the respective .inc file. 00066 ; See respective data sheet for additional information on configuration word. 00067 00068 00069 ;********************************* 00070 ; 4RBG /w common anode (ufo and clear 5mm) 00071 ;********************************* 00072 ;#define RGB4 00073 ;#define PATTERN1 00074 ;#define PATTERN2 00075 ;#define PATTERN3 00076 ;#define PATTERN4 00077 ;#define DISPLAY_1BIT_C 00078 ;#define DISPLAY_2BIT_C 00079 ;#define ENABLE_IR 00080 ;#include ; processor specific variable definitions 00081 ; LIST P=PIC12F683 00082 ;NUM_TAB equ d'14' ;highest pattern table number 00083 00084 ;********************************* 00085 ; 4RBG /w common Cathode (milk 5mm) 00086 ;********************************* 00087 ;#define RGB4 00088 ;#define Common_Cathode 00089 ;#define PATTERN1 00090 ;#define PATTERN2 00091 ;#define PATTERN3 00092 ;#define PATTERN4 00093 ;#define DISPLAY_1BIT_C 00094 ;#define DISPLAY_2BIT_C 00095 ;#define ENABLE_IR 00096 ;#include ; processor specific variable definitions 00097 ; LIST P=PIC12F683 00098 ; NUM_TAB equ d'14' ;highest pattern table number 00099 00100 ;********************************* 00101 ; 6 BI /w bi-color LEDs. 00102 ;********************************* 00103 ;#define BI6 00104 ;#define BIN2LED 00105 ;#define PATTERN1 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00106 ;#define PATTERN3 00107 ;#define DISPLAY_1BIT_C 00108 ;#define DISPLAY_2BIT_C 00109 ;#define ENABLE_IR 00110 ;#include ; processor specific variable definitions 00111 ; LIST P=PIC12F683 00112 ; NUM_TAB equ d'14' ;highest pattern table number 00113 00114 ;********************************* 00115 ; 6 BI /w mono LEDs. 00116 ;********************************* 00117 #define BI6 00118 #define MONO 00119 #define FLIPBYTE 00120 #define PATTERN5 00121 #define PATTERN11 00122 #define DISPLAY_1BIT_A 00123 #define DISPLAY_2BIT_A 00124 #define ENABLE_IR 00125 #include ; processor specific variable definitions 00001 LIST 00002 ; P12F683.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00339 LIST 00126 LIST P=PIC12F683 00000011 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'14' ;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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 2BF5 00366 goto main ; go to beginning of program 00367 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 6-1-2007 20:34:37 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 0070 20C5 00757 call get_state_tbl_hi_address 0071 20B2 00758 call strobe_a5 0072 20CB 00759 call get_state_tbl_low_address 0073 20B2 00760 call strobe_a5 0074 20D9 00761 call go_state_table 0075 20B2 00762 call strobe_a5 0076 2227 00763 call set_max_state 0077 20B2 00764 call strobe_a5 00765 0078 0008 00766 return 00767 #else 00768 call strobe_c0 00769 decfsz fcount,f 00770 goto display_cycle3 00771 00772 call get_state_tbl_hi_address 00773 call strobe_c0 00774 call get_state_tbl_low_address 00775 call strobe_c0 00776 call go_state_table 00777 call strobe_c0 00778 call set_max_state 00779 call strobe_c0 00780 00781 return 00782 #endif 00783 00784 #ifdef S19 00785 ;-------------------------------------------------------------------------------------- 00786 display_cycle4 00787 ;-------------------------------------------------------------------------------------- 00788 00789 call strobe_a4 00790 decfsz fcount,f 00791 goto display_cycle4 00792 00793 call get_state_tbl_hi_address 00794 call strobe_a4 00795 call get_state_tbl_low_address 00796 call strobe_a4 00797 call go_state_table 00798 call strobe_a4 00799 call set_max_state 00800 call strobe_a4 00801 00802 return 00803 #endif 00804 #ifdef C19 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00805 ;-------------------------------------------------------------------------------------- 00806 display_cycle4 00807 ;-------------------------------------------------------------------------------------- 00808 00809 call strobe_c1 00810 decfsz fcount,f 00811 goto display_cycle4 00812 00813 call get_state_tbl_hi_address 00814 call strobe_c1 00815 call get_state_tbl_low_address 00816 call strobe_c1 00817 call go_state_table 00818 call strobe_c1 00819 call set_max_state 00820 call strobe_c1 00821 00822 return 00823 00824 ;-------------------------------------------------------------------------------------- 00825 display_cycle5 00826 ;-------------------------------------------------------------------------------------- 00827 00828 call strobe_c2 00829 decfsz fcount,f 00830 goto display_cycle5 00831 00832 call get_state_tbl_hi_address 00833 call strobe_c2 00834 call get_state_tbl_low_address 00835 call strobe_c2 00836 call go_state_table 00837 call strobe_c2 00838 call set_max_state 00839 call strobe_c2 00840 00841 return 00842 00843 ;-------------------------------------------------------------------------------------- 00844 display_cycle6 00845 ;-------------------------------------------------------------------------------------- 00846 00847 call strobe_c4 00848 decfsz fcount,f 00849 goto display_cycle6 00850 00851 call get_state_tbl_hi_address 00852 call strobe_c4 00853 call get_state_tbl_low_address 00854 call strobe_c4 00855 call go_state_table 00856 call strobe_c4 00857 call set_max_state MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00858 call strobe_c4 00859 00860 return 00861 #endif 00862 00863 ;-------------------------------------------------------------------------------------- 0079 00864 strobe_a0 00865 ;-------------------------------------------------------------------------------------- 00866 #ifdef RGB4 00867 #ifdef Common_Cathode 00868 LedOut Dr_reg,Ax_dir,1 ;LED Dr A0-A1 00869 LedOut Dg_reg,Ax_dir,2 ;LED Dg A0-A2 00870 LedOut Db_reg,Ax_dir,5 ;LED Db A0-A5 00871 #else 00872 LedOut Ab_reg,Ax_dir,1 ;LED Ab A0-A1 00873 LedOut Bg_reg,Ax_dir,2 ;LED Bg A0-A2 00874 LedOut Cr_reg,Ax_dir,5 ;LED Cr A0-A5 00875 #endif 00876 #endif 00877 #ifdef BI6 00878 LedOut Ab_reg,Ax_dir,1 ;LED Dr 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 00879 LedOut Cr_reg,Ax_dir,2 ;LED Dg A0-A2 007D 0801 M movfw TMR0 007E 022D M subwf Cr_reg,w 007F 1C03 M btfss STATUS,C 0080 1574 M bsf Ax_dir, 2 00880 LedOut Db_reg,Ax_dir,5 ;LED Db A0-A5 0081 0801 M movfw TMR0 0082 0232 M subwf Db_reg,w 0083 1C03 M btfss STATUS,C 0084 16F4 M bsf Ax_dir, 5 00881 #endif 00882 #ifdef S19 00883 LedOut A0_A1_reg,Ax_dir,1 ;LED A0-A1 00884 LedOut A0_A2_reg,Ax_dir,2 ;LED A0-A2 00885 LedOut A0_A4_reg,Ax_dir,4 ;LED A0-A4 00886 LedOut A0_A5_reg,Ax_dir,5 ;LED A0-A5 00887 #endif 00888 00889 #ifdef C19 00890 LedOut A0_A1_reg,Ax_dir,1 ;LED A0-A1 00891 LedOut A0_A2_reg,Ax_dir,2 ;LED A0-A2 00892 LedOut A0_C0_reg,Cx_dir,0 ;LED A0-C0 00893 LedOut A0_C1_reg,Cx_dir,1 ;LED A0-C1 00894 LedOut A0_C2_reg,Cx_dir,2 ;LED A0-C2 00895 LedOut A0_C4_reg,Cx_dir,4 ;LED A0-C4 00896 #endif 00897 0085 1683 00898 setbank1 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0086 0874 00899 movf Ax_dir,w ;set portA direction 0087 0085 00900 movwf TRISA 00901 #ifdef C19 00902 movf Cx_dir,w ;set portA direction 00903 movwf TRISC 00904 #endif 0088 1283 00905 setbank0 00906 0089 3001 00907 movlw b'00000001' 008A 0085 00908 movwf PORTA 00909 #ifdef C19 00910 movlw b'00000000' 00911 movwf PORTC 00912 #endif 008B 0008 00913 return 00914 00915 ;-------------------------------------------------------------------------------------- 008C 00916 strobe_a1 00917 ;-------------------------------------------------------------------------------------- 00918 #ifdef RGB4 00919 #ifdef Common_Cathode 00920 LedOut Ab_reg,Ax_dir,0 ;LED Ab A1-A0 00921 LedOut Ar_reg,Ax_dir,2 ;LED Ar A1-A2 00922 LedOut Ag_reg,Ax_dir,5 ;LED Ag A1-A5 00923 #else 00924 LedOut Dr_reg,Ax_dir,0 ;LED Dr A1-A0 00925 LedOut Bb_reg,Ax_dir,2 ;LED Bb A1-A2 00926 LedOut Cg_reg,Ax_dir,5 ;LED Cg A1-A5 00927 #endif 00928 #endif 00929 #ifdef BI6 00930 LedOut Bb_reg,Ax_dir,0 ;LED Dr A1-A0 008C 0801 M movfw TMR0 008D 022C M subwf Bb_reg,w 008E 1C03 M btfss STATUS,C 008F 1474 M bsf Ax_dir, 0 00931 LedOut Ag_reg,Ax_dir,2 ;LED Dg A1-A2 0090 0801 M movfw TMR0 0091 0228 M subwf Ag_reg,w 0092 1C03 M btfss STATUS,C 0093 1574 M bsf Ax_dir, 2 00932 LedOut Ar_reg,Ax_dir,5 ;LED Db A1-A5 0094 0801 M movfw TMR0 0095 0227 M subwf Ar_reg,w 0096 1C03 M btfss STATUS,C 0097 16F4 M bsf Ax_dir, 5 00933 #endif 00934 #ifdef S19 00935 LedOut A1_A0_reg,Ax_dir,0 ;LED A1-A0 00936 LedOut A1_A2_reg,Ax_dir,2 ;LED A1-A2 00937 LedOut A1_A4_reg,Ax_dir,4 ;LED A1-A4 00938 LedOut A1_A5_reg,Ax_dir,5 ;LED A1-A5 00939 #endif MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00940 #ifdef C19 00941 LedOut A1_A0_reg,Ax_dir,0 ;LED A1-A0 00942 LedOut A1_A2_reg,Ax_dir,2 ;LED A1-A2 00943 LedOut A1_C0_reg,Cx_dir,0 ;LED A1-C0 00944 LedOut A1_C1_reg,Cx_dir,1 ;LED A1-C1 00945 LedOut A1_C2_reg,Cx_dir,2 ;LED A1-C2 00946 LedOut A1_C4_reg,Cx_dir,4 ;LED A1-C4 00947 #endif 00948 0098 1683 00949 setbank1 0099 0874 00950 movf Ax_dir,w ;set portA direction 009A 0085 00951 movwf TRISA 00952 #ifdef C19 00953 movf Cx_dir,w ;set portA direction 00954 movwf TRISC 00955 #endif 009B 1283 00956 setbank0 009C 3002 00957 movlw b'00000010' 009D 0085 00958 movwf PORTA 00959 #ifdef C19 00960 movlw b'00000000' 00961 movwf PORTC 00962 #endif 009E 0008 00963 return 00964 00965 ;-------------------------------------------------------------------------------------- 009F 00966 strobe_a2 00967 ;-------------------------------------------------------------------------------------- 00968 #ifdef RGB4 00969 #ifdef Common_Cathode 00970 LedOut Bg_reg,Ax_dir,0 ;LED Bg A2-A0 00971 LedOut Bb_reg,Ax_dir,1 ;LED Bb A2-A1 00972 LedOut Br_reg,Ax_dir,5 ;LED Br A2-A5 00973 #else 00974 LedOut Dg_reg,Ax_dir,0 ;LED Dg A2-A0 00975 LedOut Ar_reg,Ax_dir,1 ;LED Ar A2-A1 00976 LedOut Cb_reg,Ax_dir,5 ;LED Cb A2-A5 00977 #endif 00978 #endif 00979 #ifdef BI6 00980 LedOut Dr_reg,Ax_dir,0 ;LED Dr A2-A0 009F 0801 M movfw TMR0 00A0 0230 M subwf Dr_reg,w 00A1 1C03 M btfss STATUS,C 00A2 1474 M bsf Ax_dir, 0 00981 LedOut Bg_reg,Ax_dir,1 ;LED Dg A2-A1 00A3 0801 M movfw TMR0 00A4 022B M subwf Bg_reg,w 00A5 1C03 M btfss STATUS,C 00A6 14F4 M bsf Ax_dir, 1 00982 LedOut Dg_reg,Ax_dir,5 ;LED Db A2-A5 00A7 0801 M movfw TMR0 00A8 0231 M subwf Dg_reg,w MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00A9 1C03 M btfss STATUS,C 00AA 16F4 M bsf Ax_dir, 5 00983 #endif 00984 #ifdef S19 00985 LedOut A2_A0_reg,Ax_dir,0 ;LED A2-A0 00986 LedOut A2_A1_reg,Ax_dir,1 ;LED A2-A1 00987 LedOut A2_A4_reg,Ax_dir,4 ;LED A2-A4 00988 LedOut A2_A5_reg,Ax_dir,5 ;LED A2-A5 00989 #endif 00990 #ifdef C19 00991 LedOut A2_A0_reg,Ax_dir,0 ;LED A2-A0 00992 LedOut A2_A1_reg,Ax_dir,1 ;LED A2-A1 00993 LedOut A2_C0_reg,Cx_dir,0 ;LED A2-C0 00994 LedOut A2_C1_reg,Cx_dir,1 ;LED A2-C1 00995 LedOut A2_C2_reg,Cx_dir,2 ;LED A2-C2 00996 LedOut A2_C4_reg,Cx_dir,4 ;LED A2-C4 00997 #endif 00998 00999 00AB 1683 01000 setbank1 00AC 0874 01001 movf Ax_dir,w ;set portA direction 00AD 0085 01002 movwf TRISA 01003 #ifdef C19 01004 movf Cx_dir,w ;set portA direction 01005 movwf TRISC 01006 #endif 00AE 1283 01007 setbank0 01008 00AF 3004 01009 movlw b'00000100' 00B0 0085 01010 movwf PORTA 01011 #ifdef C19 01012 movlw b'00000000' 01013 movwf PORTC 01014 #endif 00B1 0008 01015 return 01016 01017 ;-------------------------------------------------------------------------------------- 00B2 01018 strobe_c0 01019 ;-------------------------------------------------------------------------------------- 01020 01021 #ifdef C19 01022 LedOut C0_A0_reg,Ax_dir,0 ;LED C0-A0 01023 LedOut C0_A1_reg,Ax_dir,1 ;LED C0-A1 01024 LedOut C0_A2_reg,Ax_dir,2 ;LED C0-A4 01025 LedOut C0_C1_reg,Cx_dir,1 ;LED C0-C1 01026 LedOut C0_C2_reg,Cx_dir,2 ;LED C0-C2 01027 LedOut C0_C4_reg,Cx_dir,4 ;LED C0-C4 01028 01029 setbank1 01030 movf Ax_dir,w ;set portA direction 01031 movwf TRISA 01032 movf Cx_dir,w ;set portA direction 01033 movwf TRISC MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01034 setbank0 01035 01036 movlw b'00000000' 01037 movwf PORTA 01038 01039 movlw b'00000001' 01040 movwf PORTC 01041 01042 return 01043 #endif 01044 ;-------------------------------------------------------------------------------------- 00B2 01045 strobe_c1 01046 ;-------------------------------------------------------------------------------------- 01047 01048 #ifdef C19 01049 #ifdef DDF 01050 LedOut C1_A0_reg,Ax_dir,0 ;LED C1-A0 01051 LedOut C1_A1_reg,Ax_dir,1 ;LED C1-A1 01052 LedOut C1_A2_reg,Ax_dir,2 ;LED C1-A4 01053 LedOut C1_C0_reg,Cx_dir,0 ;LED C1-C0 01054 LedOut C1_C2_reg,Cx_dir,2 ;LED C1-C2 01055 LedOut C1_C4_reg,Cx_dir,4 ;LED C1-C4 01056 01057 setbank1 01058 movf Ax_dir,w ;set portA direction 01059 movwf TRISA 01060 movf Cx_dir,w ;set portA direction 01061 movwf TRISC 01062 setbank0 01063 01064 movlw b'00000000' 01065 movwf PORTA 01066 01067 movlw b'00000010' 01068 movwf PORTC 01069 01070 return 01071 #endif 01072 #endif 01073 01074 ;-------------------------------------------------------------------------------------- 00B2 01075 strobe_c2 01076 ;-------------------------------------------------------------------------------------- 01077 01078 #ifdef C19 01079 #ifdef DDF 01080 LedOut C2_A0_reg,Ax_dir,0 ;LED C2-A0 01081 LedOut C2_A1_reg,Ax_dir,1 ;LED C2-A1 01082 LedOut C2_A2_reg,Ax_dir,2 ;LED C2-A4 01083 LedOut C2_C0_reg,Cx_dir,0 ;LED C2-C0 01084 LedOut C2_C1_reg,Cx_dir,1 ;LED C2-C1 01085 LedOut C2_C4_reg,Cx_dir,4 ;LED C2-C4 01086 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01087 setbank1 01088 movf Ax_dir,w ;set portA direction 01089 movwf TRISA 01090 movf Cx_dir,w ;set portA direction 01091 movwf TRISC 01092 setbank0 01093 01094 movlw b'00000000' 01095 movwf PORTA 01096 01097 movlw b'00000100' 01098 movwf PORTC 01099 01100 return 01101 #endif 01102 #endif 01103 01104 ;-------------------------------------------------------------------------------------- 00B2 01105 strobe_c4 01106 ;-------------------------------------------------------------------------------------- 01107 01108 #ifdef C19 01109 #ifdef DDF 01110 LedOut C4_A0_reg,Ax_dir,0 ;LED C4-A0 01111 LedOut C4_A1_reg,Ax_dir,1 ;LED C4-A1 01112 LedOut C4_A2_reg,Ax_dir,2 ;LED C4-A4 01113 LedOut C4_C0_reg,Cx_dir,0 ;LED C4-C0 01114 LedOut C4_C1_reg,Cx_dir,1 ;LED C4-C1 01115 LedOut C4_C2_reg,Cx_dir,2 ;LED C4-C2 01116 01117 setbank1 01118 movf Ax_dir,w ;set portA direction 01119 movwf TRISA 01120 movf Cx_dir,w ;set portA direction 01121 movwf TRISC 01122 setbank0 01123 01124 movlw b'00000000' 01125 movwf PORTA 01126 01127 movlw b'00010000' 01128 movwf PORTC 01129 01130 return 01131 #endif 01132 #endif 01133 01134 #ifdef S19 01135 ;-------------------------------------------------------------------------------------- 01136 strobe_a4 01137 ;-------------------------------------------------------------------------------------- 01138 01139 LedOut A4_A0_reg,Ax_dir,0 ;LED A4-A0 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01140 LedOut A4_A1_reg,Ax_dir,1 ;LED A4-A1 01141 LedOut A4_A2_reg,Ax_dir,2 ;LED A4-A2 01142 LedOut A4_A5_reg,Ax_dir,5 ;LED A4-A5 01143 01144 setbank1 01145 movf Ax_dir,w ;set portA direction 01146 movwf TRISA 01147 setbank0 01148 01149 movlw b'00010000' 01150 movwf PORTA 01151 01152 return 01153 #endif 01154 01155 ;-------------------------------------------------------------------------------------- 00B2 01156 strobe_a5 01157 ;-------------------------------------------------------------------------------------- 01158 #ifdef RGB4 01159 #ifdef Common_Cathode 01160 LedOut Cr_reg,Ax_dir,0 ;LED Cr A5-A0 01161 LedOut Cg_reg,Ax_dir,1 ;LED Cg A5-A1 01162 LedOut Cb_reg,Ax_dir,2 ;LED Cb A5-A2 01163 #else 01164 LedOut Db_reg,Ax_dir,0 ;LED Db A5-A0 01165 LedOut Ag_reg,Ax_dir,1 ;LED Ag A5-A1 01166 LedOut Br_reg,Ax_dir,2 ;LED Br A5-A2 01167 #endif 01168 #endif 01169 #ifdef BI6 01170 LedOut Cb_reg,Ax_dir,0 ;LED Dr A5-A0 00B2 0801 M movfw TMR0 00B3 022F M subwf Cb_reg,w 00B4 1C03 M btfss STATUS,C 00B5 1474 M bsf Ax_dir, 0 01171 LedOut Cg_reg,Ax_dir,2 ;LED Db A5-A2 00B6 0801 M movfw TMR0 00B7 022E M subwf Cg_reg,w 00B8 1C03 M btfss STATUS,C 00B9 1574 M bsf Ax_dir, 2 01172 LedOut Br_reg,Ax_dir,1 ;LED Dg A5-A1 00BA 0801 M movfw TMR0 00BB 022A M subwf Br_reg,w 00BC 1C03 M btfss STATUS,C 00BD 14F4 M bsf Ax_dir, 1 01173 #endif 01174 #ifdef S19 01175 LedOut A5_A0_reg,Ax_dir,0 ;LED A5-A0 01176 LedOut A5_A1_reg,Ax_dir,1 ;LED A5-A1 01177 LedOut A5_A2_reg,Ax_dir,2 ;LED A5-A2 01178 LedOut A5_A4_reg,Ax_dir,4 ;LED A5-A4 01179 #endif 01180 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00BE 1683 01181 setbank1 00BF 0874 01182 movf Ax_dir,w ;set portA direction 00C0 0085 01183 movwf TRISA 00C1 1283 01184 setbank0 01185 01186 #ifdef BADGE 01187 var a_out 01188 01189 movlw b'00110000' ; Badge Center LED A4-Ground 01190 movwf a_out 01191 movfw TMR0 01192 subwf Center_reg,w 01193 btfss STATUS,C 01194 bcf a_out,4 01195 movfw a_out 01196 movwf PORTA 01197 #else 00C2 3020 01198 movlw b'00100000' 00C3 0085 01199 movwf PORTA 01200 #endif 01201 00C4 0008 01202 return 01203 01204 ;************************************************************************************** 01205 ; 01206 ; State Machine 01207 ; 01208 ;************************************************************************************** 01209 01210 var instate 00000033 M instate equ mem 00000034 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01211 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' 01212 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' 01213 var command 00000036 M command equ mem 00000037 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01214 var address 00000037 M address equ mem 00000038 M mem = mem + 1 M if (mem > 0xef) MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 01215 var toggle 00000038 M toggle equ mem 00000039 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01216 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' 01217 var button 0000003A M button equ mem 0000003B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01218 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' 01219 var pindex2 0000003C M pindex2 equ mem 0000003D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01220 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' 01221 var butcount 0000003E M butcount equ mem 0000003F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01222 01223 ;-------------------------------------------------------------------------------------- 00C5 01224 get_state_tbl_hi_address ; 17 cycles 01225 ;-------------------------------------------------------------------------------------- 01226 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' 01227 00C5 1003 01228 bcf STATUS,0 ; clear carry flag ; 1 00C6 0D33 01229 rlf instate,w ; entry = table * 2 ; 2 00C7 00BC 01230 movwf pindex2 ; 3 00C8 20D2 01231 call table_lookup2 ; 14 (9+2) 00C9 00BF 01232 movwf tbl2_hi ; 15 00CA 0008 01233 return ; 16/17 01234 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01235 ;-------------------------------------------------------------------------------------- 00CB 01236 get_state_tbl_low_address ; 18 cycles 01237 ;-------------------------------------------------------------------------------------- 01238 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' 01239 00CB 1003 01240 bcf STATUS,0 ; clear carry flag (just in case) ; 1 00CC 0D33 01241 rlf instate,w ; entry = table * 2 + 1 ; 2 00CD 3E01 01242 addlw 1 ; 3 00CE 00BC 01243 movwf pindex2 ; 4 00CF 20D2 01244 call table_lookup2 ; 15 (9+2) 00D0 00C0 01245 movwf tbl2_low ; 16 00D1 0008 01246 return ; 17/18 01247 01248 ;********************************************************************** 00D2 01249 table_lookup2 ; 9 cycles 01250 ;********************************************************************** 00D2 3000 01251 movlw HIGH state_jump_table ; 1 00D3 008A 01252 movwf PCLATH ; 2 00D4 083C 01253 movf pindex2,w ; 3 00D5 3EDD 01254 addlw LOW state_jump_table ; 4 00D6 1803 01255 btfsc STATUS,0 ; check carry flag ; 5 00D7 0A8A 01256 incf PCLATH,f ; 6 00D8 0082 01257 movwf PCL ; 7 + 2 01258 01259 ;********************************************************************** 00D9 01260 go_state_table ; 18 cycles 01261 ;********************************************************************** 00D9 083F 01262 movf tbl2_hi,w ; 1 00DA 008A 01263 movwf PCLATH ; 2 00DB 0840 01264 movf tbl2_low,w ; 3 00DC 0082 01265 movwf PCL ; 4 01266 01267 ;********************************************************************** 00DD 01268 state_jump_table 01269 ;********************************************************************** 01270 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 00E7 3401 3448 M dt HIGH Lstate5, LOW Lstate5 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 00000020 M i += 1 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endw 01271 01272 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 01273 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 01274 state_tbl 2, 0, 3, -1 0130 M Lstate2 M if (-1 == 0) MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01275 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 01276 state_tbl 4, 0, 5, -1 0140 M Lstate4 M if (-1 == 0) M clrf button M movlw 0x30 M movwf butcount M endif M if (-1 == 1) MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01277 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 01278 0150 01279 Lstate6 01280 0150 1835 01281 btfsc IR_in,0 0151 295A 01282 goto Lstate6a 01283 0152 3000 01284 movlw 0 0153 073E 01285 addwf butcount,w 0154 1903 01286 btfsc STATUS,Z 0155 2958 01287 goto Lstate6b 01288 0156 0BBE 01289 decfsz butcount,f 0157 2A1E 01290 goto Lcontinue MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01291 0158 01292 Lstate6b 01293 0158 143A 01294 bsf button,0 0159 2A1E 01295 goto Lcontinue 01296 015A 01297 Lstate6a 015A 01B3 01298 clrf instate 015B 2A1E 01299 goto Lcontinue 01300 01301 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 01302 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 0171 0635 M xorwf IR_in,w MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01303 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 01304 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 M MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01305 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 01306 state2_tbl d'17', address, 0 01AC M Lstate17 M ; save the 1st half of word 01AC 0835 M movf IR_in,w ; save 1st half MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01307 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 01CA 0AB3 M incf instate,f MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01CB 2A1E M goto Lcontinue 01308 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 01309 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 01E6 1835 M btfsc IR_in,0 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01310 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 01311 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 M MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01312 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 01313 021C 01314 Lstate31 021C 01B3 01315 clrf instate 021D 143D 01316 bsf IR_in_good,0 01317 021E 01318 Lcontinue 021E 0008 01319 return 01320 01321 ;-------------------------------------------------------------------------------------- 021F 01322 read_button_in ; 5 cycles 01323 ;-------------------------------------------------------------------------------------- 01324 ; Portability : hardcoded button port 01325 ; MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01326 021F 103A 01327 bcf button,0 ; 1 0220 1E85 01328 btfss PORTA,5 ; 2 0221 143A 01329 bsf button,0 ; 3 01330 0222 0008 01331 return 01332 01333 ;-------------------------------------------------------------------------------------- 0223 01334 read_ir_in ; 5 cycles 01335 ;-------------------------------------------------------------------------------------- 01336 0223 1035 01337 bcf IR_in,0 ; 1 0224 1985 01338 btfsc PORTA,3 ; 2 0225 1435 01339 bsf IR_in,0 ; 3 01340 01341 ; movf tx_1,w ; loopback for testing HACK!! ;1 01342 ; xorlw 0x01 ; loopback for testing HACK!! ;2 01343 ; movwf IR_in ; loopback for testing HACK!! ;3 0226 0008 01344 return ; 4/5 01345 01346 ;-------------------------------------------------------------------------------------- 0227 01347 set_max_state ; 5-7 cycles 01348 ;-------------------------------------------------------------------------------------- 0227 0834 01349 movf max_instate,w 0228 0233 01350 subwf instate,w 0229 1C03 01351 btfss STATUS,C 022A 2A2D 01352 goto smi_l1 022B 0833 01353 movf instate,w 022C 00B4 01354 movwf max_instate 022D 01355 smi_l1 022D 0008 01356 return 01357 01358 ;-------------------------------------------------------------------------------------- 022E 01359 get_next_tx_bit ; 11 cycles 01360 ;-------------------------------------------------------------------------------------- 01361 022E 103B 01362 bcf tx_1,0 ;1 022F 03CA 01363 decf scount,f ;2 0230 1003 01364 bcf STATUS, C ; clear carry bit ;3 0231 0CC9 01365 rrf out3,f ;4 0232 0CC8 01366 rrf out2,f ;5 0233 0CC7 01367 rrf out1,f ;6 0234 0CC6 01368 rrf out0,f ;7 0235 1803 01369 btfsc STATUS, C ;8 0236 143B 01370 bsf tx_1,0 ;9 01371 01372 ; movf tx_1,w ; loopback for testing HACK!! 01373 ; xorlw 0x01 ; loopback for testing HACK!! 01374 ; movwf tx_1 ; loopback for testing HACK!! 01375 ; mult_nop d'6' ; for debuging 01376 0237 0008 01377 return ;10/11 01378 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01379 ;********************************************************************** 0238 01380 qdelay 01381 ;********************************************************************** 01382 var qcount 00000041 M qcount equ mem 00000042 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01383 0238 00C1 01384 movwf qcount 0239 01385 delay_loop2 0239 0BC1 01386 decfsz qcount,1 023A 2A39 01387 goto delay_loop2 023B 0008 01388 return 01389 ;********************************************************************** 023C 01390 rf_command_out 01391 ;********************************************************************** 01392 01393 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' 01394 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' 01395 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' 01396 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' 01397 var out0 00000046 M out0 equ mem 00000047 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01398 var out1 00000047 M out1 equ mem 00000048 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01399 var out2 00000048 M out2 equ mem 00000049 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01400 var out3 00000049 M out3 equ mem 0000004A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01401 var scount 0000004A M scount equ mem 0000004B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01402 023C 01C7 01403 clrf out1 023D 01C8 01404 clrf out2 023E 01C9 01405 clrf out3 01406 01407 ; start flag 023F 30A0 01408 movlw B'10100000' 0240 00C6 01409 movwf out0 01410 01411 01412 ; toggle bit 0241 09C4 01413 comf out_toggle,f ; toggle the toggle flag 0242 1C44 01414 btfss out_toggle,0 0243 1447 01415 bsf out1,0 0244 1844 01416 btfsc out_toggle,0 0245 14C7 01417 bsf out1,1 01418 01419 ; address bits 0246 1E42 01420 btfss out_address,4 0247 1547 01421 bsf out1,2 0248 1A42 01422 btfsc out_address,4 0249 15C7 01423 bsf out1,3 01424 024A 1DC2 01425 btfss out_address,3 024B 1647 01426 bsf out1,4 024C 19C2 01427 btfsc out_address,3 024D 16C7 01428 bsf out1,5 01429 024E 1D42 01430 btfss out_address,2 024F 1747 01431 bsf out1,6 0250 1942 01432 btfsc out_address,2 0251 17C7 01433 bsf out1,7 01434 0252 1CC2 01435 btfss out_address,1 0253 1448 01436 bsf out2,0 0254 18C2 01437 btfsc out_address,1 0255 14C8 01438 bsf out2,1 01439 0256 1C42 01440 btfss out_address,0 0257 1548 01441 bsf out2,2 0258 1842 01442 btfsc out_address,0 0259 15C8 01443 bsf out2,3 01444 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01445 ; command bits 025A 1EC3 01446 btfss out_command,5 025B 1648 01447 bsf out2,4 025C 1AC3 01448 btfsc out_command,5 025D 16C8 01449 bsf out2,5 01450 025E 1E43 01451 btfss out_command,4 025F 1748 01452 bsf out2,6 0260 1A43 01453 btfsc out_command,4 0261 17C8 01454 bsf out2,7 01455 0262 1DC3 01456 btfss out_command,3 0263 1449 01457 bsf out3,0 0264 19C3 01458 btfsc out_command,3 0265 14C9 01459 bsf out3,1 01460 0266 1D43 01461 btfss out_command,2 0267 1549 01462 bsf out3,2 0268 1943 01463 btfsc out_command,2 0269 15C9 01464 bsf out3,3 01465 026A 1CC3 01466 btfss out_command,1 026B 1649 01467 bsf out3,4 026C 18C3 01468 btfsc out_command,1 026D 16C9 01469 bsf out3,5 01470 026E 1C43 01471 btfss out_command,0 026F 1749 01472 bsf out3,6 0270 1843 01473 btfsc out_command,0 0271 17C9 01474 bsf out3,7 01475 0272 3021 01476 movlw 0x21 0273 00CA 01477 movwf scount 01478 0274 0008 01479 return 01480 01481 #ifdef BIN2LED 01482 ;********************************************************************** 01483 bin2led 01484 ;********************************************************************** 01485 var b2l_out_hi 01486 var b2l_out_low 01487 var b2l_lcount 01488 var b2l_in_red 01489 var b2l_in_green 01490 01491 clrf b2l_out_hi 01492 clrf b2l_out_low 01493 movlw 0x08 01494 movwf b2l_lcount 01495 b2l_loop 01496 bcf STATUS, C 01497 rrf b2l_in_green,f MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01498 rlf b2l_out_low,f 01499 rlf b2l_out_hi,f 01500 rrf b2l_in_red,f 01501 rlf b2l_out_low,f 01502 rlf b2l_out_hi,f 01503 01504 decfsz b2l_lcount,f 01505 goto b2l_loop 01506 return 01507 #endif 01508 01509 #ifdef FLIPBYTE 01510 ;********************************************************************** 0275 01511 flipbyte 01512 ;********************************************************************** 01513 var flip_in 0000004B M flip_in equ mem 0000004C M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01514 var flip_out 0000004C M flip_out equ mem 0000004D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01515 var flip_lcount 0000004D M flip_lcount equ mem 0000004E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01516 0275 00CB 01517 movwf flip_in 0276 01CC 01518 clrf flip_out 0277 3008 01519 movlw 0x08 0278 00CD 01520 movwf flip_lcount 0279 01521 fbyte_loop 0279 1003 01522 bcf STATUS, C 027A 0CCB 01523 rrf flip_in,f 027B 0DCC 01524 rlf flip_out,f 01525 027C 0BCD 01526 decfsz flip_lcount,f 027D 2A79 01527 goto fbyte_loop 01528 027E 084C 01529 movfw flip_out 027F 0008 01530 return 01531 #endif 01532 01533 ;********************************************************************** 0280 01534 delay 01535 ;********************************************************************** 01536 01537 var delay_count 0000004E M delay_count equ mem MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000004F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01538 01539 ; movlw 0ffh 0280 00CE 01540 movwf delay_count 0281 01541 delay_loop 0281 0000 01542 nop 0282 0BCE 01543 decfsz delay_count,1 0283 2A81 01544 goto delay_loop 0284 0008 01545 return 01546 01547 ;********************************************************************** 0285 01548 next_pattern 01549 ;********************************************************************** 0285 0AD7 01550 incf pattern,f 0286 0857 01551 movf pattern,w 0287 3C12 01552 sublw NUM_TAB+1 ; max pattern? 0288 1903 01553 btfsc STATUS,2 ; z bit check 0289 01D7 01554 clrf pattern ; reset to zero 028A 0857 01555 movfw pattern 028B 00C5 01556 movwf out_pattern 028C 0008 01557 return 01558 01559 ;********************************************************************** 028D 01560 past_pattern 01561 ;********************************************************************** 028D 03D7 01562 decf pattern,f 028E 0857 01563 movf pattern,w 028F 3E01 01564 addlw 1 ; max pattern? 0290 1D03 01565 btfss STATUS,2 ; z bit check 0291 2A95 01566 goto past_exit 0292 3011 01567 movlw NUM_TAB 0293 00D7 01568 movwf pattern 0294 00C5 01569 movwf out_pattern 0295 01570 past_exit 0295 0008 01571 return 01572 01573 ;********************************************************************** 0296 01574 set_pattern ;set pattern from IR 01575 ;********************************************************************** 01576 ; extra logic because all the different blinkes talk to each other, but 01577 ; do not have the same number of patterns. So if blinkie "A" sents a 01578 ; pattern 22 to blinkie "B" which only has 10 patterns, Blinkie "B" 01579 ; starts to show pattern 2. (22 % 10 a mod function.) But to make 01580 ; things fair in blinkie wars, it will transmit pattern 22 to other 01581 ; blinkies. 01582 ;********************************************************************** 01583 0296 0836 01584 movfw command 0297 00D7 01585 movwf pattern 0298 00C5 01586 movwf out_pattern 0299 01587 set_loop MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0299 3EEE 01588 addlw 0xff-NUM_TAB 029A 1C03 01589 btfss STATUS, C 029B 2AA0 01590 goto set_exit 01591 029C 3011 01592 movlw NUM_TAB 029D 02D7 01593 subwf pattern,f 029E 0857 01594 movfw pattern 029F 2A99 01595 goto set_loop 01596 02A0 01597 set_exit 02A0 0008 01598 return 01599 01600 ;********************************************************************** 02A1 01601 strobe_delay 01602 ;********************************************************************** 01603 01604 var strobe_count 0000004F M strobe_count equ mem 00000050 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01605 02A1 00CF 01606 movwf strobe_count 02A2 01607 strobe_delay1 02A2 1021 01608 bcf nextf,0 01609 02A3 01610 strobe_delay2 02A3 1C21 01611 btfss nextf,0 02A4 2AA3 01612 goto strobe_delay2 01613 02A5 0BCF 01614 decfsz strobe_count,f 02A6 2AA2 01615 goto strobe_delay1 01616 02A7 0008 01617 return 01618 01619 ;********************************************************************** 02A8 01620 display_pattern_id 01621 ;********************************************************************** 02A8 0A57 01622 incf pattern,w ; W = pattern + 1 02A9 00D9 01623 movwf in0 01624 01625 #ifdef S19 01626 call flipbyte 01627 movwf in0 01628 #endif 01629 #ifdef BI6 01630 #ifdef MONO 02AA 2275 01631 call flipbyte 02AB 00D9 01632 movwf in0 01633 #else 01634 movwf b2l_in_green 01635 clrf b2l_in_red 01636 call bin2led MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01637 movf b2l_out_hi,w 01638 movwf in0 01639 movf b2l_out_low,w 01640 movwf in1 01641 #endif 01642 #endif 01643 01644 #ifdef S19 01645 clrf in1 01646 clrf in2 01647 01648 movlw b'11100000' 01649 btfsc demo_mode,0 01650 movwf in2 01651 #else 01652 #ifdef BI6 01653 #ifdef MONO 02AC 185E 01654 btfsc demo_mode,0 02AD 1559 01655 bsf in0,2 01656 #else ; bicolor 01657 btfsc demo_mode,0 01658 bsf in1,4 01659 #endif ; end Mono/bicolor 01660 #endif ; end BI 01661 #endif ; end S19/BI6 01662 02AE 30FF 01663 movlw 0xFF 02AF 2377 01664 call display_1bit 01665 02B0 01D9 01666 clrf in0 02B1 01DA 01667 clrf in1 02B2 01DB 01668 clrf in2 02B3 3001 01669 movlw 0x01 02B4 2377 01670 call display_1bit 02B5 0008 01671 return 01672 01673 ;********************************************************************** 02B6 01674 setup_pattern_table 01675 ;********************************************************************** 01676 var tbl_hi 00000050 M tbl_hi equ mem 00000051 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01677 var tbl_low 00000051 M tbl_low equ mem 00000052 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01678 var setup_pattern_temp 00000052 M setup_pattern_temp equ mem 00000053 M mem = mem + 1 M if (mem > 0xef) MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 01679 var temp_high 00000053 M temp_high equ mem 00000054 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01680 02B6 01681 stop2 02B6 0857 01682 movf pattern,w 02B7 1D03 01683 btfss STATUS,Z 02B8 2AC4 01684 goto slabel1 01685 ; 01686 ; if patten is zero, check eeprom and verify 1st entry is not a 0x00 01687 ; if it is switch to next pattern. 01688 02B9 0103 01689 clrw 02BA 22FC 01690 call read_eeprom 02BB 00D2 01691 movwf setup_pattern_temp 01692 02BC 01DE 01693 clrf demo_mode 02BD 1BD2 01694 btfsc setup_pattern_temp,7 02BE 145E 01695 bsf demo_mode,0 01696 02BF 0852 01697 movfw setup_pattern_temp 02C0 1D03 01698 btfss STATUS,Z 02C1 2AD8 01699 goto sreturn 01700 02C2 2285 01701 call next_pattern 02C3 2AB6 01702 goto stop2 01703 02C4 01704 slabel1 01705 ; 01706 ; Set the pattern (table) 01707 ; 02C4 3004 01708 movlw HIGH MasterTable 02C5 00D0 01709 movwf tbl_hi 02C6 3029 01710 movlw LOW MasterTable 02C7 00D1 01711 movwf tbl_low 01712 01713 ; get the high address for the pattern table 02C8 1003 01714 bcf STATUS,0 ; clear carry flag 02C9 0D57 01715 rlf pattern,w ; entry = table * 2 02CA 00F5 01716 movwf pindex 02CB 138B 01717 bcf INTCON, GIE ; disable INTs 02CC 2422 01718 call table_lookup 02CD 178B 01719 bsf INTCON, GIE ; enable INTs 02CE 00D3 01720 movwf temp_high ; can't put it in tbl_high yet 01721 01722 ; get the low address for the pattern table 02CF 1403 01723 bsf STATUS,0 ; set carry 02D0 0D57 01724 rlf pattern,w ; entry = table * 2 + 1 02D1 00F5 01725 movwf pindex 02D2 138B 01726 bcf INTCON, GIE ; disable INTs MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02D3 2422 01727 call table_lookup 02D4 178B 01728 bsf INTCON, GIE ; enable INTs 02D5 00D1 01729 movwf tbl_low 01730 02D6 0853 01731 movf temp_high,w 02D7 00D0 01732 movwf tbl_hi 01733 02D8 01734 sreturn 02D8 0008 01735 return 01736 01737 ;********************************************************************** 02D9 01738 get_next_pattern_entry 01739 ;********************************************************************** 01740 var pclath_save 00000054 M pclath_save equ mem 00000055 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01741 var temp2 00000055 M temp2 equ mem 00000056 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01742 02D9 0857 01743 movf pattern,w 02DA 1D03 01744 btfss STATUS,Z 02DB 2ADF 01745 goto glabel1 01746 02DC 0875 01747 movf pindex,w 02DD 22FC 01748 call read_eeprom 01749 02DE 2AE9 01750 goto greturn 02DF 01751 glabel1 02DF 080A 01752 movfw PCLATH 02E0 00D4 01753 movwf pclath_save 02E1 0875 01754 movf pindex,w 02E2 138B 01755 bcf INTCON, GIE ; disable INTs 02E3 2422 01756 call table_lookup 02E4 178B 01757 bsf INTCON, GIE ; enable INTs 02E5 00D5 01758 movwf temp2 02E6 0854 01759 movfw pclath_save 02E7 008A 01760 movwf PCLATH 02E8 0855 01761 movfw temp2 01762 02E9 01763 greturn 02E9 0AF5 01764 incf pindex,f 02EA 0008 01765 return 01766 01767 01768 ;********************************************************************** 02EB 01769 write_eeprom 01770 ; expects EEPROM address and data in pindex and input 01771 ; makes sure previous write (if any) has completed before proceeding MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01772 ;********************************************************************** 02EB 1683 01773 setbank1 01774 02EC 189C 01775 btfsc EECON1,WR ;wait for WR to clear 02ED 2AEC 01776 goto $-1 01777 02EE 138B 01778 bcf INTCON, GIE ; disable INTs 02EF 151C 01779 bsf EECON1,WREN ;enable writes 02F0 0875 01780 movf pindex,w ;set address 02F1 009B 01781 movwf EEADR 02F2 0876 01782 movf input,w ;set data 02F3 009A 01783 movwf EEDAT 02F4 3055 01784 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 02F5 009D 01785 movwf EECON2 02F6 30AA 01786 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 02F7 009D 01787 movwf EECON2 02F8 149C 01788 bsf EECON1,WR ;initiate a write cycle 02F9 178B 01789 bsf INTCON, GIE ; enable INT 01790 02FA 1283 01791 setbank0 02FB 0008 01792 return 01793 01794 01795 ;********************************************************************** 02FC 01796 read_eeprom 01797 ; expects EEPROM address in W 01798 ; returns EEPROM data in W 01799 ; makes sure previous write (if any) has completed before proceeding 01800 ;********************************************************************** 02FC 1683 01801 setbank1 01802 02FD 189C 01803 btfsc EECON1,WR ;wait for WR to clear 02FE 2AFD 01804 goto $-1 01805 02FF 111C 01806 bcf EECON1,WREN ;disable writes 0300 009B 01807 movwf EEADR ;EEADR = W 0301 139C 01808 bcf EECON1,7 ;clear EEPGD 0302 141C 01809 bsf EECON1,RD ;initiate a read cycle 0303 081A 01810 movf EEDAT,w ;W = EEDAT 01811 0304 1283 01812 setbank0 0305 0008 01813 return 01814 01815 ;********************************************************************** 0306 01816 toggle_demo 01817 ;********************************************************************** 01818 var toggle_demo_temp 00000056 M toggle_demo_temp equ mem 00000057 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01819 0306 0103 01820 clrw MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0307 22FC 01821 call read_eeprom 0308 00D6 01822 movwf toggle_demo_temp 01823 0309 1FD6 01824 btfss toggle_demo_temp,7 ; 030A 2B0E 01825 goto tdemo_on 01826 01827 ; toggle off 030B 13D6 01828 bcf toggle_demo_temp,7 030C 01DE 01829 clrf demo_mode 030D 2B10 01830 goto tdemo_cont 01831 030E 01832 tdemo_on 030E 17D6 01833 bsf toggle_demo_temp,7 030F 145E 01834 bsf demo_mode,0 01835 0310 01836 tdemo_cont 0310 01F5 01837 clrf pindex 0311 0856 01838 movfw toggle_demo_temp 0312 00F6 01839 movwf input 0313 22EB 01840 call write_eeprom 01841 0314 22A8 01842 call display_pattern_id 0315 22A8 01843 call display_pattern_id 01844 0316 0008 01845 return 01846 01847 ;********************************************************************** 0317 01848 pattern_driver 01849 ;********************************************************************** 01850 01851 var pattern 00000057 M pattern equ mem 00000058 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01852 var tbltype 00000058 M tbltype equ mem 00000059 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01853 var in0 00000059 M in0 equ mem 0000005A M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01854 var in1 0000005A M in1 equ mem 0000005B M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01855 var in2 0000005B M in2 equ mem 0000005C M mem = mem + 1 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem > 0xef) M error 'Too much var space used' 01856 #ifdef C19 01857 var in3 01858 var in4 01859 #endif 01860 #ifdef BADGE 01861 var in3 01862 #endif 01863 var speed 0000005C M speed equ mem 0000005D M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01864 var pspeed 0000005D M pspeed equ mem 0000005E M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01865 var demo_mode 0000005E M demo_mode equ mem 0000005F M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01866 var psize 0000005F M psize equ mem 00000060 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 01867 01868 ; need to be able to access from page1 & page2 for eeprom read/write 01869 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' 01870 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' 01871 0317 01872 ptop 01873 01874 0317 22B6 01875 call setup_pattern_table 01876 0318 01F5 01877 clrf pindex 01878 01879 ; load the table type (Currently only 1 type) 0319 22D9 01880 call get_next_pattern_entry 031A 00D8 01881 movwf tbltype 031B 13D8 01882 bcf tbltype,7 ; using top bit for demo mode. MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01883 01884 ; load the speed (someday this will be a table type 1 only thing.) 031C 22D9 01885 call get_next_pattern_entry 031D 00DD 01886 movwf pspeed 031E 0ADD 01887 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 01888 01889 ; load the table size 031F 22D9 01890 call get_next_pattern_entry ;4rgb 0320 00DF 01891 movwf psize ;4rgb 01892 0321 01893 ploop0 01894 ; 01895 ; Check for IR command in 01896 ; 0321 1C3D 01897 btfss IR_in_good,0 0322 2B3F 01898 goto button_check 01899 0323 01900 blinkie_check 0323 3007 01901 movlw 0x07 ; blinkines use address 0x07 (Experimental) 0324 0237 01902 subwf address,w 0325 1D03 01903 btfss STATUS,Z 0326 2B2A 01904 goto remote_check 01905 0327 2296 01906 call set_pattern 0328 01BD 01907 clrf IR_in_good 0329 2B17 01908 goto ptop 01909 032A 01910 remote_check 032A 08B7 01911 movf address,f ; remote giving "0" for address (TV)? 032B 1D03 01912 btfss STATUS,Z 032C 2B3F 01913 goto button_check 01914 032D 3020 01915 movlw 0x20 ; remote curser right (pattern ++) 032E 0236 01916 subwf command,w 032F 1903 01917 btfsc STATUS,Z 0330 2285 01918 call next_pattern 01919 0331 3021 01920 movlw 0x21 ; remote curser left (pattern --) 0332 0236 01921 subwf command,w 0333 1903 01922 btfsc STATUS,Z 0334 228D 01923 call past_pattern 01924 0335 3000 01925 movlw 0x00 ; remote "0" key (pattern = 0) 0336 0236 01926 subwf command,w 0337 1903 01927 btfsc STATUS,Z 0338 01D7 01928 clrf pattern 01929 0339 300C 01930 movlw 0x0c ; remote on/off key (togle demo mode!) 033A 0236 01931 subwf command,w 033B 1903 01932 btfsc STATUS,Z 033C 2306 01933 call toggle_demo 01934 033D 01BD 01935 clrf IR_in_good MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 033E 2B17 01936 goto ptop 01937 033F 01938 button_check 01939 ; ploop1 01940 033F 1C3A 01941 btfss button,0 ; if putton pressed show pattern id 0340 2B4B 01942 goto ploop2 01943 0341 22A8 01944 call display_pattern_id 0342 22A8 01945 call display_pattern_id 01946 0343 1C3A 01947 btfss button,0 ; if putton still pressed inc pattern 0344 2B4B 01948 goto ploop2 01949 0345 01950 ploop1a 0345 2285 01951 call next_pattern 0346 22A8 01952 call display_pattern_id 0347 22A8 01953 call display_pattern_id 01954 0348 183A 01955 btfsc button,0 0349 2B45 01956 goto ploop1a 034A 2B17 01957 goto ptop 01958 034B 01959 ploop2 01960 01961 #ifdef PATTERN1 01962 movlw 0x01 ; pattern1 01963 subwf tbltype,w 01964 btfsc STATUS,Z 01965 call table_type_1 01966 #endif 01967 01968 #ifdef PATTERN2 01969 movlw 0x02 ; pattern2 01970 subwf tbltype,w 01971 btfsc STATUS,Z 01972 call table_type_2 01973 #endif 01974 01975 #ifdef PATTERN3 01976 movlw 0x03 ; pattern3 01977 subwf tbltype,w 01978 btfsc STATUS,Z 01979 call table_type_3 01980 #endif 01981 01982 #ifdef PATTERN4 01983 movlw 0x04 ; pattern4 01984 subwf tbltype,w 01985 btfsc STATUS,Z 01986 call table_type_4 01987 #endif 01988 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01989 #ifdef PATTERN5 034B 3005 01990 movlw 0x05 ; pattern5 034C 0258 01991 subwf tbltype,w 034D 1903 01992 btfsc STATUS,Z 034E 2366 01993 call table_type_5 01994 #endif 01995 01996 #ifdef PATTERN6 01997 movlw 0x06 ; pattern6 01998 subwf tbltype,w 01999 btfsc STATUS,Z 02000 call table_type_6 02001 #endif 02002 02003 #ifdef PATTERN7 02004 movlw 0x07 ; pattern7 02005 subwf tbltype,w 02006 btfsc STATUS,Z 02007 call table_type_7 02008 #endif 02009 02010 #ifdef PATTERN8 02011 movlw 0x08 ; pattern8 02012 subwf tbltype,w 02013 btfsc STATUS,Z 02014 call table_type_8 02015 #endif 02016 02017 #ifdef PATTERN9 02018 movlw 0x09 ; pattern8 02019 subwf tbltype,w 02020 btfsc STATUS,Z 02021 call table_type_9 02022 #endif 02023 02024 #ifdef PATTERN10 02025 movlw 0x0A ; pattern8 02026 subwf tbltype,w 02027 btfsc STATUS,Z 02028 call table_type_10 02029 #endif 02030 02031 #ifdef PATTERN11 034F 300B 02032 movlw 0x0B ; pattern8 0350 0258 02033 subwf tbltype,w 0351 1903 02034 btfsc STATUS,Z 0352 236F 02035 call table_type_11 02036 #endif 02037 02038 02039 ; make sure we are not sending a IR signel 0353 084A 02040 movf scount,w ; F22 0354 3E00 02041 addlw 0 ; F23 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0355 1D03 02042 btfss STATUS,Z ; F24 0356 2B63 02043 goto ploop3 02044 02045 ; count down till net IR signel 0357 1CA1 02046 btfss nextf,1 0358 2B63 02047 goto ploop3 02048 0359 10A1 02049 bcf nextf,1 035A 1C5E 02050 btfss demo_mode,0 035B 2B5E 02051 goto ploop2a 02052 035C 2285 02053 call next_pattern 035D 2B17 02054 goto ptop 02055 035E 02056 ploop2a 02057 ; send an IR signel 02058 #ifdef ENABLE_IR 035E 3007 02059 movlw 0x07 ; address 0x07 "Experimental" 035F 00C2 02060 movwf out_address 0360 0845 02061 movfw out_pattern 0361 00C3 02062 movwf out_command ; copy out_pettern 02063 0362 223C 02064 call rf_command_out 02065 #endif 02066 0363 02067 ploop3 0363 0BDF 02068 decfsz psize,f ;check for end of pattern (4rgb) 0364 2B21 02069 goto ploop0 02070 0365 2B17 02071 goto ptop 02072 02073 #ifdef PATTERN1 02074 ;********************************************************************** 02075 table_type_1 02076 ;********************************************************************** 02077 ; 76543210 <-- bits 02078 ; AABBCCDD <-- LEDs 02079 ; 01010101 <-- stays on for 1 unit - b'01' 02080 ; 10101010 <-- stays on for 2 units - b'10' 02081 ; 11111111 <-- stays on for 3 units - b'11' 02082 02083 ; in0 red 02084 ; in1 green 02085 ; in2 blu 02086 02087 call get_next_pattern_entry 02088 movwf in0 02089 02090 call get_next_pattern_entry 02091 movwf in1 02092 02093 call get_next_pattern_entry ;4rgb 02094 movwf in2 ;4rgb MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02095 02096 movf pspeed,w 02097 movwf speed 02098 call display_2bit 02099 02100 return 02101 #endif 02102 02103 #ifdef PATTERN2 02104 ;********************************************************************** 02105 table_type_2 02106 ;********************************************************************** 02107 02108 var delay1 02109 var fad 02110 var color 02111 var fad2 02112 02113 incf delay1,f 02114 02115 movf delay1,w ; testing for 0 02116 btfss STATUS,Z 02117 goto cf_loop2 02118 02119 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02120 movwf delay1 02121 02122 ; 02123 ; select a pattern 02124 ; 02125 comf fad,f 02126 movf fad,w ; testing for 0 02127 incf color,f 02128 02129 cf_loop2 02130 movf delay1,w ; fading up 02131 btfsc fad,0 02132 comf delay1,w ; dafinf down 02133 movwf fad2 02134 02135 movlw 0x03 ; greater then 3? 02136 subwf color,w 02137 btfsc STATUS,C 02138 clrf color 02139 02140 02141 movlw 0x00 ; testing for 0 02142 subwf color,w 02143 btfss STATUS,Z 02144 goto next1 02145 02146 movfw fad2 02147 movwf Ar_reg MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02148 movwf Br_reg 02149 movwf Cr_reg 02150 movwf Dr_reg 02151 02152 next1 02153 movlw 0x01 ; testing for 1 02154 subwf color,w 02155 btfss STATUS,Z 02156 goto next2 02157 02158 movfw fad2 02159 movwf Ag_reg 02160 movwf Bg_reg 02161 movwf Cg_reg 02162 movwf Dg_reg 02163 02164 next2 02165 movlw 0x02 ; testing for 2 02166 subwf color,w 02167 btfss STATUS,Z 02168 goto next3 02169 02170 movfw fad2 02171 movwf Ab_reg 02172 movwf Bb_reg 02173 movwf Cb_reg 02174 movwf Db_reg 02175 02176 next3 02177 movfw pspeed 02178 call strobe_delay 02179 02180 return 02181 #endif 02182 02183 02184 #ifdef PATTERN3 02185 ;********************************************************************** 02186 table_type_3 02187 ;********************************************************************** 02188 ; 02189 ; 2 bytes 02190 ; 02191 ; RRRRGGGG BBBBCDDD 02192 ; 02193 ; RRRR = bit of red LEDs to turn on 02194 ; GGGG = bit of red LEDs to turn on 02195 ; BBBB = bit of red LEDs to turn on 02196 ; CDDD = a repeat counter. 02197 ; 02198 ; For badge blinkies 02199 ; C is 13th LED 02200 ; DDD = is repeat count MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02201 02202 var p2count 02203 02204 call get_next_pattern_entry 02205 movwf in0 02206 02207 call get_next_pattern_entry 02208 movwf in1 02209 02210 #ifdef BADGE 02211 movlw b'00000111' 02212 #else 02213 movlw b'00001111' 02214 #endif 02215 andwf in1,w 02216 movwf p2count 02217 incf p2count,f 02218 rlf p2count,f 02219 rlf p2count,f 02220 02221 p2loop 02222 movfw pspeed 02223 call display_1bit 02224 02225 decfsz p2count,f 02226 goto p2loop 02227 02228 return 02229 #endif 02230 02231 02232 #ifdef PATTERN4 02233 ;********************************************************************** 02234 table_type_4 02235 ;********************************************************************** 02236 02237 ;use delay1 02238 ;use fad 02239 ;use color 02240 02241 02242 incf delay1,f 02243 02244 movf delay1,w ; testing for 0 02245 btfss STATUS,Z 02246 goto cf_loop2a 02247 02248 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02249 movwf delay1 02250 02251 ; 02252 ; select a pattern 02253 ; MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02254 comf fad,f 02255 movf fad,w ; testing for 0 02256 btfss fad,0 02257 incf color,f 02258 02259 cf_loop2a 02260 movf delay1,w ; fading up 02261 btfsc fad,0 02262 comf delay1,w ; dafinf down 02263 02264 movwf Ar_reg 02265 movwf Ag_reg 02266 movwf Ab_reg 02267 movwf Br_reg 02268 movwf Bg_reg 02269 movwf Bb_reg 02270 movwf Cr_reg 02271 movwf Cg_reg 02272 movwf Cb_reg 02273 movwf Dr_reg 02274 movwf Dg_reg 02275 movwf Db_reg 02276 02277 btfsc color,0 02278 clrf Ar_reg 02279 btfsc color,1 02280 clrf Ag_reg 02281 btfsc color,2 02282 clrf Ab_reg 02283 btfsc color,0 02284 clrf Br_reg 02285 btfsc color,1 02286 clrf Bg_reg 02287 btfsc color,2 02288 clrf Bb_reg 02289 btfsc color,0 02290 clrf Cr_reg 02291 btfsc color,1 02292 clrf Cg_reg 02293 btfsc color,2 02294 clrf Cb_reg 02295 btfsc color,0 02296 clrf Dr_reg 02297 btfsc color,1 02298 clrf Dg_reg 02299 btfsc color,2 02300 clrf Db_reg 02301 02302 btfsc color,3 02303 clrf Ar_reg 02304 btfsc color,3 02305 clrf Ag_reg 02306 btfsc color,3 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02307 clrf Ab_reg 02308 02309 btfsc color,4 02310 clrf Br_reg 02311 btfsc color,4 02312 clrf Bg_reg 02313 btfsc color,4 02314 clrf Bb_reg 02315 02316 btfsc color,5 02317 clrf Cr_reg 02318 btfsc color,5 02319 clrf Cg_reg 02320 btfsc color,5 02321 clrf Cb_reg 02322 02323 btfsc color,6 02324 clrf Dr_reg 02325 btfsc color,6 02326 clrf Dg_reg 02327 btfsc color,6 02328 clrf Db_reg 02329 02330 movlw 0x20 02331 call strobe_delay 02332 02333 return 02334 #endif 02335 02336 #ifdef PATTERN5 02337 ;********************************************************************** 0366 02338 table_type_5 02339 ;********************************************************************** 02340 ; 02341 ; 1 bytes 02342 ; 02343 ; ABCDEFX = 7 bits for LEDs. 02344 ; 02345 02346 var p2count 00000060 M p2count equ mem 00000061 M mem = mem + 1 M if (mem > 0xef) M error 'Too much var space used' 02347 0366 22D9 02348 call get_next_pattern_entry 0367 00D9 02349 movwf in0 02350 0368 3004 02351 movlw 0x04 ; call display 4 times, speed thing 0369 00E0 02352 movwf p2count 02353 036A 02354 p2loop 036A 085D 02355 movfw pspeed MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 036B 2377 02356 call display_1bit 02357 036C 0BE0 02358 decfsz p2count,f 036D 2B6A 02359 goto p2loop 02360 036E 0008 02361 return 02362 #endif 02363 02364 #ifdef PATTERN6 02365 ;********************************************************************** 02366 table_type_6 02367 ;********************************************************************** 02368 ; 02369 ; 3 bytes 02370 ; 02371 ; AAAAAAAA AAAAAAAA AAADDDDD 02372 ; 02373 ; A = 19 bits of LED 02374 ; DDDDD = a repeat counter. 02375 02376 var p2count 02377 02378 call get_next_pattern_entry 02379 movwf in0 02380 02381 call get_next_pattern_entry 02382 movwf in1 02383 02384 call get_next_pattern_entry 02385 movwf in2 02386 02387 movlw b'00011111' 02388 andwf in2,w 02389 movwf p2count 02390 incf p2count,f 02391 rlf p2count,f 02392 rlf p2count,f 02393 02394 p2loop 02395 movfw pspeed 02396 call display_1bit 02397 02398 decfsz p2count,f 02399 goto p2loop 02400 02401 return 02402 #endif 02403 02404 #define BRIGHT1 0x40 02405 #define BRIGHT2 0xA0 02406 02407 #ifdef PATTERN7 02408 ;********************************************************************** MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02409 table_type_7 02410 ;********************************************************************** 02411 ; 02412 ; 1 bytes 02413 ; 02414 ; ABBCCCCC 02415 ; 02416 ; A = shire Right/Left 02417 ; BB = two bit intensity to shift on 02418 ; CCCCC = Number of shifts to loop 02419 ; 02420 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 02421 ; 02422 02423 var t7count 02424 02425 call get_next_pattern_entry 02426 movwf in0 02427 02428 movlw b'00011111' 02429 andwf in0,w 02430 movwf t7count 02431 02432 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 02433 subwf t7count,w 02434 btfss STATUS,Z 02435 goto t7_loop 02436 02437 clrf in0 ; quick way to clear all the LEDS. 02438 clrf in1 02439 clrf in2 02440 call display_1bit 02441 goto t7_return 02442 02443 02444 t7_loop 02445 btfsc in0,7 02446 goto t7_set19 02447 ; 02448 ; set LED 1 02449 movfw A1_A4_reg ; 18 -> 19 02450 movwf A4_A1_reg 02451 02452 movfw A2_A1_reg ; 17 -> 18 02453 movwf A1_A4_reg 02454 02455 movfw A1_A2_reg ; 16 -> 17 02456 movwf A2_A1_reg 02457 02458 movfw A2_A4_reg ; 15 -> 16 02459 movwf A1_A2_reg 02460 02461 movfw A4_A2_reg ; 14 -> 15 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02462 movwf A2_A4_reg 02463 02464 movfw A0_A1_reg ; 13 -> 14 02465 movwf A4_A2_reg 02466 02467 movfw A1_A0_reg ; 12 -> 13 02468 movwf A0_A1_reg 02469 02470 movfw A0_A4_reg ; 11 -> 12 02471 movwf A1_A0_reg 02472 02473 movfw A4_A0_reg ; 10 -> 11 02474 movwf A0_A4_reg 02475 02476 movfw A0_A2_reg ; 09 -> 10 02477 movwf A4_A0_reg 02478 02479 movfw A2_A0_reg ; 08 -> 09 02480 movwf A0_A2_reg 02481 02482 movfw A5_A1_reg ; 07 -> 08 02483 movwf A2_A0_reg 02484 02485 movfw A1_A5_reg ; 06 -> 07 02486 movwf A5_A1_reg 02487 02488 movfw A5_A4_reg ; 05 -> 06 02489 movwf A1_A5_reg 02490 02491 movfw A4_A5_reg ; 04 -> 05 02492 movwf A5_A4_reg 02493 02494 movfw A5_A2_reg ; 03 -> 04 02495 movwf A4_A5_reg 02496 02497 movfw A2_A5_reg ; 02 -> 03 02498 movwf A5_A2_reg 02499 02500 movfw A5_A0_reg ; 01 -> 02 02501 movwf A2_A5_reg 02502 02503 clrf A5_A0_reg 02504 movlw BRIGHT1 02505 btfsc in0,5 02506 addwf A5_A0_reg,f 02507 movlw BRIGHT2 02508 btfsc in0,6 02509 addwf A5_A0_reg,f 02510 goto t7_cont 02511 ; 02512 ; set LED 19 02513 t7_set19 02514 movfw A2_A5_reg ; 02 -> 01 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02515 movwf A5_A0_reg 02516 02517 movfw A5_A2_reg ; 03 -> 02 02518 movwf A2_A5_reg 02519 02520 movfw A4_A5_reg ; 04 -> 03 02521 movwf A5_A2_reg 02522 02523 movfw A5_A4_reg ; 05 -> 04 02524 movwf A4_A5_reg 02525 02526 movfw A1_A5_reg ; 06 -> 05 02527 movwf A5_A4_reg 02528 02529 movfw A5_A1_reg ; 07 -> 06 02530 movwf A1_A5_reg 02531 02532 movfw A2_A0_reg ; 08 -> 07 02533 movwf A5_A1_reg 02534 02535 movfw A0_A2_reg ; 09 -> 08 02536 movwf A2_A0_reg 02537 02538 movfw A4_A0_reg ; 10 -> 09 02539 movwf A0_A2_reg 02540 02541 movfw A0_A4_reg ; 11 -> 10 02542 movwf A4_A0_reg 02543 02544 movfw A1_A0_reg ; 12 -> 11 02545 movwf A0_A4_reg 02546 02547 movfw A0_A1_reg ; 13 -> 12 02548 movwf A1_A0_reg 02549 02550 movfw A4_A2_reg ; 14 -> 13 02551 movwf A0_A1_reg 02552 02553 movfw A2_A4_reg ; 15 -> 14 02554 movwf A4_A2_reg 02555 02556 movfw A1_A2_reg ; 16 -> 15 02557 movwf A2_A4_reg 02558 02559 movfw A2_A1_reg ; 17 -> 16 02560 movwf A1_A2_reg 02561 02562 movfw A1_A4_reg ; 18 -> 17 02563 movwf A2_A1_reg 02564 02565 movfw A4_A1_reg ; 19 -> 18 02566 movwf A1_A4_reg 02567 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02568 clrf A4_A1_reg 02569 movlw BRIGHT1 02570 btfsc in0,5 02571 addwf A4_A1_reg,f 02572 movlw BRIGHT2 02573 btfsc in0,6 02574 addwf A4_A1_reg,f 02575 02576 t7_cont 02577 02578 movf pspeed,w 02579 call strobe_delay 02580 ; 02581 ; This is a quick hack, because without this button presses are not seen for minutes 02582 ; This early exit might impact the pattern getting displayed. 02583 ; 02584 btfsc button,0 ; if putton pressed show pattern id 02585 goto t7_return 02586 02587 btfsc IR_in_good,0 02588 goto t7_return 02589 02590 decfsz t7count,f 02591 goto t7_loop 02592 02593 t7_return 02594 return 02595 #endif 02596 02597 02598 #ifdef PATTERN8 02599 ;********************************************************************** 02600 table_type_8 ; - 19 LED fader 02601 ;********************************************************************** 02602 02603 var delay1 02604 var fad 02605 var color 02606 02607 02608 incf delay1,f 02609 02610 movf delay1,w ; testing for 0 02611 btfss STATUS,Z 02612 goto cf8_loop2a 02613 02614 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02615 movwf delay1 02616 02617 ; 02618 ; select a pattern 02619 ; 02620 comf fad,f MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02621 movf fad,w ; testing for 0 02622 btfss fad,0 02623 incf color,f 02624 02625 cf8_loop2a 02626 movf delay1,w ; fading up 02627 btfsc fad,0 02628 comf delay1,w ; fading down 02629 02630 movwf A5_A0_reg ; 01 02631 movwf A2_A5_reg ; 02 02632 movwf A5_A2_reg ; 03 02633 movwf A4_A5_reg ; 04 02634 movwf A5_A4_reg ; 05 02635 movwf A1_A5_reg ; 06 02636 movwf A5_A1_reg ; 07 02637 movwf A2_A0_reg ; 08 02638 movwf A0_A2_reg ; 09 02639 movwf A4_A0_reg ; 10 02640 movwf A0_A4_reg ; 11 02641 movwf A1_A0_reg ; 12 02642 movwf A0_A1_reg ; 13 02643 movwf A4_A2_reg ; 14 02644 movwf A2_A4_reg ; 15 02645 movwf A1_A2_reg ; 16 02646 movwf A2_A1_reg ; 17 02647 movwf A1_A4_reg ; 18 02648 movwf A4_A1_reg ; 19 02649 02650 movlw 0x03 02651 call strobe_delay 02652 02653 return 02654 #endif 02655 02656 #ifdef PATTERN9 02657 ;********************************************************************** 02658 table_type_9 02659 ;********************************************************************** 02660 ; 02661 ; 3 bytes 02662 ; 02663 ; AAAAAAAA AAAAAAAA AAADDDDD 02664 ; 02665 ; A = 19 bits of LED 02666 ; DDDDD = a repeat counter. 02667 02668 var p2count 02669 02670 call get_next_pattern_entry 02671 movwf in0 02672 02673 call get_next_pattern_entry MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02674 movwf in1 02675 02676 call get_next_pattern_entry 02677 movwf in2 02678 02679 call get_next_pattern_entry 02680 movwf in3 02681 02682 call get_next_pattern_entry 02683 movwf in4 02684 02685 movlw b'00011111' 02686 andwf in2,w 02687 movwf p2count 02688 incf p2count,f 02689 rlf p2count,f 02690 rlf p2count,f 02691 02692 p2loop 02693 movfw pspeed 02694 call display_1bit 02695 02696 decfsz p2count,f 02697 goto p2loop 02698 02699 return 02700 #endif 02701 02702 #ifdef PATTERN10 02703 ;********************************************************************** 02704 table_type_10 02705 ;********************************************************************** 02706 ; 76543210 <-- bits 02707 ; AABBCCDD <-- LEDs 02708 ; 01010101 <-- stays on for 1 unit - b'01' 02709 ; 10101010 <-- stays on for 2 units - b'10' 02710 ; 11111111 <-- stays on for 3 units - b'11' 02711 02712 ; in0 LEDs 0,1 02713 ; in1 LEDs 2,3 02714 ; in2 LEDs 4,5 02715 ; in3 LED 6 02716 02717 call get_next_pattern_entry 02718 movwf in0 02719 02720 call get_next_pattern_entry 02721 movwf in1 02722 02723 call get_next_pattern_entry ;4rgb 02724 movwf in2 ;4rgb 02725 02726 call get_next_pattern_entry ;4rgb MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02727 movwf in3 ;4rgb 02728 02729 02730 02731 movf pspeed,w 02732 movwf speed 02733 call display_2bit 02734 02735 return 02736 #endif 02737 02738 #ifdef PATTERN11 02739 ;********************************************************************** 036F 02740 table_type_11 02741 ;********************************************************************** 02742 ; 76543210 <-- bits 02743 ; AABBCCDD <-- LEDs 02744 ; 01010101 <-- stays on for 1 unit - b'01' 02745 ; 10101010 <-- stays on for 2 units - b'10' 02746 ; 11111111 <-- stays on for 3 units - b'11' 02747 02748 ; in0 LEDs 0,1,3,4 02749 ; in1 LEDs 5,6,C 02750 036F 22D9 02751 call get_next_pattern_entry 0370 00D9 02752 movwf in0 02753 0371 22D9 02754 call get_next_pattern_entry 0372 00DA 02755 movwf in1 02756 0373 085D 02757 movf pspeed,w 0374 00DC 02758 movwf speed 0375 238D 02759 call display_2bit 02760 0376 0008 02761 return 02762 #endif 02763 02764 #ifdef DISPLAY_1BIT_A 02765 ;********************************************************************** 0377 02766 display_1bit ; Mono 6 LEDs, Badge LED add center (IR) for 7 02767 ;********************************************************************** 02768 0377 00DC 02769 movwf speed ;w has the speed/delay 02770 0378 01A7 02771 clrf Ar_reg 0379 1BD9 02772 btfsc in0,7 037A 09A7 02773 comf Ar_reg,f 02774 037B 01A8 02775 clrf Ag_reg 037C 1AD9 02776 btfsc in0,5 037D 09A8 02777 comf Ag_reg,f 02778 037E 01A9 02779 clrf Ab_reg MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 037F 19D9 02780 btfsc in0,3 0380 09A9 02781 comf Ab_reg,f 02782 0381 01AD 02783 clrf Cr_reg 0382 1B59 02784 btfsc in0,6 0383 09AD 02785 comf Cr_reg,f 02786 0384 01AE 02787 clrf Cg_reg 0385 1A59 02788 btfsc in0,4 0386 09AE 02789 comf Cg_reg,f 02790 0387 01AF 02791 clrf Cb_reg 0388 1959 02792 btfsc in0,2 0389 09AF 02793 comf Cb_reg,f 02794 02795 #ifdef BADGE 02796 clrf Center_reg 02797 btfsc in0,1 02798 comf Center_reg,f 02799 #endif 02800 038A 085C 02801 movf speed,w 038B 22A1 02802 call strobe_delay 02803 038C 0008 02804 return 02805 #endif 02806 #ifdef DISPLAY_1BIT_B 02807 ;********************************************************************** 02808 display_1bit ; 19 Circle LEDs (38 LEDs) 02809 ;********************************************************************** 02810 02811 movwf speed ;w has the speed/delay 02812 02813 clrf A0_A1_reg ; 12R 02814 btfsc in2,1 02815 comf A0_A1_reg,f 02816 02817 clrf A0_A2_reg ; 11R 02818 btfsc in2,3 02819 comf A0_A2_reg,f 02820 02821 clrf A0_C0_reg ; 10R 02822 btfsc in2,5 02823 comf A0_C0_reg,f 02824 02825 clrf A0_C1_reg ; 9R 02826 btfsc in2,7 02827 comf A0_C1_reg,f 02828 02829 clrf A0_C2_reg ; 18R 02830 btfsc in2,4 02831 comf A0_C2_reg,f 02832 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02833 clrf A0_C4_reg ; 17R 02834 btfsc in0,3 02835 comf A0_C4_reg,f 02836 02837 clrf A1_A0_reg ; 12G 02838 btfsc in2,0 02839 comf A1_A0_reg,f 02840 02841 clrf A1_A2_reg ; 1R 02842 btfsc in0,7 02843 comf A1_A2_reg,f 02844 02845 clrf A1_C0_reg ; 2R 02846 btfsc in0,5 02847 comf A1_C0_reg,f 02848 02849 clrf A1_C1_reg ; 14R 02850 btfsc in3,5 02851 comf A1_C1_reg,f 02852 02853 clrf A1_C2_reg ; 13R 02854 btfsc in3,7 02855 comf A1_C2_reg,f 02856 02857 clrf A1_C4_reg ; 19R 02858 btfsc in4,3 02859 comf A1_C4_reg,f 02860 02861 clrf A2_A0_reg ; 11G 02862 btfsc in2,2 02863 comf A2_A0_reg,f 02864 02865 clrf A2_A1_reg ; 1G 02866 btfsc in0,6 02867 comf A2_A1_reg,f 02868 02869 clrf A2_C0_reg ; 3R 02870 btfsc in0,3 02871 comf A2_C0_reg,f 02872 02873 clrf A2_C1_reg ; 4R 02874 btfsc in0,1 02875 comf A2_C1_reg,f 02876 02877 clrf A2_C2_reg ; 15R 02878 btfsc in3,3 02879 comf A2_C2_reg,f 02880 02881 clrf A2_C4_reg ; 16R 02882 btfsc in3,1 02883 comf A2_C4_reg,f 02884 02885 clrf C0_A0_reg ; 10G MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02886 btfsc in2,4 02887 comf C0_A0_reg,f 02888 02889 clrf C0_A1_reg ; 2G 02890 btfsc in0,4 02891 comf C0_A1_reg,f 02892 02893 clrf C0_A2_reg ; 3G 02894 btfsc in0,2 02895 comf C0_A2_reg,f 02896 02897 clrf C0_C1_reg ; 5G 02898 btfsc in1,7 02899 comf C0_C1_reg,f 02900 02901 clrf C0_C2_reg ; 6R 02902 btfsc in1,5 02903 comf C0_C2_reg,f 02904 02905 clrf C0_C4_reg ; 7R 02906 btfsc in1,3 02907 comf C0_C4_reg,f 02908 02909 ; clrf C1_A0_reg ; 9G 02910 ; btfsc in2,6 02911 ; comf C1_A0_reg,f 02912 02913 ; clrf C1_A1_reg ; 14G 02914 ; btfsc in3,4 02915 ; comf C1_A1_reg,f 02916 02917 ; clrf C1_A2_reg ; 4G 02918 ; btfsc in0,0 02919 ; comf C1_A2_reg,f 02920 02921 ; clrf C1_C0_reg ; 5G 02922 ; btfsc in1,6 02923 ; comf C1_C0_reg,f 02924 02925 ; clrf C1_C2_reg ; no LED 02926 02927 ; clrf C1_C4_reg ; 8R 02928 ; btfsc in1,1 02929 ; comf C1_C4_reg,f 02930 02931 ; clrf C2_A0_reg ; 18G 02932 ; btfsc in4,4 02933 ; comf C2_A0_reg,f 02934 02935 ; clrf C2_A1_reg ; 13G 02936 ; btfsc in3,6 02937 ; comf C2_A1_reg,f 02938 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02939 ; clrf C2_A2_reg ; 15G 02940 ; btfsc in3,2 02941 ; comf C2_A2_reg,f 02942 02943 ; clrf C2_C0_reg ; 6G 02944 ; btfsc in1,4 02945 ; comf C2_C0_reg,f 02946 02947 ; clrf C2_C1_reg ; no LED 02948 02949 ; clrf C2_C4_reg ; no LED 02950 02951 ; clrf C4_A0_reg ; 17G 02952 ; btfsc in4,6 02953 ; comf C4_A0_reg,f 02954 02955 ; clrf C4_A1_reg ; 19G 02956 ; btfsc in4,2 02957 ; comf C4_A1_reg,f 02958 02959 ; clrf C4_A2_reg ; 16G 02960 ; btfsc in3,0 02961 ; comf C4_A2_reg,f 02962 02963 ; clrf C4_C0_reg ; 7G 02964 ; btfsc in1,2 02965 ; comf C4_C0_reg,f 02966 02967 ; clrf C4_C1_reg ; 8G 02968 ; btfsc in1,0 02969 ; comf C4_C1_reg,f 02970 02971 ; clrf C4_C2_reg ; no LED 02972 02973 ; movf speed,w 02974 ; call strobe_delay 02975 02976 return 02977 #endif 02978 #ifdef DISPLAY_1BIT_C 02979 ;********************************************************************** 02980 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 02981 ;********************************************************************** 02982 02983 movwf speed ;w has the speed/delay 02984 02985 clrf Ar_reg 02986 btfsc in0,7 02987 comf Ar_reg,f 02988 02989 clrf Ag_reg 02990 btfsc in0,3 02991 comf Ag_reg,f MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02992 02993 clrf Ab_reg 02994 btfsc in1,7 02995 comf Ab_reg,f 02996 02997 clrf Br_reg 02998 btfsc in0,6 02999 comf Br_reg,f 03000 03001 clrf Bg_reg 03002 btfsc in0,2 03003 comf Bg_reg,f 03004 03005 clrf Bb_reg 03006 btfsc in1,6 03007 comf Bb_reg,f 03008 03009 clrf Cr_reg 03010 btfsc in0,5 03011 comf Cr_reg,f 03012 03013 clrf Cg_reg 03014 btfsc in0,1 03015 comf Cg_reg,f 03016 03017 clrf Cb_reg 03018 btfsc in1,5 03019 comf Cb_reg,f 03020 03021 clrf Dr_reg 03022 btfsc in0,4 03023 comf Dr_reg,f 03024 03025 clrf Dg_reg 03026 btfsc in0,0 03027 comf Dg_reg,f 03028 03029 clrf Db_reg 03030 btfsc in1,4 03031 comf Db_reg,f 03032 03033 #ifdef BADGE 03034 clrf Center_reg 03035 btfsc in1,3 03036 comf Center_reg,f 03037 #endif 03038 03039 movf speed,w 03040 call strobe_delay 03041 03042 return 03043 #endif 03044 #ifdef DISPLAY_1BIT_D MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03045 ;********************************************************************** 03046 display_1bit ; 20 LEDs 03047 ;********************************************************************** 03048 03049 movwf speed ;w has the speed/delay 03050 03051 clrf A0_A5_reg ; IR 03052 03053 clrf A5_A0_reg ; 01 03054 btfsc in0,7 03055 comf A5_A0_reg,f 03056 03057 clrf A2_A5_reg ; 02 03058 btfsc in0,6 03059 comf A2_A5_reg,f 03060 03061 clrf A5_A2_reg ; 03 03062 btfsc in0,5 03063 comf A5_A2_reg,f 03064 03065 clrf A4_A5_reg ; 04 03066 btfsc in0,4 03067 comf A4_A5_reg,f 03068 03069 clrf A5_A4_reg ; 05 03070 btfsc in0,3 03071 comf A5_A4_reg,f 03072 03073 clrf A1_A5_reg ; 06 03074 btfsc in0,2 03075 comf A1_A5_reg,f 03076 03077 clrf A5_A1_reg ; 07 03078 btfsc in0,1 03079 comf A5_A1_reg,f 03080 03081 clrf A2_A0_reg ; 08 03082 btfsc in0,0 03083 comf A2_A0_reg,f 03084 03085 clrf A0_A2_reg ; 09 03086 btfsc in1,7 03087 comf A0_A2_reg,f 03088 03089 clrf A4_A0_reg ; 10 03090 btfsc in1,6 03091 comf A4_A0_reg,f 03092 03093 clrf A0_A4_reg ; 11 03094 btfsc in1,5 03095 comf A0_A4_reg,f 03096 03097 clrf A1_A0_reg ; 12 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03098 btfsc in1,4 03099 comf A1_A0_reg,f 03100 03101 clrf A0_A1_reg ; 13 03102 btfsc in1,3 03103 comf A0_A1_reg,f 03104 03105 clrf A4_A2_reg ; 14 03106 btfsc in1,2 03107 comf A4_A2_reg,f 03108 03109 clrf A2_A4_reg ; 15 03110 btfsc in1,1 03111 comf A2_A4_reg,f 03112 03113 clrf A1_A2_reg ; 16 03114 btfsc in1,0 03115 comf A1_A2_reg,f 03116 03117 clrf A2_A1_reg ; 17 03118 btfsc in2,7 03119 comf A2_A1_reg,f 03120 03121 clrf A1_A4_reg ; 18 03122 btfsc in2,6 03123 comf A1_A4_reg,f 03124 03125 clrf A4_A1_reg ; 19 03126 btfsc in2,5 03127 comf A4_A1_reg,f 03128 03129 03130 movf speed,w 03131 call strobe_delay 03132 03133 return 03134 #endif 03135 #ifdef DISPLAY_2BIT_A 03136 ;********************************************************************** 038D 03137 display_2bit 03138 ;********************************************************************** 038D 085C 03139 movf speed,w ;enter here if repeat count is in speed 038E 03140 display_w_2bit ;enter here if repeat count is in W reg 03141 03142 ; 76543210 <-- bits 03143 ; AABBCCDD <-- LEDs 03144 ; 01010101 <-- stays on for 1 unit - b'01' 03145 ; 10101010 <-- stays on for 2 units - b'10' 03146 ; 11111111 <-- stays on for 3 units - b'11' 03147 03148 ; in0 LEDs 1,2,3,4 03149 ; in1 LEDs 5,6,C 03150 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03151 038E 01A7 03152 clrf Ar_reg 038F 3040 03153 movlw BRIGHT1 0390 1B59 03154 btfsc in0,6 0391 07A7 03155 addwf Ar_reg,f 0392 30A0 03156 movlw BRIGHT2 0393 1BD9 03157 btfsc in0,7 0394 07A7 03158 addwf Ar_reg,f 03159 0395 01A8 03160 clrf Ag_reg 0396 3040 03161 movlw BRIGHT1 0397 1959 03162 btfsc in0,2 0398 07A8 03163 addwf Ag_reg,f 0399 30A0 03164 movlw BRIGHT2 039A 19D9 03165 btfsc in0,3 039B 07A8 03166 addwf Ag_reg,f 03167 039C 01A9 03168 clrf Ab_reg 039D 3040 03169 movlw BRIGHT1 039E 1B5A 03170 btfsc in1,6 039F 07A9 03171 addwf Ab_reg,f 03A0 30A0 03172 movlw BRIGHT2 03A1 1BDA 03173 btfsc in1,7 03A2 07A9 03174 addwf Ab_reg,f 03175 03A3 01AD 03176 clrf Cr_reg 03A4 3040 03177 movlw BRIGHT1 03A5 1A59 03178 btfsc in0,4 03A6 07AD 03179 addwf Cr_reg,f 03A7 30A0 03180 movlw BRIGHT2 03A8 1AD9 03181 btfsc in0,5 03A9 07AD 03182 addwf Cr_reg,f 03183 03AA 01AE 03184 clrf Cg_reg 03AB 3040 03185 movlw BRIGHT1 03AC 1859 03186 btfsc in0,0 03AD 07AE 03187 addwf Cg_reg,f 03AE 30A0 03188 movlw BRIGHT2 03AF 18D9 03189 btfsc in0,1 03B0 07AE 03190 addwf Cg_reg,f 03191 03B1 01AF 03192 clrf Cb_reg 03B2 3040 03193 movlw BRIGHT1 03B3 1A5A 03194 btfsc in1,4 03B4 07AF 03195 addwf Cb_reg,f 03B5 30A0 03196 movlw BRIGHT2 03B6 1ADA 03197 btfsc in1,5 03B7 07AF 03198 addwf Cb_reg,f 03199 03200 #ifdef BADGE 03201 clrf Center_reg 03202 movlw BRIGHT1 03203 btfsc in1,2 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03204 addwf Center_reg,f 03205 movlw BRIGHT2 03206 btfsc in1,3 03207 addwf Center_reg,f 03208 #endif 03209 03B8 085C 03210 movf speed,w 03B9 22A1 03211 call strobe_delay 03BA 085C 03212 movf speed,w 03BB 22A1 03213 call strobe_delay 03BC 085C 03214 movf speed,w 03BD 22A1 03215 call strobe_delay 03216 03BE 0008 03217 return 03218 #endif 03219 03220 #ifdef DISPLAY_2BIT_C 03221 ;********************************************************************** 03222 display_2bit 03223 ;********************************************************************** 03224 movf speed,w ;enter here if repeat count is in speed 03225 display_w_2bit ;enter here if repeat count is in W reg 03226 03227 ; 76543210 <-- bits 03228 ; AABBCCDD <-- LEDs 03229 ; 01010101 <-- stays on for 1 unit - b'01' 03230 ; 10101010 <-- stays on for 2 units - b'10' 03231 ; 11111111 <-- stays on for 3 units - b'11' 03232 03233 ; in0 red 03234 ; in1 green 03235 ; in2 blue 03236 03237 clrf Ar_reg 03238 movlw BRIGHT1 03239 btfsc in0,6 03240 addwf Ar_reg,f 03241 movlw BRIGHT2 03242 btfsc in0,7 03243 addwf Ar_reg,f 03244 03245 clrf Ag_reg 03246 movlw BRIGHT1 03247 btfsc in1,6 03248 addwf Ag_reg,f 03249 movlw BRIGHT2 03250 btfsc in1,7 03251 addwf Ag_reg,f 03252 03253 clrf Ab_reg 03254 movlw BRIGHT1 03255 btfsc in2,6 03256 addwf Ab_reg,f MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03257 movlw BRIGHT2 03258 btfsc in2,7 03259 addwf Ab_reg,f 03260 03261 clrf Br_reg 03262 movlw BRIGHT1 03263 btfsc in0,4 03264 addwf Br_reg,f 03265 movlw BRIGHT2 03266 btfsc in0,5 03267 addwf Br_reg,f 03268 03269 clrf Bg_reg 03270 movlw BRIGHT1 03271 btfsc in1,4 03272 addwf Bg_reg,f 03273 movlw BRIGHT2 03274 btfsc in1,5 03275 addwf Bg_reg,f 03276 03277 clrf Bb_reg 03278 movlw BRIGHT1 03279 btfsc in2,4 03280 addwf Bb_reg,f 03281 movlw BRIGHT2 03282 btfsc in2,5 03283 addwf Bb_reg,f 03284 03285 clrf Cr_reg 03286 movlw BRIGHT1 03287 btfsc in0,2 03288 addwf Cr_reg,f 03289 movlw BRIGHT2 03290 btfsc in0,3 03291 addwf Cr_reg,f 03292 03293 clrf Cg_reg 03294 movlw BRIGHT1 03295 btfsc in1,2 03296 addwf Cg_reg,f 03297 movlw BRIGHT2 03298 btfsc in1,3 03299 addwf Cg_reg,f 03300 03301 clrf Cb_reg 03302 movlw BRIGHT1 03303 btfsc in2,2 03304 addwf Cb_reg,f 03305 movlw BRIGHT2 03306 btfsc in2,3 03307 addwf Cb_reg,f 03308 03309 clrf Dr_reg MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03310 movlw BRIGHT1 03311 btfsc in0,0 03312 addwf Dr_reg,f 03313 movlw BRIGHT2 03314 btfsc in0,1 03315 addwf Dr_reg,f 03316 03317 clrf Dg_reg 03318 movlw BRIGHT1 03319 btfsc in1,0 03320 addwf Dg_reg,f 03321 movlw BRIGHT2 03322 btfsc in1,1 03323 addwf Dg_reg,f 03324 03325 clrf Db_reg 03326 movlw BRIGHT1 03327 btfsc in2,0 03328 addwf Db_reg,f 03329 movlw BRIGHT2 03330 btfsc in2,1 03331 addwf Db_reg,f 03332 03333 #ifdef BADGE 03334 clrf Center_reg 03335 movlw BRIGHT1 03336 btfsc in3,6 03337 addwf Center_reg,f 03338 movlw BRIGHT2 03339 btfsc in3,7 03340 addwf Center_reg,f 03341 #endif 03342 03343 movf speed,w 03344 call strobe_delay 03345 movf speed,w 03346 call strobe_delay 03347 movf speed,w 03348 call strobe_delay 03349 03350 return 03351 #endif 03352 03353 ;********************************************************************** 03354 ; IR Tester 03355 ;********************************************************************** 03BF 03356 IR_Tester 03BF 03357 itop 03BF 3002 03358 movlw 0x02 03C0 0233 03359 subwf instate,w 03C1 1C03 03360 btfss STATUS,C 03C2 0103 03361 clrw 03C3 00D9 03362 movwf in0 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03363 03C4 3000 03364 movlw 0x00 03C5 00DA 03365 movwf in1 03366 03C6 3001 03367 movlw 0x01 03C7 2377 03368 call display_1bit 03369 03370 ; 03371 ; Check for push button 03372 ; 03C8 1C3A 03373 btfss button,0 03C9 2BD9 03374 goto iloop1 03CA 01B4 03375 clrf max_instate 03CB 01B3 03376 clrf instate 03377 03CC 084A 03378 movf scount,w ; F22 03CD 3E00 03379 addlw 0 ; F23 03CE 1D03 03380 btfss STATUS,Z ; F24 03CF 2BD9 03381 goto iloop1 03382 03D0 01D9 03383 clrf in0 03D1 01DA 03384 clrf in1 03D2 09DA 03385 comf in1,f 03386 03D3 30FF 03387 movlw 0xFF 03D4 2377 03388 call display_1bit 03389 03390 ; send an IR signel 03D5 01C2 03391 clrf out_address ; address 0x00 "TV remote" 03D6 300C 03392 movlw 0x0c 03D7 00C3 03393 movwf out_command ; code 0x0c (on/off) 03D8 223C 03394 call rf_command_out 03395 03396 ; 03397 ; Check for IR Command 03398 ; 03D9 03399 iloop1 03D9 1C3D 03400 btfss IR_in_good,0 03DA 2BBF 03401 goto itop 03DB 01BD 03402 clrf IR_in_good 03403 03404 ; flash all LEDs Red 03DC 30F0 03405 movlw 0xF0 03DD 00D9 03406 movwf in0 03DE 01DA 03407 clrf in1 03408 03DF 307F 03409 movlw 0x7f 03E0 2377 03410 call display_1bit 03411 03412 ; flash all LEDs off 03E1 01D9 03413 clrf in0 03E2 01DA 03414 clrf in1 03415 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03E3 303F 03416 movlw 0x3f 03E4 2377 03417 call display_1bit 03418 03419 ; flash all LEDs Red 03E5 30F0 03420 movlw 0xF0 03E6 00D9 03421 movwf in0 03E7 01DA 03422 clrf in1 03423 03E8 307F 03424 movlw 0x7f 03E9 2377 03425 call display_1bit 03426 03427 ; display command and address 03EA 0836 03428 movf command,w 03EB 00D9 03429 movwf in0 03EC 0837 03430 movf address,w 03ED 00DA 03431 movwf in1 03432 03EE 30FF 03433 movlw 0xff 03EF 2377 03434 call display_1bit 03F0 30FF 03435 movlw 0xff 03F1 2377 03436 call display_1bit 03F2 01B4 03437 clrf max_instate 03F3 01B3 03438 clrf instate 03439 03F4 2BBF 03440 goto itop 03441 03442 03443 ; 03444 ; M A I N 03445 ; 03446 ;********************************************************************** 03F5 03447 main 03448 ;********************************************************************** 03F5 01BA 03449 clrf button 03F6 0185 03450 clrf PORTA 03F7 0181 03451 clrf TMR0 03F8 01D7 03452 clrf pattern 03F9 01CA 03453 clrf scount 03FA 01B8 03454 clrf toggle 03FB 01B7 03455 clrf address 03FC 01B6 03456 clrf command 03FD 01B9 03457 clrf IR_lhalf 03FE 01B3 03458 clrf instate 03FF 01B4 03459 clrf max_instate 0400 01BD 03460 clrf IR_in_good 0401 01A2 03461 clrf dcycle 03462 #ifdef PATTERN2 03463 clrf delay1 03464 clrf fad 03465 clrf color 03466 #endif 03467 #ifdef MONO 0402 01AA 03468 clrf Br_reg MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0403 01AB 03469 clrf Bg_reg 0404 01AC 03470 clrf Bb_reg 0405 01B0 03471 clrf Dr_reg 0406 01B1 03472 clrf Dg_reg 0407 01B2 03473 clrf Db_reg 03474 #endif 03475 0408 3007 03476 movlw 0x07 0409 0099 03477 movwf CMCON0 ;turn off comparator 03478 040A 1683 03479 setbank1 03480 03481 ; set up TMR0 & pullups 03482 ; +---------- disable pullups (1) 03483 ; |+--------- interrupt edge select (don't care) 03484 ; ||+-------- TMR0 source = internal clock (0) 03485 ; |||+------- TMR0 source edge select (don't care) 03486 ; ||||+------ assign prescaler to TMR0 (0) 03487 ; |||||+++--- prescaler set to 8X (010) 03488 ; |||||||| 040B 3082 03489 movlw b'10000010' 040C 0081 03490 movwf OPTION_REG 03491 03492 040D 3070 03493 movlw b'01110000' ;switch to 8 MHz clock 040E 048F 03494 iorwf OSCCON,f 03495 040F 019F 03496 clrf ANSEL ;set pins to digital 03497 03498 #ifdef __16F688 03499 ; setup timer0 03500 bcf OPTION_REG,T0CS 03501 #endif 03502 0410 1283 03503 setbank0 03504 03505 ; enable timer0 interupt 0411 168B 03506 bsf INTCON,T0IE 0412 178B 03507 bsf INTCON,GIE 03508 0413 03509 loop_ddf 03510 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 0413 30FF 03511 movlw b'11111111' 03512 0414 00D9 03513 movwf in0 0415 00DA 03514 movwf in1 0416 00DB 03515 movwf in2 03516 #ifdef C19 03517 movwf in3 03518 movwf in4 03519 #endif 03520 0417 30FF 03521 movlw 0xff MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0418 2377 03522 call display_1bit 03523 03524 03525 ; Trun all the LEDs off 0419 01D9 03526 clrf in0 041A 01DA 03527 clrf in1 041B 01DB 03528 clrf in2 03529 #ifdef C19 03530 clrf in3 03531 clrf in4 03532 #endif 03533 041C 30FF 03534 movlw 0xff 041D 2377 03535 call display_1bit 03536 03537 ; if button pressed durring powerup run IR_Tester 03538 ; else run pattern driver 03539 ; 041E 1C3A 03540 btfss button,0 041F 2B17 03541 goto pattern_driver 0420 2306 03542 call toggle_demo 03543 #ifdef ENABLE_IR 0421 2BBF 03544 goto IR_Tester 03545 #else 03546 goto pattern_driver 03547 #endif 03548 03549 ;********************************************************************** 0422 03550 table_lookup 03551 ;********************************************************************** 0422 0850 03552 movf tbl_hi,w 0423 008A 03553 movwf PCLATH 0424 0875 03554 movf pindex,w 0425 0751 03555 addwf tbl_low,w 0426 1803 03556 btfsc STATUS,0 ; check carry flag 0427 0A8A 03557 incf PCLATH,f 0428 0082 03558 movwf PCL 03559 03560 ;********************************************************************** 0429 03561 MasterTable 03562 ;********************************************************************** 03563 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 0429 3404 344D M dt HIGH table0, LOW table0 00000001 M i += 1 042B 3404 344D M dt HIGH table1, LOW table1 00000002 M i += 1 042D 3404 3454 M dt HIGH table2, LOW table2 00000003 M i += 1 042F 3404 3473 M dt HIGH table3, LOW table3 00000004 M i += 1 0431 3404 3478 M dt HIGH table4, LOW table4 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000005 M i += 1 0433 3404 347E M dt HIGH table5, LOW table5 00000006 M i += 1 0435 3404 34A5 M dt HIGH table6, LOW table6 00000007 M i += 1 0437 3404 34AE M dt HIGH table7, LOW table7 00000008 M i += 1 0439 3404 34B3 M dt HIGH table8, LOW table8 00000009 M i += 1 043B 3404 34C2 M dt HIGH table9, LOW table9 0000000A M i += 1 043D 3404 34D2 M dt HIGH table10, LOW table10 0000000B M i += 1 043F 3404 34DB M dt HIGH table11, LOW table11 0000000C M i += 1 0441 3404 34E1 M dt HIGH table12, LOW table12 0000000D M i += 1 0443 3404 34EA M dt HIGH table13, LOW table13 0000000E M i += 1 0445 3404 34F3 M dt HIGH table14, LOW table14 0000000F M i += 1 0447 3405 3402 M dt HIGH table15, LOW table15 00000010 M i += 1 0449 3405 3408 M dt HIGH table16, LOW table16 00000011 M i += 1 044B 3405 340E M dt HIGH table17, LOW table17 00000012 M i += 1 M endw 03564 03565 03566 03567 ;********************************************************************** 044D 03568 table0 ; dummy entry, actual data for pattern 0 is in the EEPROM 03569 ;********************************************************************** 03570 03571 #ifdef RGB4 03572 #include <4rgb_patterns.asm> 03573 #endif 03574 #ifdef BI6 03575 #ifdef MONO 03576 #ifdef BADGE 03577 #include <6led+c_patterns.asm> 03578 #else 03579 #include <6led_patterns.asm> 00001 00002 ;********************************************************************** 00003 ;table1 ; DF1 - swing 00004 ;********************************************************************** 00005 00006 start_pattern 5, 0x80 044D M table1 M if (5 == 1) || (5 == 6) M dt 5,0x80,(endpat1-$)/3 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x80,(endpat1-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x80,(endpat1-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x80,(endpat1-$)/4 ;tbltype1,speed,length M else 044D 3405 3480 3404 M dt 5,0x80,(endpat1-$-1) M endif M endif M endif M endif 00007 0450 34B8 00008 dt 0xB8 ; 1 0451 345C 00009 dt 0x5C ; 2 0452 34B8 00010 dt 0xB8 ; 3 0453 3474 00011 dt 0x74 ; 4 00012 end_pattern 0454 M endpat1 00000002 M patternc = patternc + 1 00013 00014 ;********************************************************************** 00015 ; a hacked 4RGB pattern that looks cool on other blinkies. 00016 ;********************************************************************** 00017 start_pattern 0x0b, 0x30 0454 M table2 M if (0x0b == 1) || (0x0b == 6) M dt 0x0b,0x30,(endpat2-$)/3 ;tbltype1,speed,length M else M if (0x0b == 3) || (0x0b == 0x0b) 0454 340B 3430 340E M dt 0x0b,0x30,(endpat2-$)/2 ;tbltype1,speed,length M else M if (0x0b == 9) M dt 0x0b,0x30,(endpat2-$)/5 ;tbltype1,speed,length M else M if (0x0b == 0x0a) M dt 0x0b,0x30,(endpat2-$)/4 ;tbltype1,speed,length M else M dt 0x0b,0x30,(endpat2-$-1) M endif M endif M endif M endif 00018 ; R c B 0457 34FC 3400 00019 dt b'11111100',b'00000000' 0459 34FC 3400 00020 dt b'11111100',b'00000000' 045B 34FC 3400 00021 dt b'11111100',b'00000000' 045D 34BD 3400 00022 dt b'10111101',b'00000000' 045F 346E 3440 00023 dt b'01101110',b'01000000' 0461 341B 3490 00024 dt b'00011011',b'10010000' MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0463 3407 34E0 00025 dt b'00000111',b'11100000' 0465 3403 34F0 00026 dt b'00000011',b'11110000' 0467 3403 34F0 00027 dt b'00000011',b'11110000' 0469 3403 34F0 00028 dt b'00000011',b'11110000' 046B 3443 34E0 00029 dt b'01000011',b'11100000' 046D 3492 3490 00030 dt b'10010010',b'10010000' 046F 34E5 3440 00031 dt b'11100101',b'01000000' 0471 34F8 3400 00032 dt b'11111000',b'00000000' 00033 end_pattern 0473 M endpat2 00000003 M patternc = patternc + 1 00034 00035 ;********************************************************************** 00036 ;table2 ; DF2 - xmas 00037 ;********************************************************************** 00038 start_pattern 5, 0x30 0473 M table3 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat3-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat3-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat3-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat3-$)/4 ;tbltype1,speed,length M else 0473 3405 3430 3402 M dt 5,0x30,(endpat3-$-1) M endif M endif M endif M endif 00039 0476 34A8 00040 dt 0xA8 ; 1 0477 3455 00041 dt 0x55 ; 2 00042 end_pattern 0478 M endpat3 00000004 M patternc = patternc + 1 00043 00044 ;********************************************************************** 00045 ;table3 ; DF3 - retro 00046 ;********************************************************************** 00047 start_pattern 5, 0x30 0478 M table4 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat4-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat4-$)/2 ;tbltype1,speed,length M else M if (5 == 9) MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE M dt 5,0x30,(endpat4-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat4-$)/4 ;tbltype1,speed,length M else 0478 3405 3430 3403 M dt 5,0x30,(endpat4-$-1) M endif M endif M endif M endif 00048 047B 3490 00049 dt 0x90 ; 1 047C 3424 00050 dt 0x24 ; 2 047D 3448 00051 dt 0x48 ; 3 00052 00053 end_pattern 047E M endpat4 00000005 M patternc = patternc + 1 00054 00055 ;********************************************************************** 00056 ; red chase fad up 00057 ;********************************************************************** 00058 start_pattern 0x0b, 0x30 047E M table5 M if (0x0b == 1) || (0x0b == 6) M dt 0x0b,0x30,(endpat5-$)/3 ;tbltype1,speed,length M else M if (0x0b == 3) || (0x0b == 0x0b) 047E 340B 3430 3412 M dt 0x0b,0x30,(endpat5-$)/2 ;tbltype1,speed,length M else M if (0x0b == 9) M dt 0x0b,0x30,(endpat5-$)/5 ;tbltype1,speed,length M else M if (0x0b == 0x0a) M dt 0x0b,0x30,(endpat5-$)/4 ;tbltype1,speed,length M else M dt 0x0b,0x30,(endpat5-$-1) M endif M endif M endif M endif 00059 ; R c B 0481 3440 3400 00060 dt b'01000000',b'00000000' ; low Red 0483 3450 3400 00061 dt b'01010000',b'00000000' ; 0485 3454 3400 00062 dt b'01010100',b'00000000' ; 0487 3455 3400 00063 dt b'01010101',b'00000000' ; 0489 3455 3440 00064 dt b'01010101',b'01000000' ; 048B 3455 3450 00065 dt b'01010101',b'01010000' ; 048D 3495 3450 00066 dt b'10010101',b'01010000' ; Med Red 048F 34A5 3450 00067 dt b'10100101',b'01010000' ; 0491 34A9 3450 00068 dt b'10101001',b'01010000' ; 0493 34AA 3450 00069 dt b'10101010',b'01010000' ; 0495 34AA 3490 00070 dt b'10101010',b'10010000' ; MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0497 34AA 34A0 00071 dt b'10101010',b'10100000' ; 0499 34EA 34A0 00072 dt b'11101010',b'10100000' ; Hi Red 049B 34FA 34A0 00073 dt b'11111010',b'10100000' ; 049D 34FE 34A0 00074 dt b'11111110',b'10100000' ; 049F 34FF 34A0 00075 dt b'11111111',b'10100000' ; 04A1 34FF 34E0 00076 dt b'11111111',b'11100000' ; 04A3 34FF 34F0 00077 dt b'11111111',b'11110000' ; 00078 00079 end_pattern 04A5 M endpat5 00000006 M patternc = patternc + 1 00080 00081 ;********************************************************************** 00082 ;table4 ; DF4 - down 00083 ;********************************************************************** 00084 start_pattern 5, 0x30 04A5 M table6 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat6-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat6-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat6-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat6-$)/4 ;tbltype1,speed,length M else 04A5 3405 3430 3406 M dt 5,0x30,(endpat6-$-1) M endif M endif M endif M endif 00085 04A8 3480 00086 dt b'10000000' ; 1 04A9 3444 00087 dt b'01000100' ; 2 04AA 3428 00088 dt b'00101000' ; 3 04AB 3410 00089 dt b'00010000' ; 4 04AC 3400 00090 dt b'00000000' ; 5 04AD 3400 00091 dt b'00000000' ; 6 00092 end_pattern 04AE M endpat6 00000007 M patternc = patternc + 1 00093 00094 ;********************************************************************** 00095 ;table5 ; DF5 - tri 00096 ;********************************************************************** 00097 start_pattern 5, 0x20 04AE M table7 M if (5 == 1) || (5 == 6) M dt 5,0x20,(endpat7-$)/3 ;tbltype1,speed,length M else MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (5 == 3) || (5 == 0x0b) M dt 5,0x20,(endpat7-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x20,(endpat7-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x20,(endpat7-$)/4 ;tbltype1,speed,length M else 04AE 3405 3420 3402 M dt 5,0x20,(endpat7-$-1) M endif M endif M endif M endif 00098 04B1 34A8 00099 dt 0xA8 ; 1 04B2 3455 00100 dt 0x55 ; 2 00101 end_pattern 04B3 M endpat7 00000008 M patternc = patternc + 1 00102 00103 ;********************************************************************** 00104 ;table6 ; DF6 - right/left 00105 ;********************************************************************** 00106 start_pattern 5, 0x30 04B3 M table8 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat8-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat8-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat8-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat8-$)/4 ;tbltype1,speed,length M else 04B3 3405 3430 340C M dt 5,0x30,(endpat8-$-1) M endif M endif M endif M endif 00107 04B6 3480 00108 dt 0x80 ; 1 04B7 3440 00109 dt 0x40 ; 2 04B8 3420 00110 dt 0x20 ; 3 04B9 3410 00111 dt 0x10 ; 4 04BA 3408 00112 dt 0x08 ; 5 04BB 3404 00113 dt 0x04 ; 6 04BC 3480 00114 dt 0x80 ; 7 04BD 3404 00115 dt 0x04 ; 8 04BE 3408 00116 dt 0x08 ; 9 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04BF 3410 00117 dt 0x10 ; 10 04C0 3420 00118 dt 0x20 ; 11 04C1 3441 00119 dt 0x41 ; 12 00120 end_pattern 04C2 M endpat8 00000009 M patternc = patternc + 1 00121 00122 00123 ;********************************************************************** 00124 ;table7 ; DF7 - ? 00125 ;********************************************************************** 00126 start_pattern 5, 0x30 04C2 M table9 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat9-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat9-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat9-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat9-$)/4 ;tbltype1,speed,length M else 04C2 3405 3430 340D M dt 5,0x30,(endpat9-$-1) M endif M endif M endif M endif 00127 04C5 3480 00128 dt 0x80 ; 1 04C6 34C0 00129 dt 0xC0 ; 2 04C7 34E0 00130 dt 0xE0 ; 3 04C8 34F0 00131 dt 0xF0 ; 4 04C9 34F8 00132 dt 0xF8 ; 5 04CA 34FC 00133 dt 0xFC ; 6 04CB 347C 00134 dt 0x7C ; 7 04CC 343C 00135 dt 0x3C ; 8 04CD 341C 00136 dt 0x1C ; 9 04CE 340C 00137 dt 0x0C ; 10 04CF 3404 00138 dt 0x04 ; 11 04D0 3400 00139 dt 0x00 ; 12 04D1 3401 00140 dt 0x01 ; 13 00141 end_pattern 04D2 M endpat9 0000000A M patternc = patternc + 1 00142 00143 ;********************************************************************** 00144 ;table8 ; DF8 - half 00145 ;********************************************************************** 00146 start_pattern 5, 0x30 04D2 M table10 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat10-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat10-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat10-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat10-$)/4 ;tbltype1,speed,length M else 04D2 3405 3430 3406 M dt 5,0x30,(endpat10-$-1) M endif M endif M endif M endif 00147 04D5 34C4 00148 dt 0xC4 ; 1 04D6 34E0 00149 dt 0xE0 ; 2 04D7 3470 00150 dt 0x70 ; 3 04D8 3438 00151 dt 0x38 ; 4 04D9 341C 00152 dt 0x1C ; 5 04DA 348D 00153 dt 0x8D ; 6 00154 end_pattern 04DB M endpat10 0000000B M patternc = patternc + 1 00155 00156 ;********************************************************************** 00157 ;table9 ; DF3 - retro 00158 ;********************************************************************** 00159 start_pattern 5, 0x30 04DB M table11 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat11-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat11-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat11-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat11-$)/4 ;tbltype1,speed,length M else 04DB 3405 3430 3403 M dt 5,0x30,(endpat11-$-1) M endif M endif M endif M endif 00160 04DE 3448 00161 dt 0x48 ; 1 04DF 3424 00162 dt 0x24 ; 2 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04E0 3491 00163 dt 0x91 ; 3 00164 end_pattern 04E1 M endpat11 0000000C M patternc = patternc + 1 00165 00166 00167 ;********************************************************************** 00168 ;table10 ; DF3 - fast spin 00169 ;********************************************************************** 00170 00171 start_pattern 5, 0x10 04E1 M table12 M if (5 == 1) || (5 == 6) M dt 5,0x10,(endpat12-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x10,(endpat12-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x10,(endpat12-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x10,(endpat12-$)/4 ;tbltype1,speed,length M else 04E1 3405 3410 3406 M dt 5,0x10,(endpat12-$-1) M endif M endif M endif M endif 04E4 3480 00172 dt 0x80 ; G1 04E5 3440 00173 dt 0x40 ; G2 04E6 3420 00174 dt 0x20 ; G3 04E7 3410 00175 dt 0x10 ; G4 04E8 3408 00176 dt 0x08 ; G5 04E9 3405 00177 dt 0x05 ; G6 00178 end_pattern 04EA M endpat12 0000000D M patternc = patternc + 1 00179 00180 ;********************************************************************** 00181 ;table11 ; DF3 - hole 00182 ;********************************************************************** 00183 00184 start_pattern 5, 0x10 04EA M table13 M if (5 == 1) || (5 == 6) M dt 5,0x10,(endpat13-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x10,(endpat13-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x10,(endpat13-$)/5 ;tbltype1,speed,length MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (5 == 0x0a) M dt 5,0x10,(endpat13-$)/4 ;tbltype1,speed,length M else 04EA 3405 3410 3406 M dt 5,0x10,(endpat13-$-1) M endif M endif M endif M endif 04ED 347C 00185 dt 0x7C ; G1 04EE 34BC 00186 dt 0xBC ; G2 04EF 34DC 00187 dt 0xDC ; G3 04F0 34ED 00188 dt 0xED ; G4 04F1 34F4 00189 dt 0xF4 ; G5 04F2 34F9 00190 dt 0xF9 ; G6 00191 end_pattern 04F3 M endpat13 0000000E M patternc = patternc + 1 00192 00193 ;********************************************************************** 00194 ;table12 ; DF3 - back and for 00195 ;********************************************************************** 00196 start_pattern 5, 0x20 04F3 M table14 M if (5 == 1) || (5 == 6) M dt 5,0x20,(endpat14-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x20,(endpat14-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x20,(endpat14-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x20,(endpat14-$)/4 ;tbltype1,speed,length M else 04F3 3405 3420 340C M dt 5,0x20,(endpat14-$-1) M endif M endif M endif M endif 04F6 3404 00197 dt 0x04 ; 1 04F7 3424 00198 dt 0x24 ; 2 04F8 3480 00199 dt 0x80 ; 3 04F9 3490 00200 dt 0x90 ; 4 04FA 3440 00201 dt 0x40 ; 5 04FB 3448 00202 dt 0x48 ; 6 04FC 3420 00203 dt 0x20 ; 7 04FD 3424 00204 dt 0x24 ; 8 04FE 3410 00205 dt 0x10 ; 9 04FF 3490 00206 dt 0x90 ; 10 0500 3408 00207 dt 0x08 ; 11 0501 3449 00208 dt 0x49 ; 12 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00209 end_pattern 0502 M endpat14 0000000F M patternc = patternc + 1 00210 00211 ;********************************************************************** 00212 ;table13 ; DF3 - left to right 00213 ;********************************************************************** 00214 start_pattern 5, 0x20 0502 M table15 M if (5 == 1) || (5 == 6) M dt 5,0x20,(endpat15-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x20,(endpat15-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x20,(endpat15-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x20,(endpat15-$)/4 ;tbltype1,speed,length M else 0502 3405 3420 3403 M dt 5,0x20,(endpat15-$-1) M endif M endif M endif M endif 0505 340C 00215 dt 0x0C ; 1 0506 3490 00216 dt 0x90 ; 2 0507 3461 00217 dt 0x61 ; 3 00218 end_pattern 0508 M endpat15 00000010 M patternc = patternc + 1 00219 00220 ;********************************************************************** 00221 ;table14 ; DF3 - left to right 00222 ;********************************************************************** 00223 start_pattern 5, 0x30 0508 M table16 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat16-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat16-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat16-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat16-$)/4 ;tbltype1,speed,length M else 0508 3405 3430 3403 M dt 5,0x30,(endpat16-$-1) M endif M endif MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif 050B 3460 00224 dt 0x60 ; 1 050C 3490 00225 dt 0x90 ; 2 050D 340D 00226 dt 0x0D ; 3 00227 end_pattern 050E M endpat16 00000011 M patternc = patternc + 1 00228 00229 ;********************************************************************** 00230 ;table15 ; DF3 - hole 00231 ;********************************************************************** 00232 00233 start_pattern 5, 0x30 050E M table17 M if (5 == 1) || (5 == 6) M dt 5,0x30,(endpat17-$)/3 ;tbltype1,speed,length M else M if (5 == 3) || (5 == 0x0b) M dt 5,0x30,(endpat17-$)/2 ;tbltype1,speed,length M else M if (5 == 9) M dt 5,0x30,(endpat17-$)/5 ;tbltype1,speed,length M else M if (5 == 0x0a) M dt 5,0x30,(endpat17-$)/4 ;tbltype1,speed,length M else 050E 3405 3430 3406 M dt 5,0x30,(endpat17-$-1) M endif M endif M endif M endif 0511 347C 00234 dt 0x7C ; G1 0512 34BC 00235 dt 0xBC ; G2 0513 34DC 00236 dt 0xDC ; G3 0514 34ED 00237 dt 0xED ; G4 0515 34F4 00238 dt 0xF4 ; G5 0516 34F9 00239 dt 0xF9 ; G6 00240 end_pattern 0517 M endpat17 00000012 M patternc = patternc + 1 00241 00242 2100 00243 ORG 0x2100 ; data EEPROM location 2100 0005 0060 0009 00244 de 0x05,0x60,(endpat0-$) ;tbltype1,speed,length 2103 00FC 00245 DE 0xFC ; All 2104 0000 00246 DE 0x00 ; Blank 00247 2105 0080 00248 DE 0x80 ; G1 2106 0040 00249 DE 0x40 ; G2 2107 0020 00250 DE 0x20 ; G3 2108 0010 00251 DE 0x10 ; G4 2109 0008 00252 DE 0x08 ; G5 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 210A 0005 00253 DE 0x05 ; G6 210B 00254 endpat0 03580 #endif 03581 #else 03582 #ifdef BADGE 03583 #include <6bi+c_patterns.asm> 03584 #else 03585 #include <6bi_patterns.asm> 03586 #endif 03587 #endif 03588 #endif 03589 #ifdef S19 03590 #include <19led_stick_patterns.asm> 03591 #endif 03592 #ifdef C19 03593 #include <19bi_circle_patterns.asm> 03594 #endif 03595 03596 END ; directive 'end of program' MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 98 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 BI6 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 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 99 SYMBOL TABLE LABEL VALUE DC1B0 00000004 DC1B1 00000005 DISPLAY_1BIT_A DISPLAY_2BIT_A 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 FLIPBYTE FSR 00000004 GIE 00000007 GO 00000001 GO_DONE 00000001 GPIE 00000003 GPIF 00000000 GPIO 00000005 HTS 00000002 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IOC 00000096 IOC0 00000000 IOC1 00000001 IOC2 00000002 IOC3 00000003 IOC4 00000004 IOC5 00000005 IOCA 00000096 IOCA0 00000000 IOCA1 00000001 IOCA2 00000002 IOCA3 00000003 IOCA4 00000004 IOCA5 00000005 IRBIT 4 IRCF0 00000004 IRCF1 00000005 IRCF2 00000006 IRP 00000007 IR_Tester 000003BF IR_in 00000035 IR_in_good 0000003D IR_lhalf 00000039 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 100 SYMBOL TABLE LABEL VALUE LTS 00000001 Lcontinue 0000021E 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 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 101 SYMBOL TABLE LABEL VALUE Lstate8a 00000166 Lstate9 0000016C MONO MasterTable 00000429 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 00000011 OPTION_REG 00000081 OSCCON 0000008F OSCTUNE 00000090 OSFIE 00000002 OSFIF 00000002 OSTS 00000003 PATTERN11 PATTERN5 PCL 00000002 PCLATH 0000000A PCON 0000008E PEIE 00000006 PIE1 0000008C PIR1 0000000C PORTA 00000005 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RD 00000000 RP0 00000005 RP1 00000006 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 6-1-2007 20:34:37 PAGE 102 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 6-1-2007 20:34:37 PAGE 103 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 00000323 butcount 0000003E button 0000003A button_check 0000033F command 00000036 count1 00000023 count2 00000024 dcycle 00000022 delay 00000280 delay_count 0000004E delay_loop 00000281 delay_loop2 00000239 demo_mode 0000005E display_1bit 00000377 display_2bit 0000038D display_cycle0 00000049 display_cycle1 00000055 display_cycle2 00000061 display_cycle3 0000006D display_pattern_id 000002A8 display_w_2bit 0000038E drive_main_leds 0000002F dupvar end_pattern endpat0 0000210B MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 104 SYMBOL TABLE LABEL VALUE endpat1 00000454 endpat10 000004DB endpat11 000004E1 endpat12 000004EA endpat13 000004F3 endpat14 00000502 endpat15 00000508 endpat16 0000050E endpat17 00000517 endpat2 00000473 endpat3 00000478 endpat4 0000047E endpat5 000004A5 endpat6 000004AE endpat7 000004B3 endpat8 000004C2 endpat9 000004D2 entry exit_int 00000044 exit_tx 00000042 fbyte_loop 00000279 fcount 00000026 flip_in 0000004B flip_lcount 0000004D flip_out 0000004C flipbyte 00000275 get_next_pattern_entry 000002D9 get_next_tx_bit 0000022E get_state_tbl_hi_address 000000C5 get_state_tbl_low_address 000000CB glabel1 000002DF go_state_table 000000D9 greturn 000002E9 iloop1 000003D9 in0 00000059 in1 0000005A in2 0000005B input 000000F6 instate 00000033 intcon_save 000000F2 itop 000003BF loop_ddf 00000413 main 000003F5 make_mtab make_state_jump_table max_instate 00000034 mem 00000061 mem2 000000F7 mult_nop next_pattern 00000285 nextf 00000021 out0 00000046 out1 00000047 MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 105 SYMBOL TABLE LABEL VALUE out2 00000048 out3 00000049 out_address 00000042 out_command 00000043 out_pattern 00000045 out_toggle 00000044 p2count 00000060 p2loop 0000036A past_exit 00000295 past_pattern 0000028D pattern 00000057 pattern_driver 00000317 patternc 00000012 pclath_save 00000054 pclath_temp 000000F3 pindex 000000F5 pindex2 0000003C ploop0 00000321 ploop1a 00000345 ploop2 0000034B ploop2a 0000035E ploop3 00000363 psize 0000005F pspeed 0000005D ptop 00000317 qcount 00000041 qdelay 00000238 read_button_in 0000021F read_eeprom 000002FC read_ir_in 00000223 remote_check 0000032A repeat 00000025 repeat_loop 00000022 rf_command_out 0000023C scount 0000004A send_nothing 0000002E send_one 0000001B send_zero 0000002C set_exit 000002A0 set_loop 00000299 set_max_state 00000227 set_pattern 00000296 setbank0 bcf STATUS,RP0 setbank1 bsf STATUS,RP0 setup_pattern_table 000002B6 setup_pattern_temp 00000052 skip1 00000015 slabel1 000002C4 smi_l1 0000022D speed 0000005C sreturn 000002D8 start_pattern state2_tbl MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 106 SYMBOL TABLE LABEL VALUE state_jump_table 000000DD state_tbl status_temp 000000F1 stop2 000002B6 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 0000004F strobe_delay 000002A1 strobe_delay1 000002A2 strobe_delay2 000002A3 table0 0000044D table1 0000044D table10 000004D2 table11 000004DB table12 000004E1 table13 000004EA table14 000004F3 table15 00000502 table16 00000508 table17 0000050E table2 00000454 table3 00000473 table4 00000478 table5 0000047E table6 000004A5 table7 000004AE table8 000004B3 table9 000004C2 table_lookup 00000422 table_lookup2 000000D2 table_type_11 0000036F table_type_5 00000366 tbl2_hi 0000003F tbl2_low 00000040 tbl_hi 00000050 tbl_low 00000051 tbltype 00000058 tbltype1 tdemo_cont 00000310 tdemo_on 0000030E temp2 00000055 temp_high 00000053 toggle 00000038 toggle_demo 00000306 toggle_demo_temp 00000056 tx_1 0000003B var MPASM 5.06 GENERIC_683.ASM 6-1-2007 20:34:37 PAGE 107 SYMBOL TABLE LABEL VALUE var_all_bank w_temp 000000F0 write_eeprom 000002EB 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 XXXXXXX--------- ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXX----- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 1300 Program Memory Words Free: 748 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 53 suppressed