MPASM 5.14 GENERIC.ASM 6-6-2008 15:07: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,2008 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 ; - update all for new mult patterns in eeprom logic. 00033 ; 6 BI /w mono LEDs. .......................... Working 00034 ; - want to add brightness patterns 00035 ; - update all for new mult patterns in eeprom logic. 00036 ; badge 6 bi-color plus 1 mono, no IR ......... Working 00037 ; - update all for new mult patterns in eeprom logic. 00038 ; badge 7 LED /w mono LEDs, no IR ............. Working 00039 ; - update all for new mult patterns in eeprom logic. 00040 ; 19 LED Stick ................................ Working 00041 ; 19 circle /w mono............................ Working 00042 ; - update to move Led regs to page 2 like RGB Stick, re move 4 bit hack. 00043 ; 19 circle /w bi-color........................ Working 00044 ; - update to move Led regs to page 2 like RGB Stick, re move 4 bit hack. 00045 ; RGB Stick ................................... Draft 00046 ; 3x3 /w mono ................................. Need 00047 ; 3x3 /w bi-color ............................. Draft 00048 ; 00049 ; Dwayne Forsyth wrote the original code, Dwayne pulled a number of updates, 00050 ; code cleanup, and patterns from Dave Holle. 00051 ; MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00052 ;********************************************************************** 00053 ; 00054 ; Filename: generic_683.asm 00055 ; Date: 04/05/2007 00056 ; 00057 ; Author: Dwayne Forsyth 00058 ; email: Dwayne@2DKits.com 00059 ; Company: www.2DKits.com 00060 ; 502 Rue Orleanais 00061 ; Deer Park, IL 60010 00062 ; 00063 ; Help from: Dave Holle 00064 ; 7N204 Parkside Ave 00065 ; Itasca, IL 60143 00066 ; 00067 ;********************************************************************** 00068 00069 errorlevel -302 ; suppress banking messages 2007 30C4 00070 __CONFIG _CP_OFF & _CPD_OFF & _BOD_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _ FCMEN_OFF & _IESO_OFF 00071 00072 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00073 ; The labels following the directive are located in the respective .inc file. 00074 ; See respective data sheet for additional information on configuration word. 00075 00076 ; this SIM_DEBUG disables the buttons and IR inputs so the code will run the patterns. 00077 ; #define SIM_DEBUG 00078 00079 ;********************************* 00080 ; 4RBG /w common anode (ufo and clear 5mm) 00081 ;********************************* 00082 ;#define RGB4 00083 ;#define PATTERN1 00084 ;#define PATTERN2 00085 ;#define PATTERN3 00086 ;#define PATTERN4 00087 ;#define PATTERN20 00088 ;#define DISPLAY_1BIT_C 00089 ;#define DISPLAY_2BIT_C 00090 ;#define ENABLE_IR 00091 ;#include ; processor specific variable definitions 00092 ; LIST P=PIC12F683 00093 ;NUM_TAB equ d'14' ;highest pattern table number 00094 00095 ;********************************* 00096 ; 4RBG /w common Cathode (milk 5mm and 10mm) 00097 ;********************************* 00098 ;#define RGB4 00099 ;#define Common_Cathode 00100 ;#define PATTERN1 00101 ;#define PATTERN2 00102 ;#define PATTERN3 00103 ;#define PATTERN4 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00104 ;#define PATTERN20 00105 ;#define DISPLAY_1BIT_C 00106 ;#define DISPLAY_2BIT_C 00107 ;#define ENABLE_IR 00108 ;#include ; processor specific variable definitions 00109 ; LIST P=PIC12F683 00110 ; NUM_TAB equ d'14' ;highest pattern table number 00111 00112 ;********************************* 00113 ; 6 BI /w bi-color LEDs. 00114 ;********************************* 00115 ;#define BI6 00116 ;#define BIN2LED 00117 ;#define PATTERN1 00118 ;#define PATTERN3 00119 ;#define DISPLAY_1BIT_C 00120 ;#define DISPLAY_2BIT_C 00121 ;#define ENABLE_IR 00122 ;#include ; processor specific variable definitions 00123 ; LIST P=PIC12F683 00124 ; NUM_TAB equ d'14' ;highest pattern table number 00125 00126 ;********************************* 00127 ; 6 BI /w mono LEDs. 00128 ;********************************* 00129 ;#define BI6 00130 ;#define MONO 00131 ;#define FLIPBYTE 00132 ;#define PATTERN5 00133 ;#define PATTERN11 00134 ;#define DISPLAY_1BIT_A 00135 ;#define DISPLAY_2BIT_A 00136 ;#define ENABLE_IR 00137 ;#include ; processor specific variable definitions 00138 ; LIST P=PIC12F683 00139 ;NUM_TAB equ d'17' ;highest pattern table number 00140 00141 ;********************************* 00142 ; badge 6 bi-color plus 1 mono LEDs. 00143 ;********************************* 00144 ;#define BI6 00145 ;#define BIN2LED 00146 ;#define PATTERN10 00147 ;#define PATTERN3 00148 ;#define BADGE 00149 ;#define DISPLAY_1BIT_C 00150 ;#define DISPLAY_2BIT_C 00151 ;#include ; processor specific variable definitions 00152 ; LIST P=PIC12F683 00153 ;NUM_TAB equ d'14' ;highest pattern table number 00154 00155 ;********************************* 00156 ; badge 6 mono LEDs. MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00157 ;********************************* 00158 ;#define BI6 00159 ;#define MONO 00160 ;#define BADGE 00161 ;#define PATTERN5 00162 ;#define PATTERN11 00163 ;#define FLIPBYTE 00164 ;#define DISPLAY_1BIT_A 00165 ;#define DISPLAY_2BIT_A 00166 ;#include ; processor specific variable definitions 00167 ; LIST P=PIC12F683 00168 ;NUM_TAB equ d'19' ;highest pattern table number 00169 00170 ;#define DREW ; special pattern in EEProm for Drew 00171 00172 ;********************************* 00173 ; 19 LED Stick 00174 ;********************************* 00175 ;#define S19 00176 ;#define PATTERN6 00177 ;#define PATTERN7 00178 ;#define PATTERN8 00179 ;#define FLIPBYTE 00180 ;#define DISPLAY_1BIT_D 00181 ;#define ENABLE_IR 00182 ;#include ; processor specific variable definitions 00183 ; LIST P=PIC12F683 00184 ;NUM_TAB equ d'23' ;highest pattern table number 00185 00186 ;********************************* 00187 ; 19 Circle bicolor 00188 ;********************************* 00189 ;#define C19 00190 ;#define PATTERN9 00191 ;#define PATTERN12 00192 ;#define PATTERN13 00193 ;#define BIN2LED 00194 ;#define RANDOM 00195 ;#define DEDICATED_BUTTON 00196 ;#define DISPLAY_1BIT_B 00197 ;#define DISPLAY_2BIT_D 00198 ;#define ENABLE_IR 00199 ;#include ; processor specific variable definitions 00200 ; LIST P=PIC16F688 00201 ;NUM_TAB equ d'25' ;highest pattern table number 00202 00203 ;********************************* 00204 ; 19 Circle mono 00205 ;********************************* 00206 ;#define C19 00207 ;#define MONO 00208 ;#define PATTERN9 00209 ;#define PATTERN12 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00210 ;#define PATTERN14 00211 ;#define RANDOM 00212 ;#define BIN2LED 00213 ;#define DEDICATED_BUTTON 00214 ;#define DISPLAY_1BIT_B 00215 ;#define DISPLAY_2BIT_E 00216 ;#define ENABLE_IR 00217 ;#define STROBE_C0 00218 ;#define STROBE_C1 00219 ;#include ; processor specific variable definitions 00220 ; LIST P=PIC16F688 00221 ;NUM_TAB equ d'25' ;highest pattern table number 00222 00223 ;********************************* 00224 ; 3x3 matrix 00225 ;********************************* 00226 ;#define M3X3 00227 ;#define PATTERN6 00228 ;#define PATTERN19 00229 ;#define PATTERN8 00230 ;#define BIN2LED 00231 ;#define DISPLAY_1BIT_F 00232 ;#define ENABLE_IR 00233 ;#define MULTIBUTTON 00234 ;#include ; processor specific variable definitions 00235 ; LIST P=PIC12F683 00236 ;NUM_TAB equ d'12' ;highest pattern table number 00237 00238 ;********************************* 00239 ; RGB Stick 00240 ;********************************* 00241 #define SRGB 00242 #define PATTERN15 00243 #define PATTERN16 00244 #define PATTERN17 00245 #define PATTERN18 00246 #define DEDICATED_BUTTON 00247 #define DEDICATED_BUTTON2 00248 #define DISPLAY_1BIT_E 00249 #define ENABLE_IR 00250 #define STROBE_C0 00251 #define STROBE_C1 00252 #define STROBE_C2 00253 #define STROBE_C3 00254 #define STROBE_C4 00255 #define STROBE_C5 00256 #include ; processor specific variable definitions 00001 LIST 00002 ; P16F688.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00366 LIST 00257 LIST P=PIC16F688 0000000F 00258 NUM_TAB equ d'15' ;highest pattern table number 00259 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00260 00261 ;********************************************************************** 00262 ; Macros 00263 ;********************************************************************** 00264 ; bank select macros 00265 setbank0 macro 00266 bcf STATUS,RP0 ; select bank 0 00267 bcf STATUS,RP1 00268 endm 00269 00270 setbank1 macro 00271 bsf STATUS,RP0 ; select bank 1 00272 bcf STATUS,RP1 00273 endm 00274 00000021 00275 mem = 21 000000A0 00276 mem3 = 0xa0 00277 00278 var macro name 00279 name equ mem 00280 mem = mem + 1 00281 if (mem >= mem2) 00282 error 'Too much var space used' 00283 endif 00284 endm 00285 00286 dupvar macro name, name2 00287 name equ name2 00288 endm 00289 0000007F 00290 mem2 = 0x7F 00291 var_all_bank macro name 00292 name equ mem2 00293 mem2 = mem2 - 1 00294 if (mem >= mem2) 00295 error 'Too much var space used' 00296 endm 00297 000000A0 00298 mem3 = 0xa0 00299 var_bank2 macro name 00300 name equ mem3 00301 mem3 = mem3 + 1 00302 if (mem3 >= 0xef) 00303 error 'Too much var space used' 00304 endm 00305 00000000 00306 patternc = 0 00307 start_pattern macro typem, delaym 00308 noexpand 00309 table#v(patternc) 00310 if (typem == 1) || (typem == 6) 00311 leng = (endpat#v(patternc)-$-3)/3 ;tbltype1,speed,length 00312 else MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00313 if (typem == 3) || (typem == 0x0b) || (typem == 0x10) || (typem == 0x13) || (typem == 0x14) 00314 leng = (endpat#v(patternc)-$-3)/2 ;tbltype1,speed,length 00315 else 00316 if (typem == 9) || (typem == 0x0e) 00317 leng =(endpat#v(patternc)-$-3)/5 ;tbltype1,speed,length 00318 else 00319 if (typem == 0x0a) 00320 leng =(endpat#v(patternc)-$-3)/4 ;tbltype1,speed,length 00321 else 00322 if (typem == 0x0d) 00323 leng =(endpat#v(patternc)-$-3)/(9+1) ;tbltype1,speed,length 00324 else 00325 if (typem == 0x0f) || (typem == 0x12) 00326 leng =(endpat#v(patternc)-$-3)/(6) ;tbltype1,speed,length 00327 else 00328 if (typem == 0x11) 00329 leng = (endpat#v(patternc)-$-3)/(9+4) ;tbltype1,speed,length 00330 else 00331 leng =(endpat#v(patternc)-$-3) 00332 endif 00333 endif 00334 endif 00335 endif 00336 endif 00337 endif 00338 endif 00339 expand 00340 if ($ < 0x2100) 00341 dt typem,delaym,(leng) 00342 else 00343 de typem,delaym,(leng) 00344 endif 00345 endm 00346 00347 storedata macro stuff 00348 if ($ < 0x2100) 00349 dt stuff 00350 else 00351 de stuff 00352 endif 00353 endm 00354 00355 end_pattern macro 00356 endpat#v(patternc) 00357 patternc = patternc + 1 00358 endm 00359 00360 mult_nop macro nup_count 00361 local i = nup_count 00362 while i > 3 00363 call Lcontinue ;4 cycles 00364 i -= 4 00365 endw MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00366 while i > 1 00367 goto $+1 ;2 cycles 00368 i -= 2 00369 endw 00370 if i > 0 00371 nop ;1 cycle 00372 endif 00373 endm 00374 00375 LedOut macro word,reg_dir,port 00376 movfw TMR0 00377 subwf word,w 00378 btfss STATUS,C 00379 bsf reg_dir, port 00380 endm 00381 00382 LedOutInd macro word,reg_dir,port 00383 movlw word 00384 movwf FSR ; set indirect pointer to word 00385 movfw TMR0 00386 subwf INDF,w 00387 btfss STATUS,C 00388 bsf reg_dir, port 00389 endm 00390 00391 LedOutL macro word,reg_dir,port 00392 swapf word,w 00393 movwf temp4 00394 movfw TMR0 00395 subwf temp4,w 00396 btfss STATUS,C 00397 bsf reg_dir, port 00398 endm 00399 00400 LedOutH macro word,reg_dir,port 00401 nop 00402 nop 00403 movfw TMR0 00404 subwf word,w 00405 btfss STATUS,C 00406 bsf reg_dir, port 00407 endm 00408 00409 state_tbl macro num,zero,one,flag 00410 Lstate#v(num) 00411 #ifndef MULTIBUTTON 00412 if (flag == 0) 00413 clrf button 00414 movlw 0x30 00415 movwf butcount 00416 endif 00417 if (flag == 1) 00418 bsf button,0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00419 endif 00420 #endif 00421 btfsc IR_in,0 00422 goto Lstate#v(num)a 00423 00424 movlw zero 00425 movwf instate 00426 00427 goto Lcontinue 00428 00429 Lstate#v(num)a 00430 movlw one 00431 movwf instate 00432 00433 goto Lcontinue 00434 endm 00435 00436 state2_tbl macro num, name, offset 00437 Lstate#v(num) 00438 ; save the 1st half of word 00439 movf IR_in,w ; save 1st half 00440 movwf IR_lhalf 00441 incf instate,f 00442 00443 goto Lcontinue 00444 00445 Lstate#v(num+1) 00446 ; save the 2nd half of word 00447 ; check for protocal error should get 01 or 10 00448 movf IR_lhalf,w 00449 xorwf IR_in,w 00450 btfss STATUS,Z 00451 goto Lstate#v(num+1)a 00452 clrf instate ; error state = zero 00453 00454 goto Lcontinue 00455 00456 ; set the correct bit in output vars. 00457 Lstate#v(num+1)a 00458 btfsc IR_in,0 00459 bcf name,offset 00460 btfss IR_in,0 00461 bsf name,offset 00462 00463 incf instate,f 00464 goto Lcontinue 00465 endm 00466 00467 entry macro a0,a1,a2 00468 dt a0,a1,a2 00469 endm 00470 00471 tbltype1 macro speed,length MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00472 if (length > 2) && (length < d'256') 00473 dt 0x01,speed,length 00474 else 00475 error 'pattern length must be > 2 and < 256' 00476 endif 00477 endm 00478 00479 make_mtab macro numtab 00480 local i = 0 00481 while i <= numtab 00482 dt HIGH table#v(i), LOW table#v(i) 00483 i += 1 00484 endw 00485 endm 00486 00487 make_state_jump_table macro max_state 00488 local i = 0 00489 while i <= max_state 00490 dt HIGH Lstate#v(i), LOW Lstate#v(i) 00491 i += 1 00492 endw 00493 endm 00494 00495 00496 #ifdef __12F683 00497 PORTA EQU GPIO 00498 TRISA EQU TRISIO 00499 NOT_RAPU EQU NOT_GPPU 00500 #endif 00501 00502 00503 ; ++-------- A7 A6 unimplemented (0) 00504 ; || +------ A4 IR LED output (0) 00505 ; || |+----- A3 detector/button input (1) 00506 ; || || 00507 ; b'00101111' ;set LED matrix pins to input (tri-stated) 00508 ; | ||| 00509 ; +--+++-- LED matrix on A5 A2 A1 A0 (1) 00510 00511 ;********************************************************************** 0000 00512 ORG 0x000 ; processor reset vector 00513 ;********************************************************************** 0000 2D5F 00514 goto main ; go to beginning of program 00515 00516 ;********************************************************************** 0004 00517 ORG 0x004 ; interrupt vector location 00518 ;********************************************************************** 00519 var_all_bank w_temp ; variable used for context saving 0000007F M w_temp equ mem2 0000007E M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00520 var_all_bank status_temp ; variable used for context saving MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000007E M status_temp equ mem2 0000007D M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00521 00522 #ifdef __16F688 00523 var_all_bank fsr_save 0000007D M fsr_save equ mem2 0000007C M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00524 var_all_bank pclath_temp 0000007C M pclath_temp equ mem2 0000007B M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00525 #endif 00526 00527 #ifdef SIM_DEBUG 00528 var T_PORTA 00529 #endif 00530 00531 var nextf ; flags for timing loops 00000021 M nextf equ mem 00000022 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00532 ; bit 0 is one display cycle (890 usec) 00533 ; bit 1 is about 1 minute 00534 var dcycle ; stobe counter [0-3] 00000022 M dcycle equ mem 00000023 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00535 var count1 ; lower bit counter 00000023 M count1 equ mem 00000024 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00536 var count2 ; higher bit counter. 00000024 M count2 equ mem 00000025 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00537 00538 #ifdef __12F683 00539 movwf w_temp ; copy W to TEMP register 00540 swapf STATUS,w ; Swap status to be saved into W 00541 clrf STATUS ; Bank 0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00542 movwf status_temp ; save off contents of PCLATH register 00543 #else 0004 00FF 00544 movwf w_temp ; save off current W register contents 0005 0803 00545 movf STATUS,w ; move status register into W register 0006 00FE 00546 movwf status_temp ; save off contents of STATUS register 0007 080A 00547 movf PCLATH,w ; move pclath register into W register 0008 00FC 00548 movwf pclath_temp ; save off contents of PCLATH register 0009 0804 00549 movf FSR,w 000A 00FD 00550 movwf fsr_save 00551 #endif 00552 000B 00553 here 00554 setbank0 000B 1283 M bcf STATUS,RP0 ; select bank 0 000C 1303 M bcf STATUS,RP1 000D 3000 008A 00555 pageselw here 00556 ; 00557 ; set tick interupt to 889ms for IR RC5 protocal 1/2 digit. 00558 ; an Interupt every 889us /w 8mhz internal osc 00559 ; 00560 00561 #define TICK_VALUE D'35' 00562 000F 3023 00563 movlw TICK_VALUE 0010 0081 00564 movwf TMR0 00565 ; 00566 ; increment the stobe and duration counters 00567 ; 00568 0011 0AA2 00569 incf dcycle,f 00570 00571 #ifdef RGB4 00572 movlw 0x04 00573 #else 00574 #ifdef BI6 00575 movlw 0x04 00576 #else 00577 #ifdef S19 00578 movlw 0x05 00579 #else 00580 #ifdef C19 00581 movlw 0x07 00582 #else 00583 #ifdef M3X3 00584 movlw 0x05 00585 #else 00586 #ifdef SRGB 0012 3007 00587 movlw 0x07 00588 #else 00589 error "unknown board strobe type" 00590 #endif 00591 #endif 00592 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00593 #endif 00594 #endif 00595 #endif 00596 0013 0222 00597 subwf dcycle,w 0014 1803 00598 btfsc STATUS,C 0015 01A2 00599 clrf dcycle 00600 0016 1421 00601 bsf nextf,0 00602 0017 0FA3 00603 incfsz count1,f 0018 281C 00604 goto skip1 00605 0019 0FA4 00606 incfsz count2,f 001A 281C 00607 goto skip1 00608 001B 14A1 00609 bsf nextf,1 00610 001C 00611 skip1 00612 001C 083E 00613 movf scount,w ; F22 001D 3E00 00614 addlw 0 ; F23 001E 1903 00615 btfsc STATUS,Z ; F24 001F 2835 00616 goto send_nothing ; F25 00617 0020 1C2F 00618 btfss tx_1,0 ; F26 0021 2833 00619 goto send_zero ; F27 00620 00621 ;-------------------------------------------------------------------------------------- 0022 00622 send_one ; we are slaming the 36K IR siginal, its like a busy wait! 00623 ;-------------------------------------------------------------------------------------- 00624 var repeat 00000025 M repeat equ mem 00000026 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00625 #ifdef S19 00626 setbank1 00627 movlw b'00011010' ;set A0 & A5 led to output 00628 movwf TRISA 00629 setbank0 00630 #define IRBIT 0 00631 #else 00632 #ifdef M3X3 00633 setbank1 00634 movlw b'00111001' ;set A1 & A2 led to output 00635 movwf TRISA 00636 setbank0 00637 #define IRBIT 1 00638 #else 00639 #ifdef SRGB 00640 #define IRBIT 1 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00641 #else 00642 #define IRBIT 4 00643 #endif 00644 #endif 00645 #endif 00646 0022 1485 00647 bsf PORTA,IRBIT ; A01 00648 0023 237A 00649 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00650 ; mult_nop d'9' ; A17-A25 0024 3001 00651 movlw 01h 0025 2384 00652 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 0026 0000 00653 nop 00654 0027 301E 00655 movlw 0x1E ; C26 (23) 0028 00A5 00656 movwf repeat ; C27 0029 00657 repeat_loop 0029 1085 00658 bcf PORTA,IRBIT ; D01 00659 00660 ; mult_nop d'26' ; D02-D27 002A 3007 00661 movlw 07h 002B 2384 00662 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 00663 002C 1485 00664 bsf PORTA,IRBIT ; E01 (27) 00665 00666 ; mult_nop d'23' ; E02-E24 002D 3006 00667 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 002E 2384 00668 call qdelay 00669 002F 0BA5 00670 decfsz repeat,f ; E25 (24) 0030 2829 00671 goto repeat_loop ; E26/E27 00672 0031 1085 00673 bcf PORTA,IRBIT 0032 2857 00674 goto exit_tx 00675 00676 ;-------------------------------------------------------------------------------------- 0033 00677 send_zero ; we are going to release all the CPU time to the main line for display. 00678 ;-------------------------------------------------------------------------------------- 00679 0033 237A 00680 call get_next_tx_bit ; 2 + 11 cycles A04-A16 0034 2837 00681 goto drive_main_leds 00682 00683 ;-------------------------------------------------------------------------------------- 0035 00684 send_nothing ; Drive the main LEDs. 00685 ;-------------------------------------------------------------------------------------- 00686 0035 236F 00687 call read_ir_in 00688 #ifdef DEDICATED_BUTTON 0036 2368 00689 call read_button_in 00690 #endif 00691 ; goto drive_main_leds 00692 00693 ;-------------------------------------------------------------------------------------- MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0037 00694 drive_main_leds ; Drive the main LEDs. 00695 ;-------------------------------------------------------------------------------------- 00696 var fcount 00000026 M fcount equ mem 00000027 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00697 #ifndef S19 00698 #ifndef C19 00699 #ifndef SRGB 00700 #ifndef M3X3 00701 var Ar_reg 00702 var Ag_reg 00703 var Ab_reg 00704 var Br_reg 00705 var Bg_reg 00706 var Bb_reg 00707 var Cr_reg 00708 var Cg_reg 00709 var Cb_reg 00710 var Dr_reg 00711 var Dg_reg 00712 var Db_reg 00713 #endif 00714 #endif 00715 #endif 00716 #endif 00717 00718 #ifdef BADGE 00719 var Center_reg 00720 #endif 00721 #ifdef M3X3 00722 var A0_A1_reg 00723 var A0_A2_reg 00724 var A0_A4_reg 00725 var A0_A5_reg 00726 var A1_A0_reg 00727 var A1_A2_reg 00728 var A1_A4_reg 00729 var A1_A5_reg 00730 var A2_A0_reg 00731 var A2_A1_reg 00732 var A2_A4_reg 00733 var A2_A5_reg 00734 var A4_A0_reg 00735 var A4_A1_reg 00736 var A4_A2_reg 00737 var A4_A5_reg 00738 var A5_A0_reg 00739 var A5_A1_reg 00740 var A5_A2_reg 00741 var A5_A4_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00742 #endif 00743 #ifdef S19 00744 var A0_A1_reg 00745 var A0_A2_reg 00746 var A0_A4_reg 00747 var A0_A5_reg 00748 var A1_A0_reg 00749 var A1_A2_reg 00750 var A1_A4_reg 00751 var A1_A5_reg 00752 var A2_A0_reg 00753 var A2_A1_reg 00754 var A2_A4_reg 00755 var A2_A5_reg 00756 var A4_A0_reg 00757 var A4_A1_reg 00758 var A4_A2_reg 00759 var A4_A5_reg 00760 var A5_A0_reg 00761 var A5_A1_reg 00762 var A5_A2_reg 00763 var A5_A4_reg 00764 #endif 00765 #ifdef C19 00766 var temp4 00767 var A0_A1_reg 00768 var A0_A2_reg 00769 var A0_C0_reg 00770 var A0_C1_reg 00771 var A0_C2_reg 00772 var A0_C4_reg 00773 var A1_A2_reg 00774 var A1_C0_reg 00775 var A1_C1_reg 00776 var A1_C2_reg 00777 var A1_C4_reg 00778 var A2_C0_reg 00779 var A2_C1_reg 00780 var A2_C2_reg 00781 var A2_C4_reg 00782 var C0_C1_reg 00783 var C0_C2_reg 00784 var C0_C4_reg 00785 var C1_C2_reg 00786 var C1_C4_reg 00787 var C2_C4_reg 00788 #endif 00789 #ifdef SRGB 00790 ; 00791 ; The shifter pattern needs the colored LEDs defined sequentially 00792 ; 00793 var_bank2 C5_C3_reg ; 01 R 000000A0 M C5_C3_reg equ mem3 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000A1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00794 var_bank2 C2_C3_reg ; 02 R 000000A1 M C2_C3_reg equ mem3 000000A2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00795 var_bank2 C0_C4_reg ; 03 R 000000A2 M C0_C4_reg equ mem3 000000A3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00796 var_bank2 C5_C4_reg ; 04 R 000000A3 M C5_C4_reg equ mem3 000000A4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00797 var_bank2 C3_C5_reg ; 05 R 000000A4 M C3_C5_reg equ mem3 000000A5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00798 var_bank2 C4_C5_reg ; 06 R 000000A5 M C4_C5_reg equ mem3 000000A6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00799 var_bank2 A2_C0_reg ; 07 R 000000A6 M A2_C0_reg equ mem3 000000A7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00800 var_bank2 C3_C0_reg ; 08 R 000000A7 M C3_C0_reg equ mem3 000000A8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00801 var_bank2 C0_A2_reg ; 09 R 000000A8 M C0_A2_reg equ mem3 000000A9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00802 var_bank2 C3_A2_reg ; 10 R 000000A9 M C3_A2_reg equ mem3 000000AA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00803 var_bank2 A2_C2_reg ; 11 R 000000AA M A2_C2_reg equ mem3 000000AB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00804 var_bank2 C3_C2_reg ; 12 R 000000AB M C3_C2_reg equ mem3 000000AC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00805 var_bank2 A2_C1_reg ; 13 R 000000AC M A2_C1_reg equ mem3 000000AD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00806 var_bank2 C3_C1_reg ; 14 R 000000AD M C3_C1_reg equ mem3 000000AE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00807 00808 var_bank2 A2_C3_reg ; 01 G 000000AE M A2_C3_reg equ mem3 000000AF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00809 var_bank2 C0_C3_reg ; 02 G 000000AF M C0_C3_reg equ mem3 000000B0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00810 var_bank2 A2_C4_reg ; 03 G 000000B0 M A2_C4_reg equ mem3 000000B1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00811 var_bank2 C3_C4_reg ; 04 G 000000B1 M C3_C4_reg equ mem3 000000B2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00812 var_bank2 C0_C5_reg ; 05 G 000000B2 M C0_C5_reg equ mem3 000000B3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00813 var_bank2 A2_C5_reg ; 06 G 000000B3 M A2_C5_reg equ mem3 000000B4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00814 var_bank2 C4_C0_reg ; 07 G 000000B4 M C4_C0_reg equ mem3 000000B5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00815 var_bank2 C5_C0_reg ; 08 G 000000B5 M C5_C0_reg equ mem3 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000B6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00816 var_bank2 C4_A2_reg ; 09 G 000000B6 M C4_A2_reg equ mem3 000000B7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00817 var_bank2 C5_A2_reg ; 10 G 000000B7 M C5_A2_reg equ mem3 000000B8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00818 var_bank2 C4_C2_reg ; 11 G 000000B8 M C4_C2_reg equ mem3 000000B9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00819 var_bank2 C5_C2_reg ; 12 G 000000B9 M C5_C2_reg equ mem3 000000BA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00820 var_bank2 C4_C1_reg ; 13 G 000000BA M C4_C1_reg equ mem3 000000BB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00821 var_bank2 C5_C1_reg ; 14 G 000000BB M C5_C1_reg equ mem3 000000BC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00822 00823 var_bank2 C1_C3_reg ; 01 B ? 000000BC M C1_C3_reg equ mem3 000000BD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00824 var_bank2 C4_C3_reg 000000BD M C4_C3_reg equ mem3 000000BE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00825 var_bank2 C2_C4_reg ; 03 B 000000BE M C2_C4_reg equ mem3 000000BF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00826 var_bank2 C1_C4_reg ; 04 B 000000BF M C1_C4_reg equ mem3 000000C0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 00827 var_bank2 C1_C5_reg ; 05 B 000000C0 M C1_C5_reg equ mem3 000000C1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00828 var_bank2 C2_C5_reg ; 06 B 000000C1 M C2_C5_reg equ mem3 000000C2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00829 var_bank2 C2_C0_reg ; 07 B 000000C2 M C2_C0_reg equ mem3 000000C3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00830 var_bank2 C1_C0_reg ; 08 B 000000C3 M C1_C0_reg equ mem3 000000C4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00831 var_bank2 C2_A2_reg ; 09 B 000000C4 M C2_A2_reg equ mem3 000000C5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00832 var_bank2 C1_A2_reg ; 10 B 000000C5 M C1_A2_reg equ mem3 000000C6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00833 var_bank2 C1_C2_reg ; 11 B 000000C6 M C1_C2_reg equ mem3 000000C7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00834 var_bank2 C0_C2_reg 000000C7 M C0_C2_reg equ mem3 000000C8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00835 var_bank2 C2_C1_reg ; 13 B ? 000000C8 M C2_C1_reg equ mem3 000000C9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00836 var_bank2 C0_C1_reg ; 14 B 000000C9 M C0_C1_reg equ mem3 000000CA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 00837 00838 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00839 00840 00841 var_all_bank Ax_dir 0000007B M Ax_dir equ mem2 0000007A M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00842 #ifdef C19 00843 var_all_bank Cx_dir 00844 #endif 00845 #ifdef SRGB 00846 var_all_bank Cx_dir 0000007A M Cx_dir equ mem2 00000079 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00847 #endif 00848 00849 ; 00850 ; This is the number of times the display logic should cycle before exiting. It's been hand timed from t he 00851 ; start of the interupt to the end to be around 800usec. This leaves 90 usec for the main loop. 00852 ; The 19 stick has an extra display line strobe cycle. 00853 ; 00854 #ifdef RGB4 00855 movlw 0x36 00856 #else 00857 #ifdef BI6 00858 movlw 0x3a 00859 #else 00860 #ifdef S19 00861 movlw 0x30 00862 #else 00863 #ifdef C19 00864 movlw 0x18 00865 #else 00866 #ifdef M3X3 00867 movlw 0x2E 00868 #else 00869 #ifdef SRGB 0037 3018 00870 movlw 0x18 00871 #else 00872 error "unknown board delaytimer" 00873 #endif 00874 #endif 00875 #endif 00876 #endif 00877 #endif 00878 #endif 00879 00880 00881 0038 00A6 00882 movwf fcount MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00883 00884 #ifdef C19 00885 movlw b'00101000' ;set LED matrix pins to input (tri-stated) 00886 movwf Ax_dir 00887 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 00888 #else 00889 #ifdef SRGB 0039 3038 00890 movlw b'00111000' ;set LED matrix pins to input (tri-stated) 003A 00FB 00891 movwf Ax_dir 003B 01FA 00892 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 00893 #else 00894 movlw b'00001000' ;set LED matrix pins to input (tri-stated) 00895 movwf Ax_dir 00896 #endif 00897 #endif 00898 00899 ; clrf dcycle ; DDF 00900 003C 0822 00901 movf dcycle,w ; testing for 0 003D 1903 00902 btfsc STATUS,Z 003E 2063 00903 call display_cycle0 00904 003F 3001 00905 movlw 0x01 ; testing for 1 0040 0222 00906 subwf dcycle,w 0041 1903 00907 btfsc STATUS,Z 0042 206F 00908 call display_cycle1 00909 0043 3002 00910 movlw 0x02 ; testing for 2 0044 0222 00911 subwf dcycle,w 0045 1903 00912 btfsc STATUS,Z 0046 207B 00913 call display_cycle2 00914 0047 3003 00915 movlw 0x03 ; testing for 3 0048 0222 00916 subwf dcycle,w 0049 1903 00917 btfsc STATUS,Z 004A 2087 00918 call display_cycle3 00919 00920 #ifdef S19 00921 movlw 0x04 ; testing for 4 00922 subwf dcycle,w 00923 btfsc STATUS,Z 00924 call display_cycle4 00925 #endif 00926 #ifdef M3X3 00927 movlw 0x04 ; testing for 4 00928 subwf dcycle,w 00929 btfsc STATUS,Z 00930 call display_cycle4 00931 #endif 00932 #ifdef C19 00933 movlw 0x04 ; testing for 4 00934 subwf dcycle,w 00935 btfsc STATUS,Z MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00936 call display_cycle4 00937 00938 movlw 0x05 ; testing for 5 00939 subwf dcycle,w 00940 btfsc STATUS,Z 00941 call display_cycle5 00942 00943 movlw 0x06 ; testing for 6 00944 subwf dcycle,w 00945 btfsc STATUS,Z 00946 call display_cycle6 00947 00948 #endif 00949 #ifdef SRGB 004B 3004 00950 movlw 0x04 ; testing for 4 004C 0222 00951 subwf dcycle,w 004D 1903 00952 btfsc STATUS,Z 004E 2093 00953 call display_cycle4 00954 004F 3005 00955 movlw 0x05 ; testing for 5 0050 0222 00956 subwf dcycle,w 0051 1903 00957 btfsc STATUS,Z 0052 209F 00958 call display_cycle5 00959 0053 3006 00960 movlw 0x06 ; testing for 6 0054 0222 00961 subwf dcycle,w 0055 1903 00962 btfsc STATUS,Z 0056 20AB 00963 call display_cycle6 00964 00965 #endif 00966 00967 ;-------------------------------------------------------------------------------------- 0057 00968 exit_tx 00969 ;-------------------------------------------------------------------------------------- 00970 00971 #ifdef MULTIBUTTON 00972 movlw b'00110111' 00973 movwf PORTA 00974 #else 0057 0185 00975 clrf PORTA ;DDF debug hack ; turn all the LED off 00976 #endif 00977 #ifndef __12F683 0058 0187 00978 clrf PORTC ;DDF debug hack ; turn all the LED off 00979 #endif 00980 00981 00982 ; clear timer0 interupt 0059 110B 00983 bcf INTCON,T0IF 00984 00985 ; restore state, return form interupt 00986 005A 00987 exit_int 00988 #ifdef __12F683 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00989 swapf status_temp,w 00990 movwf STATUS 00991 swapf w_temp,f 00992 swapf w_temp,w 00993 #else 005A 087D 00994 movf fsr_save,w 005B 0084 00995 movwf FSR 005C 087C 00996 movf pclath_temp,w ; retrieve copy of PCLATH register 005D 008A 00997 movwf PCLATH ; restore pre-isr PCLATH register contents 005E 087E 00998 movf status_temp,w ; retrieve copy of STATUS register 005F 0083 00999 movwf STATUS ; restore pre-isr STATUS register contents 0060 0EFF 01000 swapf w_temp,f 0061 0E7F 01001 swapf w_temp,w ; restore pre-isr W register content 01002 #endif 0062 0009 01003 retfie ; return from interrupt 01004 01005 ;-------------------------------------------------------------------------------------- 0063 01006 display_cycle0 01007 ;-------------------------------------------------------------------------------------- 01008 01009 #ifdef STROBE_C3 0063 217B 01010 call strobe_c3 0064 0BA6 01011 decfsz fcount,f 0065 2863 01012 goto display_cycle0 01013 01014 0066 220E 01015 call get_state_tbl_hi_address 0067 217B 01016 call strobe_c3 0068 2214 01017 call get_state_tbl_low_address 0069 217B 01018 call strobe_c3 006A 2222 01019 call go_state_table 006B 217B 01020 call strobe_c3 006C 2373 01021 call set_max_state 006D 217B 01022 call strobe_c3 01023 #else 01024 call strobe_a0 01025 decfsz fcount,f 01026 goto display_cycle0 01027 01028 01029 call get_state_tbl_hi_address 01030 call strobe_a0 01031 call get_state_tbl_low_address 01032 call strobe_a0 01033 call go_state_table 01034 call strobe_a0 01035 call set_max_state 01036 call strobe_a0 01037 #ifdef M3X3 01038 #ifdef SIM_DEBUG 01039 btfsc T_PORTA,2 ; button on? 01040 #else 01041 btfsc PORTA,3 ; button on? MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01042 #endif 01043 goto b0_off 01044 01045 movlw 0x30 ; greater then 30? 01046 subwf button2,w 01047 btfsc STATUS,C 01048 goto b0_set 01049 01050 incf button2,f ; debouncing.... 01051 goto b0_return 01052 01053 b0_set 01054 bsf button,2 01055 goto b0_return 01056 01057 b0_off 01058 movfw button2 ; zero? 01059 btfsc STATUS,Z 01060 goto b0_clr 01061 01062 decf button2,f ; debouncing.... 01063 goto b0_return 01064 01065 b0_clr 01066 bcf button,2 01067 01068 b0_return 01069 #endif 01070 #endif 006E 0008 01071 return 01072 01073 ;-------------------------------------------------------------------------------------- 006F 01074 display_cycle1 01075 ;-------------------------------------------------------------------------------------- 01076 01077 #ifdef STROBE_C5 006F 21DD 01078 call strobe_c5 0070 0BA6 01079 decfsz fcount,f 0071 286F 01080 goto display_cycle1 01081 0072 220E 01082 call get_state_tbl_hi_address 0073 21DD 01083 call strobe_c5 0074 2214 01084 call get_state_tbl_low_address 0075 21DD 01085 call strobe_c5 0076 2222 01086 call go_state_table 0077 21DD 01087 call strobe_c5 0078 2373 01088 call set_max_state 0079 21DD 01089 call strobe_c5 01090 #else 01091 call strobe_a1 01092 decfsz fcount,f 01093 goto display_cycle1 01094 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01095 call get_state_tbl_hi_address 01096 call strobe_a1 01097 call get_state_tbl_low_address 01098 call strobe_a1 01099 call go_state_table 01100 call strobe_a1 01101 call set_max_state 01102 call strobe_a1 01103 01104 #ifdef M3X3 01105 #ifdef SIM_DEBUG 01106 btfsc T_PORTA,1 ; button on? 01107 #else 01108 btfsc PORTA,3 ; button on? 01109 #endif 01110 goto b1_off 01111 01112 movlw 0x30 ; greater then 30? 01113 subwf button3,w 01114 btfsc STATUS,C 01115 goto b1_set 01116 01117 incf button3,f ; debouncing.... 01118 goto b1_return 01119 01120 b1_set 01121 bsf button,3 01122 goto b1_return 01123 01124 b1_off 01125 movfw button3 ; zero? 01126 btfsc STATUS,Z 01127 goto b1_clr 01128 01129 decf button3,f ; debouncing.... 01130 goto b1_return 01131 01132 b1_clr 01133 bcf button,3 01134 01135 b1_return 01136 #endif 01137 #endif 007A 0008 01138 return 01139 01140 ;-------------------------------------------------------------------------------------- 007B 01141 display_cycle2 01142 ;-------------------------------------------------------------------------------------- 01143 007B 20B7 01144 call strobe_a2 007C 0BA6 01145 decfsz fcount,f 007D 287B 01146 goto display_cycle2 01147 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007E 220E 01148 call get_state_tbl_hi_address 007F 20B7 01149 call strobe_a2 0080 2214 01150 call get_state_tbl_low_address 0081 20B7 01151 call strobe_a2 0082 2222 01152 call go_state_table 0083 20B7 01153 call strobe_a2 0084 2373 01154 call set_max_state 0085 20B7 01155 call strobe_a2 01156 01157 #ifdef M3X3 01158 #ifdef SIM_DEBUG 01159 btfsc T_PORTA,4 ; button on? 01160 #else 01161 btfsc PORTA,3 ; button on? 01162 #endif 01163 goto b2_off 01164 01165 movlw 0x30 ; greater then 30? 01166 subwf button4,w 01167 btfsc STATUS,C 01168 goto b2_set 01169 01170 incf button4,f ; debouncing.... 01171 goto b2_return 01172 01173 b2_set 01174 bsf button,4 01175 goto b2_return 01176 01177 b2_off 01178 movfw button4 ; zero? 01179 btfsc STATUS,Z 01180 goto b2_clr 01181 01182 decf button4,f ; debouncing.... 01183 goto b2_return 01184 01185 b2_clr 01186 bcf button,4 01187 01188 b2_return 01189 #endif 01190 0086 0008 01191 return 01192 01193 ;-------------------------------------------------------------------------------------- 0087 01194 display_cycle3 01195 ;-------------------------------------------------------------------------------------- 01196 01197 #ifdef STROBE_C0 0087 20E8 01198 call strobe_c0 0088 0BA6 01199 decfsz fcount,f 0089 2887 01200 goto display_cycle3 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01201 008A 220E 01202 call get_state_tbl_hi_address 008B 20E8 01203 call strobe_c0 008C 2214 01204 call get_state_tbl_low_address 008D 20E8 01205 call strobe_c0 008E 2222 01206 call go_state_table 008F 20E8 01207 call strobe_c0 0090 2373 01208 call set_max_state 0091 20E8 01209 call strobe_c0 01210 0092 0008 01211 return 01212 #else 01213 call strobe_a5 01214 decfsz fcount,f 01215 goto display_cycle3 01216 01217 call get_state_tbl_hi_address 01218 call strobe_a5 01219 call get_state_tbl_low_address 01220 call strobe_a5 01221 call go_state_table 01222 call strobe_a5 01223 call set_max_state 01224 call strobe_a5 01225 01226 #ifdef M3X3 01227 #ifdef SIM_DEBUG 01228 btfsc T_PORTA,0 ; button on? 01229 #else 01230 btfsc PORTA,3 ; button on? 01231 #endif 01232 goto b3_off 01233 01234 movlw 0x30 ; greater then 30? 01235 subwf button0,w 01236 btfsc STATUS,C 01237 goto b3_set 01238 01239 incf button0,f ; debouncing.... 01240 goto b3_return 01241 01242 b3_set 01243 bsf button,0 01244 goto b3_return 01245 01246 b3_off 01247 movfw button0 ; zero? 01248 btfsc STATUS,Z 01249 goto b3_clr 01250 01251 decf button0,f ; debouncing.... 01252 goto b3_return 01253 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01254 b3_clr 01255 bcf button,0 01256 01257 b3_return 01258 #endif 01259 01260 return 01261 #endif 01262 01263 01264 #ifdef M3X3 01265 ;-------------------------------------------------------------------------------------- 01266 display_cycle4 01267 ;-------------------------------------------------------------------------------------- 01268 01269 call strobe_a4 01270 decfsz fcount,f 01271 goto display_cycle4 01272 01273 call get_state_tbl_hi_address 01274 call strobe_a4 01275 call get_state_tbl_low_address 01276 call strobe_a4 01277 call go_state_table 01278 call strobe_a4 01279 call set_max_state 01280 call strobe_a4 01281 01282 #ifdef M3X3 01283 #ifdef SIM_DEBUG 01284 btfsc T_PORTA,1 ; button on? 01285 #else 01286 btfsc PORTA,3 ; button on? 01287 #endif 01288 goto b4_off 01289 01290 movlw 0x30 ; greater then 30? 01291 subwf button1,w 01292 btfsc STATUS,C 01293 goto b4_set 01294 01295 incf button1,f ; debouncing.... 01296 goto b4_return 01297 01298 b4_set 01299 bsf button,1 01300 goto b4_return 01301 01302 b4_off 01303 movfw button1 ; zero? 01304 btfsc STATUS,Z 01305 goto b4_clr 01306 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01307 decf button1,f ; debouncing.... 01308 goto b4_return 01309 01310 b4_clr 01311 bcf button,1 01312 01313 b4_return 01314 #endif 01315 01316 return 01317 #endif 01318 01319 #ifdef S19 01320 ;-------------------------------------------------------------------------------------- 01321 display_cycle4 01322 ;-------------------------------------------------------------------------------------- 01323 01324 call strobe_a4 01325 decfsz fcount,f 01326 goto display_cycle4 01327 01328 call get_state_tbl_hi_address 01329 call strobe_a4 01330 call get_state_tbl_low_address 01331 call strobe_a4 01332 call go_state_table 01333 call strobe_a4 01334 call set_max_state 01335 call strobe_a4 01336 01337 return 01338 #endif 01339 #ifdef STROBE_C1 01340 ;-------------------------------------------------------------------------------------- 0093 01341 display_cycle4 01342 ;-------------------------------------------------------------------------------------- 01343 0093 2119 01344 call strobe_c1 0094 0BA6 01345 decfsz fcount,f 0095 2893 01346 goto display_cycle4 01347 0096 220E 01348 call get_state_tbl_hi_address 0097 2119 01349 call strobe_c1 0098 2214 01350 call get_state_tbl_low_address 0099 2119 01351 call strobe_c1 009A 2222 01352 call go_state_table 009B 2119 01353 call strobe_c1 009C 2373 01354 call set_max_state 009D 2119 01355 call strobe_c1 01356 009E 0008 01357 return 01358 01359 ;-------------------------------------------------------------------------------------- MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 009F 01360 display_cycle5 01361 ;-------------------------------------------------------------------------------------- 01362 009F 214A 01363 call strobe_c2 00A0 0BA6 01364 decfsz fcount,f 00A1 289F 01365 goto display_cycle5 01366 00A2 220E 01367 call get_state_tbl_hi_address 00A3 214A 01368 call strobe_c2 00A4 2214 01369 call get_state_tbl_low_address 00A5 214A 01370 call strobe_c2 00A6 2222 01371 call go_state_table 00A7 214A 01372 call strobe_c2 00A8 2373 01373 call set_max_state 00A9 214A 01374 call strobe_c2 01375 00AA 0008 01376 return 01377 01378 ;-------------------------------------------------------------------------------------- 00AB 01379 display_cycle6 01380 ;-------------------------------------------------------------------------------------- 01381 00AB 21AC 01382 call strobe_c4 00AC 0BA6 01383 decfsz fcount,f 00AD 28AB 01384 goto display_cycle6 01385 00AE 220E 01386 call get_state_tbl_hi_address 00AF 21AC 01387 call strobe_c4 00B0 2214 01388 call get_state_tbl_low_address 00B1 21AC 01389 call strobe_c4 00B2 2222 01390 call go_state_table 00B3 21AC 01391 call strobe_c4 00B4 2373 01392 call set_max_state 00B5 21AC 01393 call strobe_c4 01394 00B6 0008 01395 return 01396 #endif 01397 01398 #ifdef RGB4 01399 #include 01400 #else 01401 #ifdef BI6 01402 #include 01403 #else 01404 #ifdef S19 01405 #include 01406 #else 01407 #ifdef C19 01408 #include 01409 #else 01410 #ifdef M3X3 01411 #include 01412 #else MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01413 #ifdef SRGB 01414 #include 00001 #ifndef SRGB 00002 ;-------------------------------------------------------------------------------------- 00003 strobe_a0 00004 ;-------------------------------------------------------------------------------------- 00005 #ifdef RGB4 00006 #ifdef Common_Cathode 00007 LedOut Dr_reg,Ax_dir,1 ;LED Dr A0-A1 00008 LedOut Dg_reg,Ax_dir,2 ;LED Dg A0-A2 00009 LedOut Db_reg,Ax_dir,5 ;LED Db A0-A5 00010 #else 00011 LedOut Ab_reg,Ax_dir,1 ;LED Ab A0-A1 00012 LedOut Bg_reg,Ax_dir,2 ;LED Bg A0-A2 00013 LedOut Cr_reg,Ax_dir,5 ;LED Cr A0-A5 00014 #endif 00015 #endif 00016 #ifdef BI6 00017 LedOut Ab_reg,Ax_dir,1 ;LED Dr A0-A1 00018 LedOut Cr_reg,Ax_dir,2 ;LED Dg A0-A2 00019 LedOut Db_reg,Ax_dir,5 ;LED Db A0-A5 00020 #endif 00021 #ifdef S19 00022 LedOut A0_A1_reg,Ax_dir,1 ;LED A0-A1 00023 LedOut A0_A2_reg,Ax_dir,2 ;LED A0-A2 00024 LedOut A0_A4_reg,Ax_dir,4 ;LED A0-A4 00025 LedOut A0_A5_reg,Ax_dir,5 ;LED A0-A5 00026 #endif 00027 00028 #ifdef C19 00029 LedOutH A0_A1_reg,Ax_dir,1 ;LED A0-A1 00030 LedOutH A0_A2_reg,Ax_dir,2 ;LED A0-A2 00031 LedOutH A0_C0_reg,Cx_dir,0 ;LED A0-C0 00032 LedOutH A0_C1_reg,Cx_dir,1 ;LED A0-C1 00033 LedOutH A0_C2_reg,Cx_dir,2 ;LED A0-C2 00034 LedOutH A0_C4_reg,Cx_dir,4 ;LED A0-C4 00035 #endif 00036 00037 setbank1 00038 movf Ax_dir,w ;set portA direction 00039 movwf TRISA 00040 #ifndef __12F683 00041 movf Cx_dir,w ;set portA direction 00042 movwf TRISC 00043 #endif 00044 setbank0 00045 00046 movlw b'00000001' 00047 movwf PORTA 00048 #ifndef __12F683 00049 movlw b'00000000' 00050 movwf PORTC 00051 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00052 return 00053 00054 #endif 00055 00056 #ifndef SRGB 00057 ;-------------------------------------------------------------------------------------- 00058 strobe_a1 00059 ;-------------------------------------------------------------------------------------- 00060 #ifdef RGB4 00061 #ifdef Common_Cathode 00062 LedOut Ab_reg,Ax_dir,0 ;LED Ab A1-A0 00063 LedOut Ar_reg,Ax_dir,2 ;LED Ar A1-A2 00064 LedOut Ag_reg,Ax_dir,5 ;LED Ag A1-A5 00065 #else 00066 LedOut Dr_reg,Ax_dir,0 ;LED Dr A1-A0 00067 LedOut Bb_reg,Ax_dir,2 ;LED Bb A1-A2 00068 LedOut Cg_reg,Ax_dir,5 ;LED Cg A1-A5 00069 #endif 00070 #endif 00071 #ifdef BI6 00072 LedOut Bb_reg,Ax_dir,0 ;LED Dr A1-A0 00073 LedOut Ag_reg,Ax_dir,2 ;LED Dg A1-A2 00074 LedOut Ar_reg,Ax_dir,5 ;LED Db A1-A5 00075 #endif 00076 #ifdef S19 00077 LedOut A1_A0_reg,Ax_dir,0 ;LED A1-A0 00078 LedOut A1_A2_reg,Ax_dir,2 ;LED A1-A2 00079 LedOut A1_A4_reg,Ax_dir,4 ;LED A1-A4 00080 LedOut A1_A5_reg,Ax_dir,5 ;LED A1-A5 00081 #endif 00082 #ifdef C19 00083 LedOutL A0_A1_reg,Ax_dir,0 ;LED A1-A0 00084 LedOutH A1_A2_reg,Ax_dir,2 ;LED A1-A2 00085 LedOutH A1_C0_reg,Cx_dir,0 ;LED A1-C0 00086 LedOutH A1_C1_reg,Cx_dir,1 ;LED A1-C1 00087 LedOutH A1_C2_reg,Cx_dir,2 ;LED A1-C2 00088 LedOutH A1_C4_reg,Cx_dir,4 ;LED A1-C4 00089 #endif 00090 00091 setbank1 00092 movf Ax_dir,w ;set portA direction 00093 movwf TRISA 00094 #ifndef __12F683 00095 movf Cx_dir,w ;set portA direction 00096 movwf TRISC 00097 #endif 00098 setbank0 00099 movlw b'00000010' 00100 movwf PORTA 00101 #ifndef __12F683 00102 movlw b'00000000' 00103 movwf PORTC 00104 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00105 return 00106 #endif 00107 00108 ;-------------------------------------------------------------------------------------- 00B7 00109 strobe_a2 00110 ;-------------------------------------------------------------------------------------- 00111 #ifdef RGB4 00112 #ifdef Common_Cathode 00113 LedOut Bg_reg,Ax_dir,0 ;LED Bg A2-A0 00114 LedOut Bb_reg,Ax_dir,1 ;LED Bb A2-A1 00115 LedOut Br_reg,Ax_dir,5 ;LED Br A2-A5 00116 #else 00117 LedOut Dg_reg,Ax_dir,0 ;LED Dg A2-A0 00118 LedOut Ar_reg,Ax_dir,1 ;LED Ar A2-A1 00119 LedOut Cb_reg,Ax_dir,5 ;LED Cb A2-A5 00120 #endif 00121 #endif 00122 #ifdef BI6 00123 LedOut Dr_reg,Ax_dir,0 ;LED Dr A2-A0 00124 LedOut Bg_reg,Ax_dir,1 ;LED Dg A2-A1 00125 LedOut Dg_reg,Ax_dir,5 ;LED Db A2-A5 00126 #endif 00127 #ifdef S19 00128 LedOut A2_A0_reg,Ax_dir,0 ;LED A2-A0 00129 LedOut A2_A1_reg,Ax_dir,1 ;LED A2-A1 00130 LedOut A2_A4_reg,Ax_dir,4 ;LED A2-A4 00131 LedOut A2_A5_reg,Ax_dir,5 ;LED A2-A5 00132 #endif 00133 #ifdef C19 00134 LedOutL A0_A2_reg,Ax_dir,0 ;LED A2-A0 00135 LedOutL A1_A2_reg,Ax_dir,1 ;LED A2-A1 00136 LedOutH A2_C0_reg,Cx_dir,0 ;LED A2-C0 00137 LedOutH A2_C1_reg,Cx_dir,1 ;LED A2-C1 00138 LedOutH A2_C2_reg,Cx_dir,2 ;LED A2-C2 00139 LedOutH A2_C4_reg,Cx_dir,4 ;LED A2-C4 00140 #endif 00141 00142 #ifdef SRGB 00143 LedOutInd A2_C0_reg,Cx_dir,0 ;LED A2-C0 00B7 30A6 M movlw A2_C0_reg 00B8 0084 M movwf FSR ; set indirect pointer to word 00B9 0801 M movfw TMR0 00BA 0200 M subwf INDF,w 00BB 1C03 M btfss STATUS,C 00BC 147A M bsf Cx_dir, 0 00144 LedOutInd A2_C1_reg,Cx_dir,1 ;LED A2-C1 00BD 30AC M movlw A2_C1_reg 00BE 0084 M movwf FSR ; set indirect pointer to word 00BF 0801 M movfw TMR0 00C0 0200 M subwf INDF,w 00C1 1C03 M btfss STATUS,C 00C2 14FA M bsf Cx_dir, 1 00145 LedOutInd A2_C2_reg,Cx_dir,2 ;LED A2-C2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00C3 30AA M movlw A2_C2_reg 00C4 0084 M movwf FSR ; set indirect pointer to word 00C5 0801 M movfw TMR0 00C6 0200 M subwf INDF,w 00C7 1C03 M btfss STATUS,C 00C8 157A M bsf Cx_dir, 2 00146 LedOutInd A2_C3_reg,Cx_dir,3 ;LED A2-C3 00C9 30AE M movlw A2_C3_reg 00CA 0084 M movwf FSR ; set indirect pointer to word 00CB 0801 M movfw TMR0 00CC 0200 M subwf INDF,w 00CD 1C03 M btfss STATUS,C 00CE 15FA M bsf Cx_dir, 3 00147 LedOutInd A2_C4_reg,Cx_dir,4 ;LED A2-C4 00CF 30B0 M movlw A2_C4_reg 00D0 0084 M movwf FSR ; set indirect pointer to word 00D1 0801 M movfw TMR0 00D2 0200 M subwf INDF,w 00D3 1C03 M btfss STATUS,C 00D4 167A M bsf Cx_dir, 4 00148 LedOutInd A2_C5_reg,Cx_dir,5 ;LED A2-C5 00D5 30B3 M movlw A2_C5_reg 00D6 0084 M movwf FSR ; set indirect pointer to word 00D7 0801 M movfw TMR0 00D8 0200 M subwf INDF,w 00D9 1C03 M btfss STATUS,C 00DA 16FA M bsf Cx_dir, 5 00149 #endif 00150 00151 00152 setbank1 00DB 1683 M bsf STATUS,RP0 ; select bank 1 00DC 1303 M bcf STATUS,RP1 00DD 087B 00153 movf Ax_dir,w ;set portA direction 00DE 0085 00154 movwf TRISA 00155 #ifndef __12F683 00DF 087A 00156 movf Cx_dir,w ;set portA direction 00E0 0087 00157 movwf TRISC 00158 #endif 00159 00160 setbank0 00E1 1283 M bcf STATUS,RP0 ; select bank 0 00E2 1303 M bcf STATUS,RP1 00161 00E3 3004 00162 movlw b'00000100' 00E4 0085 00163 movwf PORTA 00164 #ifndef __12F683 00E5 3000 00165 movlw b'00000000' 00E6 0087 00166 movwf PORTC 00167 #endif 00E7 0008 00168 return 00169 00170 #ifdef STROBE_C0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00171 ;-------------------------------------------------------------------------------------- 00E8 00172 strobe_c0 00173 ;-------------------------------------------------------------------------------------- 00174 00175 #ifdef C19 00176 LedOutL A0_C0_reg,Ax_dir,0 ;LED C0-A0 00177 LedOutL A1_C0_reg,Ax_dir,1 ;LED C0-A1 00178 LedOutL A2_C0_reg,Ax_dir,2 ;LED C0-A4 00179 LedOutH C0_C1_reg,Cx_dir,1 ;LED C0-C1 00180 LedOutH C0_C2_reg,Cx_dir,2 ;LED C0-C2 00181 LedOutH C0_C4_reg,Cx_dir,4 ;LED C0-C4 00182 #endif 00183 #ifdef SRGB 00184 LedOutInd C0_A2_reg,Ax_dir,2 ;LED C0-A4 00E8 30A8 M movlw C0_A2_reg 00E9 0084 M movwf FSR ; set indirect pointer to word 00EA 0801 M movfw TMR0 00EB 0200 M subwf INDF,w 00EC 1C03 M btfss STATUS,C 00ED 157B M bsf Ax_dir, 2 00185 LedOutInd C0_C1_reg,Cx_dir,1 ;LED C0-C1 00EE 30C9 M movlw C0_C1_reg 00EF 0084 M movwf FSR ; set indirect pointer to word 00F0 0801 M movfw TMR0 00F1 0200 M subwf INDF,w 00F2 1C03 M btfss STATUS,C 00F3 14FA M bsf Cx_dir, 1 00186 LedOutInd C0_C2_reg,Cx_dir,2 ;LED C0-C2 00F4 30C7 M movlw C0_C2_reg 00F5 0084 M movwf FSR ; set indirect pointer to word 00F6 0801 M movfw TMR0 00F7 0200 M subwf INDF,w 00F8 1C03 M btfss STATUS,C 00F9 157A M bsf Cx_dir, 2 00187 LedOutInd C0_C3_reg,Cx_dir,3 ;LED C0-C3 00FA 30AF M movlw C0_C3_reg 00FB 0084 M movwf FSR ; set indirect pointer to word 00FC 0801 M movfw TMR0 00FD 0200 M subwf INDF,w 00FE 1C03 M btfss STATUS,C 00FF 15FA M bsf Cx_dir, 3 00188 LedOutInd C0_C4_reg,Cx_dir,4 ;LED C0-C4 0100 30A2 M movlw C0_C4_reg 0101 0084 M movwf FSR ; set indirect pointer to word 0102 0801 M movfw TMR0 0103 0200 M subwf INDF,w 0104 1C03 M btfss STATUS,C 0105 167A M bsf Cx_dir, 4 00189 LedOutInd C0_C5_reg,Cx_dir,5 ;LED C0-C5 0106 30B2 M movlw C0_C5_reg 0107 0084 M movwf FSR ; set indirect pointer to word 0108 0801 M movfw TMR0 0109 0200 M subwf INDF,w MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 010A 1C03 M btfss STATUS,C 010B 16FA M bsf Cx_dir, 5 00190 #endif 00191 00192 00193 00194 setbank1 010C 1683 M bsf STATUS,RP0 ; select bank 1 010D 1303 M bcf STATUS,RP1 010E 087B 00195 movf Ax_dir,w ;set portA direction 010F 0085 00196 movwf TRISA 0110 087A 00197 movf Cx_dir,w ;set portA direction 0111 0087 00198 movwf TRISC 00199 setbank0 0112 1283 M bcf STATUS,RP0 ; select bank 0 0113 1303 M bcf STATUS,RP1 00200 0114 3000 00201 movlw b'00000000' 0115 0085 00202 movwf PORTA 00203 0116 3001 00204 movlw b'00000001' 0117 0087 00205 movwf PORTC 00206 0118 0008 00207 return 00208 #endif 00209 00210 #ifdef STROBE_C1 00211 ;-------------------------------------------------------------------------------------- 0119 00212 strobe_c1 00213 ;-------------------------------------------------------------------------------------- 00214 00215 #ifdef C19 00216 LedOutL A0_C1_reg,Ax_dir,0 ;LED C1-A0 00217 LedOutL A1_C1_reg,Ax_dir,1 ;LED C1-A1 00218 LedOutL A2_C1_reg,Ax_dir,2 ;LED C1-A4 00219 LedOutL C0_C1_reg,Cx_dir,0 ;LED C1-C0 00220 LedOutH C1_C2_reg,Cx_dir,2 ;LED C1-C2 00221 LedOutH C1_C4_reg,Cx_dir,4 ;LED C1-C4 00222 #endif 00223 00224 #ifdef SRGB 00225 LedOutInd C1_A2_reg,Ax_dir,2 ;LED C1-A4 0119 30C5 M movlw C1_A2_reg 011A 0084 M movwf FSR ; set indirect pointer to word 011B 0801 M movfw TMR0 011C 0200 M subwf INDF,w 011D 1C03 M btfss STATUS,C 011E 157B M bsf Ax_dir, 2 00226 LedOutInd C1_C0_reg,Cx_dir,0 ;LED C1-C0 011F 30C3 M movlw C1_C0_reg 0120 0084 M movwf FSR ; set indirect pointer to word 0121 0801 M movfw TMR0 0122 0200 M subwf INDF,w MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0123 1C03 M btfss STATUS,C 0124 147A M bsf Cx_dir, 0 00227 LedOutInd C1_C2_reg,Cx_dir,2 ;LED C1-C2 0125 30C6 M movlw C1_C2_reg 0126 0084 M movwf FSR ; set indirect pointer to word 0127 0801 M movfw TMR0 0128 0200 M subwf INDF,w 0129 1C03 M btfss STATUS,C 012A 157A M bsf Cx_dir, 2 00228 LedOutInd C1_C3_reg,Cx_dir,3 ;LED C1-C3 012B 30BC M movlw C1_C3_reg 012C 0084 M movwf FSR ; set indirect pointer to word 012D 0801 M movfw TMR0 012E 0200 M subwf INDF,w 012F 1C03 M btfss STATUS,C 0130 15FA M bsf Cx_dir, 3 00229 LedOutInd C1_C4_reg,Cx_dir,4 ;LED C1-C4 0131 30BF M movlw C1_C4_reg 0132 0084 M movwf FSR ; set indirect pointer to word 0133 0801 M movfw TMR0 0134 0200 M subwf INDF,w 0135 1C03 M btfss STATUS,C 0136 167A M bsf Cx_dir, 4 00230 LedOutInd C1_C5_reg,Cx_dir,5 ;LED C1-C5 0137 30C0 M movlw C1_C5_reg 0138 0084 M movwf FSR ; set indirect pointer to word 0139 0801 M movfw TMR0 013A 0200 M subwf INDF,w 013B 1C03 M btfss STATUS,C 013C 16FA M bsf Cx_dir, 5 00231 #endif 00232 00233 setbank1 013D 1683 M bsf STATUS,RP0 ; select bank 1 013E 1303 M bcf STATUS,RP1 013F 087B 00234 movf Ax_dir,w ;set portA direction 0140 0085 00235 movwf TRISA 0141 087A 00236 movf Cx_dir,w ;set portA direction 0142 0087 00237 movwf TRISC 00238 setbank0 0143 1283 M bcf STATUS,RP0 ; select bank 0 0144 1303 M bcf STATUS,RP1 00239 0145 3000 00240 movlw b'00000000' 0146 0085 00241 movwf PORTA 00242 0147 3002 00243 movlw b'00000010' 0148 0087 00244 movwf PORTC 00245 0149 0008 00246 return 00247 #endif 00248 00249 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00250 #ifdef STROBE_C2 00251 ;-------------------------------------------------------------------------------------- 014A 00252 strobe_c2 00253 ;-------------------------------------------------------------------------------------- 00254 00255 #ifdef C19 00256 LedOutL A0_C2_reg,Ax_dir,0 ;LED C2-A0 00257 LedOutL A1_C2_reg,Ax_dir,1 ;LED C2-A1 00258 LedOutL A2_C2_reg,Ax_dir,2 ;LED C2-A4 00259 LedOutL C0_C2_reg,Cx_dir,0 ;LED C2-C0 00260 LedOutL C1_C2_reg,Cx_dir,1 ;LED C2-C1 00261 LedOutH C2_C4_reg,Cx_dir,4 ;LED C2-C4 00262 #endif 00263 00264 #ifdef SRGB 00265 LedOutInd C2_A2_reg,Ax_dir,2 ;LED C2-A2 014A 30C4 M movlw C2_A2_reg 014B 0084 M movwf FSR ; set indirect pointer to word 014C 0801 M movfw TMR0 014D 0200 M subwf INDF,w 014E 1C03 M btfss STATUS,C 014F 157B M bsf Ax_dir, 2 00266 LedOutInd C2_C0_reg,Cx_dir,0 ;LED C2-C0 0150 30C2 M movlw C2_C0_reg 0151 0084 M movwf FSR ; set indirect pointer to word 0152 0801 M movfw TMR0 0153 0200 M subwf INDF,w 0154 1C03 M btfss STATUS,C 0155 147A M bsf Cx_dir, 0 00267 LedOutInd C2_C1_reg,Cx_dir,1 ;LED C2-C1 0156 30C8 M movlw C2_C1_reg 0157 0084 M movwf FSR ; set indirect pointer to word 0158 0801 M movfw TMR0 0159 0200 M subwf INDF,w 015A 1C03 M btfss STATUS,C 015B 14FA M bsf Cx_dir, 1 00268 LedOutInd C2_C3_reg,Cx_dir,3 ;LED C2-C3 015C 30A1 M movlw C2_C3_reg 015D 0084 M movwf FSR ; set indirect pointer to word 015E 0801 M movfw TMR0 015F 0200 M subwf INDF,w 0160 1C03 M btfss STATUS,C 0161 15FA M bsf Cx_dir, 3 00269 LedOutInd C2_C4_reg,Cx_dir,4 ;LED C2-C4 0162 30BE M movlw C2_C4_reg 0163 0084 M movwf FSR ; set indirect pointer to word 0164 0801 M movfw TMR0 0165 0200 M subwf INDF,w 0166 1C03 M btfss STATUS,C 0167 167A M bsf Cx_dir, 4 00270 LedOutInd C2_C5_reg,Cx_dir,5 ;LED C2-C5 0168 30C1 M movlw C2_C5_reg 0169 0084 M movwf FSR ; set indirect pointer to word MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 016A 0801 M movfw TMR0 016B 0200 M subwf INDF,w 016C 1C03 M btfss STATUS,C 016D 16FA M bsf Cx_dir, 5 00271 #endif 00272 00273 setbank1 016E 1683 M bsf STATUS,RP0 ; select bank 1 016F 1303 M bcf STATUS,RP1 0170 087B 00274 movf Ax_dir,w ;set portA direction 0171 0085 00275 movwf TRISA 0172 087A 00276 movf Cx_dir,w ;set portA direction 0173 0087 00277 movwf TRISC 00278 setbank0 0174 1283 M bcf STATUS,RP0 ; select bank 0 0175 1303 M bcf STATUS,RP1 00279 0176 3000 00280 movlw b'00000000' 0177 0085 00281 movwf PORTA 00282 0178 3004 00283 movlw b'00000100' 0179 0087 00284 movwf PORTC 00285 017A 0008 00286 return 00287 #endif 00288 00289 #ifdef STROBE_C3 00290 ;-------------------------------------------------------------------------------------- 017B 00291 strobe_c3 00292 ;-------------------------------------------------------------------------------------- 00293 00294 LedOutInd C3_A2_reg,Ax_dir,2 ;LED C3-A2 017B 30A9 M movlw C3_A2_reg 017C 0084 M movwf FSR ; set indirect pointer to word 017D 0801 M movfw TMR0 017E 0200 M subwf INDF,w 017F 1C03 M btfss STATUS,C 0180 157B M bsf Ax_dir, 2 00295 LedOutInd C3_C0_reg,Cx_dir,0 ;LED C3-C0 0181 30A7 M movlw C3_C0_reg 0182 0084 M movwf FSR ; set indirect pointer to word 0183 0801 M movfw TMR0 0184 0200 M subwf INDF,w 0185 1C03 M btfss STATUS,C 0186 147A M bsf Cx_dir, 0 00296 LedOutInd C3_C1_reg,Cx_dir,1 ;LED C3-C1 0187 30AD M movlw C3_C1_reg 0188 0084 M movwf FSR ; set indirect pointer to word 0189 0801 M movfw TMR0 018A 0200 M subwf INDF,w 018B 1C03 M btfss STATUS,C 018C 14FA M bsf Cx_dir, 1 00297 LedOutInd C3_C2_reg,Cx_dir,2 ;LED C3-C2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 018D 30AB M movlw C3_C2_reg 018E 0084 M movwf FSR ; set indirect pointer to word 018F 0801 M movfw TMR0 0190 0200 M subwf INDF,w 0191 1C03 M btfss STATUS,C 0192 157A M bsf Cx_dir, 2 00298 LedOutInd C3_C4_reg,Cx_dir,4 ;LED C3-C4 0193 30B1 M movlw C3_C4_reg 0194 0084 M movwf FSR ; set indirect pointer to word 0195 0801 M movfw TMR0 0196 0200 M subwf INDF,w 0197 1C03 M btfss STATUS,C 0198 167A M bsf Cx_dir, 4 00299 LedOutInd C3_C5_reg,Cx_dir,5 ;LED C3-C5 0199 30A4 M movlw C3_C5_reg 019A 0084 M movwf FSR ; set indirect pointer to word 019B 0801 M movfw TMR0 019C 0200 M subwf INDF,w 019D 1C03 M btfss STATUS,C 019E 16FA M bsf Cx_dir, 5 00300 00301 setbank1 019F 1683 M bsf STATUS,RP0 ; select bank 1 01A0 1303 M bcf STATUS,RP1 01A1 087B 00302 movf Ax_dir,w ;set portA direction 01A2 0085 00303 movwf TRISA 01A3 087A 00304 movf Cx_dir,w ;set portA direction 01A4 0087 00305 movwf TRISC 00306 setbank0 01A5 1283 M bcf STATUS,RP0 ; select bank 0 01A6 1303 M bcf STATUS,RP1 00307 01A7 3000 00308 movlw b'00000000' 01A8 0085 00309 movwf PORTA 00310 01A9 3008 00311 movlw b'00001000' 01AA 0087 00312 movwf PORTC 00313 01AB 0008 00314 return 00315 #endif 00316 00317 #ifdef STROBE_C4 00318 ;-------------------------------------------------------------------------------------- 01AC 00319 strobe_c4 00320 ;-------------------------------------------------------------------------------------- 00321 00322 #ifdef C19 00323 LedOutL A0_C4_reg,Ax_dir,0 ;LED C4-A0 00324 LedOutL A1_C4_reg,Ax_dir,1 ;LED C4-A1 00325 LedOutL A2_C4_reg,Ax_dir,2 ;LED C4-A4 00326 LedOutL C0_C4_reg,Cx_dir,0 ;LED C4-C0 00327 LedOutL C1_C4_reg,Cx_dir,1 ;LED C4-C1 00328 LedOutL C2_C4_reg,Cx_dir,2 ;LED C4-C2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00329 #endif 00330 00331 #ifdef SRGB 00332 LedOutInd C4_A2_reg,Ax_dir,2 ;LED C4-A2 01AC 30B6 M movlw C4_A2_reg 01AD 0084 M movwf FSR ; set indirect pointer to word 01AE 0801 M movfw TMR0 01AF 0200 M subwf INDF,w 01B0 1C03 M btfss STATUS,C 01B1 157B M bsf Ax_dir, 2 00333 LedOutInd C4_C0_reg,Cx_dir,0 ;LED C4-C0 01B2 30B4 M movlw C4_C0_reg 01B3 0084 M movwf FSR ; set indirect pointer to word 01B4 0801 M movfw TMR0 01B5 0200 M subwf INDF,w 01B6 1C03 M btfss STATUS,C 01B7 147A M bsf Cx_dir, 0 00334 LedOutInd C4_C1_reg,Cx_dir,1 ;LED C4-C1 01B8 30BA M movlw C4_C1_reg 01B9 0084 M movwf FSR ; set indirect pointer to word 01BA 0801 M movfw TMR0 01BB 0200 M subwf INDF,w 01BC 1C03 M btfss STATUS,C 01BD 14FA M bsf Cx_dir, 1 00335 LedOutInd C4_C2_reg,Cx_dir,2 ;LED C4-C2 01BE 30B8 M movlw C4_C2_reg 01BF 0084 M movwf FSR ; set indirect pointer to word 01C0 0801 M movfw TMR0 01C1 0200 M subwf INDF,w 01C2 1C03 M btfss STATUS,C 01C3 157A M bsf Cx_dir, 2 00336 LedOutInd C4_C3_reg,Cx_dir,3 ;LED C4-C3 01C4 30BD M movlw C4_C3_reg 01C5 0084 M movwf FSR ; set indirect pointer to word 01C6 0801 M movfw TMR0 01C7 0200 M subwf INDF,w 01C8 1C03 M btfss STATUS,C 01C9 15FA M bsf Cx_dir, 3 00337 LedOutInd C4_C5_reg,Cx_dir,5 ;LED C4-C5 01CA 30A5 M movlw C4_C5_reg 01CB 0084 M movwf FSR ; set indirect pointer to word 01CC 0801 M movfw TMR0 01CD 0200 M subwf INDF,w 01CE 1C03 M btfss STATUS,C 01CF 16FA M bsf Cx_dir, 5 00338 #endif 00339 00340 setbank1 01D0 1683 M bsf STATUS,RP0 ; select bank 1 01D1 1303 M bcf STATUS,RP1 01D2 087B 00341 movf Ax_dir,w ;set portA direction 01D3 0085 00342 movwf TRISA 01D4 087A 00343 movf Cx_dir,w ;set portA direction MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01D5 0087 00344 movwf TRISC 00345 setbank0 01D6 1283 M bcf STATUS,RP0 ; select bank 0 01D7 1303 M bcf STATUS,RP1 00346 01D8 3000 00347 movlw b'00000000' 01D9 0085 00348 movwf PORTA 00349 01DA 3010 00350 movlw b'00010000' 01DB 0087 00351 movwf PORTC 00352 01DC 0008 00353 return 00354 #endif 00355 00356 #ifdef STROBE_C5 00357 ;-------------------------------------------------------------------------------------- 01DD 00358 strobe_c5 00359 ;-------------------------------------------------------------------------------------- 00360 00361 LedOutInd C5_A2_reg,Ax_dir,2 ;LED C5-A2 01DD 30B7 M movlw C5_A2_reg 01DE 0084 M movwf FSR ; set indirect pointer to word 01DF 0801 M movfw TMR0 01E0 0200 M subwf INDF,w 01E1 1C03 M btfss STATUS,C 01E2 157B M bsf Ax_dir, 2 00362 LedOutInd C5_C0_reg,Cx_dir,0 ;LED C5-C0 01E3 30B5 M movlw C5_C0_reg 01E4 0084 M movwf FSR ; set indirect pointer to word 01E5 0801 M movfw TMR0 01E6 0200 M subwf INDF,w 01E7 1C03 M btfss STATUS,C 01E8 147A M bsf Cx_dir, 0 00363 LedOutInd C5_C1_reg,Cx_dir,1 ;LED C5-C1 01E9 30BB M movlw C5_C1_reg 01EA 0084 M movwf FSR ; set indirect pointer to word 01EB 0801 M movfw TMR0 01EC 0200 M subwf INDF,w 01ED 1C03 M btfss STATUS,C 01EE 14FA M bsf Cx_dir, 1 00364 LedOutInd C5_C2_reg,Cx_dir,2 ;LED C5-C2 01EF 30B9 M movlw C5_C2_reg 01F0 0084 M movwf FSR ; set indirect pointer to word 01F1 0801 M movfw TMR0 01F2 0200 M subwf INDF,w 01F3 1C03 M btfss STATUS,C 01F4 157A M bsf Cx_dir, 2 00365 LedOutInd C5_C3_reg,Cx_dir,3 ;LED C5-C3 01F5 30A0 M movlw C5_C3_reg 01F6 0084 M movwf FSR ; set indirect pointer to word 01F7 0801 M movfw TMR0 01F8 0200 M subwf INDF,w 01F9 1C03 M btfss STATUS,C MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01FA 15FA M bsf Cx_dir, 3 00366 LedOutInd C5_C4_reg,Cx_dir,4 ;LED C5-C4 01FB 30A3 M movlw C5_C4_reg 01FC 0084 M movwf FSR ; set indirect pointer to word 01FD 0801 M movfw TMR0 01FE 0200 M subwf INDF,w 01FF 1C03 M btfss STATUS,C 0200 167A M bsf Cx_dir, 4 00367 00368 setbank1 0201 1683 M bsf STATUS,RP0 ; select bank 1 0202 1303 M bcf STATUS,RP1 0203 087B 00369 movf Ax_dir,w ;set portA direction 0204 0085 00370 movwf TRISA 0205 087A 00371 movf Cx_dir,w ;set portA direction 0206 0087 00372 movwf TRISC 00373 setbank0 0207 1283 M bcf STATUS,RP0 ; select bank 0 0208 1303 M bcf STATUS,RP1 00374 0209 3000 00375 movlw b'00000000' 020A 0085 00376 movwf PORTA 00377 020B 3020 00378 movlw b'00100000' 020C 0087 00379 movwf PORTC 00380 020D 0008 00381 return 00382 #endif 00383 00384 #ifdef S19 00385 #ifndef SRGB 00386 ;-------------------------------------------------------------------------------------- 00387 strobe_a4 00388 ;-------------------------------------------------------------------------------------- 00389 00390 LedOut A4_A0_reg,Ax_dir,0 ;LED A4-A0 00391 LedOut A4_A1_reg,Ax_dir,1 ;LED A4-A1 00392 LedOut A4_A2_reg,Ax_dir,2 ;LED A4-A2 00393 LedOut A4_A5_reg,Ax_dir,5 ;LED A4-A5 00394 00395 setbank1 00396 movf Ax_dir,w ;set portA direction 00397 movwf TRISA 00398 setbank0 00399 00400 movlw b'00010000' 00401 movwf PORTA 00402 00403 return 00404 #endif 00405 #endif 00406 00407 #ifndef SRGB MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00408 ;-------------------------------------------------------------------------------------- 00409 strobe_a5 00410 ;-------------------------------------------------------------------------------------- 00411 #ifdef RGB4 00412 #ifdef Common_Cathode 00413 LedOut Cr_reg,Ax_dir,0 ;LED Cr A5-A0 00414 LedOut Cg_reg,Ax_dir,1 ;LED Cg A5-A1 00415 LedOut Cb_reg,Ax_dir,2 ;LED Cb A5-A2 00416 #else 00417 LedOut Db_reg,Ax_dir,0 ;LED Db A5-A0 00418 LedOut Ag_reg,Ax_dir,1 ;LED Ag A5-A1 00419 LedOut Br_reg,Ax_dir,2 ;LED Br A5-A2 00420 #endif 00421 #endif 00422 #ifdef BI6 00423 LedOut Cb_reg,Ax_dir,0 ;LED Dr A5-A0 00424 LedOut Cg_reg,Ax_dir,2 ;LED Db A5-A2 00425 LedOut Br_reg,Ax_dir,1 ;LED Dg A5-A1 00426 #endif 00427 #ifdef S19 00428 LedOut A5_A0_reg,Ax_dir,0 ;LED A5-A0 00429 LedOut A5_A1_reg,Ax_dir,1 ;LED A5-A1 00430 LedOut A5_A2_reg,Ax_dir,2 ;LED A5-A2 00431 LedOut A5_A4_reg,Ax_dir,4 ;LED A5-A4 00432 #endif 00433 00434 setbank1 00435 movf Ax_dir,w ;set portA direction 00436 movwf TRISA 00437 setbank0 00438 00439 #ifdef BADGE 00440 var a_out 00441 00442 movlw b'00110000' ; Badge Center LED A4-Ground 00443 movwf a_out 00444 movfw TMR0 00445 subwf Center_reg,w 00446 btfss STATUS,C 00447 bcf a_out,4 00448 movfw a_out 00449 movwf PORTA 00450 #else 00451 movlw b'00100000' 00452 movwf PORTA 00453 #endif 00454 00455 return 00456 #endif 00457 01415 #else 01416 error "unknown board strobe type" 01417 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01418 #endif 01419 #endif 01420 #endif 01421 #endif 01422 #endif 01423 01424 01425 ;************************************************************************************** 01426 ; 01427 ; State Machine 01428 ; 01429 ;************************************************************************************** 01430 01431 var instate 00000027 M instate equ mem 00000028 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01432 var max_instate 00000028 M max_instate equ mem 00000029 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01433 var IR_in 00000029 M IR_in equ mem 0000002A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01434 var command 0000002A M command equ mem 0000002B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01435 var address 0000002B M address equ mem 0000002C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01436 var toggle 0000002C M toggle equ mem 0000002D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01437 var IR_lhalf 0000002D M IR_lhalf equ mem 0000002E M mem = mem + 1 M if (mem >= mem2) MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' M endif 01438 var button 0000002E M button equ mem 0000002F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01439 #ifdef M3X3 01440 var button0 01441 var button1 01442 var button2 01443 var button3 01444 var button4 01445 #endif 01446 var tx_1 0000002F M tx_1 equ mem 00000030 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01447 var pindex2 00000030 M pindex2 equ mem 00000031 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01448 var IR_in_good 00000031 M IR_in_good equ mem 00000032 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01449 var butcount 00000032 M butcount equ mem 00000033 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01450 01451 ;-------------------------------------------------------------------------------------- 020E 01452 get_state_tbl_hi_address ; 17 cycles 01453 ;-------------------------------------------------------------------------------------- 01454 var tbl2_hi 00000033 M tbl2_hi equ mem 00000034 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01455 020E 1003 01456 bcf STATUS,0 ; clear carry flag ; 1 020F 0D27 01457 rlf instate,w ; entry = table * 2 ; 2 0210 00B0 01458 movwf pindex2 ; 3 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0211 221B 01459 call table_lookup2 ; 14 (9+2) 0212 00B3 01460 movwf tbl2_hi ; 15 0213 0008 01461 return ; 16/17 01462 01463 ;-------------------------------------------------------------------------------------- 0214 01464 get_state_tbl_low_address ; 18 cycles 01465 ;-------------------------------------------------------------------------------------- 01466 var tbl2_low 00000034 M tbl2_low equ mem 00000035 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01467 0214 1003 01468 bcf STATUS,0 ; clear carry flag (just in case) ; 1 0215 0D27 01469 rlf instate,w ; entry = table * 2 + 1 ; 2 0216 3E01 01470 addlw 1 ; 3 0217 00B0 01471 movwf pindex2 ; 4 0218 221B 01472 call table_lookup2 ; 15 (9+2) 0219 00B4 01473 movwf tbl2_low ; 16 021A 0008 01474 return ; 17/18 01475 01476 ;********************************************************************** 021B 01477 table_lookup2 ; 9 cycles 01478 ;********************************************************************** 021B 3002 01479 movlw HIGH state_jump_table ; 1 021C 008A 01480 movwf PCLATH ; 2 021D 0830 01481 movf pindex2,w ; 3 021E 3E26 01482 addlw LOW state_jump_table ; 4 021F 1803 01483 btfsc STATUS,0 ; check carry flag ; 5 0220 0A8A 01484 incf PCLATH,f ; 6 0221 0082 01485 movwf PCL ; 7 + 2 01486 01487 ;********************************************************************** 0222 01488 go_state_table ; 18 cycles 01489 ;********************************************************************** 01490 0222 0833 01491 movf tbl2_hi,w ; 1 0223 008A 01492 movwf PCLATH ; 2 0224 0834 01493 movf tbl2_low,w ; 3 0225 0082 01494 movwf PCL ; 4 01495 01496 ;********************************************************************** 0226 01497 state_jump_table 01498 ;********************************************************************** 01499 make_state_jump_table d'31' 0000 M local i = 0 M while i <= d'31' 0226 3402 3466 M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 0228 3402 3471 M dt HIGH Lstate1, LOW Lstate1 00000002 M i += 1 022A 3402 3479 M dt HIGH Lstate2, LOW Lstate2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000003 M i += 1 022C 3402 3481 M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 022E 3402 3489 M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 0230 3402 3491 M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 0232 3402 3499 M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 0234 3402 34A5 M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 0236 3402 34A9 M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 0238 3402 34B5 M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 023A 3402 34B9 M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 023C 3402 34C5 M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 023E 3402 34C9 M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 0240 3402 34D5 M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 0242 3402 34D9 M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 0244 3402 34E5 M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 0246 3402 34E9 M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 0248 3402 34F5 M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 024A 3402 34F9 M dt HIGH Lstate18, LOW Lstate18 00000013 M i += 1 024C 3403 3405 M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 024E 3403 3409 M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 0250 3403 3415 M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 0252 3403 3419 M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 0254 3403 3425 M dt HIGH Lstate23, LOW Lstate23 00000018 M i += 1 0256 3403 3429 M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 0258 3403 3435 M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 025A 3403 3439 M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 025C 3403 3445 M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 025E 3403 3449 M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0260 3403 3455 M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 0262 3403 3459 M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 0264 3403 3465 M dt HIGH Lstate31, LOW Lstate31 00000020 M i += 1 M endw 01500 01501 state_tbl 0, 6, 1, 0 0266 M Lstate0 M #ifndef MULTIBUTTON M if (0 == 0) 0266 01AE M clrf button 0267 3030 M movlw 0x30 0268 00B2 M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M #endif 0269 1829 M btfsc IR_in,0 026A 2A6E M goto Lstate0a M 026B 3006 M movlw 6 026C 00A7 M movwf instate M 026D 2B67 M goto Lcontinue M 026E M Lstate0a 026E 3001 M movlw 1 026F 00A7 M movwf instate M 0270 2B67 M goto Lcontinue 01502 state_tbl 1, 0, 2, -1 0271 M Lstate1 M #ifndef MULTIBUTTON 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 #endif 0271 1829 M btfsc IR_in,0 0272 2A76 M goto Lstate1a M 0273 3000 M movlw 0 0274 00A7 M movwf instate M 0275 2B67 M goto Lcontinue M MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0276 M Lstate1a 0276 3002 M movlw 2 0277 00A7 M movwf instate M 0278 2B67 M goto Lcontinue 01503 state_tbl 2, 0, 3, -1 0279 M Lstate2 M #ifndef MULTIBUTTON 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 #endif 0279 1829 M btfsc IR_in,0 027A 2A7E M goto Lstate2a M 027B 3000 M movlw 0 027C 00A7 M movwf instate M 027D 2B67 M goto Lcontinue M 027E M Lstate2a 027E 3003 M movlw 3 027F 00A7 M movwf instate M 0280 2B67 M goto Lcontinue 01504 state_tbl 3, 4, 3, -1 0281 M Lstate3 M #ifndef MULTIBUTTON 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 #endif 0281 1829 M btfsc IR_in,0 0282 2A86 M goto Lstate3a M 0283 3004 M movlw 4 0284 00A7 M movwf instate M 0285 2B67 M goto Lcontinue M 0286 M Lstate3a 0286 3003 M movlw 3 0287 00A7 M movwf instate MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0288 2B67 M goto Lcontinue 01505 state_tbl 4, 0, 5, -1 0289 M Lstate4 M #ifndef MULTIBUTTON 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 #endif 0289 1829 M btfsc IR_in,0 028A 2A8E M goto Lstate4a M 028B 3000 M movlw 0 028C 00A7 M movwf instate M 028D 2B67 M goto Lcontinue M 028E M Lstate4a 028E 3005 M movlw 5 028F 00A7 M movwf instate M 0290 2B67 M goto Lcontinue 01506 state_tbl 5, 7, 0, -1 0291 M Lstate5 M #ifndef MULTIBUTTON 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 #endif 0291 1829 M btfsc IR_in,0 0292 2A96 M goto Lstate5a M 0293 3007 M movlw 7 0294 00A7 M movwf instate M 0295 2B67 M goto Lcontinue M 0296 M Lstate5a 0296 3000 M movlw 0 0297 00A7 M movwf instate M 0298 2B67 M goto Lcontinue 01507 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0299 01508 Lstate6 01509 0299 1829 01510 btfsc IR_in,0 029A 2AA3 01511 goto Lstate6a 01512 029B 3000 01513 movlw 0 029C 0732 01514 addwf butcount,w 029D 1903 01515 btfsc STATUS,Z 029E 2AA1 01516 goto Lstate6b 01517 029F 0BB2 01518 decfsz butcount,f 02A0 2B67 01519 goto Lcontinue 01520 02A1 01521 Lstate6b 01522 01523 #ifndef MULTIBUTTON 02A1 142E 01524 bsf button,0 01525 #endif 02A2 2B67 01526 goto Lcontinue 01527 02A3 01528 Lstate6a 02A3 01A7 01529 clrf instate 02A4 2B67 01530 goto Lcontinue 01531 01532 state2_tbl 7, toggle, 0 02A5 M Lstate7 M ; save the 1st half of word 02A5 0829 M movf IR_in,w ; save 1st half 02A6 00AD M movwf IR_lhalf 02A7 0AA7 M incf instate,f M 02A8 2B67 M goto Lcontinue M 02A9 M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02A9 082D M movf IR_lhalf,w 02AA 0629 M xorwf IR_in,w 02AB 1D03 M btfss STATUS,Z 02AC 2AAF M goto Lstate8a 02AD 01A7 M clrf instate ; error state = zero M 02AE 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 02AF M Lstate8a 02AF 1829 M btfsc IR_in,0 02B0 102C M bcf toggle,0 02B1 1C29 M btfss IR_in,0 02B2 142C M bsf toggle,0 M 02B3 0AA7 M incf instate,f 02B4 2B67 M goto Lcontinue MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01533 state2_tbl 9, address, 4 02B5 M Lstate9 M ; save the 1st half of word 02B5 0829 M movf IR_in,w ; save 1st half 02B6 00AD M movwf IR_lhalf 02B7 0AA7 M incf instate,f M 02B8 2B67 M goto Lcontinue M 02B9 M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02B9 082D M movf IR_lhalf,w 02BA 0629 M xorwf IR_in,w 02BB 1D03 M btfss STATUS,Z 02BC 2ABF M goto Lstate10a 02BD 01A7 M clrf instate ; error state = zero M 02BE 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 02BF M Lstate10a 02BF 1829 M btfsc IR_in,0 02C0 122B M bcf address,4 02C1 1C29 M btfss IR_in,0 02C2 162B M bsf address,4 M 02C3 0AA7 M incf instate,f 02C4 2B67 M goto Lcontinue 01534 state2_tbl d'11', address, 3 02C5 M Lstate11 M ; save the 1st half of word 02C5 0829 M movf IR_in,w ; save 1st half 02C6 00AD M movwf IR_lhalf 02C7 0AA7 M incf instate,f M 02C8 2B67 M goto Lcontinue M 02C9 M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02C9 082D M movf IR_lhalf,w 02CA 0629 M xorwf IR_in,w 02CB 1D03 M btfss STATUS,Z 02CC 2ACF M goto Lstate12a 02CD 01A7 M clrf instate ; error state = zero M 02CE 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 02CF M Lstate12a 02CF 1829 M btfsc IR_in,0 02D0 11AB M bcf address,3 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02D1 1C29 M btfss IR_in,0 02D2 15AB M bsf address,3 M 02D3 0AA7 M incf instate,f 02D4 2B67 M goto Lcontinue 01535 state2_tbl d'13', address, 2 02D5 M Lstate13 M ; save the 1st half of word 02D5 0829 M movf IR_in,w ; save 1st half 02D6 00AD M movwf IR_lhalf 02D7 0AA7 M incf instate,f M 02D8 2B67 M goto Lcontinue M 02D9 M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02D9 082D M movf IR_lhalf,w 02DA 0629 M xorwf IR_in,w 02DB 1D03 M btfss STATUS,Z 02DC 2ADF M goto Lstate14a 02DD 01A7 M clrf instate ; error state = zero M 02DE 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 02DF M Lstate14a 02DF 1829 M btfsc IR_in,0 02E0 112B M bcf address,2 02E1 1C29 M btfss IR_in,0 02E2 152B M bsf address,2 M 02E3 0AA7 M incf instate,f 02E4 2B67 M goto Lcontinue 01536 state2_tbl d'15', address, 1 02E5 M Lstate15 M ; save the 1st half of word 02E5 0829 M movf IR_in,w ; save 1st half 02E6 00AD M movwf IR_lhalf 02E7 0AA7 M incf instate,f M 02E8 2B67 M goto Lcontinue M 02E9 M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02E9 082D M movf IR_lhalf,w 02EA 0629 M xorwf IR_in,w 02EB 1D03 M btfss STATUS,Z 02EC 2AEF M goto Lstate16a 02ED 01A7 M clrf instate ; error state = zero M 02EE 2B67 M goto Lcontinue MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE M M ; set the correct bit in output vars. 02EF M Lstate16a 02EF 1829 M btfsc IR_in,0 02F0 10AB M bcf address,1 02F1 1C29 M btfss IR_in,0 02F2 14AB M bsf address,1 M 02F3 0AA7 M incf instate,f 02F4 2B67 M goto Lcontinue 01537 state2_tbl d'17', address, 0 02F5 M Lstate17 M ; save the 1st half of word 02F5 0829 M movf IR_in,w ; save 1st half 02F6 00AD M movwf IR_lhalf 02F7 0AA7 M incf instate,f M 02F8 2B67 M goto Lcontinue M 02F9 M Lstate18 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02F9 082D M movf IR_lhalf,w 02FA 0629 M xorwf IR_in,w 02FB 1D03 M btfss STATUS,Z 02FC 2AFF M goto Lstate18a 02FD 01A7 M clrf instate ; error state = zero M 02FE 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 02FF M Lstate18a 02FF 1829 M btfsc IR_in,0 0300 102B M bcf address,0 0301 1C29 M btfss IR_in,0 0302 142B M bsf address,0 M 0303 0AA7 M incf instate,f 0304 2B67 M goto Lcontinue 01538 state2_tbl d'19', command, 5 0305 M Lstate19 M ; save the 1st half of word 0305 0829 M movf IR_in,w ; save 1st half 0306 00AD M movwf IR_lhalf 0307 0AA7 M incf instate,f M 0308 2B67 M goto Lcontinue M 0309 M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0309 082D M movf IR_lhalf,w 030A 0629 M xorwf IR_in,w MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 030B 1D03 M btfss STATUS,Z 030C 2B0F M goto Lstate20a 030D 01A7 M clrf instate ; error state = zero M 030E 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 030F M Lstate20a 030F 1829 M btfsc IR_in,0 0310 12AA M bcf command,5 0311 1C29 M btfss IR_in,0 0312 16AA M bsf command,5 M 0313 0AA7 M incf instate,f 0314 2B67 M goto Lcontinue 01539 state2_tbl d'21', command, 4 0315 M Lstate21 M ; save the 1st half of word 0315 0829 M movf IR_in,w ; save 1st half 0316 00AD M movwf IR_lhalf 0317 0AA7 M incf instate,f M 0318 2B67 M goto Lcontinue M 0319 M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0319 082D M movf IR_lhalf,w 031A 0629 M xorwf IR_in,w 031B 1D03 M btfss STATUS,Z 031C 2B1F M goto Lstate22a 031D 01A7 M clrf instate ; error state = zero M 031E 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 031F M Lstate22a 031F 1829 M btfsc IR_in,0 0320 122A M bcf command,4 0321 1C29 M btfss IR_in,0 0322 162A M bsf command,4 M 0323 0AA7 M incf instate,f 0324 2B67 M goto Lcontinue 01540 state2_tbl d'23', command, 3 0325 M Lstate23 M ; save the 1st half of word 0325 0829 M movf IR_in,w ; save 1st half 0326 00AD M movwf IR_lhalf 0327 0AA7 M incf instate,f M 0328 2B67 M goto Lcontinue M MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0329 M Lstate24 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0329 082D M movf IR_lhalf,w 032A 0629 M xorwf IR_in,w 032B 1D03 M btfss STATUS,Z 032C 2B2F M goto Lstate24a 032D 01A7 M clrf instate ; error state = zero M 032E 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 032F M Lstate24a 032F 1829 M btfsc IR_in,0 0330 11AA M bcf command,3 0331 1C29 M btfss IR_in,0 0332 15AA M bsf command,3 M 0333 0AA7 M incf instate,f 0334 2B67 M goto Lcontinue 01541 state2_tbl d'25', command, 2 0335 M Lstate25 M ; save the 1st half of word 0335 0829 M movf IR_in,w ; save 1st half 0336 00AD M movwf IR_lhalf 0337 0AA7 M incf instate,f M 0338 2B67 M goto Lcontinue M 0339 M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0339 082D M movf IR_lhalf,w 033A 0629 M xorwf IR_in,w 033B 1D03 M btfss STATUS,Z 033C 2B3F M goto Lstate26a 033D 01A7 M clrf instate ; error state = zero M 033E 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 033F M Lstate26a 033F 1829 M btfsc IR_in,0 0340 112A M bcf command,2 0341 1C29 M btfss IR_in,0 0342 152A M bsf command,2 M 0343 0AA7 M incf instate,f 0344 2B67 M goto Lcontinue 01542 state2_tbl d'27', command, 1 0345 M Lstate27 M ; save the 1st half of word 0345 0829 M movf IR_in,w ; save 1st half MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0346 00AD M movwf IR_lhalf 0347 0AA7 M incf instate,f M 0348 2B67 M goto Lcontinue M 0349 M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0349 082D M movf IR_lhalf,w 034A 0629 M xorwf IR_in,w 034B 1D03 M btfss STATUS,Z 034C 2B4F M goto Lstate28a 034D 01A7 M clrf instate ; error state = zero M 034E 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 034F M Lstate28a 034F 1829 M btfsc IR_in,0 0350 10AA M bcf command,1 0351 1C29 M btfss IR_in,0 0352 14AA M bsf command,1 M 0353 0AA7 M incf instate,f 0354 2B67 M goto Lcontinue 01543 state2_tbl d'29', command, 0 0355 M Lstate29 M ; save the 1st half of word 0355 0829 M movf IR_in,w ; save 1st half 0356 00AD M movwf IR_lhalf 0357 0AA7 M incf instate,f M 0358 2B67 M goto Lcontinue M 0359 M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0359 082D M movf IR_lhalf,w 035A 0629 M xorwf IR_in,w 035B 1D03 M btfss STATUS,Z 035C 2B5F M goto Lstate30a 035D 01A7 M clrf instate ; error state = zero M 035E 2B67 M goto Lcontinue M M ; set the correct bit in output vars. 035F M Lstate30a 035F 1829 M btfsc IR_in,0 0360 102A M bcf command,0 0361 1C29 M btfss IR_in,0 0362 142A M bsf command,0 M 0363 0AA7 M incf instate,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0364 2B67 M goto Lcontinue 01544 0365 01545 Lstate31 0365 01A7 01546 clrf instate 0366 1431 01547 bsf IR_in_good,0 01548 0367 01549 Lcontinue 0367 0008 01550 return 01551 01552 ;-------------------------------------------------------------------------------------- 0368 01553 read_button_in ; 5 cycles 01554 ;-------------------------------------------------------------------------------------- 01555 ; Portability : hardcoded button port 01556 ; 01557 0368 102E 01558 bcf button,0 ; 1 0369 10AE 01559 bcf button,1 ; 1 01560 #ifndef SIM_DEBUG 01561 #ifdef DEDICATED_BUTTON2 036A 1E85 01562 btfss PORTA,5 ; 2 ; stick has 2 buttons. 036B 14AE 01563 bsf button,1 ; 3 036C 1E05 01564 btfss PORTA,4 ; 2 036D 142E 01565 bsf button,0 ; 3 01566 #else 01567 btfss PORTA,5 ; 2 01568 bsf button,0 ; 3 01569 #endif 01570 #endif 036E 0008 01571 return 01572 01573 ;-------------------------------------------------------------------------------------- 036F 01574 read_ir_in ; 5 cycles 01575 ;-------------------------------------------------------------------------------------- 01576 036F 1029 01577 bcf IR_in,0 ; 1 01578 #ifndef SIM_DEBUG 0370 1985 01579 btfsc PORTA,3 ; 2 01580 #endif 0371 1429 01581 bsf IR_in,0 ; 3 01582 01583 ; movf tx_1,w ; loopback for testing HACK!! ;1 01584 ; xorlw 0x01 ; loopback for testing HACK!! ;2 01585 ; movwf IR_in ; loopback for testing HACK!! ;3 0372 0008 01586 return ; 4/5 01587 01588 ;-------------------------------------------------------------------------------------- 0373 01589 set_max_state ; 5-7 cycles 01590 ;-------------------------------------------------------------------------------------- 0373 0828 01591 movf max_instate,w 0374 0227 01592 subwf instate,w 0375 1C03 01593 btfss STATUS,C 0376 2B79 01594 goto smi_l1 0377 0827 01595 movf instate,w MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0378 00A8 01596 movwf max_instate 0379 01597 smi_l1 0379 0008 01598 return 01599 01600 ;-------------------------------------------------------------------------------------- 037A 01601 get_next_tx_bit ; 11 cycles 01602 ;-------------------------------------------------------------------------------------- 01603 037A 102F 01604 bcf tx_1,0 ;1 037B 03BE 01605 decf scount,f ;2 037C 1003 01606 bcf STATUS, C ; clear carry bit ;3 037D 0CBD 01607 rrf out3,f ;4 037E 0CBC 01608 rrf out2,f ;5 037F 0CBB 01609 rrf out1,f ;6 0380 0CBA 01610 rrf out0,f ;7 0381 1803 01611 btfsc STATUS, C ;8 0382 142F 01612 bsf tx_1,0 ;9 01613 01614 ; movf tx_1,w ; loopback for testing HACK!! 01615 ; xorlw 0x01 ; loopback for testing HACK!! 01616 ; movwf tx_1 ; loopback for testing HACK!! 01617 ; mult_nop d'6' ; for debuging 01618 0383 0008 01619 return ;10/11 01620 01621 ;********************************************************************** 0384 01622 qdelay 01623 ;********************************************************************** 01624 var qcount 00000035 M qcount equ mem 00000036 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01625 0384 00B5 01626 movwf qcount 0385 01627 delay_loop2 0385 0BB5 01628 decfsz qcount,1 0386 2B85 01629 goto delay_loop2 0387 0008 01630 return 01631 ;********************************************************************** 0388 01632 rf_command_out 01633 ;********************************************************************** 01634 01635 var out_address 00000036 M out_address equ mem 00000037 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01636 var out_command 00000037 M out_command equ mem 00000038 M mem = mem + 1 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem >= mem2) M error 'Too much var space used' M endif 01637 var out_toggle 00000038 M out_toggle equ mem 00000039 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01638 var out_pattern 00000039 M out_pattern equ mem 0000003A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01639 var out0 0000003A M out0 equ mem 0000003B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01640 var out1 0000003B M out1 equ mem 0000003C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01641 var out2 0000003C M out2 equ mem 0000003D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01642 var out3 0000003D M out3 equ mem 0000003E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01643 var scount 0000003E M scount equ mem 0000003F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01644 0388 01BB 01645 clrf out1 0389 01BC 01646 clrf out2 038A 01BD 01647 clrf out3 01648 01649 ; start flag 038B 30A0 01650 movlw B'10100000' 038C 00BA 01651 movwf out0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01652 01653 01654 ; toggle bit 038D 09B8 01655 comf out_toggle,f ; toggle the toggle flag 038E 1C38 01656 btfss out_toggle,0 038F 143B 01657 bsf out1,0 0390 1838 01658 btfsc out_toggle,0 0391 14BB 01659 bsf out1,1 01660 01661 ; address bits 0392 1E36 01662 btfss out_address,4 0393 153B 01663 bsf out1,2 0394 1A36 01664 btfsc out_address,4 0395 15BB 01665 bsf out1,3 01666 0396 1DB6 01667 btfss out_address,3 0397 163B 01668 bsf out1,4 0398 19B6 01669 btfsc out_address,3 0399 16BB 01670 bsf out1,5 01671 039A 1D36 01672 btfss out_address,2 039B 173B 01673 bsf out1,6 039C 1936 01674 btfsc out_address,2 039D 17BB 01675 bsf out1,7 01676 039E 1CB6 01677 btfss out_address,1 039F 143C 01678 bsf out2,0 03A0 18B6 01679 btfsc out_address,1 03A1 14BC 01680 bsf out2,1 01681 03A2 1C36 01682 btfss out_address,0 03A3 153C 01683 bsf out2,2 03A4 1836 01684 btfsc out_address,0 03A5 15BC 01685 bsf out2,3 01686 01687 ; command bits 03A6 1EB7 01688 btfss out_command,5 03A7 163C 01689 bsf out2,4 03A8 1AB7 01690 btfsc out_command,5 03A9 16BC 01691 bsf out2,5 01692 03AA 1E37 01693 btfss out_command,4 03AB 173C 01694 bsf out2,6 03AC 1A37 01695 btfsc out_command,4 03AD 17BC 01696 bsf out2,7 01697 03AE 1DB7 01698 btfss out_command,3 03AF 143D 01699 bsf out3,0 03B0 19B7 01700 btfsc out_command,3 03B1 14BD 01701 bsf out3,1 01702 03B2 1D37 01703 btfss out_command,2 03B3 153D 01704 bsf out3,2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03B4 1937 01705 btfsc out_command,2 03B5 15BD 01706 bsf out3,3 01707 03B6 1CB7 01708 btfss out_command,1 03B7 163D 01709 bsf out3,4 03B8 18B7 01710 btfsc out_command,1 03B9 16BD 01711 bsf out3,5 01712 03BA 1C37 01713 btfss out_command,0 03BB 173D 01714 bsf out3,6 03BC 1837 01715 btfsc out_command,0 03BD 17BD 01716 bsf out3,7 01717 03BE 3021 01718 movlw 0x21 03BF 00BE 01719 movwf scount 01720 03C0 0008 01721 return 01722 01723 #ifdef BIN2LED 01724 ;********************************************************************** 01725 bin2led 01726 ;********************************************************************** 01727 var b2l_out_hi 01728 var b2l_out_low 01729 var b2l_lcount 01730 var b2l_in_red 01731 var b2l_in_green 01732 01733 clrf b2l_out_hi 01734 clrf b2l_out_low 01735 movlw 0x08 01736 movwf b2l_lcount 01737 b2l_loop 01738 bcf STATUS, C 01739 rrf b2l_in_green,f 01740 rlf b2l_out_low,f 01741 rlf b2l_out_hi,f 01742 rrf b2l_in_red,f 01743 rlf b2l_out_low,f 01744 rlf b2l_out_hi,f 01745 01746 decfsz b2l_lcount,f 01747 goto b2l_loop 01748 return 01749 #endif 01750 01751 #ifdef FLIPBYTE 01752 ;********************************************************************** 01753 flipbyte 01754 ;********************************************************************** 01755 var flip_in 01756 var flip_out 01757 var flip_lcount MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01758 01759 movwf flip_in 01760 clrf flip_out 01761 movlw 0x08 01762 movwf flip_lcount 01763 fbyte_loop 01764 bcf STATUS, C 01765 rrf flip_in,f 01766 rlf flip_out,f 01767 01768 decfsz flip_lcount,f 01769 goto fbyte_loop 01770 01771 movfw flip_out 01772 return 01773 #endif 01774 01775 ;********************************************************************** 03C1 01776 delay 01777 ;********************************************************************** 01778 01779 var delay_count 0000003F M delay_count equ mem 00000040 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01780 01781 ; movlw 0ffh 03C1 00BF 01782 movwf delay_count 03C2 01783 delay_loop 03C2 0000 01784 nop 03C3 0BBF 01785 decfsz delay_count,1 03C4 2BC2 01786 goto delay_loop 03C5 0008 01787 return 01788 01789 ;********************************************************************** 03C6 01790 next_pattern 01791 ;********************************************************************** 03C6 0AC7 01792 incf pattern,f 03C7 0847 01793 movf pattern,w 03C8 3C10 01794 sublw NUM_TAB+1 ; max pattern? 03C9 1903 01795 btfsc STATUS,2 ; z bit check 03CA 01C7 01796 clrf pattern ; reset to zero 03CB 0847 01797 movfw pattern 03CC 00B9 01798 movwf out_pattern 03CD 01F9 01799 clrf pindex 03CE 0008 01800 return 01801 01802 ;********************************************************************** 03CF 01803 past_pattern 01804 ;********************************************************************** 03CF 03C7 01805 decf pattern,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03D0 0847 01806 movf pattern,w 03D1 3E01 01807 addlw 1 ; max pattern? 03D2 1D03 01808 btfss STATUS,2 ; z bit check 03D3 2BD7 01809 goto past_exit 03D4 300F 01810 movlw NUM_TAB 03D5 00C7 01811 movwf pattern 03D6 00B9 01812 movwf out_pattern 03D7 01813 past_exit 03D7 01F9 01814 clrf pindex 03D8 0008 01815 return 01816 01817 ;********************************************************************** 03D9 01818 set_pattern ;set pattern from IR 01819 ;********************************************************************** 01820 ; extra logic because all the different blinkes talk to each other, but 01821 ; do not have the same number of patterns. So if blinkie "A" sents a 01822 ; pattern 22 to blinkie "B" which only has 10 patterns, Blinkie "B" 01823 ; starts to show pattern 2. (22 % 10 a mod function.) But to make 01824 ; things fair in blinkie wars, it will transmit pattern 22 to other 01825 ; blinkies. 01826 ;********************************************************************** 01827 03D9 082A 01828 movfw command 03DA 00C7 01829 movwf pattern 03DB 00B9 01830 movwf out_pattern 03DC 01831 set_loop 03DC 3EF0 01832 addlw 0xff-NUM_TAB 03DD 1C03 01833 btfss STATUS, C 03DE 2BE3 01834 goto set_exit 01835 03DF 300F 01836 movlw NUM_TAB 03E0 02C7 01837 subwf pattern,f 03E1 0847 01838 movfw pattern 03E2 2BDC 01839 goto set_loop 01840 03E3 01841 set_exit 03E3 01F9 01842 clrf pindex 03E4 0008 01843 return 01844 01845 ;********************************************************************** 03E5 01846 strobe_delay 01847 ;********************************************************************** 01848 01849 var strobe_count 00000040 M strobe_count equ mem 00000041 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01850 03E5 00C0 01851 movwf strobe_count 03E6 01852 strobe_delay1 03E6 1021 01853 bcf nextf,0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01854 03E7 01855 strobe_delay2 03E7 1C21 01856 btfss nextf,0 03E8 2BE7 01857 goto strobe_delay2 01858 03E9 0BC0 01859 decfsz strobe_count,f 03EA 2BE6 01860 goto strobe_delay1 01861 03EB 0008 01862 return 01863 01864 ;********************************************************************** 03EC 01865 display_pattern_id 01866 ;********************************************************************** 03EC 0A47 01867 incf pattern,w ; W = pattern + 1 01868 #ifdef SRGB 03ED 00CA 01869 movwf in1 03EE 01C9 01870 clrf in0 03EF 01CB 01871 clrf in2 03F0 01CC 01872 clrf in3 03F1 01CD 01873 clrf in4 03F2 01CE 01874 clrf in5 01875 #else 01876 movwf in0 01877 #endif 01878 01879 #ifdef S19 01880 call flipbyte 01881 movwf in0 01882 #endif 01883 #ifdef BI6 01884 #ifdef MONO 01885 call flipbyte 01886 movwf in0 01887 #else 01888 movwf b2l_in_green 01889 clrf b2l_in_red 01890 call bin2led 01891 movf b2l_out_hi,w 01892 movwf in0 01893 movf b2l_out_low,w 01894 movwf in1 01895 #endif 01896 #endif 01897 01898 #ifdef M3X3 01899 movwf b2l_in_green 01900 clrf b2l_in_red 01901 call bin2led 01902 movf b2l_out_hi,w 01903 movwf in0 01904 movf b2l_out_low,w 01905 movwf in1 01906 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01907 01908 #ifdef C19 01909 ; outer ring hars the pattern number 01910 movwf b2l_in_red 01911 clrf b2l_in_green 01912 call bin2led 01913 movf b2l_out_hi,w 01914 movwf in0 01915 movf b2l_out_low,w 01916 movwf in1 01917 01918 ; center LED turned on 01919 clrf in2 01920 clrf in3 01921 movlw b'00001100' 01922 movwf in4 01923 01924 ; middle ring on if demo mode 01925 btfss demo_mode,0 01926 goto skip4 01927 01928 comf in3 01929 movlw b'11111100' 01930 movwf in4 01931 skip4 01932 01933 #endif 01934 01935 #ifdef M3X3 01936 clrf in2 01937 01938 movlw b'11100000' 01939 btfsc demo_mode,0 01940 movwf in2 01941 #endif 01942 01943 #ifdef S19 01944 clrf in1 01945 clrf in2 01946 01947 movlw b'11100000' 01948 btfsc demo_mode,0 01949 movwf in2 01950 #else 01951 #ifdef BI6 01952 #ifdef MONO 01953 btfsc demo_mode,0 01954 bsf in0,2 01955 #else ; bicolor 01956 btfsc demo_mode,0 01957 bsf in1,4 01958 #endif ; end Mono/bicolor 01959 #endif ; end BI MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01960 #endif ; end S19/BI6 01961 01962 #ifdef RGB4 01963 btfsc demo_mode,0 01964 bsf in1,7 01965 #endif 01966 #ifdef SRGB 03F3 3038 01967 movlw b'00111000' 03F4 1858 01968 btfsc demo_mode,0 03F5 00CD 01969 movwf in4 01970 #endif 01971 03F6 30FF 01972 movlw 0xFF 03F7 2516 01973 call display_1bit 01974 03F8 01C9 01975 clrf in0 03F9 01CA 01976 clrf in1 03FA 01CB 01977 clrf in2 03FB 3001 01978 movlw 0x01 03FC 2516 01979 call display_1bit 03FD 0008 01980 return 01981 01982 ;********************************************************************** 03FE 01983 setup_pattern_table 01984 ;********************************************************************** 01985 var tbl_hi 00000041 M tbl_hi equ mem 00000042 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01986 var tbl_low 00000042 M tbl_low equ mem 00000043 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01987 var setup_pattern_temp 00000043 M setup_pattern_temp equ mem 00000044 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01988 var temp_high 00000044 M temp_high equ mem 00000045 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01989 01990 ;stop2 01991 ; movf pattern,w 01992 ; btfss STATUS,Z MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01993 ; goto slabel1 01994 ; 01995 ; if patten is zero, check eeprom and verify 1st entry is not a 0x00 01996 ; if it is switch to next pattern. 01997 01998 ; clrw 01999 ; call read_eeprom 02000 ; movwf setup_pattern_temp 02001 02002 ; clrf demo_mode 02003 ; btfsc setup_pattern_temp,7 02004 ; bsf demo_mode,0 02005 02006 ; movfw setup_pattern_temp 02007 ; btfss STATUS,Z 02008 ; goto sreturn 02009 02010 ; call next_pattern 02011 ; goto stop2 02012 02013 ;slabel1 02014 ; 02015 ; Set the pattern (table) 02016 ; 03FE 3005 02017 movlw HIGH MasterTable 03FF 00C1 02018 movwf tbl_hi 0400 30AC 02019 movlw LOW MasterTable 0401 00C2 02020 movwf tbl_low 02021 02022 ; get the high address for the pattern table 0402 1003 02023 bcf STATUS,0 ; clear carry flag 0403 0D47 02024 rlf pattern,w ; entry = table * 2 0404 00F9 02025 movwf pindex 0405 138B 02026 bcf INTCON, GIE ; disable INTs 0406 259F 02027 call table_lookup 0407 178B 02028 bsf INTCON, GIE ; enable INTs 0408 00C4 02029 movwf temp_high ; can't put it in tbl_high yet 02030 02031 ; get the low address for the pattern table 0409 1403 02032 bsf STATUS,0 ; set carry 040A 0D47 02033 rlf pattern,w ; entry = table * 2 + 1 040B 00F9 02034 movwf pindex 040C 138B 02035 bcf INTCON, GIE ; disable INTs 040D 259F 02036 call table_lookup 040E 178B 02037 bsf INTCON, GIE ; enable INTs 040F 00C2 02038 movwf tbl_low 02039 0410 0844 02040 movf temp_high,w 0411 00C1 02041 movwf tbl_hi 02042 0412 02043 sreturn 0412 0008 02044 return 02045 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02046 ;********************************************************************** 0413 02047 get_next_pattern_entry 02048 ;********************************************************************** 02049 var pclath_save 00000045 M pclath_save equ mem 00000046 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02050 var temp2 00000046 M temp2 equ mem 00000047 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02051 02052 ; if hi address is 0x21 pattern is in eeprom 0413 3021 02053 movlw 0x21 0414 0241 02054 subwf tbl_hi,w 0415 1D03 02055 btfss STATUS,Z 0416 2C1B 02056 goto glabel1 02057 02058 ; table in eeprom 0417 0842 02059 movfw tbl_low 0418 0779 02060 addwf pindex,w 02061 0419 2444 02062 call read_eeprom 02063 041A 2C2D 02064 goto greturn 02065 02066 02067 ; table in program memory 041B 02068 glabel1 041B 138B 02069 bcf INTCON, GIE ; disable INTs 041C 080A 02070 movfw PCLATH 041D 00C5 02071 movwf pclath_save 02072 041E 0841 02073 movfw tbl_hi 041F 0778 02074 addwf pindex1,w 0420 00DC 02075 movwf offset_hi 02076 0421 1003 02077 bcf STATUS,C 0422 0842 02078 movfw tbl_low 0423 0779 02079 addwf pindex,w 0424 00DD 02080 movwf offset_low 02081 0425 1803 02082 btfsc STATUS,C 0426 0ADC 02083 incf offset_hi,f 0427 25A6 02084 call jump_address 02085 0428 00C6 02086 movwf temp2 0429 0845 02087 movfw pclath_save 042A 008A 02088 movwf PCLATH MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 042B 0846 02089 movfw temp2 042C 178B 02090 bsf INTCON, GIE ; enable INTs 02091 042D 02092 greturn 042D 0FF9 02093 incfsz pindex,f 042E 2C30 02094 goto gskip 042F 0AF8 02095 incf pindex1,f 0430 02096 gskip 0430 0008 02097 return 02098 02099 02100 ;********************************************************************** 0431 02101 write_eeprom 02102 ; expects EEPROM address and data in pindex and input 02103 ; makes sure previous write (if any) has completed before proceeding 02104 ;********************************************************************** 02105 setbank1 0431 1683 M bsf STATUS,RP0 ; select bank 1 0432 1303 M bcf STATUS,RP1 02106 0433 189C 02107 btfsc EECON1,WR ;wait for WR to clear 0434 2C33 02108 goto $-1 02109 0435 138B 02110 bcf INTCON, GIE ; disable INTs 0436 151C 02111 bsf EECON1,WREN ;enable writes 0437 0879 02112 movf pindex,w ;set address 0438 009B 02113 movwf EEADR 0439 0877 02114 movf input,w ;set data 043A 009A 02115 movwf EEDAT 043B 3055 02116 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 043C 009D 02117 movwf EECON2 043D 30AA 02118 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 043E 009D 02119 movwf EECON2 043F 149C 02120 bsf EECON1,WR ;initiate a write cycle 0440 178B 02121 bsf INTCON, GIE ; enable INT 02122 02123 setbank0 0441 1283 M bcf STATUS,RP0 ; select bank 0 0442 1303 M bcf STATUS,RP1 0443 0008 02124 return 02125 02126 02127 ;********************************************************************** 0444 02128 read_eeprom 02129 ; expects EEPROM address in W 02130 ; returns EEPROM data in W 02131 ; makes sure previous write (if any) has completed before proceeding 02132 ;********************************************************************** 0444 138B 02133 bcf INTCON, GIE ; disable INTs 02134 setbank1 0445 1683 M bsf STATUS,RP0 ; select bank 1 0446 1303 M bcf STATUS,RP1 02135 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0447 189C 02136 btfsc EECON1,WR ;wait for WR to clear 0448 2C47 02137 goto $-1 02138 0449 111C 02139 bcf EECON1,WREN ;disable writes 044A 009B 02140 movwf EEADR ;EEADR = W 044B 139C 02141 bcf EECON1,7 ;clear EEPGD 044C 141C 02142 bsf EECON1,RD ;initiate a read cycle 044D 081A 02143 movf EEDAT,w ;W = EEDAT 02144 02145 setbank0 044E 1283 M bcf STATUS,RP0 ; select bank 0 044F 1303 M bcf STATUS,RP1 0450 178B 02146 bsf INTCON, GIE ; enable INT 0451 0008 02147 return 02148 02149 ;********************************************************************** 0452 02150 read_demo_mode 02151 ;********************************************************************** 0452 30DE 02152 movlw LOW demo_store 0453 2444 02153 call read_eeprom 0454 00D8 02154 movwf demo_mode 0455 0008 02155 return 02156 02157 ;********************************************************************** 0456 02158 toggle_demo 02159 ;********************************************************************** 0456 2452 02160 call read_demo_mode 02161 0457 1C58 02162 btfss demo_mode,0 ; 0458 2C5B 02163 goto tdemo_on 02164 02165 ; toggle off 0459 1058 02166 bcf demo_mode,0 045A 2C5C 02167 goto tdemo_cont 02168 045B 02169 tdemo_on 045B 1458 02170 bsf demo_mode,0 02171 045C 02172 tdemo_cont 045C 30DE 02173 movlw LOW demo_store 045D 00F9 02174 movwf pindex 045E 0858 02175 movfw demo_mode 045F 00F7 02176 movwf input 0460 2431 02177 call write_eeprom 02178 0461 23EC 02179 call display_pattern_id 0462 23EC 02180 call display_pattern_id 02181 0463 0008 02182 return 02183 02184 ;********************************************************************** 0464 02185 pattern_driver 02186 ;********************************************************************** MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02187 02188 var pattern 00000047 M pattern equ mem 00000048 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02189 var tbltype 00000048 M tbltype equ mem 00000049 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02190 var in0 00000049 M in0 equ mem 0000004A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02191 var in1 0000004A M in1 equ mem 0000004B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02192 var in2 0000004B M in2 equ mem 0000004C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02193 #ifdef C19 02194 var in3 02195 var in4 02196 var in5 02197 var in6 02198 var in7 02199 var in8 02200 var in9 02201 #endif 02202 #ifdef SRGB 02203 var in3 0000004C M in3 equ mem 0000004D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02204 var in4 0000004D M in4 equ mem 0000004E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02205 var in5 0000004E M in5 equ mem 0000004F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02206 var in6 0000004F M in6 equ mem 00000050 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02207 var in7 00000050 M in7 equ mem 00000051 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02208 var in8 00000051 M in8 equ mem 00000052 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02209 var in9 00000052 M in9 equ mem 00000053 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02210 var in10 00000053 M in10 equ mem 00000054 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02211 var in11 00000054 M in11 equ mem 00000055 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02212 var in12 00000055 M in12 equ mem 00000056 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02213 #endif 02214 #ifdef BADGE 02215 var in3 02216 #endif 02217 var speed MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000056 M speed equ mem 00000057 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02218 var pspeed 00000057 M pspeed equ mem 00000058 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02219 var demo_mode 00000058 M demo_mode equ mem 00000059 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02220 var psize 00000059 M psize equ mem 0000005A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02221 02222 ; need to be able to access from page1 & page2 for eeprom read/write 02223 var_all_bank pindex ; pattern index 00000079 M pindex equ mem2 00000078 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02224 var_all_bank pindex1 ; pattern index 00000078 M pindex1 equ mem2 00000077 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02225 var_all_bank input 00000077 M input equ mem2 00000076 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02226 0464 02227 ptop 02228 02229 0464 23FE 02230 call setup_pattern_table 02231 0465 01F9 02232 clrf pindex 0466 01F8 02233 clrf pindex1 02234 02235 ; load the table type (Currently only 1 type) 0467 2413 02236 call get_next_pattern_entry 0468 00C8 02237 movwf tbltype 0469 13C8 02238 bcf tbltype,7 ; using top bit for demo mode. MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02239 02240 ; load the speed (someday this will be a table type 1 only thing.) 046A 2413 02241 call get_next_pattern_entry 046B 00D7 02242 movwf pspeed 046C 0AD7 02243 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 02244 02245 ; load the table size 046D 2413 02246 call get_next_pattern_entry ;4rgb 046E 00D9 02247 movwf psize ;4rgb 02248 046F 02249 ploop0 02250 ; 02251 ; Check for IR command in 02252 ; 046F 1C31 02253 btfss IR_in_good,0 0470 2C8D 02254 goto button_check 02255 0471 02256 blinkie_check 0471 3007 02257 movlw 0x07 ; blinkines use address 0x07 (Experimental) 0472 022B 02258 subwf address,w 0473 1D03 02259 btfss STATUS,Z 0474 2C78 02260 goto remote_check 02261 0475 23D9 02262 call set_pattern 0476 01B1 02263 clrf IR_in_good 0477 2C64 02264 goto ptop 02265 0478 02266 remote_check 0478 08AB 02267 movf address,f ; remote giving "0" for address (TV)? 0479 1D03 02268 btfss STATUS,Z 047A 2C8D 02269 goto button_check 02270 047B 3020 02271 movlw 0x20 ; remote curser right (pattern ++) 047C 022A 02272 subwf command,w 047D 1903 02273 btfsc STATUS,Z 047E 23C6 02274 call next_pattern 02275 047F 3021 02276 movlw 0x21 ; remote curser left (pattern --) 0480 022A 02277 subwf command,w 0481 1903 02278 btfsc STATUS,Z 0482 23CF 02279 call past_pattern 02280 0483 3000 02281 movlw 0x00 ; remote "0" key (pattern = 0) 0484 022A 02282 subwf command,w 0485 1903 02283 btfsc STATUS,Z 0486 01C7 02284 clrf pattern 02285 0487 300C 02286 movlw 0x0c ; remote on/off key (togle demo mode!) 0488 022A 02287 subwf command,w 0489 1903 02288 btfsc STATUS,Z 048A 2456 02289 call toggle_demo 02290 048B 01B1 02291 clrf IR_in_good MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 048C 2C64 02292 goto ptop 02293 048D 02294 button_check 02295 ; ploop1 02296 048D 082E 02297 movfw button ; if any putton pressed show pattern id 048E 1903 02298 btfsc STATUS,Z 048F 2C9F 02299 goto ploop2 02300 0490 23EC 02301 call display_pattern_id 0491 23EC 02302 call display_pattern_id 02303 0492 02304 ploop1a 0492 182E 02305 btfsc button,0 ; if button 1 pressed inc pattern 0493 2C97 02306 goto ploop1up 02307 0494 18AE 02308 btfsc button,1 ; if button 2 pressed dec pattern 0495 2C9B 02309 goto ploop1down 02310 0496 2C64 02311 goto ptop 02312 0497 02313 ploop1up 0497 23C6 02314 call next_pattern 0498 23EC 02315 call display_pattern_id 0499 23EC 02316 call display_pattern_id 049A 2C92 02317 goto ploop1a 02318 049B 02319 ploop1down 049B 23CF 02320 call past_pattern 049C 23EC 02321 call display_pattern_id 049D 23EC 02322 call display_pattern_id 049E 2C92 02323 goto ploop1a 049F 02324 ploop2 02325 02326 #ifdef PATTERN1 02327 movlw 0x01 ; pattern1 02328 subwf tbltype,w 02329 btfsc STATUS,Z 02330 call table_type_1 02331 #endif 02332 02333 #ifdef PATTERN2 02334 movlw 0x02 ; pattern2 02335 subwf tbltype,w 02336 btfsc STATUS,Z 02337 call table_type_2 02338 #endif 02339 02340 #ifdef PATTERN3 02341 movlw 0x03 ; pattern3 02342 subwf tbltype,w 02343 btfsc STATUS,Z 02344 call table_type_3 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02345 #endif 02346 02347 #ifdef PATTERN4 02348 movlw 0x04 ; pattern4 02349 subwf tbltype,w 02350 btfsc STATUS,Z 02351 call table_type_4 02352 #endif 02353 02354 #ifdef PATTERN5 02355 movlw 0x05 ; pattern5 02356 subwf tbltype,w 02357 btfsc STATUS,Z 02358 call table_type_5 02359 #endif 02360 02361 #ifdef PATTERN6 02362 movlw 0x06 ; pattern6 02363 subwf tbltype,w 02364 btfsc STATUS,Z 02365 call table_type_6 02366 #endif 02367 02368 #ifdef PATTERN7 02369 movlw 0x07 ; pattern7 02370 subwf tbltype,w 02371 btfsc STATUS,Z 02372 call table_type_7 02373 #endif 02374 02375 #ifdef PATTERN8 02376 movlw 0x08 ; pattern8 02377 subwf tbltype,w 02378 btfsc STATUS,Z 02379 call table_type_8 02380 #endif 02381 02382 #ifdef PATTERN9 02383 movlw 0x09 ; pattern9 02384 subwf tbltype,w 02385 btfsc STATUS,Z 02386 call table_type_9 02387 #endif 02388 02389 #ifdef PATTERN10 02390 movlw 0x0A ; pattern10 02391 subwf tbltype,w 02392 btfsc STATUS,Z 02393 call table_type_10 02394 #endif 02395 02396 #ifdef PATTERN11 02397 movlw 0x0B ; pattern11 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02398 subwf tbltype,w 02399 btfsc STATUS,Z 02400 call table_type_11 02401 #endif 02402 02403 #ifdef PATTERN12 02404 movlw 0x0C ; pattern12 02405 subwf tbltype,w 02406 btfsc STATUS,Z 02407 call table_type_12 02408 #endif 02409 02410 #ifdef PATTERN13 02411 movlw 0x0D ; pattern13 02412 subwf tbltype,w 02413 btfsc STATUS,Z 02414 call table_type_13 02415 #endif 02416 02417 #ifdef PATTERN14 02418 movlw 0x0E ; pattern14 02419 subwf tbltype,w 02420 btfsc STATUS,Z 02421 call table_type_14 02422 #endif 02423 02424 #ifdef PATTERN15 049F 300F 02425 movlw 0x0F ; pattern15 04A0 0248 02426 subwf tbltype,w 04A1 1903 02427 btfsc STATUS,Z 04A2 24CA 02428 call table_type_15 02429 #endif 02430 02431 #ifdef PATTERN16 04A3 3010 02432 movlw 0x10 ; pattern16 04A4 0248 02433 subwf tbltype,w 04A5 3005 008A 02434 pageselw table_type_16 04A7 1903 02435 btfsc STATUS,Z 04A8 25CC 02436 call table_type_16 04A9 3004 008A 02437 pageselw pattern_driver 02438 #endif 02439 02440 #ifdef PATTERN17 04AB 3011 02441 movlw 0x11 ; pattern17 04AC 0248 02442 subwf tbltype,w 04AD 1903 02443 btfsc STATUS,Z 04AE 24E6 02444 call table_type_17 02445 #endif 02446 02447 #ifdef PATTERN18 04AF 3012 02448 movlw 0x12 ; pattern18 04B0 0248 02449 subwf tbltype,w 04B1 3008 008A 02450 pageselw table_type_18 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04B3 1903 02451 btfsc STATUS,Z Message[306]: Crossing page boundary -- ensure page bits are set. 04B4 204B 02452 call table_type_18 04B5 3004 008A 02453 pageselw pattern_driver 02454 #endif 02455 02456 #ifdef PATTERN19 02457 movlw 0x13 ; pattern19 02458 subwf tbltype,w 02459 pageselw table_type_19 02460 btfsc STATUS,Z 02461 call table_type_19 02462 pageselw pattern_driver 02463 #endif 02464 02465 #ifdef PATTERN20 02466 movlw 0x14 ; pattern20 02467 subwf tbltype,w 02468 pageselw table_type_20 02469 btfsc STATUS,Z 02470 call table_type_20 02471 pageselw pattern_driver 02472 #endif 02473 02474 02475 02476 ; make sure we are not sending a IR signel 04B7 083E 02477 movf scount,w ; F22 04B8 3E00 02478 addlw 0 ; F23 04B9 1D03 02479 btfss STATUS,Z ; F24 04BA 2CC7 02480 goto ploop3 02481 02482 ; count down till net IR signel 04BB 1CA1 02483 btfss nextf,1 04BC 2CC7 02484 goto ploop3 02485 04BD 10A1 02486 bcf nextf,1 04BE 1C58 02487 btfss demo_mode,0 04BF 2CC2 02488 goto ploop2a 02489 04C0 23C6 02490 call next_pattern 04C1 2C64 02491 goto ptop 02492 04C2 02493 ploop2a 02494 ; send an IR signel 02495 #ifdef ENABLE_IR 04C2 3007 02496 movlw 0x07 ; address 0x07 "Experimental" 04C3 00B6 02497 movwf out_address 04C4 0839 02498 movfw out_pattern 04C5 00B7 02499 movwf out_command ; copy out_pettern 02500 04C6 2388 02501 call rf_command_out 02502 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02503 04C7 02504 ploop3 04C7 0BD9 02505 decfsz psize,f ;check for end of pattern (4rgb) 04C8 2C6F 02506 goto ploop0 02507 04C9 2C64 02508 goto ptop 02509 02510 #ifdef PATTERN1 02511 ;********************************************************************** 02512 table_type_1 02513 ;********************************************************************** 02514 ; 76543210 <-- bits 02515 ; AABBCCDD <-- LEDs 02516 ; 01010101 <-- stays on for 1 unit - b'01' 02517 ; 10101010 <-- stays on for 2 units - b'10' 02518 ; 11111111 <-- stays on for 3 units - b'11' 02519 02520 ; in0 red 02521 ; in1 green 02522 ; in2 blu 02523 02524 call get_next_pattern_entry 02525 movwf in0 02526 02527 call get_next_pattern_entry 02528 movwf in1 02529 02530 call get_next_pattern_entry ;4rgb 02531 movwf in2 ;4rgb 02532 02533 movf pspeed,w 02534 movwf speed 02535 call display_2bit 02536 02537 return 02538 #endif 02539 02540 #ifdef PATTERN2 02541 ;********************************************************************** 02542 table_type_2 02543 ;********************************************************************** 02544 02545 var delay1 02546 var fad 02547 var color 02548 var fad2 02549 02550 incf delay1,f 02551 02552 movf delay1,w ; testing for 0 02553 btfss STATUS,Z 02554 goto cf_loop2 02555 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02556 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02557 movwf delay1 02558 02559 ; 02560 ; select a pattern 02561 ; 02562 comf fad,f 02563 movf fad,w ; testing for 0 02564 incf color,f 02565 02566 cf_loop2 02567 movf delay1,w ; fading up 02568 btfsc fad,0 02569 comf delay1,w ; dafinf down 02570 movwf fad2 02571 02572 movlw 0x03 ; greater then 3? 02573 subwf color,w 02574 btfsc STATUS,C 02575 clrf color 02576 02577 02578 movlw 0x00 ; testing for 0 02579 subwf color,w 02580 btfss STATUS,Z 02581 goto next1 02582 02583 movfw fad2 02584 movwf Ar_reg 02585 movwf Br_reg 02586 movwf Cr_reg 02587 movwf Dr_reg 02588 02589 next1 02590 movlw 0x01 ; testing for 1 02591 subwf color,w 02592 btfss STATUS,Z 02593 goto next2 02594 02595 movfw fad2 02596 movwf Ag_reg 02597 movwf Bg_reg 02598 movwf Cg_reg 02599 movwf Dg_reg 02600 02601 next2 02602 movlw 0x02 ; testing for 2 02603 subwf color,w 02604 btfss STATUS,Z 02605 goto next3 02606 02607 movfw fad2 02608 movwf Ab_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02609 movwf Bb_reg 02610 movwf Cb_reg 02611 movwf Db_reg 02612 02613 next3 02614 movfw pspeed 02615 call strobe_delay 02616 02617 return 02618 #endif 02619 02620 02621 #ifdef PATTERN3 02622 ;********************************************************************** 02623 table_type_3 02624 ;********************************************************************** 02625 ; 02626 ; 2 bytes 02627 ; 02628 ; RRRRGGGG BBBBCDDD 02629 ; 02630 ; RRRR = bit of red LEDs to turn on 02631 ; GGGG = bit of red LEDs to turn on 02632 ; BBBB = bit of red LEDs to turn on 02633 ; CDDD = a repeat counter. 02634 ; 02635 ; For badge blinkies 02636 ; C is 13th LED 02637 ; DDD = is repeat count 02638 02639 var p2count 02640 02641 call get_next_pattern_entry 02642 movwf in0 02643 02644 call get_next_pattern_entry 02645 movwf in1 02646 02647 #ifdef BADGE 02648 movlw b'00000111' 02649 #else 02650 movlw b'00001111' 02651 #endif 02652 andwf in1,w 02653 movwf p2count 02654 incf p2count,f 02655 rlf p2count,f 02656 rlf p2count,f 02657 02658 p2loop 02659 movfw pspeed 02660 call display_1bit 02661 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02662 decfsz p2count,f 02663 goto p2loop 02664 02665 return 02666 #endif 02667 02668 02669 #ifdef PATTERN4 02670 ;********************************************************************** 02671 table_type_4 02672 ;********************************************************************** 02673 02674 ;use delay1 02675 ;use fad 02676 ;use color 02677 02678 02679 incf delay1,f 02680 02681 movf delay1,w ; testing for 0 02682 btfss STATUS,Z 02683 goto cf_loop2a 02684 02685 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 02686 movwf delay1 02687 02688 ; 02689 ; select a pattern 02690 ; 02691 comf fad,f 02692 movf fad,w ; testing for 0 02693 btfss fad,0 02694 incf color,f 02695 02696 cf_loop2a 02697 movf delay1,w ; fading up 02698 btfsc fad,0 02699 comf delay1,w ; dafinf down 02700 02701 movwf Ar_reg 02702 movwf Ag_reg 02703 movwf Ab_reg 02704 movwf Br_reg 02705 movwf Bg_reg 02706 movwf Bb_reg 02707 movwf Cr_reg 02708 movwf Cg_reg 02709 movwf Cb_reg 02710 movwf Dr_reg 02711 movwf Dg_reg 02712 movwf Db_reg 02713 02714 btfsc color,0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02715 clrf Ar_reg 02716 btfsc color,1 02717 clrf Ag_reg 02718 btfsc color,2 02719 clrf Ab_reg 02720 btfsc color,0 02721 clrf Br_reg 02722 btfsc color,1 02723 clrf Bg_reg 02724 btfsc color,2 02725 clrf Bb_reg 02726 btfsc color,0 02727 clrf Cr_reg 02728 btfsc color,1 02729 clrf Cg_reg 02730 btfsc color,2 02731 clrf Cb_reg 02732 btfsc color,0 02733 clrf Dr_reg 02734 btfsc color,1 02735 clrf Dg_reg 02736 btfsc color,2 02737 clrf Db_reg 02738 02739 btfsc color,3 02740 clrf Ar_reg 02741 btfsc color,3 02742 clrf Ag_reg 02743 btfsc color,3 02744 clrf Ab_reg 02745 02746 btfsc color,4 02747 clrf Br_reg 02748 btfsc color,4 02749 clrf Bg_reg 02750 btfsc color,4 02751 clrf Bb_reg 02752 02753 btfsc color,5 02754 clrf Cr_reg 02755 btfsc color,5 02756 clrf Cg_reg 02757 btfsc color,5 02758 clrf Cb_reg 02759 02760 btfsc color,6 02761 clrf Dr_reg 02762 btfsc color,6 02763 clrf Dg_reg 02764 btfsc color,6 02765 clrf Db_reg 02766 02767 movlw 0x20 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02768 call strobe_delay 02769 02770 return 02771 #endif 02772 02773 #ifdef PATTERN5 02774 ;********************************************************************** 02775 table_type_5 02776 ;********************************************************************** 02777 ; 02778 ; 1 bytes 02779 ; 02780 ; ABCDEFX = 7 bits for LEDs. 02781 ; 02782 02783 var p2count 02784 02785 call get_next_pattern_entry 02786 movwf in0 02787 02788 movlw 0x04 ; call display 4 times, speed thing 02789 movwf p2count 02790 02791 p2loop 02792 movfw pspeed 02793 call display_1bit 02794 02795 decfsz p2count,f 02796 goto p2loop 02797 02798 return 02799 #endif 02800 02801 #ifdef PATTERN6 02802 ;********************************************************************** 02803 table_type_6 02804 ;********************************************************************** 02805 ; 02806 ; 3 bytes 02807 ; 02808 ; AAAAAAAA AAAAAAAA AAADDDDD 02809 ; 02810 ; A = 19 bits of LED 02811 ; DDDDD = a repeat counter. 02812 02813 var p2count 02814 02815 call get_next_pattern_entry 02816 movwf in0 02817 02818 call get_next_pattern_entry 02819 movwf in1 02820 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02821 call get_next_pattern_entry 02822 movwf in2 02823 02824 movlw b'00011111' 02825 andwf in2,w 02826 movwf p2count 02827 incf p2count,f 02828 rlf p2count,f 02829 rlf p2count,f 02830 02831 p2loop 02832 movfw pspeed 02833 call display_1bit 02834 02835 decfsz p2count,f 02836 goto p2loop 02837 02838 return 02839 #endif 02840 02841 #define BRIGHT1 0x40 02842 #define BRIGHT2 0xA0 02843 02844 #ifdef PATTERN7 02845 ;********************************************************************** 02846 table_type_7 02847 ;********************************************************************** 02848 ; 02849 ; 1 bytes 02850 ; 02851 ; ABBCCCCC 02852 ; 02853 ; A = shire Right/Left 02854 ; BB = two bit intensity to shift on 02855 ; CCCCC = Number of shifts to loop 02856 ; 02857 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 02858 ; 02859 02860 var t7count 02861 02862 call get_next_pattern_entry 02863 movwf in0 02864 02865 movlw b'00011111' 02866 andwf in0,w 02867 movwf t7count 02868 02869 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 02870 subwf t7count,w 02871 btfss STATUS,Z 02872 goto t7_loop 02873 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02874 clrf in0 ; quick way to clear all the LEDS. 02875 clrf in1 02876 clrf in2 02877 call display_1bit 02878 goto t7_return 02879 02880 02881 t7_loop 02882 btfsc in0,7 02883 goto t7_set19 02884 ; 02885 ; set LED 1 02886 movfw A1_A4_reg ; 18 -> 19 02887 movwf A4_A1_reg 02888 02889 movfw A2_A1_reg ; 17 -> 18 02890 movwf A1_A4_reg 02891 02892 movfw A1_A2_reg ; 16 -> 17 02893 movwf A2_A1_reg 02894 02895 movfw A2_A4_reg ; 15 -> 16 02896 movwf A1_A2_reg 02897 02898 movfw A4_A2_reg ; 14 -> 15 02899 movwf A2_A4_reg 02900 02901 movfw A0_A1_reg ; 13 -> 14 02902 movwf A4_A2_reg 02903 02904 movfw A1_A0_reg ; 12 -> 13 02905 movwf A0_A1_reg 02906 02907 movfw A0_A4_reg ; 11 -> 12 02908 movwf A1_A0_reg 02909 02910 movfw A4_A0_reg ; 10 -> 11 02911 movwf A0_A4_reg 02912 02913 movfw A0_A2_reg ; 09 -> 10 02914 movwf A4_A0_reg 02915 02916 movfw A2_A0_reg ; 08 -> 09 02917 movwf A0_A2_reg 02918 02919 movfw A5_A1_reg ; 07 -> 08 02920 movwf A2_A0_reg 02921 02922 movfw A1_A5_reg ; 06 -> 07 02923 movwf A5_A1_reg 02924 02925 movfw A5_A4_reg ; 05 -> 06 02926 movwf A1_A5_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02927 02928 movfw A4_A5_reg ; 04 -> 05 02929 movwf A5_A4_reg 02930 02931 movfw A5_A2_reg ; 03 -> 04 02932 movwf A4_A5_reg 02933 02934 movfw A2_A5_reg ; 02 -> 03 02935 movwf A5_A2_reg 02936 02937 movfw A5_A0_reg ; 01 -> 02 02938 movwf A2_A5_reg 02939 02940 clrf A5_A0_reg 02941 movlw BRIGHT1 02942 btfsc in0,5 02943 addwf A5_A0_reg,f 02944 movlw BRIGHT2 02945 btfsc in0,6 02946 addwf A5_A0_reg,f 02947 goto t7_cont 02948 ; 02949 ; set LED 19 02950 t7_set19 02951 movfw A2_A5_reg ; 02 -> 01 02952 movwf A5_A0_reg 02953 02954 movfw A5_A2_reg ; 03 -> 02 02955 movwf A2_A5_reg 02956 02957 movfw A4_A5_reg ; 04 -> 03 02958 movwf A5_A2_reg 02959 02960 movfw A5_A4_reg ; 05 -> 04 02961 movwf A4_A5_reg 02962 02963 movfw A1_A5_reg ; 06 -> 05 02964 movwf A5_A4_reg 02965 02966 movfw A5_A1_reg ; 07 -> 06 02967 movwf A1_A5_reg 02968 02969 movfw A2_A0_reg ; 08 -> 07 02970 movwf A5_A1_reg 02971 02972 movfw A0_A2_reg ; 09 -> 08 02973 movwf A2_A0_reg 02974 02975 movfw A4_A0_reg ; 10 -> 09 02976 movwf A0_A2_reg 02977 02978 movfw A0_A4_reg ; 11 -> 10 02979 movwf A4_A0_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02980 02981 movfw A1_A0_reg ; 12 -> 11 02982 movwf A0_A4_reg 02983 02984 movfw A0_A1_reg ; 13 -> 12 02985 movwf A1_A0_reg 02986 02987 movfw A4_A2_reg ; 14 -> 13 02988 movwf A0_A1_reg 02989 02990 movfw A2_A4_reg ; 15 -> 14 02991 movwf A4_A2_reg 02992 02993 movfw A1_A2_reg ; 16 -> 15 02994 movwf A2_A4_reg 02995 02996 movfw A2_A1_reg ; 17 -> 16 02997 movwf A1_A2_reg 02998 02999 movfw A1_A4_reg ; 18 -> 17 03000 movwf A2_A1_reg 03001 03002 movfw A4_A1_reg ; 19 -> 18 03003 movwf A1_A4_reg 03004 03005 clrf A4_A1_reg 03006 movlw BRIGHT1 03007 btfsc in0,5 03008 addwf A4_A1_reg,f 03009 movlw BRIGHT2 03010 btfsc in0,6 03011 addwf A4_A1_reg,f 03012 03013 t7_cont 03014 03015 movf pspeed,w 03016 call strobe_delay 03017 ; 03018 ; This is a quick hack, because without this button presses are not seen for minutes 03019 ; This early exit might impact the pattern getting displayed. 03020 ; 03021 btfsc button,0 ; if putton pressed show pattern id 03022 goto t7_return 03023 03024 btfsc IR_in_good,0 03025 goto t7_return 03026 03027 decfsz t7count,f 03028 goto t7_loop 03029 03030 t7_return 03031 return 03032 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03033 03034 #ifdef PATTERN19 03035 ;********************************************************************** 03036 table_type_19 03037 ;********************************************************************** 03038 ; 03039 ; 1 bytes 03040 ; 03041 ; ABBCDDEE xxxxFFFF 03042 ; 03043 ; A = shift Right/Left 03044 ; BB = Color1/Color2/Both 03045 ; C = Row/Col 03046 ; DD = two bit Red intensity to shift on 03047 ; EE = two bit Green intensity to shift on 03048 ; FFFF = Number of shifts to loop 03049 ; 03050 ; if FFFF = 0x11111, specical case: turn all LEDs off. 03051 ; 03052 03053 var t7count 03054 03055 call get_next_pattern_entry 03056 movwf in0 03057 03058 call get_next_pattern_entry 03059 movwf in1 03060 03061 movlw b'00001111' 03062 andwf in1,w 03063 movwf t7count 03064 03065 movlw b'00001111' ; if shiftcount is 15, then clear all LEDs 03066 subwf t7count,w 03067 btfss STATUS,Z 03068 goto t7_loop 03069 03070 clrf in0 ; quick way to clear all the LEDS. 03071 clrf in1 03072 clrf in2 03073 call display_1bit 03074 goto t7_return 03075 03076 03077 t7_loop 03078 btfsc in0,7 ; sift right or left? 03079 goto t7_set19 03080 ; 03081 ; set LED 1 03082 btfss in0,6 ; Green? 03083 goto r_green_skip 03084 movfw A4_A1_reg ; 08G -> 09G 03085 movwf A5_A4_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03086 03087 movfw A1_A0_reg ; 07G -> 08G 03088 movwf A4_A1_reg 03089 03090 movfw A5_A2_reg ; 06G -> 07G 03091 movwf A1_A0_reg 03092 03093 movfw A4_A2_reg ; 05G -> 06G 03094 movwf A5_A2_reg 03095 03096 movfw A2_A0_reg ; 04G -> 05G 03097 movwf A4_A2_reg 03098 03099 movfw A5_A1_reg ; 03G -> 04G 03100 movwf A2_A0_reg 03101 03102 movfw A5_A0_reg ; 02G -> 03G 03103 movwf A5_A1_reg 03104 03105 movfw A4_A0_reg ; 01G -> 02G 03106 movwf A5_A0_reg 03107 03108 clrf A4_A0_reg 03109 movlw BRIGHT1 03110 btfsc in0,0 03111 addwf A4_A0_reg,f 03112 movlw BRIGHT2 03113 btfsc in0,1 03114 addwf A4_A0_reg,f 03115 r_green_skip 03116 03117 ; 03118 ; set LED 1 03119 btfss in0,5 ; Red ? 03120 goto r_red_skip 03121 movfw A1_A4_reg ; 08R -> 09R 03122 movwf A4_A5_reg 03123 03124 movfw A0_A1_reg ; 07R -> 08R 03125 movwf A1_A4_reg 03126 03127 movfw A2_A5_reg ; 06R -> 07R 03128 movwf A0_A1_reg 03129 03130 movfw A2_A4_reg ; 05R -> 06R 03131 movwf A2_A5_reg 03132 03133 movfw A0_A2_reg ; 04R -> 05R 03134 movwf A2_A4_reg 03135 03136 movfw A1_A5_reg ; 03R -> 04R 03137 movwf A0_A2_reg 03138 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03139 movfw A0_A5_reg ; 02R -> 03R 03140 movwf A1_A5_reg 03141 03142 movfw A0_A4_reg ; 01R -> 02R 03143 movwf A0_A5_reg 03144 03145 clrf A0_A4_reg 03146 movlw BRIGHT1 03147 btfsc in0,2 03148 addwf A0_A4_reg,f 03149 movlw BRIGHT2 03150 btfsc in0,3 03151 addwf A0_A4_reg,f 03152 r_red_skip 03153 goto t7_cont 03154 03155 ; 03156 ; set LED 19 03157 t7_set19 03158 03159 btfss in0,6 ; Green? 03160 goto l_green_skip 03161 03162 movfw A5_A0_reg ; 02G -> 01G 03163 movwf A4_A0_reg 03164 03165 movfw A5_A1_reg ; 03G -> 02G 03166 movwf A5_A0_reg 03167 03168 movfw A2_A0_reg ; 04G -> 03G 03169 movwf A5_A1_reg 03170 03171 movfw A4_A2_reg ; 05G -> 04G 03172 movwf A2_A0_reg 03173 03174 movfw A5_A2_reg ; 06G -> 05G 03175 movwf A4_A2_reg 03176 03177 movfw A1_A0_reg ; 07G -> 06G 03178 movwf A5_A2_reg 03179 03180 movfw A4_A1_reg ; 08G -> 07G 03181 movwf A1_A0_reg 03182 03183 movfw A5_A4_reg ; 09G -> 08G 03184 movwf A4_A1_reg 03185 03186 clrf A5_A4_reg 03187 movlw BRIGHT1 03188 btfsc in0,0 03189 addwf A5_A4_reg,f 03190 movlw BRIGHT2 03191 btfsc in0,1 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03192 addwf A5_A4_reg,f 03193 l_green_skip 03194 03195 btfss in0,5 ; Red? 03196 goto l_red_skip 03197 03198 movfw A0_A5_reg ; 02R -> 01R 03199 movwf A0_A4_reg 03200 03201 movfw A1_A5_reg ; 03R -> 02R 03202 movwf A0_A5_reg 03203 03204 movfw A0_A2_reg ; 04R -> 03R 03205 movwf A1_A5_reg 03206 03207 movfw A2_A4_reg ; 05R -> 04R 03208 movwf A0_A2_reg 03209 03210 movfw A2_A5_reg ; 06R -> 05R 03211 movwf A2_A4_reg 03212 03213 movfw A0_A1_reg ; 07R -> 06R 03214 movwf A2_A5_reg 03215 03216 movfw A1_A4_reg ; 08R -> 07R 03217 movwf A0_A1_reg 03218 03219 movfw A4_A5_reg ; 09R -> 08R 03220 movwf A1_A4_reg 03221 03222 clrf A4_A5_reg 03223 movlw BRIGHT1 03224 btfsc in0,2 03225 addwf A4_A5_reg,f 03226 movlw BRIGHT2 03227 btfsc in0,3 03228 addwf A4_A5_reg,f 03229 03230 l_red_skip 03231 03232 t7_cont 03233 03234 movf pspeed,w 03235 call strobe_delay 03236 ; 03237 ; This is a quick hack, because without this button presses are not seen for minutes 03238 ; This early exit might impact the pattern getting displayed. 03239 ; 03240 btfsc button,0 ; if putton pressed show pattern id 03241 goto t7_return 03242 03243 btfsc IR_in_good,0 03244 goto t7_return MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03245 03246 decfsz t7count,f 03247 goto t7_loop 03248 03249 t7_return 03250 return 03251 #endif 03252 03253 03254 #ifdef PATTERN8 03255 ;********************************************************************** 03256 table_type_8 ; - 19 LED fader 03257 ;********************************************************************** 03258 03259 var delay1 03260 var fad 03261 var color 03262 03263 03264 incf delay1,f 03265 03266 movf delay1,w ; testing for 0 03267 btfss STATUS,Z 03268 goto cf8_loop2a 03269 03270 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 03271 movwf delay1 03272 03273 ; 03274 ; select a pattern 03275 ; 03276 comf fad,f 03277 movf fad,w ; testing for 0 03278 btfss fad,0 03279 incf color,f 03280 03281 movlw 0xFD ; testing for greater then 3 03282 addwf color,w 03283 btfsc STATUS,C 03284 clrf color 03285 03286 #ifdef M3X3 03287 nop 03288 cf8_loop2a 03289 clrf A4_A0_reg ; 1G 03290 clrf A5_A0_reg ; 2G 03291 clrf A5_A1_reg ; 3G 03292 clrf A2_A0_reg ; 4G 03293 clrf A4_A2_reg ; 5G 03294 clrf A5_A2_reg ; 6G 03295 clrf A1_A0_reg ; 7G 03296 clrf A4_A1_reg ; 8G 03297 clrf A5_A4_reg ; 9G MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03298 clrf A0_A4_reg ; 1R 03299 clrf A0_A5_reg ; 2R 03300 clrf A1_A5_reg ; 3R 03301 clrf A0_A2_reg ; 4R 03302 clrf A2_A4_reg ; 5R 03303 clrf A2_A5_reg ; 6R 03304 clrf A0_A1_reg ; 7R 03305 clrf A1_A4_reg ; 8R 03306 clrf A4_A5_reg ; 9R 03307 03308 movf delay1,w ; fading up 03309 btfsc fad,0 03310 comf delay1,w ; fading down 03311 03312 btfsc color,0 03313 goto t8_skip_r 03314 03315 movwf A4_A0_reg ; 1G 03316 movwf A5_A0_reg ; 2G 03317 movwf A5_A1_reg ; 3G 03318 movwf A2_A0_reg ; 4G 03319 movwf A4_A2_reg ; 5G 03320 movwf A5_A2_reg ; 6G 03321 movwf A1_A0_reg ; 7G 03322 movwf A4_A1_reg ; 8G 03323 movwf A5_A4_reg ; 9G 03324 03325 t8_skip_r 03326 btfsc color,1 03327 goto t8_skip_g 03328 03329 movwf A0_A4_reg ; 1R 03330 movwf A0_A5_reg ; 2R 03331 movwf A1_A5_reg ; 3R 03332 movwf A0_A2_reg ; 4R 03333 movwf A2_A4_reg ; 5R 03334 movwf A2_A5_reg ; 6R 03335 movwf A0_A1_reg ; 7R 03336 movwf A1_A4_reg ; 8R 03337 movwf A4_A5_reg ; 9R 03338 t8_skip_g 03339 03340 #else 03341 03342 nop 03343 cf8_loop2a 03344 movf delay1,w ; fading up 03345 btfsc fad,0 03346 comf delay1,w ; fading down 03347 03348 movwf A5_A0_reg ; 01 03349 movwf A2_A5_reg ; 02 03350 movwf A5_A2_reg ; 03 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03351 movwf A4_A5_reg ; 04 03352 movwf A5_A4_reg ; 05 03353 movwf A1_A5_reg ; 06 03354 movwf A5_A1_reg ; 07 03355 movwf A2_A0_reg ; 08 03356 movwf A0_A2_reg ; 09 03357 movwf A4_A0_reg ; 10 03358 movwf A0_A4_reg ; 11 03359 movwf A1_A0_reg ; 12 03360 movwf A0_A1_reg ; 13 03361 movwf A4_A2_reg ; 14 03362 movwf A2_A4_reg ; 15 03363 movwf A1_A2_reg ; 16 03364 movwf A2_A1_reg ; 17 03365 movwf A1_A4_reg ; 18 03366 movwf A4_A1_reg ; 19 03367 #endif 03368 03369 movlw 0x03 03370 call strobe_delay 03371 03372 return 03373 #endif 03374 03375 #ifdef PATTERN9 03376 ;********************************************************************** 03377 table_type_9 03378 ;********************************************************************** 03379 ; 03380 ; 5 bytes 03381 ; 00000000 00000000 00111111 11111111 111111XX 03382 ; 11223344 55667788 99001122 33445566 778899XX 03383 ; RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGXX 03384 ; 03385 ; XX = a repeat counter. 03386 03387 var p2count 03388 03389 call get_next_pattern_entry 03390 movwf in0 03391 03392 call get_next_pattern_entry 03393 movwf in1 03394 03395 call get_next_pattern_entry 03396 movwf in2 03397 03398 call get_next_pattern_entry 03399 movwf in3 03400 03401 call get_next_pattern_entry 03402 movwf in4 03403 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03404 movlw b'00000011' 03405 andwf in4,w 03406 movwf p2count 03407 incf p2count,f 03408 rlf p2count,f 03409 rlf p2count,f 03410 03411 p2loop 03412 movfw pspeed 03413 call display_1bit 03414 03415 decfsz p2count,f 03416 goto p2loop 03417 03418 return 03419 #endif 03420 03421 #ifdef PATTERN10 03422 ;********************************************************************** 03423 table_type_10 03424 ;********************************************************************** 03425 ; 76543210 <-- bits 03426 ; AABBCCDD <-- LEDs 03427 ; 01010101 <-- stays on for 1 unit - b'01' 03428 ; 10101010 <-- stays on for 2 units - b'10' 03429 ; 11111111 <-- stays on for 3 units - b'11' 03430 03431 ; in0 LEDs 0,1 03432 ; in1 LEDs 2,3 03433 ; in2 LEDs 4,5 03434 ; in3 LED 6 03435 03436 call get_next_pattern_entry 03437 movwf in0 03438 03439 call get_next_pattern_entry 03440 movwf in1 03441 03442 call get_next_pattern_entry ;4rgb 03443 movwf in2 ;4rgb 03444 03445 call get_next_pattern_entry ;4rgb 03446 movwf in3 ;4rgb 03447 03448 03449 03450 movf pspeed,w 03451 movwf speed 03452 call display_2bit 03453 03454 return 03455 #endif 03456 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03457 #ifdef PATTERN11 03458 ;********************************************************************** 03459 table_type_11 03460 ;********************************************************************** 03461 ; 76543210 <-- bits 03462 ; AABBCCDD <-- LEDs 03463 ; 01010101 <-- stays on for 1 unit - b'01' 03464 ; 10101010 <-- stays on for 2 units - b'10' 03465 ; 11111111 <-- stays on for 3 units - b'11' 03466 03467 ; in0 LEDs 0,1,3,4 03468 ; in1 LEDs 5,6,C 03469 03470 call get_next_pattern_entry 03471 movwf in0 03472 03473 call get_next_pattern_entry 03474 movwf in1 03475 03476 movf pspeed,w 03477 movwf speed 03478 call display_2bit 03479 03480 return 03481 #endif 03482 03483 #ifdef RANDOM 03484 03485 ;********************************************************************** 03486 gen_random 03487 ;********************************************************************** 03488 03489 var random 03490 03491 RLF random,W 03492 RLF random,W 03493 BTFSC random,4 03494 XORLW 1 03495 BTFSC random,5 03496 XORLW 1 03497 BTFSC random,3 03498 XORLW 1 03499 MOVWF random 03500 return 03501 #endif 03502 03503 #ifdef PATTERN12 03504 ;********************************************************************** 03505 table_type_12 03506 ;********************************************************************** 03507 ; 03508 ; 5 bytes 03509 ; 00000000 00000000 00111111 11111111 111111XX MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03510 ; 11223344 55667788 99001122 33445566 778899XX 03511 ; RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGXX 03512 ; 03513 ; XX = a repeat counter. 03514 03515 call gen_random 03516 movwf in3 03517 03518 call gen_random 03519 movwf in0 03520 03521 call gen_random 03522 movwf in2 03523 03524 call gen_random 03525 movwf in1 03526 03527 call gen_random 03528 movwf in4 03529 03530 movfw pspeed 03531 call display_1bit 03532 03533 return 03534 #endif 03535 03536 #ifdef PATTERN13 03537 ;********************************************************************** 03538 table_type_13 03539 ;********************************************************************** 03540 ; 03541 ; 10 bytes 03542 ; 11112222 33334444 55556666 77778888 99990000 11112222 33334444 55556666 77778888 9999XXXX 03543 ; 03544 ; XX = a repeat counter. 03545 03546 call get_next_pattern_entry 03547 movwf in0 03548 03549 call get_next_pattern_entry 03550 movwf in1 03551 03552 call get_next_pattern_entry 03553 movwf in2 03554 03555 call get_next_pattern_entry 03556 movwf in3 03557 03558 call get_next_pattern_entry 03559 movwf in4 03560 03561 call get_next_pattern_entry 03562 movwf in5 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03563 03564 call get_next_pattern_entry 03565 movwf in6 03566 03567 call get_next_pattern_entry 03568 movwf in7 03569 03570 call get_next_pattern_entry 03571 movwf in8 03572 03573 call get_next_pattern_entry 03574 movwf in9 03575 03576 movlw b'00001111' 03577 andwf in9,w 03578 movwf p2count 03579 incf p2count,f 03580 rlf p2count,f 03581 rlf p2count,f 03582 03583 p3loop 03584 movfw pspeed 03585 call display_2bit 03586 03587 decfsz p2count,f 03588 goto p3loop 03589 03590 return 03591 #endif 03592 03593 #ifdef PATTERN14 03594 ;********************************************************************** 03595 table_type_14 03596 ;********************************************************************** 03597 ; 03598 ; 5 bytes 03599 ; 11223344 55667788 99001122 33445566 778899XX 03600 ; 03601 ; XX = a repeat counter. 03602 03603 call get_next_pattern_entry 03604 movwf in0 03605 03606 call get_next_pattern_entry 03607 movwf in1 03608 03609 call get_next_pattern_entry 03610 movwf in2 03611 03612 call get_next_pattern_entry 03613 movwf in3 03614 03615 call get_next_pattern_entry MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03616 movwf in4 03617 03618 movlw b'00000011' 03619 andwf in4,w 03620 movwf p2count 03621 incf p2count,f 03622 rlf p2count,f 03623 rlf p2count,f 03624 03625 p3loop 03626 movfw pspeed 03627 call display_2bit 03628 03629 decfsz p2count,f 03630 goto p3loop 03631 03632 return 03633 #endif 03634 03635 #ifdef PATTERN15 03636 ;********************************************************************** 04CA 03637 table_type_15 03638 ;********************************************************************** 03639 ; 03640 ; 6 bytes 03641 ; 0 1 2 3 4 5 03642 ; DDRRRRRR RRRRRRRR XXGGGGGG GGGGGGGG XXBBBBBB BBBBBBBB 03643 ; xx111110 00000000 xx111110 00000000 xx111110 00000000 03644 ; xx432109 87654321 xx432109 87654321 xx432109 87654321 03645 ; 03646 ; DD = delay counter 03647 ; XX = not used 03648 var p2count 0000005A M p2count equ mem 0000005B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03649 04CA 2413 03650 call get_next_pattern_entry 04CB 00C9 03651 movwf in0 03652 04CC 2413 03653 call get_next_pattern_entry 04CD 00CA 03654 movwf in1 03655 04CE 2413 03656 call get_next_pattern_entry 04CF 00CB 03657 movwf in2 03658 04D0 2413 03659 call get_next_pattern_entry 04D1 00CC 03660 movwf in3 03661 04D2 2413 03662 call get_next_pattern_entry 04D3 00CD 03663 movwf in4 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03664 04D4 2413 03665 call get_next_pattern_entry 04D5 00CE 03666 movwf in5 03667 04D6 30C0 03668 movlw b'11000000' 04D7 0549 03669 andwf in0,w 04D8 00DA 03670 movwf p2count 04D9 1003 03671 bcf STATUS, C 04DA 0CDA 03672 rrf p2count,f 04DB 0CDA 03673 rrf p2count,f 04DC 0CDA 03674 rrf p2count,f 04DD 0CDA 03675 rrf p2count,f 04DE 0CDA 03676 rrf p2count,f 04DF 0CDA 03677 rrf p2count,f 04E0 0ADA 03678 incf p2count,f 03679 04E1 03680 p3loop 04E1 0857 03681 movfw pspeed 04E2 2516 03682 call display_1bit 03683 04E3 0BDA 03684 decfsz p2count,f 04E4 2CE1 03685 goto p3loop 03686 04E5 0008 03687 return 03688 #endif 03689 03690 #ifdef PATTERN17 03691 ;********************************************************************** 04E6 03692 table_type_17 03693 ;********************************************************************** 03694 ; 03695 ; 13 bytes 03696 ; 03697 ; AAAABBBB 03698 ; 03699 ; A = shire Right/Left 03700 ; BB = two bit intensity to shift on 03701 ; CCCCC = Number of shifts to loop 03702 ; 03703 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 03704 ; 03705 03706 04E6 2413 03707 call get_next_pattern_entry 04E7 00C9 03708 movwf in0 03709 04E8 2413 03710 call get_next_pattern_entry 04E9 00CA 03711 movwf in1 03712 04EA 2413 03713 call get_next_pattern_entry 04EB 00CB 03714 movwf in2 03715 04EC 2413 03716 call get_next_pattern_entry MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04ED 00CC 03717 movwf in3 03718 04EE 2413 03719 call get_next_pattern_entry 04EF 00CD 03720 movwf in4 03721 04F0 2413 03722 call get_next_pattern_entry 04F1 00CE 03723 movwf in5 03724 04F2 2413 03725 call get_next_pattern_entry 04F3 00CF 03726 movwf in6 03727 04F4 2413 03728 call get_next_pattern_entry 04F5 00D0 03729 movwf in7 03730 04F6 2413 03731 call get_next_pattern_entry 04F7 00D1 03732 movwf in8 03733 04F8 2413 03734 call get_next_pattern_entry 04F9 00D2 03735 movwf in9 03736 04FA 2413 03737 call get_next_pattern_entry 04FB 00D3 03738 movwf in10 03739 04FC 2413 03740 call get_next_pattern_entry 04FD 00D4 03741 movwf in11 03742 04FE 2413 03743 call get_next_pattern_entry 04FF 00DA 03744 movwf p2count 0500 0ADA 03745 incf p2count,f 03746 0501 03747 p17_loop 03748 0501 1BC9 03749 btfsc in0,7 0502 2D08 03750 goto p17_fader 03751 0503 0857 03752 movfw pspeed 0504 2516 03753 call display_1bit 03754 0505 0BDA 03755 decfsz p2count,f 0506 2D01 03756 goto p17_loop 03757 0507 0008 03758 return 03759 0508 03760 p17_fader 03761 0508 3007 008A 03762 pageselw rgb_stick_expand2 050A 274E 03763 call rgb_stick_expand2 050B 3005 008A 03764 pageselw p17_fader 03765 050D 0857 03766 movf pspeed,w 050E 23E5 03767 call strobe_delay 03768 03769 ; MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03770 ; This is a quick hack, because without this button presses are not seen for minutes 03771 ; This early exit might impact the pattern getting displayed. 03772 ; 050F 182E 03773 btfsc button,0 ; if putton pressed show pattern id 0510 2D15 03774 goto t17_return 03775 0511 1831 03776 btfsc IR_in_good,0 0512 2D15 03777 goto t17_return 03778 0513 0BDA 03779 decfsz p2count,f 0514 2D01 03780 goto p17_loop 03781 0515 03782 t17_return 0515 0008 03783 return 03784 03785 #endif 03786 03787 #ifdef DISPLAY_1BIT_A 03788 ;********************************************************************** 03789 display_1bit ; Mono 6 LEDs, Badge LED add center (IR) for 7 03790 ;********************************************************************** 03791 03792 movwf speed ;w has the speed/delay 03793 03794 clrf Ar_reg 03795 btfsc in0,7 03796 comf Ar_reg,f 03797 03798 clrf Ag_reg 03799 btfsc in0,5 03800 comf Ag_reg,f 03801 03802 clrf Ab_reg 03803 btfsc in0,3 03804 comf Ab_reg,f 03805 03806 clrf Cr_reg 03807 btfsc in0,6 03808 comf Cr_reg,f 03809 03810 clrf Cg_reg 03811 btfsc in0,4 03812 comf Cg_reg,f 03813 03814 clrf Cb_reg 03815 btfsc in0,2 03816 comf Cb_reg,f 03817 03818 #ifdef BADGE 03819 clrf Center_reg 03820 btfsc in0,1 03821 comf Center_reg,f 03822 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 107 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03823 03824 03825 movf speed,w 03826 call strobe_delay 03827 03828 return 03829 #endif 03830 #ifdef DISPLAY_1BIT_B 03831 ;********************************************************************** 03832 display_1bit ; 19 Circle LEDs (38 LEDs) 03833 ;********************************************************************** 03834 03835 movwf speed ;w has the speed/delay 03836 03837 clrf A1_A2_reg ; 1 03838 clrf A1_C0_reg ; 2 03839 clrf A2_C0_reg ; 3 03840 clrf A2_C1_reg ; 4 03841 clrf C0_C1_reg ; 5 03842 clrf C0_C2_reg ; 6 03843 clrf C0_C4_reg ; 7 03844 clrf C1_C4_reg ; 8 03845 clrf A0_C1_reg ; 9 03846 clrf A0_C0_reg ; 10 03847 clrf A0_A2_reg ; 11 03848 clrf A0_A1_reg ; 12 03849 clrf A1_C2_reg ; 13 03850 clrf A1_C1_reg ; 14 03851 clrf A2_C2_reg ; 15 03852 clrf A2_C4_reg ; 16 03853 clrf A0_C4_reg ; 17 03854 clrf A0_C2_reg ; 18 03855 clrf A1_C4_reg ; 19 03856 clrf C1_C2_reg ; no LED 03857 clrf C2_C4_reg ; no LED 03858 03859 #ifndef MONO 03860 movlw 0xf0 03861 btfsc in2,1 ; 12R 03862 iorwf A0_A1_reg,f 03863 03864 movlw 0xf0 03865 btfsc in2,3 ; 11R 03866 iorwf A0_A2_reg,f 03867 03868 movlw 0xf0 03869 btfsc in2,5 ; 10R 03870 iorwf A0_C0_reg,f 03871 03872 movlw 0xf0 03873 btfsc in2,7 ; 9R 03874 iorwf A0_C1_reg,f 03875 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03876 movlw 0xf0 03877 btfsc in4,5 ; 18R 03878 iorwf A0_C2_reg,f 03879 03880 movlw 0xf0 03881 btfsc in4,7 ; 17R 03882 iorwf A0_C4_reg,f 03883 #endif 03884 03885 movlw 0x0f 03886 btfsc in2,0 ; 12G 03887 iorwf A0_A1_reg,f 03888 03889 #ifndef MONO 03890 movlw 0xf0 03891 btfsc in0,7 ; 1R 03892 iorwf A1_A2_reg,f 03893 03894 movlw 0xf0 03895 btfsc in0,5 ; 2R 03896 iorwf A1_C0_reg,f 03897 03898 movlw 0xf0 03899 btfsc in3,5 03900 iorwf A1_C1_reg,f ; 14R 03901 03902 movlw 0xf0 03903 btfsc in3,7 ; 13R 03904 iorwf A1_C2_reg,f 03905 03906 movlw 0xf0 03907 btfsc in4,3 ; 19R 03908 iorwf A1_C4_reg,f 03909 #endif 03910 03911 movlw 0x0f 03912 btfsc in2,2 ; 11G 03913 iorwf A0_A2_reg,f 03914 03915 movlw 0x0f 03916 btfsc in0,6 ; 1G 03917 iorwf A1_A2_reg,f 03918 03919 #ifndef MONO 03920 movlw 0xf0 03921 btfsc in0,3 ; 3R 03922 iorwf A2_C0_reg,f 03923 03924 movlw 0xf0 03925 btfsc in0,1 ; 4R 03926 iorwf A2_C1_reg,f 03927 03928 movlw 0xf0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03929 btfsc in3,3 ; 15R 03930 iorwf A2_C2_reg,f 03931 03932 movlw 0xf0 03933 btfsc in3,1 ; 16R 03934 iorwf A2_C4_reg,f 03935 #endif 03936 03937 movlw 0x0f 03938 btfsc in2,4 ; 10G 03939 iorwf A0_C0_reg,f 03940 03941 movlw 0x0f 03942 btfsc in0,4 ; 2G 03943 iorwf A1_C0_reg,f 03944 03945 movlw 0x0f 03946 btfsc in0,2 ; 3G 03947 iorwf A2_C0_reg,f 03948 03949 #ifndef MONO 03950 movlw 0xf0 03951 btfsc in1,7 ; 5R 03952 iorwf C0_C1_reg,f 03953 03954 movlw 0xf0 03955 btfsc in1,5 ; 6R 03956 iorwf C0_C2_reg,f 03957 03958 movlw 0xf0 03959 btfsc in1,3 ; 7R 03960 iorwf C0_C4_reg,f 03961 #endif 03962 03963 movlw 0x0f 03964 btfsc in2,6 ; 9G 03965 iorwf A0_C1_reg,f 03966 03967 movlw 0x0f 03968 btfsc in3,4 ; 14G 03969 iorwf A1_C1_reg,f 03970 03971 movlw 0x0f 03972 btfsc in0,0 ; 4G 03973 iorwf A2_C1_reg,f 03974 03975 movlw 0x0f 03976 btfsc in1,6 ; 5G 03977 iorwf C0_C1_reg,f 03978 03979 03980 #ifndef MONO 03981 movlw 0xf0 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03982 btfsc in1,1 ; 8R 03983 iorwf C1_C4_reg,f 03984 #endif 03985 03986 movlw 0x0f 03987 btfsc in4,4 03988 iorwf A0_C2_reg,f ; 18G 03989 03990 movlw 0x0f 03991 btfsc in3,6 ; 13G 03992 iorwf A1_C2_reg,f 03993 03994 movlw 0x0f 03995 btfsc in3,2 03996 iorwf A2_C2_reg,f ; 15G 03997 03998 movlw 0x0f 03999 btfsc in1,4 ; 6G 04000 iorwf C0_C2_reg,f 04001 04002 movlw 0x0f 04003 btfsc in4,6 ; 17G 04004 iorwf A0_C4_reg,f 04005 04006 movlw 0x0f 04007 btfsc in4,2 ; 19G 04008 iorwf A1_C4_reg,f 04009 04010 movlw 0x0f 04011 btfsc in3,0 ; 16G 04012 iorwf A2_C4_reg,f 04013 04014 movlw 0x0f 04015 btfsc in1,2 ; 7G 04016 iorwf C0_C4_reg,f 04017 04018 movlw 0x0f 04019 btfsc in1,0 04020 iorwf C1_C4_reg,f ; 8G 04021 04022 04023 movf speed,w 04024 call strobe_delay 04025 04026 return 04027 #endif 04028 #ifdef DISPLAY_1BIT_C 04029 ;********************************************************************** 04030 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 04031 ;********************************************************************** 04032 04033 movwf speed ;w has the speed/delay 04034 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04035 clrf Ar_reg 04036 btfsc in0,7 04037 comf Ar_reg,f 04038 04039 clrf Ag_reg 04040 btfsc in0,3 04041 comf Ag_reg,f 04042 04043 clrf Ab_reg 04044 btfsc in1,7 04045 comf Ab_reg,f 04046 04047 clrf Br_reg 04048 btfsc in0,6 04049 comf Br_reg,f 04050 04051 clrf Bg_reg 04052 btfsc in0,2 04053 comf Bg_reg,f 04054 04055 clrf Bb_reg 04056 btfsc in1,6 04057 comf Bb_reg,f 04058 04059 clrf Cr_reg 04060 btfsc in0,5 04061 comf Cr_reg,f 04062 04063 clrf Cg_reg 04064 btfsc in0,1 04065 comf Cg_reg,f 04066 04067 clrf Cb_reg 04068 btfsc in1,5 04069 comf Cb_reg,f 04070 04071 clrf Dr_reg 04072 btfsc in0,4 04073 comf Dr_reg,f 04074 04075 clrf Dg_reg 04076 btfsc in0,0 04077 comf Dg_reg,f 04078 04079 clrf Db_reg 04080 btfsc in1,4 04081 comf Db_reg,f 04082 04083 #ifdef BADGE 04084 clrf Center_reg 04085 btfsc in1,3 04086 comf Center_reg,f 04087 #endif MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04088 04089 movf speed,w 04090 call strobe_delay 04091 04092 return 04093 #endif 04094 #ifdef DISPLAY_1BIT_D 04095 ;********************************************************************** 04096 display_1bit ; 20 LEDs 04097 ;********************************************************************** 04098 04099 movwf speed ;w has the speed/delay 04100 04101 clrf A0_A5_reg ; IR 04102 04103 clrf A5_A0_reg ; 01 04104 btfsc in0,7 04105 comf A5_A0_reg,f 04106 04107 clrf A2_A5_reg ; 02 04108 btfsc in0,6 04109 comf A2_A5_reg,f 04110 04111 clrf A5_A2_reg ; 03 04112 btfsc in0,5 04113 comf A5_A2_reg,f 04114 04115 clrf A4_A5_reg ; 04 04116 btfsc in0,4 04117 comf A4_A5_reg,f 04118 04119 clrf A5_A4_reg ; 05 04120 btfsc in0,3 04121 comf A5_A4_reg,f 04122 04123 clrf A1_A5_reg ; 06 04124 btfsc in0,2 04125 comf A1_A5_reg,f 04126 04127 clrf A5_A1_reg ; 07 04128 btfsc in0,1 04129 comf A5_A1_reg,f 04130 04131 clrf A2_A0_reg ; 08 04132 btfsc in0,0 04133 comf A2_A0_reg,f 04134 04135 clrf A0_A2_reg ; 09 04136 btfsc in1,7 04137 comf A0_A2_reg,f 04138 04139 clrf A4_A0_reg ; 10 04140 btfsc in1,6 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 113 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04141 comf A4_A0_reg,f 04142 04143 clrf A0_A4_reg ; 11 04144 btfsc in1,5 04145 comf A0_A4_reg,f 04146 04147 clrf A1_A0_reg ; 12 04148 btfsc in1,4 04149 comf A1_A0_reg,f 04150 04151 clrf A0_A1_reg ; 13 04152 btfsc in1,3 04153 comf A0_A1_reg,f 04154 04155 clrf A4_A2_reg ; 14 04156 btfsc in1,2 04157 comf A4_A2_reg,f 04158 04159 clrf A2_A4_reg ; 15 04160 btfsc in1,1 04161 comf A2_A4_reg,f 04162 04163 clrf A1_A2_reg ; 16 04164 btfsc in1,0 04165 comf A1_A2_reg,f 04166 04167 clrf A2_A1_reg ; 17 04168 btfsc in2,7 04169 comf A2_A1_reg,f 04170 04171 clrf A1_A4_reg ; 18 04172 btfsc in2,6 04173 comf A1_A4_reg,f 04174 04175 clrf A4_A1_reg ; 19 04176 btfsc in2,5 04177 comf A4_A1_reg,f 04178 04179 04180 movf speed,w 04181 call strobe_delay 04182 04183 return 04184 #endif 04185 04186 #ifdef DISPLAY_1BIT_F 04187 ;********************************************************************** 04188 display_1bit ; 20 LEDs 3x3 04189 ;********************************************************************** 04190 04191 movwf speed ;w has the speed/delay 04192 04193 clrf A4_A0_reg ; 1G MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04194 btfsc in0,7 04195 comf A4_A0_reg,f 04196 04197 clrf A0_A4_reg ; 1R 04198 btfsc in0,6 04199 comf A0_A4_reg,f 04200 04201 clrf A5_A0_reg ; 2G 04202 btfsc in0,5 04203 comf A5_A0_reg,f 04204 04205 clrf A0_A5_reg ; 2R 04206 btfsc in0,4 04207 comf A0_A5_reg,f 04208 04209 clrf A5_A1_reg ; 3G 04210 btfsc in0,3 04211 comf A5_A1_reg,f 04212 04213 clrf A1_A5_reg ; 3R 04214 btfsc in0,2 04215 comf A1_A5_reg,f 04216 04217 clrf A2_A0_reg ; 4G 04218 btfsc in0,1 04219 comf A2_A0_reg,f 04220 04221 clrf A0_A2_reg ; 4R 04222 btfsc in0,0 04223 comf A0_A2_reg,f 04224 04225 clrf A4_A2_reg ; 5G 04226 btfsc in1,7 04227 comf A4_A2_reg,f 04228 04229 clrf A2_A4_reg ; 5R 04230 btfsc in1,6 04231 comf A2_A4_reg,f 04232 04233 clrf A5_A2_reg ; 6G 04234 btfsc in1,5 04235 comf A5_A2_reg,f 04236 04237 clrf A2_A5_reg ; 6R 04238 btfsc in1,4 04239 comf A2_A5_reg,f 04240 04241 clrf A1_A0_reg ; 7G 04242 btfsc in1,3 04243 comf A1_A0_reg,f 04244 04245 clrf A0_A1_reg ; 7R 04246 btfsc in1,2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04247 comf A0_A1_reg,f 04248 04249 clrf A4_A1_reg ; 8G 04250 btfsc in1,1 04251 comf A4_A1_reg,f 04252 04253 clrf A1_A4_reg ; 8R 04254 btfsc in1,0 04255 comf A1_A4_reg,f 04256 04257 clrf A5_A4_reg ; 9G 04258 btfsc in2,7 04259 comf A5_A4_reg,f 04260 04261 clrf A4_A5_reg ; 9R 04262 btfsc in2,6 04263 comf A4_A5_reg,f 04264 04265 clrf A1_A2_reg ; 16 IR 04266 clrf A2_A1_reg ; 17 IR 04267 04268 04269 04270 movf speed,w 04271 call strobe_delay 04272 04273 return 04274 #endif 04275 04276 #ifdef DISPLAY_2BIT_A 04277 ;********************************************************************** 04278 display_2bit 04279 ;********************************************************************** 04280 movf speed,w ;enter here if repeat count is in speed 04281 display_w_2bit ;enter here if repeat count is in W reg 04282 04283 ; 76543210 <-- bits 04284 ; AABBCCDD <-- LEDs 04285 ; 01010101 <-- stays on for 1 unit - b'01' 04286 ; 10101010 <-- stays on for 2 units - b'10' 04287 ; 11111111 <-- stays on for 3 units - b'11' 04288 04289 ; in0 LEDs 1,2,3,4 04290 ; in1 LEDs 5,6,C 04291 04292 04293 clrf Ar_reg 04294 movlw BRIGHT1 04295 btfsc in0,6 04296 addwf Ar_reg,f 04297 movlw BRIGHT2 04298 btfsc in0,7 04299 addwf Ar_reg,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04300 04301 clrf Ag_reg 04302 movlw BRIGHT1 04303 btfsc in0,2 04304 addwf Ag_reg,f 04305 movlw BRIGHT2 04306 btfsc in0,3 04307 addwf Ag_reg,f 04308 04309 clrf Ab_reg 04310 movlw BRIGHT1 04311 btfsc in1,6 04312 addwf Ab_reg,f 04313 movlw BRIGHT2 04314 btfsc in1,7 04315 addwf Ab_reg,f 04316 04317 clrf Cr_reg 04318 movlw BRIGHT1 04319 btfsc in0,4 04320 addwf Cr_reg,f 04321 movlw BRIGHT2 04322 btfsc in0,5 04323 addwf Cr_reg,f 04324 04325 clrf Cg_reg 04326 movlw BRIGHT1 04327 btfsc in0,0 04328 addwf Cg_reg,f 04329 movlw BRIGHT2 04330 btfsc in0,1 04331 addwf Cg_reg,f 04332 04333 clrf Cb_reg 04334 movlw BRIGHT1 04335 btfsc in1,4 04336 addwf Cb_reg,f 04337 movlw BRIGHT2 04338 btfsc in1,5 04339 addwf Cb_reg,f 04340 04341 #ifdef BADGE 04342 clrf Center_reg 04343 movlw BRIGHT1 04344 btfsc in1,2 04345 addwf Center_reg,f 04346 movlw BRIGHT2 04347 btfsc in1,3 04348 addwf Center_reg,f 04349 #endif 04350 04351 movf speed,w 04352 call strobe_delay MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 117 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04353 movf speed,w 04354 call strobe_delay 04355 movf speed,w 04356 call strobe_delay 04357 04358 return 04359 #endif 04360 04361 #ifdef DISPLAY_2BIT_C 04362 ;********************************************************************** 04363 display_2bit 04364 ;********************************************************************** 04365 movf speed,w ;enter here if repeat count is in speed 04366 display_w_2bit ;enter here if repeat count is in W reg 04367 04368 ; 76543210 <-- bits 04369 ; AABBCCDD <-- LEDs 04370 ; 01010101 <-- stays on for 1 unit - b'01' 04371 ; 10101010 <-- stays on for 2 units - b'10' 04372 ; 11111111 <-- stays on for 3 units - b'11' 04373 04374 ; in0 red 04375 ; in1 green 04376 ; in2 blue 04377 04378 clrf Ar_reg 04379 movlw BRIGHT1 04380 btfsc in0,6 04381 addwf Ar_reg,f 04382 movlw BRIGHT2 04383 btfsc in0,7 04384 addwf Ar_reg,f 04385 04386 clrf Ag_reg 04387 movlw BRIGHT1 04388 btfsc in1,6 04389 addwf Ag_reg,f 04390 movlw BRIGHT2 04391 btfsc in1,7 04392 addwf Ag_reg,f 04393 04394 clrf Ab_reg 04395 movlw BRIGHT1 04396 btfsc in2,6 04397 addwf Ab_reg,f 04398 movlw BRIGHT2 04399 btfsc in2,7 04400 addwf Ab_reg,f 04401 04402 clrf Br_reg 04403 movlw BRIGHT1 04404 btfsc in0,4 04405 addwf Br_reg,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04406 movlw BRIGHT2 04407 btfsc in0,5 04408 addwf Br_reg,f 04409 04410 clrf Bg_reg 04411 movlw BRIGHT1 04412 btfsc in1,4 04413 addwf Bg_reg,f 04414 movlw BRIGHT2 04415 btfsc in1,5 04416 addwf Bg_reg,f 04417 04418 clrf Bb_reg 04419 movlw BRIGHT1 04420 btfsc in2,4 04421 addwf Bb_reg,f 04422 movlw BRIGHT2 04423 btfsc in2,5 04424 addwf Bb_reg,f 04425 04426 clrf Cr_reg 04427 movlw BRIGHT1 04428 btfsc in0,2 04429 addwf Cr_reg,f 04430 movlw BRIGHT2 04431 btfsc in0,3 04432 addwf Cr_reg,f 04433 04434 clrf Cg_reg 04435 movlw BRIGHT1 04436 btfsc in1,2 04437 addwf Cg_reg,f 04438 movlw BRIGHT2 04439 btfsc in1,3 04440 addwf Cg_reg,f 04441 04442 clrf Cb_reg 04443 movlw BRIGHT1 04444 btfsc in2,2 04445 addwf Cb_reg,f 04446 movlw BRIGHT2 04447 btfsc in2,3 04448 addwf Cb_reg,f 04449 04450 clrf Dr_reg 04451 movlw BRIGHT1 04452 btfsc in0,0 04453 addwf Dr_reg,f 04454 movlw BRIGHT2 04455 btfsc in0,1 04456 addwf Dr_reg,f 04457 04458 clrf Dg_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04459 movlw BRIGHT1 04460 btfsc in1,0 04461 addwf Dg_reg,f 04462 movlw BRIGHT2 04463 btfsc in1,1 04464 addwf Dg_reg,f 04465 04466 clrf Db_reg 04467 movlw BRIGHT1 04468 btfsc in2,0 04469 addwf Db_reg,f 04470 movlw BRIGHT2 04471 btfsc in2,1 04472 addwf Db_reg,f 04473 04474 #ifdef BADGE 04475 clrf Center_reg 04476 movlw BRIGHT1 04477 btfsc in3,6 04478 addwf Center_reg,f 04479 movlw BRIGHT2 04480 btfsc in3,7 04481 addwf Center_reg,f 04482 #endif 04483 04484 movf speed,w 04485 call strobe_delay 04486 movf speed,w 04487 call strobe_delay 04488 movf speed,w 04489 call strobe_delay 04490 04491 return 04492 #endif 04493 04494 #define BRIGHT1H 0xA0 04495 #define BRIGHT2H 0x40 04496 #define BRIGHT1L 0x0A 04497 #define BRIGHT2L 0x04 04498 04499 04500 #ifdef DISPLAY_2BIT_D 04501 ;********************************************************************** 04502 display_2bit ; 19 Circle LEDs (38 LEDs) 04503 ;********************************************************************** 04504 04505 movwf speed ;w has the speed/delay 04506 04507 clrf A1_A2_reg ; 1 04508 clrf A1_C0_reg ; 2 04509 clrf A2_C0_reg ; 3 04510 clrf A2_C1_reg ; 4 04511 clrf C0_C1_reg ; 5 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04512 clrf C0_C2_reg ; 6 04513 clrf C0_C4_reg ; 7 04514 clrf C1_C4_reg ; 8 04515 clrf A0_C1_reg ; 9 04516 clrf A0_C0_reg ; 10 04517 clrf A0_A2_reg ; 11 04518 clrf A0_A1_reg ; 12 04519 clrf A1_C2_reg ; 13 04520 clrf A1_C1_reg ; 14 04521 clrf A2_C2_reg ; 15 04522 clrf A2_C4_reg ; 16 04523 clrf A0_C4_reg ; 17 04524 clrf A0_C2_reg ; 18 04525 clrf A1_C4_reg ; 19 04526 clrf C1_C2_reg ; no LED 04527 clrf C2_C4_reg ; no LED 04528 04529 movlw BRIGHT1H 04530 btfsc in0,7 ; 1R (high bit) 04531 addwf A1_A2_reg,f 04532 movlw BRIGHT2H 04533 btfsc in0,6 ; 1R (low bit) 04534 addwf A1_A2_reg,f 04535 04536 movlw BRIGHT1L 04537 btfsc in0,5 ; 1G (high bit) 04538 addwf A1_A2_reg,f 04539 movlw BRIGHT2L 04540 btfsc in0,4 ; 1G (low bit) 04541 addwf A1_A2_reg,f 04542 04543 movlw BRIGHT1H 04544 btfsc in0,3 ; 2R (high bit) 04545 addwf A1_C0_reg,f 04546 movlw BRIGHT2H 04547 btfsc in0,2 ; 2R (low bit) 04548 addwf A1_C0_reg,f 04549 04550 movlw BRIGHT1L 04551 btfsc in0,1 ; 2G (high bit) 04552 addwf A1_C0_reg,f 04553 movlw BRIGHT2L 04554 btfsc in0,0 ; 2G (low bit) 04555 addwf A1_C0_reg,f 04556 04557 movlw BRIGHT1H 04558 btfsc in1,7 ; 3R (high bit) 04559 addwf A2_C0_reg,f 04560 movlw BRIGHT2H 04561 btfsc in1,6 ; 3R (low bit) 04562 addwf A2_C0_reg,f 04563 04564 movlw BRIGHT1L MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04565 btfsc in1,5 ; 3G (high bit) 04566 addwf A2_C0_reg,f 04567 movlw BRIGHT2L 04568 btfsc in1,4 ; 3G (low bit) 04569 addwf A2_C0_reg,f 04570 04571 movlw BRIGHT1H 04572 btfsc in1,3 ; 4R (high bit) 04573 addwf A2_C1_reg,f 04574 movlw BRIGHT2H 04575 btfsc in1,2 ; 4R (low bit) 04576 addwf A2_C1_reg,f 04577 04578 movlw BRIGHT1L 04579 btfsc in1,1 ; 4G (high bit) 04580 addwf A2_C1_reg,f 04581 movlw BRIGHT2L 04582 btfsc in1,0 ; 4G (low bit) 04583 addwf A2_C1_reg,f 04584 04585 movlw BRIGHT1H 04586 btfsc in2,7 ; 5R (high bit) 04587 addwf C0_C1_reg,f 04588 movlw BRIGHT2H 04589 btfsc in2,6 ; 5R (low bit) 04590 addwf C0_C1_reg,f 04591 04592 movlw BRIGHT1L 04593 btfsc in2,5 ; 5G (high bit) 04594 addwf C0_C1_reg,f 04595 movlw BRIGHT2L 04596 btfsc in2,4 ; 5G (low bit) 04597 addwf C0_C1_reg,f 04598 04599 movlw BRIGHT1H 04600 btfsc in2,3 ; 6R (high bit) 04601 addwf C0_C2_reg,f 04602 movlw BRIGHT2H 04603 btfsc in2,2 ; 6R (low bit) 04604 addwf C0_C2_reg,f 04605 04606 movlw BRIGHT1L 04607 btfsc in2,1 ; 6G (high bit) 04608 addwf C0_C2_reg,f 04609 movlw BRIGHT2L 04610 btfsc in2,0 ; 6G (low bit) 04611 addwf C0_C2_reg,f 04612 04613 movlw BRIGHT1H 04614 btfsc in3,7 ; 7R (high bit) 04615 addwf C0_C4_reg,f 04616 movlw BRIGHT2H 04617 btfsc in3,6 ; 7R (low bit) MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04618 addwf C0_C4_reg,f 04619 04620 movlw BRIGHT1L 04621 btfsc in3,5 ; 7G (high bit) 04622 addwf C0_C4_reg,f 04623 movlw BRIGHT2L 04624 btfsc in3,4 ; 7G (low bit) 04625 addwf C0_C4_reg,f 04626 04627 movlw BRIGHT1H 04628 btfsc in3,3 ; 8R (high bit) 04629 addwf C1_C4_reg,f 04630 movlw BRIGHT2H 04631 btfsc in3,2 ; 8R (low bit) 04632 addwf C1_C4_reg,f 04633 04634 movlw BRIGHT1L 04635 btfsc in3,1 ; 8G (high bit) 04636 addwf C1_C4_reg,f 04637 movlw BRIGHT2L 04638 btfsc in3,0 ; 8G (low bit) 04639 addwf C1_C4_reg,f 04640 04641 movlw BRIGHT1H 04642 btfsc in4,7 ; 9R (high bit) 04643 addwf A0_C1_reg,f 04644 movlw BRIGHT2H 04645 btfsc in4,6 ; 9R (low bit) 04646 addwf A0_C1_reg,f 04647 04648 movlw BRIGHT1L 04649 btfsc in4,5 ; 9G (high bit) 04650 addwf A0_C1_reg,f 04651 movlw BRIGHT2L 04652 btfsc in4,4 ; 9G (low bit) 04653 addwf A0_C1_reg,f 04654 04655 movlw BRIGHT1H 04656 btfsc in4,3 ; 10R (high bit) 04657 addwf A0_C0_reg,f 04658 movlw BRIGHT2H 04659 btfsc in4,2 ; 10R (low bit) 04660 addwf A0_C0_reg,f 04661 04662 movlw BRIGHT1L 04663 btfsc in4,1 ; 10G (high bit) 04664 addwf A0_C0_reg,f 04665 movlw BRIGHT2L 04666 btfsc in4,0 ; 10G (low bit) 04667 addwf A0_C0_reg,f 04668 04669 movlw BRIGHT1H 04670 btfsc in5,7 ; 11R (high bit) MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04671 addwf A0_A2_reg,f 04672 movlw BRIGHT2H 04673 btfsc in5,6 ; 11R (low bit) 04674 addwf A0_A2_reg,f 04675 04676 movlw BRIGHT1L 04677 btfsc in5,5 ; 11G (high bit) 04678 addwf A0_A2_reg,f 04679 movlw BRIGHT2L 04680 btfsc in5,4 ; 11G (low bit) 04681 addwf A0_A2_reg,f 04682 04683 movlw BRIGHT1H 04684 btfsc in5,3 ; 12R (high bit) 04685 addwf A0_A1_reg,f 04686 movlw BRIGHT2H 04687 btfsc in5,2 ; 12R (low bit) 04688 addwf A0_A1_reg,f 04689 04690 movlw BRIGHT1L 04691 btfsc in5,1 ; 12G (high bit) 04692 addwf A0_A1_reg,f 04693 movlw BRIGHT2L 04694 btfsc in5,0 ; 12G (low bit) 04695 addwf A0_A1_reg,f 04696 04697 movlw BRIGHT1H 04698 btfsc in6,7 ; 13R (high bit) 04699 addwf A1_C2_reg,f 04700 movlw BRIGHT2H 04701 btfsc in6,6 ; 13R (low bit) 04702 addwf A1_C2_reg,f 04703 04704 movlw BRIGHT1L 04705 btfsc in6,5 ; 13G (high bit) 04706 addwf A1_C2_reg,f 04707 movlw BRIGHT2L 04708 btfsc in6,4 ; 13G (low bit) 04709 addwf A1_C2_reg,f 04710 04711 movlw BRIGHT1H 04712 btfsc in6,3 ; 14R (high bit) 04713 addwf A1_C1_reg,f 04714 movlw BRIGHT2H 04715 btfsc in6,2 ; 14R (low bit) 04716 addwf A1_C1_reg,f 04717 04718 movlw BRIGHT1L 04719 btfsc in6,1 ; 14G (high bit) 04720 addwf A1_C1_reg,f 04721 movlw BRIGHT2L 04722 btfsc in6,0 ; 14G (low bit) 04723 addwf A1_C1_reg,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04724 04725 movlw BRIGHT1H 04726 btfsc in7,7 ; 15R (high bit) 04727 addwf A2_C2_reg,f 04728 movlw BRIGHT2H 04729 btfsc in7,6 ; 15R (low bit) 04730 addwf A2_C2_reg,f 04731 04732 movlw BRIGHT1L 04733 btfsc in7,5 ; 15G (high bit) 04734 addwf A2_C2_reg,f 04735 movlw BRIGHT2L 04736 btfsc in7,4 ; 15G (low bit) 04737 addwf A2_C2_reg,f 04738 04739 movlw BRIGHT1H 04740 btfsc in7,3 ; 16R (high bit) 04741 addwf A2_C4_reg,f 04742 movlw BRIGHT2H 04743 btfsc in7,2 ; 16R (low bit) 04744 addwf A2_C4_reg,f 04745 04746 movlw BRIGHT1L 04747 btfsc in7,1 ; 16G (high bit) 04748 addwf A2_C4_reg,f 04749 movlw BRIGHT2L 04750 btfsc in7,0 ; 16G (low bit) 04751 addwf A2_C4_reg,f 04752 04753 movlw BRIGHT1H 04754 btfsc in8,7 ; 17R (high bit) 04755 addwf A0_C4_reg,f 04756 movlw BRIGHT2H 04757 btfsc in8,6 ; 17R (low bit) 04758 addwf A0_C4_reg,f 04759 04760 movlw BRIGHT1L 04761 btfsc in8,5 ; 17G (high bit) 04762 addwf A0_C4_reg,f 04763 movlw BRIGHT2L 04764 btfsc in8,4 ; 17G (low bit) 04765 addwf A0_C4_reg,f 04766 04767 movlw BRIGHT1H 04768 btfsc in8,3 ; 18R (high bit) 04769 addwf A0_C2_reg,f 04770 movlw BRIGHT2H 04771 btfsc in8,2 ; 18R (low bit) 04772 addwf A0_C2_reg,f 04773 04774 movlw BRIGHT1L 04775 btfsc in8,1 ; 18G (high bit) 04776 addwf A0_C2_reg,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04777 movlw BRIGHT2L 04778 btfsc in8,0 ; 18G (low bit) 04779 addwf A0_C2_reg,f 04780 04781 movlw BRIGHT1H 04782 btfsc in9,7 ; 19R (high bit) 04783 addwf A1_C4_reg,f 04784 movlw BRIGHT2H 04785 btfsc in9,6 ; 19R (low bit) 04786 addwf A1_C4_reg,f 04787 04788 movlw BRIGHT1L 04789 btfsc in9,5 ; 19G (high bit) 04790 addwf A1_C4_reg,f 04791 movlw BRIGHT2L 04792 btfsc in9,4 ; 19G (low bit) 04793 addwf A1_C4_reg,f 04794 04795 movf speed,w 04796 call strobe_delay 04797 04798 return 04799 #endif 04800 04801 #ifdef DISPLAY_2BIT_E 04802 ;********************************************************************** 04803 display_2bit ; 19 Circle LEDs (38 LEDs) 04804 ;********************************************************************** 04805 04806 movwf speed ;w has the speed/delay 04807 04808 clrf A1_A2_reg ; 1 04809 clrf A1_C0_reg ; 2 04810 clrf A2_C0_reg ; 3 04811 clrf A2_C1_reg ; 4 04812 clrf C0_C1_reg ; 5 04813 clrf C0_C2_reg ; 6 04814 clrf C0_C4_reg ; 7 04815 clrf C1_C4_reg ; 8 04816 clrf A0_C1_reg ; 9 04817 clrf A0_C0_reg ; 10 04818 clrf A0_A2_reg ; 11 04819 clrf A0_A1_reg ; 12 04820 clrf A1_C2_reg ; 13 04821 clrf A1_C1_reg ; 14 04822 clrf A2_C2_reg ; 15 04823 clrf A2_C4_reg ; 16 04824 clrf A0_C4_reg ; 17 04825 clrf A0_C2_reg ; 18 04826 clrf A1_C4_reg ; 19 04827 clrf C1_C2_reg ; no LED 04828 clrf C2_C4_reg ; no LED 04829 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04830 movlw BRIGHT1L 04831 btfsc in0,7 ; 1R (high bit) 04832 addwf A1_A2_reg,f 04833 movlw BRIGHT2L 04834 btfsc in0,6 ; 1R (low bit) 04835 addwf A1_A2_reg,f 04836 04837 04838 movlw BRIGHT1L 04839 btfsc in0,5 ; 2R (high bit) 04840 addwf A1_C0_reg,f 04841 movlw BRIGHT2L 04842 btfsc in0,4 ; 2R (low bit) 04843 addwf A1_C0_reg,f 04844 04845 movlw BRIGHT1L 04846 btfsc in0,3 ; 3R (high bit) 04847 addwf A2_C0_reg,f 04848 movlw BRIGHT2L 04849 btfsc in0,2 ; 3R (low bit) 04850 addwf A2_C0_reg,f 04851 04852 movlw BRIGHT1L 04853 btfsc in0,1 ; 4R (high bit) 04854 addwf A2_C1_reg,f 04855 movlw BRIGHT2L 04856 btfsc in0,0 ; 4R (low bit) 04857 addwf A2_C1_reg,f 04858 04859 movlw BRIGHT1L 04860 btfsc in1,7 ; 5R (high bit) 04861 addwf C0_C1_reg,f 04862 movlw BRIGHT2L 04863 btfsc in1,6 ; 5R (low bit) 04864 addwf C0_C1_reg,f 04865 04866 movlw BRIGHT1L 04867 btfsc in1,5 ; 6R (high bit) 04868 addwf C0_C2_reg,f 04869 movlw BRIGHT2L 04870 btfsc in1,4 ; 6R (low bit) 04871 addwf C0_C2_reg,f 04872 04873 movlw BRIGHT1L 04874 btfsc in1,3 ; 7R (high bit) 04875 addwf C0_C4_reg,f 04876 movlw BRIGHT2L 04877 btfsc in1,2 ; 7R (low bit) 04878 addwf C0_C4_reg,f 04879 04880 movlw BRIGHT1L 04881 btfsc in1,1 ; 8R (high bit) 04882 addwf C1_C4_reg,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04883 movlw BRIGHT2L 04884 btfsc in1,0 ; 8R (low bit) 04885 addwf C1_C4_reg,f 04886 04887 movlw BRIGHT1L 04888 btfsc in2,7 ; 9R (high bit) 04889 addwf A0_C1_reg,f 04890 movlw BRIGHT2L 04891 btfsc in2,6 ; 9R (low bit) 04892 addwf A0_C1_reg,f 04893 04894 movlw BRIGHT1L 04895 btfsc in2,5 ; 10R (high bit) 04896 addwf A0_C0_reg,f 04897 movlw BRIGHT2L 04898 btfsc in2,4 ; 10R (low bit) 04899 addwf A0_C0_reg,f 04900 04901 movlw BRIGHT1L 04902 btfsc in2,3 ; 11R (high bit) 04903 addwf A0_A2_reg,f 04904 movlw BRIGHT2L 04905 btfsc in2,2 ; 11R (low bit) 04906 addwf A0_A2_reg,f 04907 04908 movlw BRIGHT1L 04909 btfsc in2,1 ; 12R (high bit) 04910 addwf A0_A1_reg,f 04911 movlw BRIGHT2L 04912 btfsc in2,0 ; 12R (low bit) 04913 addwf A0_A1_reg,f 04914 04915 movlw BRIGHT1L 04916 btfsc in3,7 ; 13R (high bit) 04917 addwf A1_C2_reg,f 04918 movlw BRIGHT2L 04919 btfsc in3,6 ; 13R (low bit) 04920 addwf A1_C2_reg,f 04921 04922 movlw BRIGHT1L 04923 btfsc in3,5 ; 14R (high bit) 04924 addwf A1_C1_reg,f 04925 movlw BRIGHT2L 04926 btfsc in3,4 ; 14R (low bit) 04927 addwf A1_C1_reg,f 04928 04929 movlw BRIGHT1L 04930 btfsc in3,3 ; 15R (high bit) 04931 addwf A2_C2_reg,f 04932 movlw BRIGHT2L 04933 btfsc in3,2 ; 15R (low bit) 04934 addwf A2_C2_reg,f 04935 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04936 movlw BRIGHT1L 04937 btfsc in3,1 ; 16R (high bit) 04938 addwf A2_C4_reg,f 04939 movlw BRIGHT2L 04940 btfsc in3,0 ; 16R (low bit) 04941 addwf A2_C4_reg,f 04942 04943 movlw BRIGHT1L 04944 btfsc in4,7 ; 17R (high bit) 04945 addwf A0_C4_reg,f 04946 movlw BRIGHT2L 04947 btfsc in4,6 ; 17R (low bit) 04948 addwf A0_C4_reg,f 04949 04950 movlw BRIGHT1L 04951 btfsc in4,5 ; 18R (high bit) 04952 addwf A0_C2_reg,f 04953 movlw BRIGHT2L 04954 btfsc in4,4 ; 18R (low bit) 04955 addwf A0_C2_reg,f 04956 04957 movlw BRIGHT1L 04958 btfsc in4,3 ; 19R (high bit) 04959 addwf A1_C4_reg,f 04960 movlw BRIGHT2L 04961 btfsc in4,2 ; 19R (low bit) 04962 addwf A1_C4_reg,f 04963 04964 movf speed,w 04965 call strobe_delay 04966 04967 return 04968 #endif 04969 04970 #ifdef DISPLAY_1BIT_E 04971 ;********************************************************************** 0516 04972 display_1bit ; RGB Stick (14 * 3 = 42 LEDs 04973 ;********************************************************************** 04974 var temp4 0000005B M temp4 equ mem 0000005C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 04975 0516 00D6 04976 movwf speed ;w has the speed/delay 04977 04978 ; set all var 0xA0 to 0xEF to zero 0517 30A0 04979 movlw 0xA0 0518 0084 04980 movwf FSR 04981 0519 3050 04982 movlw 0x50 051A 00DB 04983 movwf temp4 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04984 051B 04985 clr_loop 04986 051B 0180 04987 clrf INDF 051C 0A84 04988 incf FSR,f 051D 0BDB 04989 decfsz temp4,f 051E 2D1B 04990 goto clr_loop 04991 051F 3006 008A 04992 pageselw rgb_stick_expand 0521 267B 04993 call rgb_stick_expand 0522 3005 008A 04994 pageselw display_1bit 04995 0524 0856 04996 movf speed,w 0525 23E5 04997 call strobe_delay 04998 0526 0008 04999 return 05000 #endif 05001 05002 ;********************************************************************** 05003 ; IR Tester 05004 ;********************************************************************** 0527 05005 IR_Tester 0527 05006 itop 0527 3002 05007 movlw 0x02 0528 0227 05008 subwf instate,w 0529 1C03 05009 btfss STATUS,C 052A 0103 05010 clrw 052B 00C9 05011 movwf in0 05012 052C 3000 05013 movlw 0x00 052D 00CA 05014 movwf in1 05015 052E 3001 05016 movlw 0x01 052F 2516 05017 call display_1bit 05018 05019 ; 05020 ; Check for push button 05021 ; 0530 05022 ibutton 0530 082E 05023 movf button,w 0531 1903 05024 btfsc STATUS,Z 0532 2D43 05025 goto iloop1 0533 01A8 05026 clrf max_instate 0534 01A7 05027 clrf instate 05028 0535 083E 05029 movf scount,w ; if sending an IR command ignore button 0536 3E00 05030 addlw 0 ; not sure if needed 0537 1D03 05031 btfss STATUS,Z 0538 2D30 05032 goto ibutton 05033 0539 082E 05034 movf button,w ; 2st 8 bits are the buttons 053A 00CA 05035 movwf in1 053B 01C9 05036 clrf in0 ; next 8 are zero MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05037 ; movlw 0x80 05038 ; movwf in2 ; led 17 is on 05039 05040 053C 3001 05041 movlw 0x01 053D 2516 05042 call display_1bit 05043 05044 ; send an IR signel 053E 01B6 05045 clrf out_address ; address 0x00 "TV remote" 05046 05047 #ifdef M3X3 05048 05049 btfsc button,0 ; if button 1 pressed inc pattern 05050 goto send_chan_up 05051 05052 btfsc button,1 ; if button 1 pressed inc pattern 05053 goto send_chan_down 05054 05055 btfsc button,2 ; if button 1 pressed inc pattern 05056 goto send_vol_up 05057 05058 btfsc button,3 ; if button 1 pressed inc pattern 05059 goto send_vol_down 05060 05061 btfsc button,4 ; if button 1 pressed inc pattern 05062 goto send_on_off 05063 05064 send_chan_up 05065 movlw 0x20 05066 movwf out_command ; code 0x0c (on/off) 05067 call rf_command_out 05068 goto ibutton 05069 05070 send_chan_down 05071 movlw 0x21 05072 movwf out_command ; code 0x0c (on/off) 05073 call rf_command_out 05074 goto ibutton 05075 05076 send_vol_up 05077 movlw 0x10 05078 movwf out_command ; code 0x0c (on/off) 05079 call rf_command_out 05080 goto ibutton 05081 05082 send_vol_down 05083 movlw 0x11 05084 movwf out_command ; code 0x0c (on/off) 05085 call rf_command_out 05086 goto ibutton 05087 05088 #endif 05089 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE 053F 05090 send_on_off 053F 300C 05091 movlw 0x0c 0540 00B7 05092 movwf out_command ; code 0x0c (on/off) 0541 2388 05093 call rf_command_out 0542 2D30 05094 goto ibutton 05095 05096 05097 ; 05098 ; Check for IR Command 05099 ; 0543 05100 iloop1 0543 1C31 05101 btfss IR_in_good,0 0544 2D27 05102 goto itop 0545 01B1 05103 clrf IR_in_good 05104 05105 ; flash all LEDs Red 0546 30F0 05106 movlw 0xF0 0547 00C9 05107 movwf in0 0548 01CA 05108 clrf in1 05109 0549 307F 05110 movlw 0x7f 054A 2516 05111 call display_1bit 05112 05113 ; flash all LEDs off 054B 01C9 05114 clrf in0 054C 01CA 05115 clrf in1 05116 054D 303F 05117 movlw 0x3f 054E 2516 05118 call display_1bit 05119 05120 ; flash all LEDs Red 054F 30F0 05121 movlw 0xF0 0550 00C9 05122 movwf in0 0551 01CA 05123 clrf in1 05124 0552 307F 05125 movlw 0x7f 0553 2516 05126 call display_1bit 05127 05128 ; display command and address 0554 082A 05129 movf command,w 0555 00C9 05130 movwf in0 0556 082B 05131 movf address,w 0557 00CA 05132 movwf in1 05133 0558 30FF 05134 movlw 0xff 0559 2516 05135 call display_1bit 055A 30FF 05136 movlw 0xff 055B 2516 05137 call display_1bit 055C 01A8 05138 clrf max_instate 055D 01A7 05139 clrf instate 05140 055E 2D27 05141 goto itop 05142 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05143 05144 ; 05145 ; M A I N 05146 ; 05147 ;********************************************************************** 055F 05148 main 05149 ;********************************************************************** 05150 055F 0185 05151 clrf PORTA 0560 0181 05152 clrf TMR0 0561 01C7 05153 clrf pattern 0562 01BE 05154 clrf scount 0563 01AC 05155 clrf toggle 0564 01AB 05156 clrf address 0565 01AA 05157 clrf command 0566 01AD 05158 clrf IR_lhalf 0567 01A7 05159 clrf instate 0568 01A8 05160 clrf max_instate 0569 01B1 05161 clrf IR_in_good 056A 01A2 05162 clrf dcycle 056B 01A3 05163 clrf count1 056C 01A4 05164 clrf count2 05165 #ifdef PATTERN2 05166 clrf delay1 05167 clrf fad 05168 clrf color 05169 #endif 05170 #ifndef C19 05171 #ifdef MONO 05172 clrf Br_reg 05173 clrf Bg_reg 05174 clrf Bb_reg 05175 clrf Dr_reg 05176 clrf Dg_reg 05177 clrf Db_reg 05178 #endif 05179 #endif 05180 056D 3007 05181 movlw 0x07 056E 0099 05182 movwf CMCON0 ;turn off comparator 05183 05184 setbank1 056F 1683 M bsf STATUS,RP0 ; select bank 1 0570 1303 M bcf STATUS,RP1 05185 05186 ; set up TMR0 & pullups 05187 ; +---------- disable pullups (1) 05188 ; |+--------- interrupt edge select (don't care) 05189 ; ||+-------- TMR0 source = internal clock (0) 05190 ; |||+------- TMR0 source edge select (don't care) 05191 ; ||||+------ assign prescaler to TMR0 (0) 05192 ; |||||+++--- prescaler set to 8X (010) 05193 ; |||||||| MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0571 3082 05194 movlw b'10000010' 0572 0081 05195 movwf OPTION_REG 05196 05197 #ifdef C19 05198 ; enable pullups on portA 05199 bcf OPTION_REG,NOT_RAPU 05200 05201 ; input on A5 05202 clrf WPUA ; disable all pullups 05203 bsf WPUA,5 ; enable pullup A5 05204 #endif 05205 05206 #ifdef SRGB 05207 ; enable pullups on portA 0573 1381 05208 bcf OPTION_REG,NOT_RAPU 05209 05210 ; input on A5 0574 0195 05211 clrf WPUA ; disable all pullups 0575 1695 05212 bsf WPUA,5 ; enable pullup A5 0576 1615 05213 bsf WPUA,4 ; enable pullup A4 05214 #endif 05215 0577 3070 05216 movlw b'01110000' ;switch to 8 MHz clock 0578 048F 05217 iorwf OSCCON,f 05218 0579 0191 05219 clrf ANSEL ;set pins to digital 05220 05221 #ifdef __16F688 05222 ; setup timer0 05223 ; bcf OPTION_REG,T0CS 05224 #endif 05225 05226 setbank0 057A 1283 M bcf STATUS,RP0 ; select bank 0 057B 1303 M bcf STATUS,RP1 05227 057C 01AE 05228 clrf button 05229 05230 #ifdef RANDOM 05231 movlw 0x1D 05232 movwf random 05233 #endif 05234 05235 ; enable timer0 interupt 057D 168B 05236 bsf INTCON,T0IE 057E 178B 05237 bsf INTCON,GIE 05238 057F 05239 loop_ddf 05240 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 057F 30FF 05241 movlw b'11111111' 05242 0580 00C9 05243 movwf in0 0581 00CA 05244 movwf in1 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0582 00CB 05245 movwf in2 05246 #ifdef C19 05247 movwf in3 05248 movwf in4 05249 #endif 05250 #ifdef SRGB 0583 00CC 05251 movwf in3 0584 00CD 05252 movwf in4 0585 00CE 05253 movwf in5 05254 #endif 05255 0586 30FF 05256 movlw 0xff 0587 2516 05257 call display_1bit 0588 30FF 05258 movlw 0xff 0589 2516 05259 call display_1bit 05260 05261 #ifdef M3X3 ; have to wait for the IR to go high, and the buttons to de-bounce on 3x3 po werup 05262 movlw 0xff 05263 call display_1bit 05264 movlw 0xff 05265 call display_1bit 05266 #endif 05267 05268 05269 ; Trun all the LEDs off 058A 01C9 05270 clrf in0 058B 01CA 05271 clrf in1 058C 01CB 05272 clrf in2 05273 #ifdef C19 05274 clrf in3 05275 clrf in4 05276 #endif 05277 #ifdef SRGB 058D 01CC 05278 clrf in3 058E 01CD 05279 clrf in4 058F 01CE 05280 clrf in5 05281 #endif 05282 0590 30FF 05283 movlw 0xff 0591 2516 05284 call display_1bit 0592 30FF 05285 movlw 0xff 0593 2516 05286 call display_1bit 05287 0594 2452 05288 call read_demo_mode 05289 0595 082E 05290 movfw button 0596 00CA 05291 movwf in1 0597 30FF 05292 movlw 0xff 0598 2516 05293 call display_1bit 0599 30FF 05294 movlw 0xff 059A 2516 05295 call display_1bit 05296 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05297 ; if button pressed durring powerup run IR_Tester 05298 ; else run pattern driver 05299 ; 059B 1C2E 05300 btfss button,0 059C 2C64 05301 goto pattern_driver 059D 2456 05302 call toggle_demo 05303 #ifdef ENABLE_IR 059E 2D27 05304 goto IR_Tester 05305 #else 05306 goto pattern_driver 05307 #endif 05308 05309 ;********************************************************************** 059F 05310 table_lookup 05311 ;********************************************************************** 059F 0841 05312 movf tbl_hi,w 05A0 008A 05313 movwf PCLATH 05A1 0879 05314 movf pindex,w 05A2 0742 05315 addwf tbl_low,w 05A3 1803 05316 btfsc STATUS,0 ; check carry flag 05A4 0A8A 05317 incf PCLATH,f 05A5 0082 05318 movwf PCL 05319 05320 ;********************************************************************** 05A6 05321 jump_address 05322 ;********************************************************************** 05323 ; Portability : clean 05324 ; 05325 var offset_hi 0000005C M offset_hi equ mem 0000005D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05326 var offset_low 0000005D M offset_low equ mem 0000005E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05327 05A6 080A 05328 movf PCLATH,w 05A7 00C5 05329 movwf pclath_save 05A8 085C 05330 movf offset_hi,w 05A9 008A 05331 movwf PCLATH 05332 05AA 085D 05333 movf offset_low, w 05AB 0082 05334 movwf PCL 05335 05336 05337 ;********************************************************************** 05AC 05338 MasterTable 05339 ;********************************************************************** MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 136 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05340 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 05AC 3409 3479 M dt HIGH table0, LOW table0 00000001 M i += 1 05AE 340A 340C M dt HIGH table1, LOW table1 00000002 M i += 1 05B0 340A 34C9 M dt HIGH table2, LOW table2 00000003 M i += 1 05B2 340B 3414 M dt HIGH table3, LOW table3 00000004 M i += 1 05B4 340B 34A7 M dt HIGH table4, LOW table4 00000005 M i += 1 05B6 340C 343A M dt HIGH table5, LOW table5 00000006 M i += 1 05B8 3421 3400 M dt HIGH table6, LOW table6 00000007 M i += 1 05BA 3421 3409 M dt HIGH table7, LOW table7 00000008 M i += 1 05BC 3421 3418 M dt HIGH table8, LOW table8 00000009 M i += 1 05BE 3421 343F M dt HIGH table9, LOW table9 0000000A M i += 1 05C0 3421 3466 M dt HIGH table10, LOW table10 0000000B M i += 1 05C2 3421 347B M dt HIGH table11, LOW table11 0000000C M i += 1 05C4 3421 3496 M dt HIGH table12, LOW table12 0000000D M i += 1 05C6 3421 34A5 M dt HIGH table13, LOW table13 0000000E M i += 1 05C8 3421 34B4 M dt HIGH table14, LOW table14 0000000F M i += 1 05CA 3421 34CF M dt HIGH table15, LOW table15 00000010 M i += 1 M endw 05341 05342 05343 #ifdef PATTERN16 05344 #define BRIGHT1_lo 0x04 05345 #define BRIGHT2_lo 0x0A 05346 #define BRIGHT1_hi 0x40 05347 #define BRIGHT2_hi 0xA0 05348 05349 ;********************************************************************** 05CC 05350 table_type_16 05351 ;********************************************************************** 05352 ; 05353 ; 1 bytes 05354 ; 05355 ; ABBCCCCC 05356 ; 05357 ; A = shire Right/Left MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 137 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05358 ; BB = two bit intensity to shift on 05359 ; CCCCC = Number of shifts to loop 05360 ; 05361 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 05362 05363 var t7count 0000005E M t7count equ mem 0000005F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05364 var t17_loop 0000005F M t17_loop equ mem 00000060 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05365 05CC 3004 008A 05366 pageselw get_next_pattern_entry 05CE 2413 05367 call get_next_pattern_entry 05CF 00C9 05368 movwf in0 05369 05D0 2413 05370 call get_next_pattern_entry 05D1 00CA 05371 movwf in1 05D2 3005 008A 05372 pageselw table_type_16 05373 05D4 301F 05374 movlw b'00011111' 05D5 0549 05375 andwf in0,w 05D6 00DE 05376 movwf t7count 05377 05D7 301F 05378 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 05D8 025E 05379 subwf t7count,w 05D9 1D03 05380 btfss STATUS,Z 05DA 2DE7 05381 goto t7_loop_red 05382 05DB 01C9 05383 clrf in0 ; quick way to clear all the LEDS. 05DC 01CA 05384 clrf in1 05DD 01CB 05385 clrf in2 05DE 01CC 05386 clrf in3 05DF 01CD 05387 clrf in4 05E0 01CE 05388 clrf in5 05E1 3005 008A 05389 pageselw display_1bit 05E3 2516 05390 call display_1bit 05E4 3005 008A 05391 pageselw table_type_16 05E6 2E02 05392 goto t7_return 05393 05E7 05394 t7_loop_red 05E7 1BC9 05395 btfsc in0,7 05E8 2DEB 05396 goto t7_set19_red 05397 05E9 2603 05398 call red_up 05EA 2DEC 05399 goto t7_loop_green 05400 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 138 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05EB 05401 t7_set19_red 05402 05EB 2617 05403 call red_down 05404 05EC 05405 t7_loop_green 05EC 1B49 05406 btfsc in0,6 05ED 2DF0 05407 goto t7_set19_green 05408 05EE 262B 05409 call green_up 05410 05EF 2DF1 05411 goto t7_loop_blue 05412 ; 05413 ; set LED 19 05F0 05414 t7_set19_green 05415 05F0 263F 05416 call green_down 05417 05F1 05418 t7_loop_blue 05419 05F1 1AC9 05420 btfsc in0,5 05F2 2DF5 05421 goto t7_set19_blue 05422 05F3 2653 05423 call blue_up 05424 05F4 2DF6 05425 goto t7_cont 05426 ; 05427 ; set LED 19 05F5 05428 t7_set19_blue 05F5 2667 05429 call blue_dowm 05F6 05430 t7_cont 05F6 3003 008A 05431 pageselw strobe_delay 05F8 0857 05432 movf pspeed,w 05F9 23E5 05433 call strobe_delay 05FA 3005 008A 05434 pageselw t7_cont 05435 ; 05436 ; This is a quick hack, because without this button presses are not seen for minutes 05437 ; This early exit might impact the pattern getting displayed. 05438 ; 05FC 182E 05439 btfsc button,0 ; if putton pressed show pattern id 05FD 2E02 05440 goto t7_return 05441 05FE 1831 05442 btfsc IR_in_good,0 05FF 2E02 05443 goto t7_return 05444 0600 0BDE 05445 decfsz t7count,f 0601 2DE7 05446 goto t7_loop_red 05447 0602 05448 t7_return 0602 0008 05449 return 05450 05451 ;********************************************************************** 0603 05452 red_up 05453 ;********************************************************************** MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 139 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05454 0603 300D 05455 movlw 0x0d 0604 00DF 05456 movwf t17_loop 05457 0605 30AC 05458 movlw A2_C1_reg ; index = 13 R 0606 0084 05459 movwf FSR 05460 0607 05461 red_up_loop 0607 0800 05462 movfw INDF ; load R [index] 0608 0A84 05463 incf FSR,f ; index ++ 0609 0080 05464 movwf INDF ; store R [index] 05465 060A 0384 05466 decf FSR,f ; index - 2 060B 0384 05467 decf FSR,f 05468 060C 0BDF 05469 decfsz t17_loop,f 060D 2E07 05470 goto red_up_loop 05471 ; 05472 ; 01 Red 05473 ; 060E 0A84 05474 incf FSR,f 060F 0180 05475 clrf INDF 0610 3040 05476 movlw BRIGHT1 0611 1B4A 05477 btfsc in1,6 0612 0780 05478 addwf INDF,f ;01 0613 30A0 05479 movlw BRIGHT2 0614 1BCA 05480 btfsc in1,7 0615 0780 05481 addwf INDF,f ;01 05482 0616 0008 05483 return 05484 05485 ;********************************************************************** 0617 05486 red_down 05487 ;********************************************************************** 05488 0617 300D 05489 movlw 0x0d 0618 00DF 05490 movwf t17_loop 05491 0619 30A1 05492 movlw C2_C3_reg ; index = 02 R 061A 0084 05493 movwf FSR 05494 061B 05495 red_down_loop 061B 0800 05496 movfw INDF ; load R [index] 061C 0384 05497 decf FSR,f ; index - 1 061D 0080 05498 movwf INDF ; store R [index] 05499 061E 0A84 05500 incf FSR,f ; index + 2 061F 0A84 05501 incf FSR,f 05502 0620 0BDF 05503 decfsz t17_loop,f 0621 2E1B 05504 goto red_down_loop 05505 ; 05506 ; 14 Red MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 140 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05507 ; 0622 0384 05508 decf FSR,f 0623 0180 05509 clrf INDF 0624 3040 05510 movlw BRIGHT1 0625 1B4A 05511 btfsc in1,6 0626 0780 05512 addwf INDF,f ;01 0627 30A0 05513 movlw BRIGHT2 0628 1BCA 05514 btfsc in1,7 0629 0780 05515 addwf INDF,f ;01 05516 062A 0008 05517 return 05518 05519 ;********************************************************************** 062B 05520 green_up 05521 ;********************************************************************** 05522 062B 300D 05523 movlw 0x0d 062C 00DF 05524 movwf t17_loop 05525 062D 30BA 05526 movlw C4_C1_reg ; index = 13 G 062E 0084 05527 movwf FSR 05528 062F 05529 green_up_loop 062F 0800 05530 movfw INDF ; load G [index] 0630 0A84 05531 incf FSR,f ; index ++ 0631 0080 05532 movwf INDF ; store G [index] 05533 0632 0384 05534 decf FSR,f ; index - 2 0633 0384 05535 decf FSR,f 05536 0634 0BDF 05537 decfsz t17_loop,f 0635 2E2F 05538 goto green_up_loop 05539 ; 05540 ; 01 Green 05541 ; 0636 0A84 05542 incf FSR,f 0637 0180 05543 clrf INDF 0638 3040 05544 movlw BRIGHT1 0639 1A4A 05545 btfsc in1,4 063A 0780 05546 addwf INDF,f ;01 063B 30A0 05547 movlw BRIGHT2 063C 1ACA 05548 btfsc in1,5 063D 0780 05549 addwf INDF,f ;01 05550 063E 0008 05551 return 05552 05553 ;********************************************************************** 063F 05554 green_down 05555 ;********************************************************************** 05556 063F 300D 05557 movlw 0x0d 0640 00DF 05558 movwf t17_loop 05559 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 141 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0641 30AF 05560 movlw C0_C3_reg ; index = 02 Green 0642 0084 05561 movwf FSR 05562 0643 05563 green_down_loop 0643 0800 05564 movfw INDF ; load R [index] 0644 0384 05565 decf FSR,f ; index - 1 0645 0080 05566 movwf INDF ; store R [index] 05567 0646 0A84 05568 incf FSR,f ; index + 2 0647 0A84 05569 incf FSR,f 05570 0648 0BDF 05571 decfsz t17_loop,f 0649 2E43 05572 goto green_down_loop 05573 ; 05574 ; 14 Green 05575 ; 064A 0384 05576 decf FSR,f 064B 0180 05577 clrf INDF 064C 3040 05578 movlw BRIGHT1 064D 1A4A 05579 btfsc in1,4 064E 0780 05580 addwf INDF,f ;01 064F 30A0 05581 movlw BRIGHT2 0650 1ACA 05582 btfsc in1,5 0651 0780 05583 addwf INDF,f ;01 05584 0652 0008 05585 return 05586 05587 05588 ;********************************************************************** 0653 05589 blue_up 05590 ;********************************************************************** 05591 0653 300D 05592 movlw 0x0d 0654 00DF 05593 movwf t17_loop 05594 0655 30C8 05595 movlw C2_C1_reg ; index = 13 G 0656 0084 05596 movwf FSR 05597 0657 05598 blue_up_loop 0657 0800 05599 movfw INDF ; load G [index] 0658 0A84 05600 incf FSR,f ; index ++ 0659 0080 05601 movwf INDF ; store G [index] 05602 065A 0384 05603 decf FSR,f ; index - 2 065B 0384 05604 decf FSR,f 05605 065C 0BDF 05606 decfsz t17_loop,f 065D 2E57 05607 goto blue_up_loop 05608 ; 05609 ; 01 blue 05610 ; 065E 0A84 05611 incf FSR,f 065F 0180 05612 clrf INDF MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 142 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0660 3040 05613 movlw BRIGHT1 0661 194A 05614 btfsc in1,2 0662 0780 05615 addwf INDF,f ;01 0663 30A0 05616 movlw BRIGHT2 0664 19CA 05617 btfsc in1,3 0665 0780 05618 addwf INDF,f ;01 05619 0666 0008 05620 return 05621 05622 05623 ;********************************************************************** 0667 05624 blue_dowm 05625 ;********************************************************************** 05626 0667 300D 05627 movlw 0x0d 0668 00DF 05628 movwf t17_loop 05629 0669 30BD 05630 movlw C4_C3_reg ; index = 02 Blue 066A 0084 05631 movwf FSR 05632 066B 05633 blue_down_loop 066B 0800 05634 movfw INDF ; load R [index] 066C 0384 05635 decf FSR,f ; index - 1 066D 0080 05636 movwf INDF ; store R [index] 05637 066E 0A84 05638 incf FSR,f ; index + 2 066F 0A84 05639 incf FSR,f 05640 0670 0BDF 05641 decfsz t17_loop,f 0671 2E6B 05642 goto blue_down_loop 05643 ; 05644 ; 14 Green 05645 ; 0672 0384 05646 decf FSR,f 0673 0180 05647 clrf INDF 0674 3040 05648 movlw BRIGHT1 0675 194A 05649 btfsc in1,2 0676 0780 05650 addwf INDF,f ;01 0677 30A0 05651 movlw BRIGHT2 0678 19CA 05652 btfsc in1,3 0679 0780 05653 addwf INDF,f ;01 05654 067A 0008 05655 return 05656 05657 ;********************************************************************** 067B 05658 rgb_stick_expand ; this is a nice chunk of code without jumps to sit on the 11 bit boundry 05659 ;********************************************************************** 05660 067B 30A6 05661 movlw A2_C0_reg 067C 0084 05662 movwf FSR 067D 30FF 05663 movlw 0xff 067E 1B4A 05664 btfsc in1,6 ; R7 067F 0080 05665 movwf INDF MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 143 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05666 0680 30AC 05667 movlw A2_C1_reg 0681 0084 05668 movwf FSR 0682 30FF 05669 movlw 0xff 0683 1A49 05670 btfsc in0,4 ; R13 0684 0080 05671 movwf INDF 05672 0685 30AA 05673 movlw A2_C2_reg 0686 0084 05674 movwf FSR 0687 30FF 05675 movlw 0xff 0688 1949 05676 btfsc in0,2 ; R11 0689 0080 05677 movwf INDF 05678 068A 30AE 05679 movlw A2_C3_reg 068B 0084 05680 movwf FSR 068C 30FF 05681 movlw 0xff 068D 184C 05682 btfsc in3,0 ; G1 068E 0080 05683 movwf INDF 05684 068F 30B0 05685 movlw A2_C4_reg 0690 0084 05686 movwf FSR 0691 30FF 05687 movlw 0xff 0692 194C 05688 btfsc in3,2 ; 3G 0693 0080 05689 movwf INDF 05690 0694 30B3 05691 movlw A2_C5_reg 0695 0084 05692 movwf FSR 0696 30FF 05693 movlw 0xff 0697 1ACC 05694 btfsc in3,5 ; 6G 0698 0080 05695 movwf INDF 05696 0699 30C9 05697 movlw C0_C1_reg 069A 0084 05698 movwf FSR 069B 30FF 05699 movlw 0xff 069C 1ACD 05700 btfsc in4,5 ; 14B 069D 0080 05701 movwf INDF 05702 069E 30C7 05703 movlw C0_C2_reg 069F 0084 05704 movwf FSR 06A0 30FF 05705 movlw 0xff 06A1 19CD 05706 btfsc in4,3 ; 12B 06A2 0080 05707 movwf INDF 05708 06A3 30AF 05709 movlw C0_C3_reg 06A4 0084 05710 movwf FSR 06A5 30FF 05711 movlw 0xff 06A6 18CC 05712 btfsc in3,1 ; 2G 06A7 0080 05713 movwf INDF 05714 06A8 30A2 05715 movlw C0_C4_reg 06A9 0084 05716 movwf FSR 06AA 30FF 05717 movlw 0xff 06AB 194A 05718 btfsc in1,2 ; 3R MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 144 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06AC 0080 05719 movwf INDF 05720 06AD 30B2 05721 movlw C0_C5_reg 06AE 0084 05722 movwf FSR 06AF 30FF 05723 movlw 0xff 06B0 1A4C 05724 btfsc in3,4 ; 5G 06B1 0080 05725 movwf INDF 05726 06B2 30C6 05727 movlw C1_C2_reg 06B3 0084 05728 movwf FSR 06B4 30FF 05729 movlw 0xff 06B5 194D 05730 btfsc in4,2 ; 11B 06B6 0080 05731 movwf INDF 05732 06B7 30BC 05733 movlw C1_C3_reg 06B8 0084 05734 movwf FSR 06B9 30FF 05735 movlw 0xff 06BA 184E 05736 btfsc in5,0 ; 1B 06BB 0080 05737 movwf INDF 05738 06BC 30BF 05739 movlw C1_C4_reg 06BD 0084 05740 movwf FSR 06BE 30FF 05741 movlw 0xff 06BF 19CE 05742 btfsc in5,3 ; 4B 06C0 0080 05743 movwf INDF 05744 06C1 30C0 05745 movlw C1_C5_reg 06C2 0084 05746 movwf FSR 06C3 30FF 05747 movlw 0xff 06C4 1A4E 05748 btfsc in5,4 ; 5B 06C5 0080 05749 movwf INDF 05750 06C6 30A1 05751 movlw C2_C3_reg 06C7 0084 05752 movwf FSR 06C8 30FF 05753 movlw 0xff 06C9 18CA 05754 btfsc in1,1 ; 2R 06CA 0080 05755 movwf INDF 05756 06CB 30BE 05757 movlw C2_C4_reg 06CC 0084 05758 movwf FSR 06CD 30FF 05759 movlw 0xff 06CE 194E 05760 btfsc in5,2 ; 3B 06CF 0080 05761 movwf INDF 05762 06D0 30C1 05763 movlw C2_C5_reg 06D1 0084 05764 movwf FSR 06D2 30FF 05765 movlw 0xff 06D3 1ACE 05766 btfsc in5,5 ; 6B 06D4 0080 05767 movwf INDF 05768 06D5 30B1 05769 movlw C3_C4_reg 06D6 0084 05770 movwf FSR 06D7 30FF 05771 movlw 0xff MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 145 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06D8 19CC 05772 btfsc in3,3 ; 4G 06D9 0080 05773 movwf INDF 05774 06DA 30A4 05775 movlw C3_C5_reg 06DB 0084 05776 movwf FSR 06DC 30FF 05777 movlw 0xff 06DD 1A4A 05778 btfsc in1,4 ; 5R 06DE 0080 05779 movwf INDF 05780 06DF 30A5 05781 movlw C4_C5_reg 06E0 0084 05782 movwf FSR 06E1 30FF 05783 movlw 0xff 06E2 1ACA 05784 btfsc in1,5 ; 6R 06E3 0080 05785 movwf INDF 05786 06E4 30A8 05787 movlw C0_A2_reg 06E5 0084 05788 movwf FSR 06E6 30FF 05789 movlw 0xff 06E7 1849 05790 btfsc in0,0 ; 9R 06E8 0080 05791 movwf INDF 05792 06E9 30C5 05793 movlw C1_A2_reg 06EA 0084 05794 movwf FSR 06EB 30FF 05795 movlw 0xff 06EC 18CD 05796 btfsc in4,1 ; 10B 06ED 0080 05797 movwf INDF 05798 06EE 30C4 05799 movlw C2_A2_reg 06EF 0084 05800 movwf FSR 06F0 30FF 05801 movlw 0xff 06F1 184D 05802 btfsc in4,0 ; 9B 06F2 0080 05803 movwf INDF 05804 06F3 30A9 05805 movlw C3_A2_reg 06F4 0084 05806 movwf FSR 06F5 30FF 05807 movlw 0xff 06F6 18C9 05808 btfsc in0,1 ; 10R 06F7 0080 05809 movwf INDF 05810 06F8 30B6 05811 movlw C4_A2_reg 06F9 0084 05812 movwf FSR 06FA 30FF 05813 movlw 0xff 06FB 184B 05814 btfsc in2,0 ; 9G 06FC 0080 05815 movwf INDF 05816 06FD 30B7 05817 movlw C5_A2_reg 06FE 0084 05818 movwf FSR 06FF 30FF 05819 movlw 0xff 0700 18CB 05820 btfsc in2,1 ; 10G 0701 0080 05821 movwf INDF 05822 0702 30C3 05823 movlw C1_C0_reg 0703 0084 05824 movwf FSR MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 146 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0704 30FF 05825 movlw 0xff 0705 1BCE 05826 btfsc in5,7 ; 8B 0706 0080 05827 movwf INDF 05828 0707 30C2 05829 movlw C2_C0_reg 0708 0084 05830 movwf FSR 0709 30FF 05831 movlw 0xff 070A 1B4E 05832 btfsc in5,6 ; 7B 070B 0080 05833 movwf INDF 05834 070C 30A7 05835 movlw C3_C0_reg 070D 0084 05836 movwf FSR 070E 30FF 05837 movlw 0xff 070F 1BCA 05838 btfsc in1,7 ; 8R 0710 0080 05839 movwf INDF 05840 0711 30B4 05841 movlw C4_C0_reg 0712 0084 05842 movwf FSR 0713 30FF 05843 movlw 0xff 0714 1B4C 05844 btfsc in3,6 0715 0080 05845 movwf INDF ; 7G 05846 0716 30B5 05847 movlw C5_C0_reg 0717 0084 05848 movwf FSR 0718 30FF 05849 movlw 0xff 0719 1BCC 05850 btfsc in3,7 071A 0080 05851 movwf INDF ; 8G 05852 071B 30C8 05853 movlw C2_C1_reg 071C 0084 05854 movwf FSR 071D 30FF 05855 movlw 0xff 071E 1A4D 05856 btfsc in4,4 ; 13B 071F 0080 05857 movwf INDF 05858 0720 30AD 05859 movlw C3_C1_reg 0721 0084 05860 movwf FSR 0722 30FF 05861 movlw 0xff 0723 1AC9 05862 btfsc in0,5 ; 14R 0724 0080 05863 movwf INDF 05864 0725 30BA 05865 movlw C4_C1_reg 0726 0084 05866 movwf FSR 0727 30FF 05867 movlw 0xff 0728 1A4B 05868 btfsc in2,4 ; 13G 0729 0080 05869 movwf INDF 05870 072A 30BB 05871 movlw C5_C1_reg 072B 0084 05872 movwf FSR 072C 30FF 05873 movlw 0xff 072D 1ACB 05874 btfsc in2,5 ; 14G 072E 0080 05875 movwf INDF 05876 072F 30AB 05877 movlw C3_C2_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 147 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0730 0084 05878 movwf FSR 0731 30FF 05879 movlw 0xff 0732 19C9 05880 btfsc in0,3 ; 12R 0733 0080 05881 movwf INDF 05882 0734 30B8 05883 movlw C4_C2_reg 0735 0084 05884 movwf FSR 0736 30FF 05885 movlw 0xff 0737 194B 05886 btfsc in2,2 ; 11G 0738 0080 05887 movwf INDF 05888 0739 30B9 05889 movlw C5_C2_reg 073A 0084 05890 movwf FSR 073B 30FF 05891 movlw 0xff 073C 19CB 05892 btfsc in2,3 ; 12G 073D 0080 05893 movwf INDF 05894 073E 30BD 05895 movlw C4_C3_reg 073F 0084 05896 movwf FSR 0740 30FF 05897 movlw 0xff 0741 18CE 05898 btfsc in5,1 ; 2B 0742 0080 05899 movwf INDF 05900 0743 30A0 05901 movlw C5_C3_reg 0744 0084 05902 movwf FSR 0745 30FF 05903 movlw 0xff 0746 184A 05904 btfsc in1,0 ; 1R 0747 0080 05905 movwf INDF 05906 0748 30A3 05907 movlw C5_C4_reg 0749 0084 05908 movwf FSR 074A 30FF 05909 movlw 0xff 074B 19CA 05910 btfsc in1,3 ; 4R 074C 0080 05911 movwf INDF 05912 074D 0008 05913 return 05914 05915 ;********************************************************************** 074E 05916 rgb_stick_expand2 ; this is a nice chunk of code without jumps to sit on the 11 bit boundry 05917 ;********************************************************************** 05918 05919 ;1R 0x0f 074E 30A0 05920 movlw C5_C3_reg 074F 0084 05921 movwf FSR 05922 0750 184A 05923 btfsc in1,0 0751 0A80 05924 incf INDF,f 05925 0752 1850 05926 btfsc in7,0 0753 0380 05927 decf INDF,f 05928 05929 ;2R 0xf0 0754 30A1 05930 movlw C2_C3_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 148 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0755 0084 05931 movwf FSR 05932 0756 18CA 05933 btfsc in1,1 0757 0A80 05934 incf INDF,f 05935 0758 18D0 05936 btfsc in7,1 0759 0380 05937 decf INDF,f 05938 05939 05940 ;3R 0xf0 075A 30A2 05941 movlw C0_C4_reg 075B 0084 05942 movwf FSR 05943 075C 194A 05944 btfsc in1,2 075D 0A80 05945 incf INDF,f 05946 075E 1950 05947 btfsc in7,2 075F 0380 05948 decf INDF,f 05949 05950 ;4R 0x0f 0760 30A3 05951 movlw C5_C4_reg 0761 0084 05952 movwf FSR 05953 0762 19CA 05954 btfsc in1,3 0763 0A80 05955 incf INDF,f 05956 0764 19D0 05957 btfsc in7,3 0765 0380 05958 decf INDF,f 05959 05960 ;5R 0xf0 0766 30A4 05961 movlw C3_C5_reg 0767 0084 05962 movwf FSR 05963 0768 1A4A 05964 btfsc in1,4 0769 0A80 05965 incf INDF,f 05966 076A 1A50 05967 btfsc in7,4 076B 0380 05968 decf INDF,f 05969 05970 ;6R 0xf0 076C 30A5 05971 movlw C4_C5_reg 076D 0084 05972 movwf FSR 05973 076E 1ACA 05974 btfsc in1,5 076F 0A80 05975 incf INDF,f 05976 0770 1AD0 05977 btfsc in7,5 0771 0380 05978 decf INDF,f 05979 05980 ;7R 0xf0 0772 30A6 05981 movlw A2_C0_reg 0773 0084 05982 movwf FSR 05983 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 149 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0774 1B4A 05984 btfsc in1,6 0775 0A80 05985 incf INDF,f 05986 0776 1B50 05987 btfsc in7,6 0777 0380 05988 decf INDF,f 05989 05990 ;8R 0x0f 0778 30A7 05991 movlw C3_C0_reg 0779 0084 05992 movwf FSR 05993 077A 1BCA 05994 btfsc in1,7 077B 0A80 05995 incf INDF,f 05996 077C 1BD0 05997 btfsc in7,7 077D 0380 05998 decf INDF,f 05999 06000 ;9R 0x0f 077E 30A8 06001 movlw C0_A2_reg 077F 0084 06002 movwf FSR 06003 0780 1849 06004 btfsc in0,0 0781 0A80 06005 incf INDF,f 06006 0782 184F 06007 btfsc in6,0 0783 0380 06008 decf INDF,f 06009 06010 ;10R 0x0f 0784 30A9 06011 movlw C3_A2_reg 0785 0084 06012 movwf FSR 06013 0786 18C9 06014 btfsc in0,1 0787 0A80 06015 incf INDF,f 06016 0788 18CF 06017 btfsc in6,1 0789 0380 06018 decf INDF,f 06019 06020 ;11R 0xf0 078A 30AA 06021 movlw A2_C2_reg 078B 0084 06022 movwf FSR 06023 078C 1949 06024 btfsc in0,2 078D 0A80 06025 incf INDF,f 06026 078E 194F 06027 btfsc in6,2 078F 0380 06028 decf INDF,f 06029 06030 ;12R 0x0f 0790 30AB 06031 movlw C3_C2_reg 0791 0084 06032 movwf FSR 06033 0792 19C9 06034 btfsc in0,3 0793 0A80 06035 incf INDF,f 06036 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 150 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0794 19CF 06037 btfsc in6,3 0795 0380 06038 decf INDF,f 06039 06040 ;13R 0xf0 0796 30AC 06041 movlw A2_C1_reg 0797 0084 06042 movwf FSR 06043 0798 1A49 06044 btfsc in0,4 0799 0A80 06045 incf INDF,f 06046 079A 1A4F 06047 btfsc in6,4 079B 0380 06048 decf INDF,f 06049 06050 ;14R 0x0f 079C 30AD 06051 movlw C3_C1_reg 079D 0084 06052 movwf FSR 06053 079E 1AC9 06054 btfsc in0,5 079F 0A80 06055 incf INDF,f 06056 07A0 1ACF 06057 btfsc in6,5 07A1 0380 06058 decf INDF,f 06059 06060 ;1G 0xf0 07A2 30AE 06061 movlw A2_C3_reg 07A3 0084 06062 movwf FSR 06063 07A4 184C 06064 btfsc in3,0 07A5 0A80 06065 incf INDF,f 06066 07A6 1852 06067 btfsc in9,0 07A7 0380 06068 decf INDF,f 06069 06070 ;2G 0xf0 07A8 30AF 06071 movlw C0_C3_reg 07A9 0084 06072 movwf FSR 06073 07AA 18CC 06074 btfsc in3,1 07AB 0A80 06075 incf INDF,f 06076 07AC 18D2 06077 btfsc in9,1 07AD 0380 06078 decf INDF,f 06079 06080 ;3G 0xf0 07AE 30B0 06081 movlw A2_C4_reg 07AF 0084 06082 movwf FSR 06083 07B0 194C 06084 btfsc in3,2 07B1 0A80 06085 incf INDF,f 06086 07B2 1952 06087 btfsc in9,2 07B3 0380 06088 decf INDF,f 06089 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 151 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06090 ;4G 0xf0 07B4 30B1 06091 movlw C3_C4_reg 07B5 0084 06092 movwf FSR 06093 07B6 19CC 06094 btfsc in3,3 07B7 0A80 06095 incf INDF,f 06096 07B8 19D2 06097 btfsc in9,3 07B9 0380 06098 decf INDF,f 06099 06100 ;5G 0xf0 07BA 30B2 06101 movlw C0_C5_reg 07BB 0084 06102 movwf FSR 06103 07BC 1A4C 06104 btfsc in3,4 07BD 0A80 06105 incf INDF,f 06106 07BE 1A52 06107 btfsc in9,4 07BF 0380 06108 decf INDF,f 06109 06110 ;6G 0xf0 07C0 30B3 06111 movlw A2_C5_reg 07C1 0084 06112 movwf FSR 06113 07C2 1ACC 06114 btfsc in3,5 07C3 0A80 06115 incf INDF,f 06116 07C4 1AD2 06117 btfsc in9,5 07C5 0380 06118 decf INDF,f 06119 06120 ;7G 0x0f 07C6 30B4 06121 movlw C4_C0_reg 07C7 0084 06122 movwf FSR 06123 07C8 1B4C 06124 btfsc in3,6 07C9 0A80 06125 incf INDF,f 06126 07CA 1B52 06127 btfsc in9,6 07CB 0380 06128 decf INDF,f 06129 06130 ;8G 0x0f 07CC 30B5 06131 movlw C5_C0_reg 07CD 0084 06132 movwf FSR 06133 07CE 1BCC 06134 btfsc in3,7 07CF 0A80 06135 incf INDF,f 06136 07D0 1BD2 06137 btfsc in9,7 07D1 0380 06138 decf INDF,f 06139 06140 ;9G 0x0f 07D2 30B6 06141 movlw C4_A2_reg 07D3 0084 06142 movwf FSR MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 152 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06143 07D4 184B 06144 btfsc in2,0 07D5 0A80 06145 incf INDF,f 06146 07D6 1851 06147 btfsc in8,0 07D7 0380 06148 decf INDF,f 06149 06150 ;10G 0x0f 07D8 30B7 06151 movlw C5_A2_reg 07D9 0084 06152 movwf FSR 06153 07DA 18CB 06154 btfsc in2,1 07DB 0A80 06155 incf INDF,f 06156 07DC 18D1 06157 btfsc in8,1 07DD 0380 06158 decf INDF,f 06159 06160 ;11G 0x0f 07DE 30B8 06161 movlw C4_C2_reg 07DF 0084 06162 movwf FSR 06163 07E0 194B 06164 btfsc in2,2 07E1 0A80 06165 incf INDF,f 06166 07E2 1951 06167 btfsc in8,2 07E3 0380 06168 decf INDF,f 06169 06170 ;12G 0x0f 07E4 30B9 06171 movlw C5_C2_reg 07E5 0084 06172 movwf FSR 06173 07E6 19CB 06174 btfsc in2,3 07E7 0A80 06175 incf INDF,f 06176 07E8 19D1 06177 btfsc in8,3 07E9 0380 06178 decf INDF,f 06179 06180 ;13G 0x0f 07EA 30BA 06181 movlw C4_C1_reg 07EB 0084 06182 movwf FSR 06183 07EC 1A4B 06184 btfsc in2,4 07ED 0A80 06185 incf INDF,f 06186 07EE 1A51 06187 btfsc in8,4 07EF 0380 06188 decf INDF,f 06189 06190 ;14G 0x0f 07F0 30BB 06191 movlw C5_C1_reg 07F1 0084 06192 movwf FSR 06193 07F2 1ACB 06194 btfsc in2,5 07F3 0A80 06195 incf INDF,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 153 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06196 07F4 1AD1 06197 btfsc in8,5 07F5 0380 06198 decf INDF,f 06199 06200 ;1B 0xf0 07F6 30BC 06201 movlw C1_C3_reg 07F7 0084 06202 movwf FSR 06203 07F8 184E 06204 btfsc in5,0 07F9 0A80 06205 incf INDF,f 06206 07FA 1854 06207 btfsc in11,0 07FB 0380 06208 decf INDF,f 06209 06210 ;2B 0x0f 07FC 30BD 06211 movlw C4_C3_reg 07FD 0084 06212 movwf FSR 06213 07FE 18CE 06214 btfsc in5,1 07FF 0A80 06215 incf INDF,f 06216 0800 18D4 06217 btfsc in11,1 0801 0380 06218 decf INDF,f 06219 06220 ;3B 0xf0 0802 30BE 06221 movlw C2_C4_reg 0803 0084 06222 movwf FSR 06223 0804 194E 06224 btfsc in5,2 0805 0A80 06225 incf INDF,f 06226 0806 1954 06227 btfsc in11,2 0807 0380 06228 decf INDF,f 06229 06230 ;4B 0xf0 0808 30BF 06231 movlw C1_C4_reg 0809 0084 06232 movwf FSR 06233 080A 19CE 06234 btfsc in5,3 080B 0A80 06235 incf INDF,f 06236 080C 19D4 06237 btfsc in11,3 080D 0380 06238 decf INDF,f 06239 06240 ;5B 0xf0 080E 30C0 06241 movlw C1_C5_reg 080F 0084 06242 movwf FSR 06243 0810 1A4E 06244 btfsc in5,4 0811 0A80 06245 incf INDF,f 06246 0812 1A54 06247 btfsc in11,4 0813 0380 06248 decf INDF,f MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 154 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06249 06250 ;6B 0xf0 0814 30C1 06251 movlw C2_C5_reg 0815 0084 06252 movwf FSR 06253 0816 1ACE 06254 btfsc in5,5 0817 0A80 06255 incf INDF,f 06256 0818 1AD4 06257 btfsc in11,5 0819 0380 06258 decf INDF,f 06259 06260 ;7B 0x0f 081A 30C2 06261 movlw C2_C0_reg 081B 0084 06262 movwf FSR 06263 081C 1B4E 06264 btfsc in5,6 081D 0A80 06265 incf INDF,f 06266 081E 1B54 06267 btfsc in11,6 081F 0380 06268 decf INDF,f 06269 06270 ;8B 0x0f 0820 30C3 06271 movlw C1_C0_reg 0821 0084 06272 movwf FSR 06273 0822 1BCE 06274 btfsc in5,7 0823 0A80 06275 incf INDF,f 06276 0824 1BD4 06277 btfsc in11,7 0825 0380 06278 decf INDF,f 06279 06280 ;9B 0x0f 0826 30C4 06281 movlw C2_A2_reg 0827 0084 06282 movwf FSR 06283 0828 184D 06284 btfsc in4,0 0829 0A80 06285 incf INDF,f 06286 082A 1853 06287 btfsc in10,0 082B 0380 06288 decf INDF,f 06289 06290 ;10B 0x0f 082C 30C5 06291 movlw C1_A2_reg 082D 0084 06292 movwf FSR 06293 082E 18CD 06294 btfsc in4,1 082F 0A80 06295 incf INDF,f 06296 0830 18D3 06297 btfsc in10,1 0831 0380 06298 decf INDF,f 06299 06300 ;11B 0xf0 0832 30C6 06301 movlw C1_C2_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 155 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0833 0084 06302 movwf FSR 06303 0834 194D 06304 btfsc in4,2 0835 0A80 06305 incf INDF,f 06306 0836 1953 06307 btfsc in10,2 0837 0380 06308 decf INDF,f 06309 06310 ;12B 0xf0 0838 30C7 06311 movlw C0_C2_reg 0839 0084 06312 movwf FSR 06313 083A 19CD 06314 btfsc in4,3 083B 0A80 06315 incf INDF,f 06316 083C 19D3 06317 btfsc in10,3 083D 0380 06318 decf INDF,f 06319 06320 ;13B 0x0f 083E 30C8 06321 movlw C2_C1_reg 083F 0084 06322 movwf FSR 06323 0840 1A4D 06324 btfsc in4,4 0841 0A80 06325 incf INDF,f 06326 0842 1A53 06327 btfsc in10,4 0843 0380 06328 decf INDF,f 06329 06330 ;14B 0xf0 0844 30C9 06331 movlw C0_C1_reg 0845 0084 06332 movwf FSR 06333 0846 1ACD 06334 btfsc in4,5 0847 0A80 06335 incf INDF,f 06336 0848 1AD3 06337 btfsc in10,5 0849 0380 06338 decf INDF,f 06339 084A 0008 06340 return 06341 06342 #endif 06343 06344 #ifdef PATTERN18 06345 ;********************************************************************** 084B 06346 table_type_18 06347 ;********************************************************************** 06348 ; 06349 ; 6 bytes 06350 ; 0 1 2 3 4 5 06351 ; DDRRRRRR RRRRRRRR DDGGGGGG GGGGGGGG DDBBBBBB BBBBBBBB 06352 ; xx111110 00000000 xx111110 00000000 xx111110 00000000 06353 ; xx432109 87654321 xx432109 87654321 xx432109 87654321 06354 ; MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 156 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06355 ; DDDDDD = delay counter 06356 ; XX = not used 06357 084B 3004 008A 06358 pageselw get_next_pattern_entry Message[306]: Crossing page boundary -- ensure page bits are set. 084D 2413 06359 call get_next_pattern_entry 084E 00C9 06360 movwf in0 06361 Message[306]: Crossing page boundary -- ensure page bits are set. 084F 2413 06362 call get_next_pattern_entry 0850 00CA 06363 movwf in1 06364 Message[306]: Crossing page boundary -- ensure page bits are set. 0851 2413 06365 call get_next_pattern_entry 0852 00CB 06366 movwf in2 06367 Message[306]: Crossing page boundary -- ensure page bits are set. 0853 2413 06368 call get_next_pattern_entry 0854 00CC 06369 movwf in3 06370 Message[306]: Crossing page boundary -- ensure page bits are set. 0855 2413 06371 call get_next_pattern_entry 0856 00CD 06372 movwf in4 06373 Message[306]: Crossing page boundary -- ensure page bits are set. 0857 2413 06374 call get_next_pattern_entry 0858 00CE 06375 movwf in5 06376 0859 3008 008A 06377 pageselw table_type_18 06378 ; collected the 6 bits for the delay counter 06379 085B 01DA 06380 clrf p2count 06381 085C 1BC9 06382 btfsc in0,7 085D 145A 06383 bsf p2count,0 06384 085E 1B49 06385 btfsc in0,6 085F 14DA 06386 bsf p2count,1 06387 0860 1BCB 06388 btfsc in2,7 0861 155A 06389 bsf p2count,2 06390 0862 1B4B 06391 btfsc in2,6 0863 15DA 06392 bsf p2count,3 06393 0864 1BCD 06394 btfsc in4,7 0865 165A 06395 bsf p2count,4 06396 0866 1B4D 06397 btfsc in4,6 0867 16DA 06398 bsf p2count,5 06399 0868 06400 p18_loop 06401 ; run through the up/down bits. MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 157 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06402 06403 ;1R 0x0f 0868 30A0 06404 movlw C5_C3_reg 0869 0084 06405 movwf FSR 06406 086A 184A 06407 btfsc in1,0 086B 2171 06408 call p18_led_up 086C 1C4A 06409 btfss in1,0 086D 2175 06410 call p18_led_down 06411 06412 ;2R 0xf0 086E 30A1 06413 movlw C2_C3_reg 086F 0084 06414 movwf FSR 06415 0870 18CA 06416 btfsc in1,1 0871 2171 06417 call p18_led_up 0872 1CCA 06418 btfss in1,1 0873 2175 06419 call p18_led_down 06420 06421 ;3R 0xf0 0874 30A2 06422 movlw C0_C4_reg 0875 0084 06423 movwf FSR 06424 0876 194A 06425 btfsc in1,2 0877 2171 06426 call p18_led_up 0878 1D4A 06427 btfss in1,2 0879 2175 06428 call p18_led_down 06429 06430 ;4R 0x0f 087A 30A3 06431 movlw C5_C4_reg 087B 0084 06432 movwf FSR 06433 087C 19CA 06434 btfsc in1,3 087D 2171 06435 call p18_led_up 087E 1DCA 06436 btfss in1,3 087F 2175 06437 call p18_led_down 06438 06439 ;5R 0xf0 0880 30A4 06440 movlw C3_C5_reg 0881 0084 06441 movwf FSR 06442 0882 1A4A 06443 btfsc in1,4 0883 2171 06444 call p18_led_up 0884 1E4A 06445 btfss in1,4 0885 2175 06446 call p18_led_down 06447 06448 ;6R 0xf0 0886 30A5 06449 movlw C4_C5_reg 0887 0084 06450 movwf FSR 06451 0888 1ACA 06452 btfsc in1,5 0889 2171 06453 call p18_led_up 088A 1ECA 06454 btfss in1,5 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 158 LOC OBJECT CODE LINE SOURCE TEXT VALUE 088B 2175 06455 call p18_led_down 06456 06457 06458 ;7R 0xf0 088C 30A6 06459 movlw A2_C0_reg 088D 0084 06460 movwf FSR 06461 088E 1B4A 06462 btfsc in1,6 088F 2171 06463 call p18_led_up 0890 1F4A 06464 btfss in1,6 0891 2175 06465 call p18_led_down 06466 06467 ;8R 0x0f 0892 30A7 06468 movlw C3_C0_reg 0893 0084 06469 movwf FSR 06470 0894 1BCA 06471 btfsc in1,7 0895 2171 06472 call p18_led_up 0896 1FCA 06473 btfss in1,7 0897 2175 06474 call p18_led_down 06475 06476 06477 ;9R 0x0f 0898 30A8 06478 movlw C0_A2_reg 0899 0084 06479 movwf FSR 06480 089A 1849 06481 btfsc in0,0 089B 2171 06482 call p18_led_up 089C 1C49 06483 btfss in0,0 089D 2175 06484 call p18_led_down 06485 06486 06487 ;10R 0x0f 089E 30A9 06488 movlw C3_A2_reg 089F 0084 06489 movwf FSR 06490 08A0 18C9 06491 btfsc in0,1 08A1 2171 06492 call p18_led_up 08A2 1CC9 06493 btfss in0,1 08A3 2175 06494 call p18_led_down 06495 06496 06497 ;11R 0xf0 08A4 30AA 06498 movlw A2_C2_reg 08A5 0084 06499 movwf FSR 06500 08A6 1949 06501 btfsc in0,2 08A7 2171 06502 call p18_led_up 08A8 1D49 06503 btfss in0,2 08A9 2175 06504 call p18_led_down 06505 06506 ;12R 0x0f 08AA 30AB 06507 movlw C3_C2_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 159 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08AB 0084 06508 movwf FSR 06509 08AC 19C9 06510 btfsc in0,3 08AD 2171 06511 call p18_led_up 08AE 1DC9 06512 btfss in0,3 08AF 2175 06513 call p18_led_down 06514 06515 ;13R 0xf0 08B0 30AC 06516 movlw A2_C1_reg 08B1 0084 06517 movwf FSR 06518 08B2 1A49 06519 btfsc in0,4 08B3 2171 06520 call p18_led_up 08B4 1E49 06521 btfss in0,4 08B5 2175 06522 call p18_led_down 06523 06524 06525 ;14R 0x0f 08B6 30AD 06526 movlw C3_C1_reg 08B7 0084 06527 movwf FSR 06528 08B8 1AC9 06529 btfsc in0,5 08B9 2171 06530 call p18_led_up 08BA 1EC9 06531 btfss in0,5 08BB 2175 06532 call p18_led_down 06533 06534 ;1G 0xf0 08BC 30AE 06535 movlw A2_C3_reg 08BD 0084 06536 movwf FSR 06537 08BE 184C 06538 btfsc in3,0 08BF 2171 06539 call p18_led_up 08C0 1C4C 06540 btfss in3,0 08C1 2175 06541 call p18_led_down 06542 06543 06544 ;2G 0xf0 08C2 30AF 06545 movlw C0_C3_reg 08C3 0084 06546 movwf FSR 06547 08C4 18CC 06548 btfsc in3,1 08C5 2171 06549 call p18_led_up 08C6 1CCC 06550 btfss in3,1 08C7 2175 06551 call p18_led_down 06552 06553 06554 ;3G 0xf0 08C8 30B0 06555 movlw A2_C4_reg 08C9 0084 06556 movwf FSR 06557 08CA 194C 06558 btfsc in3,2 08CB 2171 06559 call p18_led_up 08CC 1D4C 06560 btfss in3,2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 160 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08CD 2175 06561 call p18_led_down 06562 06563 ;4G 0xf0 08CE 30B1 06564 movlw C3_C4_reg 08CF 0084 06565 movwf FSR 06566 08D0 19CC 06567 btfsc in3,3 08D1 2171 06568 call p18_led_up 08D2 1DCC 06569 btfss in3,3 08D3 2175 06570 call p18_led_down 06571 06572 ;5G 0xf0 08D4 30B2 06573 movlw C0_C5_reg 08D5 0084 06574 movwf FSR 06575 08D6 1A4C 06576 btfsc in3,4 08D7 2171 06577 call p18_led_up 08D8 1E4C 06578 btfss in3,4 08D9 2175 06579 call p18_led_down 06580 06581 ;6G 0xf0 08DA 30B3 06582 movlw A2_C5_reg 08DB 0084 06583 movwf FSR 06584 08DC 1ACC 06585 btfsc in3,5 08DD 2171 06586 call p18_led_up 08DE 1ECC 06587 btfss in3,5 08DF 2175 06588 call p18_led_down 06589 06590 06591 ;7G 0x0f 08E0 30B4 06592 movlw C4_C0_reg 08E1 0084 06593 movwf FSR 06594 08E2 1B4C 06595 btfsc in3,6 08E3 2171 06596 call p18_led_up 08E4 1F4C 06597 btfss in3,6 08E5 2175 06598 call p18_led_down 06599 06600 06601 ;8G 0x0f 08E6 30B5 06602 movlw C5_C0_reg 08E7 0084 06603 movwf FSR 06604 08E8 1BCC 06605 btfsc in3,7 08E9 2171 06606 call p18_led_up 08EA 1FCC 06607 btfss in3,7 08EB 2175 06608 call p18_led_down 06609 06610 ;9G 0x0f 08EC 30B6 06611 movlw C4_A2_reg 08ED 0084 06612 movwf FSR 06613 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 161 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08EE 184B 06614 btfsc in2,0 08EF 2171 06615 call p18_led_up 08F0 1C4B 06616 btfss in2,0 08F1 2175 06617 call p18_led_down 06618 06619 06620 ;10G 0x0f 08F2 30B7 06621 movlw C5_A2_reg 08F3 0084 06622 movwf FSR 06623 08F4 18CB 06624 btfsc in2,1 08F5 2171 06625 call p18_led_up 08F6 1CCB 06626 btfss in2,1 08F7 2175 06627 call p18_led_down 06628 06629 ;11G 0x0f 08F8 30B8 06630 movlw C4_C2_reg 08F9 0084 06631 movwf FSR 06632 08FA 194B 06633 btfsc in2,2 08FB 2171 06634 call p18_led_up 08FC 1D4B 06635 btfss in2,2 08FD 2175 06636 call p18_led_down 06637 06638 ;12G 0x0f 08FE 30B9 06639 movlw C5_C2_reg 08FF 0084 06640 movwf FSR 06641 0900 19CB 06642 btfsc in2,3 0901 2171 06643 call p18_led_up 0902 1DCB 06644 btfss in2,3 0903 2175 06645 call p18_led_down 06646 06647 06648 ;13G 0x0f 0904 30BA 06649 movlw C4_C1_reg 0905 0084 06650 movwf FSR 06651 0906 1A4B 06652 btfsc in2,4 0907 2171 06653 call p18_led_up 0908 1E4B 06654 btfss in2,4 0909 2175 06655 call p18_led_down 06656 06657 ;14G 0x0f 090A 30BB 06658 movlw C5_C1_reg 090B 0084 06659 movwf FSR 06660 090C 1ACB 06661 btfsc in2,5 090D 2171 06662 call p18_led_up 090E 1ECB 06663 btfss in2,5 090F 2175 06664 call p18_led_down 06665 06666 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 162 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06667 ;1B 0xf0 0910 30BC 06668 movlw C1_C3_reg 0911 0084 06669 movwf FSR 06670 0912 184E 06671 btfsc in5,0 0913 2171 06672 call p18_led_up 0914 1C4E 06673 btfss in5,0 0915 2175 06674 call p18_led_down 06675 06676 06677 ;2B 0x0f 0916 30BD 06678 movlw C4_C3_reg 0917 0084 06679 movwf FSR 06680 0918 18CE 06681 btfsc in5,1 0919 2171 06682 call p18_led_up 091A 1CCE 06683 btfss in5,1 091B 2175 06684 call p18_led_down 06685 06686 ;3B 0xf0 091C 30BE 06687 movlw C2_C4_reg 091D 0084 06688 movwf FSR 06689 091E 194E 06690 btfsc in5,2 091F 2171 06691 call p18_led_up 0920 1D4E 06692 btfss in5,2 0921 2175 06693 call p18_led_down 06694 06695 ;4B 0xf0 0922 30BF 06696 movlw C1_C4_reg 0923 0084 06697 movwf FSR 06698 0924 19CE 06699 btfsc in5,3 0925 2171 06700 call p18_led_up 0926 1DCE 06701 btfss in5,3 0927 2175 06702 call p18_led_down 06703 06704 06705 ;5B 0xf0 0928 30C0 06706 movlw C1_C5_reg 0929 0084 06707 movwf FSR 06708 092A 1A4E 06709 btfsc in5,4 092B 2171 06710 call p18_led_up 092C 1E4E 06711 btfss in5,4 092D 2175 06712 call p18_led_down 06713 06714 06715 ;6B 0xf0 092E 30C1 06716 movlw C2_C5_reg 092F 0084 06717 movwf FSR 06718 0930 1ACE 06719 btfsc in5,5 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 163 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0931 2171 06720 call p18_led_up 0932 1ECE 06721 btfss in5,5 0933 2175 06722 call p18_led_down 06723 06724 ;7B 0x0f 0934 30C2 06725 movlw C2_C0_reg 0935 0084 06726 movwf FSR 06727 0936 1B4E 06728 btfsc in5,6 0937 2171 06729 call p18_led_up 0938 1F4E 06730 btfss in5,6 0939 2175 06731 call p18_led_down 06732 06733 ;8B 0x0f 093A 30C3 06734 movlw C1_C0_reg 093B 0084 06735 movwf FSR 06736 093C 1BCE 06737 btfsc in5,7 093D 2171 06738 call p18_led_up 093E 1FCE 06739 btfss in5,7 093F 2175 06740 call p18_led_down 06741 06742 06743 ;9B 0x0f 0940 30C4 06744 movlw C2_A2_reg 0941 0084 06745 movwf FSR 06746 0942 184D 06747 btfsc in4,0 0943 2171 06748 call p18_led_up 0944 1C4D 06749 btfss in4,0 0945 2175 06750 call p18_led_down 06751 06752 06753 ;10B 0x0f 0946 30C5 06754 movlw C1_A2_reg 0947 0084 06755 movwf FSR 06756 0948 18CD 06757 btfsc in4,1 0949 2171 06758 call p18_led_up 094A 1CCD 06759 btfss in4,1 094B 2175 06760 call p18_led_down 06761 06762 06763 ;11B 0xf0 094C 30C6 06764 movlw C1_C2_reg 094D 0084 06765 movwf FSR 06766 094E 194D 06767 btfsc in4,2 094F 2171 06768 call p18_led_up 0950 1D4D 06769 btfss in4,2 0951 2175 06770 call p18_led_down 06771 06772 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 164 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06773 ;12B 0xf0 0952 30C7 06774 movlw C0_C2_reg 0953 0084 06775 movwf FSR 06776 0954 19CD 06777 btfsc in4,3 0955 2171 06778 call p18_led_up 0956 1DCD 06779 btfss in4,3 0957 2175 06780 call p18_led_down 06781 06782 06783 ;13B 0x0f 0958 30C8 06784 movlw C2_C1_reg 0959 0084 06785 movwf FSR 06786 095A 1A4D 06787 btfsc in4,4 095B 2171 06788 call p18_led_up 095C 1E4D 06789 btfss in4,4 095D 2175 06790 call p18_led_down 06791 06792 06793 ;14B 0xf0 095E 30C9 06794 movlw C0_C1_reg 095F 0084 06795 movwf FSR 06796 0960 1ACD 06797 btfsc in4,5 0961 2171 06798 call p18_led_up 0962 1ECD 06799 btfss in4,5 0963 2175 06800 call p18_led_down 06801 0964 3003 008A 06802 pageselw strobe_delay 0966 0857 06803 movf pspeed,w Message[306]: Crossing page boundary -- ensure page bits are set. 0967 23E5 06804 call strobe_delay 0968 3008 008A 06805 pageselw table_type_18 06806 06807 ; This is a quick hack, because without this button presses are not seen for minutes 06808 ; This early exit might impact the pattern getting displayed. 06809 ; 096A 182E 06810 btfsc button,0 ; if putton pressed show pattern id 096B 2970 06811 goto t18_exit 06812 096C 1831 06813 btfsc IR_in_good,0 096D 2970 06814 goto t18_exit 06815 096E 0BDA 06816 decfsz p2count,f 096F 2868 06817 goto p18_loop 06818 0970 06819 t18_exit 0970 0008 06820 return 06821 06822 ;********************************************************************** 0971 06823 p18_led_up 06824 ;********************************************************************** MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 165 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06825 0971 0A80 06826 incf INDF,f 0972 1903 06827 btfsc STATUS,Z 0973 0980 06828 comf INDF,f 0974 0008 06829 return 06830 06831 ;********************************************************************** 0975 06832 p18_led_down 06833 ;********************************************************************** 06834 0975 0880 06835 movf INDF,f 0976 1D03 06836 btfss STATUS,Z 0977 0380 06837 decf INDF,f 0978 0008 06838 return 06839 06840 #endif 06841 #ifdef PATTERN20 06842 ;********************************************************************** 06843 table_type_20 06844 ;********************************************************************** 06845 ; 06846 ; 6 bytes 06847 ; 0 1 06848 ; RRRRGGGG BBBBDDDD 06849 ; xx111110 00000000 06850 ; xx432109 87654321 06851 ; 06852 ; DDDD = delay counter 06853 06854 pageselw get_next_pattern_entry 06855 call get_next_pattern_entry 06856 movwf in0 06857 06858 call get_next_pattern_entry 06859 movwf in1 06860 06861 ; collected the 6 bits for the delay counter 06862 06863 clrf p2count 06864 06865 btfsc in1,3 06866 bsf p2count,7 06867 06868 btfsc in1,2 06869 bsf p2count,6 06870 06871 btfsc in1,1 06872 bsf p2count,5 06873 06874 btfsc in1,0 06875 bsf p2count,4 06876 06877 p20_loop MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 166 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06878 ; run through the up/down bits. 06879 06880 ;1R 0x0f 06881 movlw Ar_reg 06882 movwf FSR 06883 06884 btfsc in0,7 06885 call p18_led_up 06886 btfss in0,7 06887 call p18_led_down 06888 06889 ;2R 0xf0 06890 movlw Br_reg 06891 movwf FSR 06892 06893 btfsc in0,6 06894 call p18_led_up 06895 btfss in0,6 06896 call p18_led_down 06897 06898 ;3R 0xf0 06899 movlw Cr_reg 06900 movwf FSR 06901 06902 btfsc in0,5 06903 call p18_led_up 06904 btfss in0,5 06905 call p18_led_down 06906 06907 ;4R 0x0f 06908 movlw Dr_reg 06909 movwf FSR 06910 06911 btfsc in0,4 06912 call p18_led_up 06913 btfss in0,4 06914 call p18_led_down 06915 06916 ;1G 0xf0 06917 movlw Ag_reg 06918 movwf FSR 06919 06920 btfsc in0,3 06921 call p18_led_up 06922 btfss in0,3 06923 call p18_led_down 06924 06925 06926 ;2G 0xf0 06927 movlw Bg_reg 06928 movwf FSR 06929 06930 btfsc in0,2 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 167 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06931 call p18_led_up 06932 btfss in0,2 06933 call p18_led_down 06934 06935 06936 ;3G 0xf0 06937 movlw Cg_reg 06938 movwf FSR 06939 06940 btfsc in0,1 06941 call p18_led_up 06942 btfss in0,1 06943 call p18_led_down 06944 06945 ;4G 0xf0 06946 movlw Dg_reg 06947 movwf FSR 06948 06949 btfsc in0,0 06950 call p18_led_up 06951 btfss in0,0 06952 call p18_led_down 06953 06954 ;1B 0xf0 06955 movlw Ab_reg 06956 movwf FSR 06957 06958 btfsc in1,7 06959 call p18_led_up 06960 btfss in1,7 06961 call p18_led_down 06962 06963 06964 ;2B 0x0f 06965 movlw Bb_reg 06966 movwf FSR 06967 06968 btfsc in1,6 06969 call p18_led_up 06970 btfss in1,6 06971 call p18_led_down 06972 06973 ;3B 0xf0 06974 movlw Cb_reg 06975 movwf FSR 06976 06977 btfsc in1,5 06978 call p18_led_up 06979 btfss in1,5 06980 call p18_led_down 06981 06982 ;4B 0xf0 06983 movlw Db_reg MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 168 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06984 movwf FSR 06985 06986 btfsc in1,4 06987 call p18_led_up 06988 btfss in1,4 06989 call p18_led_down 06990 06991 movf pspeed,w 06992 call strobe_delay 06993 06994 06995 ; This is a quick hack, because without this button presses are not seen for minutes 06996 ; This early exit might impact the pattern getting displayed. 06997 ; 06998 btfsc button,0 ; if putton pressed show pattern id 06999 goto t20_exit 07000 07001 btfsc IR_in_good,0 07002 goto t20_exit 07003 07004 decfsz p2count,f 07005 goto p20_loop 07006 07007 t20_exit 07008 return 07009 07010 ;********************************************************************** 07011 p18_led_up 07012 ;********************************************************************** 07013 07014 incf INDF,f 07015 btfsc STATUS,Z 07016 comf INDF,f 07017 return 07018 07019 ;********************************************************************** 07020 p18_led_down 07021 ;********************************************************************** 07022 07023 movf INDF,f 07024 btfss STATUS,Z 07025 decf INDF,f 07026 return 07027 07028 #endif 07029 07030 07031 07032 ;********************************************************************** 0979 07033 table0 ; dummy entry, actual data for pattern 0 is in the EEPROM 07034 ;********************************************************************** 07035 07036 #ifdef RGB4 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 169 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07037 #include <4rgb_patterns.asm> 07038 #endif 07039 07040 #ifdef SRGB 07041 #include 00001 ;********************************************************************** 00002 ; 00003 ;*********************************************************************** 00004 00005 00006 start_pattern 0x12, 0x04 M expand M if ($ < 0x2100) 0979 3412 3404 3418 M dt 0x12,0x04,(leng) M else M de 0x12,0x04,(leng) M endif 097C 34FF 34FF 34C0 00007 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 0982 34FF 34FF 34C0 00008 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 0988 34FF 34FF 34C0 00009 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 098E 34FF 34FF 34C0 00010 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 00011 0994 34C0 3400 34C0 00012 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 099A 34C0 3400 34C0 00013 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 09A0 34C0 3400 34C0 00014 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 09A6 34C0 3400 34C0 00015 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 00016 09AC 34C0 3400 34FF 00017 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 09B2 34C0 3400 34FF 00018 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 09B8 34C0 3400 34FF 00019 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 09BE 34C0 3400 34FF 00020 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 170 LOC OBJECT CODE LINE SOURCE TEXT VALUE e down, 64 count 34FF 34C0 3400 00021 09C4 34C0 3400 34C0 00022 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 09CA 34C0 3400 34C0 00023 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 09D0 34C0 3400 34C0 00024 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 09D6 34C0 3400 34C0 00025 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 00026 09DC 34C0 3400 34C0 00027 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 09E2 34C0 3400 34C0 00028 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 09E8 34C0 3400 34C0 00029 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 09EE 34C0 3400 34C0 00030 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 00031 09F4 34C0 3400 34C0 00032 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 09FA 34C0 3400 34C0 00033 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 0A00 34C0 3400 34C0 00034 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 0A06 34C0 3400 34C0 00035 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11000000',b'00000000' ; Red Down, Green down, B lue down, 64 count 3400 34C0 3400 00036 00037 end_pattern 0A0C M endpat0 00000001 M patternc = patternc + 1 00038 00039 ;********************************************************************** 00040 ; 00041 ;********************************************************************** 00042 00043 start_pattern 0x0f, 0x30 M expand M if ($ < 0x2100) MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 171 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A0C 340F 3430 341F M dt 0x0f,0x30,(leng) M else M de 0x0f,0x30,(leng) M endif 00044 ; 00045 ; 11112222 33334444 55556666 77778888 99990000 11112222 0A0F 3430 3400 3400 00046 dt b'00110000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A15 34C0 3400 3400 00047 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A1B 340C 3400 3400 00048 dt b'00001100',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A21 34C0 3400 3400 00049 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A27 3403 3400 3400 00050 dt b'00000011',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A2D 34C0 3400 3400 00051 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A33 3400 34C0 3400 00052 dt b'00000000',b'11000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A39 34C0 3400 3400 00053 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A3F 3400 3430 3400 00054 dt b'00000000',b'00110000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A45 34C0 3400 3400 00055 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A4B 3400 340C 3400 00056 dt b'00000000',b'00001100',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A51 34C0 3400 3400 00057 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A57 3400 3403 3400 00058 dt b'00000000',b'00000011',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A5D 34C0 3400 3400 00059 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A63 34C0 3400 3400 00060 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A69 3400 3400 3400 00061 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00110000',b'00000000' 3400 3430 3400 0A6F 34C0 3400 3400 00062 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A75 3400 3400 3400 00063 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00001100',b'00000000' 3400 340C 3400 0A7B 34C0 3400 3400 00064 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A81 3400 3400 3400 00065 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000011',b'00000000' 3400 3403 3400 0A87 34C0 3400 3400 00066 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A8D 3400 3400 3400 00067 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'11000000' 3400 3400 34C0 0A93 34C0 3400 3400 00068 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A99 3400 3400 3400 00069 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00110000' MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 172 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3400 3400 3430 0A9F 34C0 3400 3400 00070 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0AA5 3400 3400 3400 00071 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00001100' 3400 3400 340C 0AAB 34C0 3400 3400 00072 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0AB1 3400 3400 3400 00073 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000011' 3400 3400 3403 0AB7 34C0 3400 3400 00074 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0ABD 34C0 3400 3400 00075 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0AC3 34C0 3400 3400 00076 dt b'11000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 00077 end_pattern 0AC9 M endpat1 00000002 M patternc = patternc + 1 00078 00079 ;********************************************************************** 00080 ; 00081 ;*********************************************************************** 00082 00083 00084 start_pattern 0x12, 0x04 M expand M if ($ < 0x2100) 0AC9 3412 3404 340C M dt 0x12,0x04,(leng) M else M de 0x12,0x04,(leng) M endif 0ACC 34FF 34FF 34C0 00085 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 0AD2 34FF 34FF 34C0 00086 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 0AD8 34FF 34FF 34C0 00087 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 0ADE 34FF 34FF 34C0 00088 dt b'11111111',b'11111111',b'11000000',b'00000000',b'11000000',b'00000000' ; Red up, Green down, Blu e down, 64 count 3400 34C0 3400 00089 0AE4 34C0 3400 34FF 00090 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 0AEA 34C0 3400 34FF 00091 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 0AF0 34C0 3400 34FF 00092 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 173 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0AF6 34C0 3400 34FF 00093 dt b'11000000',b'00000000',b'11111111',b'11111111',b'11000000',b'00000000' ; Red down, Green up, Blu e down, 64 count 34FF 34C0 3400 00094 0AFC 34C0 3400 34C0 00095 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 0B02 34C0 3400 34C0 00096 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 0B08 34C0 3400 34C0 00097 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 0B0E 34C0 3400 34C0 00098 dt b'11000000',b'00000000',b'11000000',b'00000000',b'11111111',b'11111111' ; Red down, Green down, B lue up, 64 count 3400 34FF 34FF 00099 00100 end_pattern 0B14 M endpat2 00000003 M patternc = patternc + 1 00101 00102 ;********************************************************************** 00103 ; 00104 ;*********************************************************************** 00105 00106 00107 start_pattern 0x12, 0x04 M expand M if ($ < 0x2100) 0B14 3412 3404 3418 M dt 0x12,0x04,(leng) M else M de 0x12,0x04,(leng) M endif 00108 ; RRRRRR RRRRRRRR GGGGGG GGGGGGGG BBBBBB BBBBBBBB 0B17 34FC 3400 34FF 00109 dt b'11111100',b'00000000',b'11111111',b'11111100',b'11000000',b'01111111' ; Red Down, Green down, B lue down, 64 count 34FC 34C0 347F 0B1D 34F8 3400 34FF 00110 dt b'11111000',b'00000000',b'11111111',b'11111000',b'11000000',b'11111111' ; Red Down, Green down, B lue down, 64 count 34F8 34C0 34FF 0B23 34F0 3401 34FF 00111 dt b'11110000',b'00000001',b'11111111',b'11110000',b'11000001',b'11111111' ; Red Down, Green down, B lue down, 64 count 34F0 34C1 34FF 0B29 34E0 3403 34FF 00112 dt b'11100000',b'00000011',b'11111111',b'11100000',b'11000011',b'11111111' ; Red Down, Green down, B lue down, 64 count 34E0 34C3 34FF 00113 0B2F 34C0 3407 34FF 00114 dt b'11000000',b'00000111',b'11111111',b'11000000',b'11000111',b'11111111' ; Red Down, Green down, B lue down, 64 count 34C0 34C7 34FF 0B35 34C0 340F 34FF 00115 dt b'11000000',b'00001111',b'11111111',b'10000000',b'11001111',b'11111111' ; Red Down, Green down, B lue down, 64 count 3480 34CF 34FF MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 174 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0B3B 34C0 341F 34FF 00116 dt b'11000000',b'00011111',b'11111111',b'00000000',b'11011111',b'11111111' ; Red Down, Green down, B lue down, 64 count 3400 34DF 34FF 0B41 34C0 343F 34FE 00117 dt b'11000000',b'00111111',b'11111110',b'00000000',b'11111111',b'11111110' ; Red Down, Green down, B lue down, 64 count 3400 34FF 34FE 00118 0B47 34C0 347F 34FC 00119 dt b'11000000',b'01111111',b'11111100',b'00000000',b'11111111',b'11111100' ; Red Down, Green down, B lue down, 64 count 3400 34FF 34FC 0B4D 34C0 34FF 34F8 00120 dt b'11000000',b'11111111',b'11111000',b'00000000',b'11111111',b'11111000' ; Red Down, Green down, B lue down, 64 count 3400 34FF 34F8 0B53 34C1 34FF 34F0 00121 dt b'11000001',b'11111111',b'11110000',b'00000001',b'11111111',b'11110000' ; Red Down, Green down, B lue down, 64 count 3401 34FF 34F0 0B59 34C3 34FF 34E0 00122 dt b'11000011',b'11111111',b'11100000',b'00000011',b'11111111',b'11100000' ; Red Down, Green down, B lue down, 64 count 3403 34FF 34E0 00123 0B5F 34C7 34FF 34C0 00124 dt b'11000111',b'11111111',b'11000000',b'00000111',b'11111111',b'11000000' ; Red Down, Green down, B lue down, 64 count 3407 34FF 34C0 0B65 34CF 34FF 34C0 00125 dt b'11001111',b'11111111',b'11000000',b'00001111',b'11111111',b'10000000' ; Red Down, Green down, B lue down, 64 count 340F 34FF 3480 0B6B 34DF 34FF 34C0 00126 dt b'11011111',b'11111111',b'11000000',b'00011111',b'11111111',b'00000000' ; Red Down, Green down, B lue down, 64 count 341F 34FF 3400 0B71 34FF 34FE 34C0 00127 dt b'11111111',b'11111110',b'11000000',b'00111111',b'11111110',b'00000000' ; Red Down, Green down, B lue down, 64 count 343F 34FE 3400 00128 0B77 34FF 34FC 34C0 00129 dt b'11111111',b'11111100',b'11000000',b'01111111',b'11111100',b'00000000' ; Red Down, Green down, B lue down, 64 count 347F 34FC 3400 0B7D 34FF 34F8 34C0 00130 dt b'11111111',b'11111000',b'11000000',b'11111111',b'11111000',b'00000000' ; Red Down, Green down, B lue down, 64 count 34FF 34F8 3400 0B83 34FF 34F0 34C1 00131 dt b'11111111',b'11110000',b'11000001',b'11111111',b'11110000',b'00000001' ; Red Down, Green down, B lue down, 64 count 34FF 34F0 3401 0B89 34FF 34E0 34C3 00132 dt b'11111111',b'11100000',b'11000011',b'11111111',b'11100000',b'00000011' ; Red Down, Green down, B lue down, 64 count 34FF 34E0 3403 00133 0B8F 34FF 34C0 34C7 00134 dt b'11111111',b'11000000',b'11000111',b'11111111',b'11000000',b'00000111' ; Red Down, Green down, B lue down, 64 count 34FF 34C0 3407 0B95 34FF 3480 34CF 00135 dt b'11111111',b'10000000',b'11001111',b'11111111',b'11000000',b'00001111' ; Red Down, Green down, B lue down, 64 count 34FF 34C0 340F 0B9B 34FF 3400 34DF 00136 dt b'11111111',b'00000000',b'11011111',b'11111111',b'11000000',b'00011111' ; Red Down, Green down, B MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 175 LOC OBJECT CODE LINE SOURCE TEXT VALUE lue down, 64 count 34FF 34C0 341F 0BA1 34FE 3400 34FF 00137 dt b'11111110',b'00000000',b'11111111',b'11111110',b'11000000',b'00111111' ; Red Down, Green down, B lue down, 64 count 34FE 34C0 343F 00138 00139 end_pattern 0BA7 M endpat3 00000004 M patternc = patternc + 1 00140 00141 ;********************************************************************** 00142 ; 00143 ;*********************************************************************** 00144 00145 00146 start_pattern 0x12, 0x04 M expand M if ($ < 0x2100) 0BA7 3412 3404 3418 M dt 0x12,0x04,(leng) M else M de 0x12,0x04,(leng) M endif 00147 ; RRRRRR RRRRRRRR GGGGGG GGGGGGGG BBBBBB BBBBBBBB 0BAA 34C0 3400 34FF 00148 dt b'11000000',b'00000000',b'11111111',b'11111100',b'11000000',b'01111111' ; Red Down, Green down, B lue down, 64 count 34FC 34C0 347F 0BB0 34C0 3400 34FF 00149 dt b'11000000',b'00000000',b'11111111',b'11111000',b'11000000',b'11111111' ; Red Down, Green down, B lue down, 64 count 34F8 34C0 34FF 0BB6 34C0 3400 34FF 00150 dt b'11000000',b'00000000',b'11111111',b'11110000',b'11000001',b'11111111' ; Red Down, Green down, B lue down, 64 count 34F0 34C1 34FF 0BBC 34C0 3400 34FF 00151 dt b'11000000',b'00000000',b'11111111',b'11100000',b'11000011',b'11111111' ; Red Down, Green down, B lue down, 64 count 34E0 34C3 34FF 00152 0BC2 34C0 3400 34FF 00153 dt b'11000000',b'00000000',b'11111111',b'11000000',b'11000111',b'11111111' ; Red Down, Green down, B lue down, 64 count 34C0 34C7 34FF 0BC8 34C0 3400 34FF 00154 dt b'11000000',b'00000000',b'11111111',b'10000000',b'11001111',b'11111111' ; Red Down, Green down, B lue down, 64 count 3480 34CF 34FF 0BCE 34C0 3400 34FF 00155 dt b'11000000',b'00000000',b'11111111',b'00000000',b'11011111',b'11111111' ; Red Down, Green down, B lue down, 64 count 3400 34DF 34FF 0BD4 34C0 3400 34FE 00156 dt b'11000000',b'00000000',b'11111110',b'00000000',b'11111111',b'11111110' ; Red Down, Green down, B lue down, 64 count 3400 34FF 34FE 00157 0BDA 34C0 3400 34FC 00158 dt b'11000000',b'00000000',b'11111100',b'00000000',b'11111111',b'11111100' ; Red Down, Green down, B lue down, 64 count 3400 34FF 34FC 0BE0 34C0 3400 34F8 00159 dt b'11000000',b'00000000',b'11111000',b'00000000',b'11111111',b'11111000' ; Red Down, Green down, B MPASM 5.14 GENERIC.ASM 6-6-2008 15:07:37 PAGE 176 LOC OBJECT CODE LINE SOURCE TEXT VALUE lue down, 64 count 3400 34FF 34F8 0BE6 34C0 3400 34F0 00160 dt b'11000000',b'00000000',b'11110000',b'00000001',b'11111111',b'11110000' ; Red Down, Green down, B lue down, 64 count 3401 34FF 34F0 0BEC 34C0 3400 34E0 00161 dt b'11000000',b'00000000',b'11100000',b'00000011',b'11111111',b'11100000' ; Red Down, Green down, B lue down, 64 count 3403 34FF 34E0 00162 0BF2 34C0 3400 34C0 00163 dt b'11000000',b'00000000',b'11000000',b'00000111',b'11111111',b'11000000' ; Red Down, Green down, B lue down, 64 count 3407 34FF 34C0 0BF8 34C0 3400 34C0 00164 dt b'11000000',b'00000000',b'11000000',b'00001111',b'11111111',b'10000000' ; Red Down, Green down, B lue down, 64 count 340F 34FF 3480 0BFE 34C0 3400 34C0 00165 dt b'11000000',b'00000000',b'11000000',b'00011111',b'11111111',b'00000000' ; Red Down, Green down, B lue down, 64 count 341F 34FF 3400 0C04 34C0 3400 34C0 00166 dt b'11000000',b'00000000',b'11000000',b'00111111',b'11111110',b'00000000' ; Red Down, Green down, B lue down, 64 count 343F 34FE 3400 00167 0C0A 34C0 3400 34C0 00168 dt b'11000000',b'00000000',b'11000000',b'01111111',b'11111100',b'00000000' ; Red Down, Green down, B lue down, 64 count 347F 34FC 3400 0C10 34C0 3400 34C0 00169 dt b'11000000',b'00000000',b'11000000',b'11111111',b'11111000',b'00000000' ; Red Down, Green down, B lue down, 64 count 34FF 34F8 3400 0C16 34C0 3400 34C1 00170 dt b'11000000',b'00000000',b'11000001',b'11111111',b'11110000',b'00000001' ; Red Down, Green down, B lue down, 64 count 34FF 34F0 3401 0C1C 34C0 3400 34C3 00171 dt b'11000000',b'00000000',b'11000011',b'11111111',b'11100000',b'00000011' ; Red Down, Green down, B lue down, 64 count 34FF 34E0 3403 00172 0C22 34C0 3400 34C7 00173 dt b'11000000',b'00000000',b'11000111',b'11111111',b'11000000',b'00000111' ; Red Down, Green down, B lue down, 64 count 34FF 34C0 3407 0C28 34C0 3400 34CF 00174 dt b'11000000',b'00000000',b'11001111',b'11111111',b'11000000',b'00001111' ; Red Down, Green down, B lue down, 64 count 34FF 34C0 340F 0C2E 34C0 3400 34DF 00175 dt b'11000000',b'00000000',b'11011111',b'11111111',b'11000000',b'00011111' ; Red Down, Green down, B lue down, 64 count 34FF 34C0 341F 0C34 34C0 3400 34FF 00176 dt b'11000000',b'00000000',b'11111111',b'11111110',b'1100000