MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 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 ; - draft 00043 ; 19 circle /w bi-color........................ Working 00044 ; - Draft 00045 ; RGB Stick ................................... Draft 00046 ; 3x3 /w mono ................................. Need 00047 ; 3x3 /w bi-color ............................. Draft 00048 ; 16x8x2 ...................................... Working on 00049 ; 00050 ; Dwayne Forsyth wrote the original code, Dwayne pulled a number of updates, 00051 ; code cleanup, and patterns from Dave Holle. 00052 ; 00053 ;********************************************************************** MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00054 ; 00055 ; Filename: generic_683.asm 00056 ; Date: 04/05/2007 00057 ; 00058 ; Author: Dwayne Forsyth 00059 ; email: Dwayne@2DKits.com 00060 ; Company: www.2DKits.com 00061 ; 502 Rue Orleanais 00062 ; Deer Park, IL 60010 00063 ; 00064 ; Help from: Dave Holle 00065 ; 00066 ;********************************************************************** 00067 00068 errorlevel -302 ; suppress banking messages 00069 00070 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00071 ; The labels following the directive are located in the respective .inc file. 00072 ; See respective data sheet for additional information on configuration word. 00073 00074 ; this SIM_DEBUG disables the buttons and IR inputs so the code will run the patterns. 00075 ; #define SIM_DEBUG 00076 00077 ;---------------------------------------------------- 00078 ; Select 1 board config! 00079 ;---------------------------------------------------- 00080 ;#define RGB4 00081 ;#define RGB4_Common_Cathode 00082 ;#define BI6 00083 ;#define BI6_MONO 00084 ;#define BI6_BADGE 00085 ;#define BI6_BADGE_MONO 00086 ;#define S19 00087 ;#define C19 00088 ;#define C19_MONO 00089 ;#define D10 00090 ;#define M3X3 00091 ;#define M3X3_MONO 00092 ;#define SRGB 00093 ;#define SRGB_Common_Cathode 00094 ;#define M8X16 ; Rom "J" 00095 ;#define M8X16G2 00096 ;#define C12 ; Rom "M" 00097 #define C12_MONO ; Rom "L" 00098 ;#define C12_SINGLE ; Rom "K" 00099 ;#define C12_SINGLE_MONO ; Rom "P" 00100 ;---------------------------------------------------- 00101 00102 ;********************************* 00103 ; 4RBG /w common anode (ufo and clear 5mm) 00104 ;********************************* 00105 00106 #ifdef RGB4 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00107 #define PATTERN1 00108 #define PATTERN2 00109 #define PATTERN3 00110 #define PATTERN4 00111 #define PATTERN20 00112 #define DISPLAY_1BIT_C 00113 #define DISPLAY_2BIT_C 00114 #define ENABLE_IR 00115 #include ; processor specific variable definitions 00116 LIST P=PIC12F683 00117 NUM_TAB equ d'14' ;highest pattern table number 00118 #endif 00119 00120 ;********************************* 00121 ; 4RBG /w common Cathode (milk 5mm and 10mm) 00122 ;********************************* 00123 00124 #ifdef RGB4_Common_Cathode 00125 #define RGB4 00126 #define Common_Cathode 00127 #define PATTERN1 00128 #define PATTERN2 00129 #define PATTERN3 00130 #define PATTERN4 00131 #define PATTERN20 00132 #define DISPLAY_1BIT_C 00133 #define DISPLAY_2BIT_C 00134 #define ENABLE_IR 00135 #include ; processor specific variable definitions 00136 LIST P=PIC12F683 00137 NUM_TAB equ d'14' ;highest pattern table number 00138 #endif 00139 00140 ;********************************* 00141 ; D10 12 LEDs. 00142 ;********************************* 00143 00144 #ifdef D10 00145 #define BIN2LED 00146 #define PATTERN1 00147 #define PATTERN3 00148 #define FLIPBYTE 00149 #define DEDICATED_BUTTON 00150 #define DEDICATED_BUTTON2 00151 #define DISPLAY_1BIT_I 00152 #define DISPLAY_2BIT_C 00153 #include ; processor specific variable definitions 00154 LIST P=PIC12F683 00155 NUM_TAB equ d'14' ;highest pattern table number 00156 #endif 00157 00158 ;********************************* 00159 ; 6 BI /w bi-color LEDs. MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00160 ;********************************* 00161 00162 #ifdef BI6 00163 #define BIN2LED 00164 #define PATTERN1 00165 #define PATTERN3 00166 #define DISPLAY_1BIT_C 00167 #define DISPLAY_2BIT_C 00168 #define ENABLE_IR 00169 #include ; processor specific variable definitions 00170 LIST P=PIC12F683 00171 NUM_TAB equ d'14' ;highest pattern table number 00172 #endif 00173 00174 ; #define BI6 DDF 00175 00176 ;********************************* 00177 ; 6 BI /w mono LEDs. 00178 ;********************************* 00179 00180 #ifdef BI6_MONO 00181 #define BI6 00182 #define MONO 00183 #define FLIPBYTE 00184 #define PATTERN5 00185 #define PATTERN11 00186 #define DISPLAY_1BIT_A 00187 #define DISPLAY_2BIT_A 00188 #define ENABLE_IR 00189 #include ; processor specific variable definitions 00190 LIST P=PIC12F683 00191 NUM_TAB equ d'17' ;highest pattern table number 00192 #endif 00193 00194 ;********************************* 00195 ; badge 6 bi-color plus 1 mono LEDs. 00196 ;********************************* 00197 00198 #ifdef BI6_BADGE 00199 #define BI6 00200 #define BIN2LED 00201 #define PATTERN10 00202 #define PATTERN3 00203 #define BADGE 00204 #define DISPLAY_1BIT_C 00205 #define DISPLAY_2BIT_C 00206 #include ; processor specific variable definitions 00207 LIST P=PIC12F683 00208 NUM_TAB equ d'14' ;highest pattern table number 00209 #endif 00210 00211 ;********************************* 00212 ; badge 6 mono LEDs. MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00213 ;********************************* 00214 00215 #ifdef BI6_BADGE_MONO 00216 #define BI6 00217 #define MONO 00218 #define BADGE 00219 #define PATTERN5 00220 #define PATTERN11 00221 #define FLIPBYTE 00222 #define DISPLAY_1BIT_A 00223 #define DISPLAY_2BIT_A 00224 #include ; processor specific variable definitions 00225 LIST P=PIC12F683 00226 NUM_TAB equ d'19' ;highest pattern table number 00227 #endif 00228 00229 ;#define DREW ; special pattern in EEProm for Drew 00230 00231 ;********************************* 00232 ; 19 LED Stick 00233 ;********************************* 00234 00235 #ifdef S19 00236 #define PATTERN6 00237 #define PATTERN7 00238 #define PATTERN8 00239 #define FLIPBYTE 00240 #define DISPLAY_1BIT_D 00241 #define ENABLE_IR 00242 #include ; processor specific variable definitions 00243 LIST P=PIC12F683 00244 NUM_TAB equ d'23' ;highest pattern table number 00245 #endif 00246 00247 ;********************************* 00248 ; 19 Circle bicolor 00249 ;********************************* 00250 00251 #ifdef C19 00252 #define PATTERN9 00253 #define PATTERN12 00254 #define PATTERN13 00255 #define BIN2LED 00256 #define RANDOM 00257 #define DEDICATED_BUTTON 00258 #define DISPLAY_1BIT_B 00259 #define DISPLAY_2BIT_D 00260 #define ENABLE_IR 00261 #include ; processor specific variable definitions 00262 LIST P=PIC16F688 00263 NUM_TAB equ d'25' ;highest pattern table number 00264 #endif 00265 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00266 ;********************************* 00267 ; 19 Circle mono 00268 ;********************************* 00269 00270 #ifdef C19_MONO 00271 #define MONO 00272 #define C19 00273 #define PATTERN9 00274 #define PATTERN12 00275 #define PATTERN14 00276 #define RANDOM 00277 #define BIN2LED 00278 #define DEDICATED_BUTTON 00279 #define DISPLAY_1BIT_B 00280 #define DISPLAY_2BIT_E 00281 #define ENABLE_IR 00282 #include ; processor specific variable definitions 00283 LIST P=PIC16F688 00284 NUM_TAB equ d'25' ;highest pattern table number 00285 #endif 00286 00287 ;********************************* 00288 ; 3x3 matrix Bi-color 00289 ;********************************* 00290 00291 #ifdef M3X3 00292 #define PATTERN6 00293 #define PATTERN19 00294 #define PATTERN21 00295 #define BIN2LED 00296 #define DISPLAY_1BIT_F 00297 #define ENABLE_IR 00298 #define MULTIBUTTON 00299 #define RANDOM 00300 #include ; processor specific variable definitions 00301 LIST P=PIC12F683 00302 NUM_TAB equ d'14' ;highest pattern table number 00303 #endif 00304 00305 ;********************************* 00306 ; 3x3 matrix mono 00307 ;********************************* 00308 00309 #ifdef M3X3_MONO 00310 #define M3X3 00311 #define MONO 00312 #define PATTERN6 00313 #define PATTERN19 00314 #define PATTERN21 00315 #define BIN2LED 00316 #define DISPLAY_1BIT_F 00317 #define ENABLE_IR 00318 #define MULTIBUTTON MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00319 #define RANDOM 00320 #include ; processor specific variable definitions 00321 LIST P=PIC12F683 00322 NUM_TAB equ d'14' ;highest pattern table number 00323 #endif 00324 00325 ;********************************* 00326 ; RGB Stick (new UFO 00327 ;********************************* 00328 00329 #ifdef SRGB 00330 #define PATTERN15 00331 #define PATTERN16 00332 #define PATTERN17 00333 #define PATTERN18 00334 #define DEDICATED_BUTTON 00335 #define DEDICATED_BUTTON2 00336 #define DISPLAY_1BIT_E 00337 #define ENABLE_IR 00338 #include ; processor specific variable definitions 00339 LIST P=PIC16F688 00340 NUM_TAB equ d'15' ;highest pattern table number 00341 #endif 00342 00343 ;********************************* 00344 ; RGB Stick 00345 ;********************************* 00346 00347 #ifdef SRGB_Common_Cathode 00348 #define SRGB 00349 #define Common_Cathode 00350 #define PATTERN15 00351 #define PATTERN16 00352 #define PATTERN17 00353 #define PATTERN18 00354 #define DEDICATED_BUTTON 00355 #define DEDICATED_BUTTON2 00356 #define DISPLAY_1BIT_E 00357 #define ENABLE_IR 00358 #include ; processor specific variable definitions 00359 LIST P=PIC16F688 00360 NUM_TAB equ d'15' ;highest pattern table number 00361 #endif 00362 00363 ;********************************* 00364 ; 8x16 Matrix 00365 ;********************************* 00366 00367 #ifdef M8X16 00368 #define PATTERN12 00369 #define PATTERN22 00370 #define PATTERN24 00371 #define PATTERN25 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00372 #define PATTERN26 00373 #define BIN2LED 00374 #define RANDOM 00375 #define DEDICATED_BUTTON 00376 #define DISPLAY_1BIT_G 00377 ;#define DISPLAY_2BIT_D 00378 #define ENABLE_IR 00379 #include ; processor specific variable definitions 00380 LIST P=PIC16F886 00381 NUM_TAB equ d'18' ;highest pattern table number 00382 #endif 00383 00384 ;********************************* 00385 ; 8x16 Matrix 2nd generation chip 00386 ;********************************* 00387 00388 #ifdef M8X16G2 00389 #define M8X16 00390 #define PATTERN12 00391 #define PATTERN22 00392 #define PATTERN24 00393 #define PATTERN25 00394 #define PATTERN26 00395 #define BIN2LED 00396 #define RANDOM 00397 #define DEDICATED_BUTTON 00398 #define DISPLAY_1BIT_G 00399 ;#define DISPLAY_2BIT_D 00400 #define ENABLE_IR 00401 #include ; processor specific variable definitions 00402 LIST P=PIC16F1936 00403 NUM_TAB equ d'18' ;highest pattern table number 00404 #endif 00405 00406 ;********************************* 00407 ; 24 LED 3D Sphere Bi-color 00408 ;********************************* 00409 00410 #ifdef C12 00411 #define PATTERN23 00412 #define PATTERN27 00413 #define BIN2LED 00414 #define RANDOM 00415 #define DEDICATED_BUTTON 00416 #define DEDICATED_BUTTON2 00417 #define DISPLAY_1BIT_H 00418 #define FLIPBYTE 00419 ;#define DISPLAY_2BIT_D 00420 #define ENABLE_IR 00421 ;#include ; old chip 00422 ; LIST P=PIC16F886 ; old chip 00423 #include ; processor specific variable definitions 00424 LIST P=PIC16F1936 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00425 FSR EQU FSR0L 00426 NUM_TAB equ d'14' ;highest pattern table number 00427 #endif 00428 00429 ;********************************* 00430 ; 24 LED 3D Sphere Mono 00431 ;********************************* 00432 00433 #ifdef C12_MONO 00434 #define C12 00435 #define MONO 00436 #define PATTERN23 00437 #define PATTERN27 00438 #define BIN2LED 00439 #define RANDOM 00440 #define DEDICATED_BUTTON 00441 #define DEDICATED_BUTTON2 00442 #define DISPLAY_1BIT_H 00443 #define FLIPBYTE 00444 ;#define DISPLAY_2BIT_D 00445 #define ENABLE_IR 00446 ;#include ; old chip 00447 ; LIST P=PIC16F886 ; old chip 00448 #include ; processor specific variable definitions 00001 LIST 00002 00003 ;========================================================================== 00004 ; MPASM PIC16F1936 processor include 00005 ; 00006 ; (c) Copyright 1999-2009 Microchip Technology, All rights reserved 00007 ;========================================================================== 00008 01394 LIST 00449 LIST P=PIC16F1936 00000004 00450 FSR EQU FSR0L 0000000E 00451 NUM_TAB equ d'14' ;highest pattern table number 00452 #endif 00453 00454 ;********************************* 00455 ; 12 Single Bi-color Circle 00456 ;********************************* 00457 00458 #ifdef C12_SINGLE 00459 #define C12 00460 #define SINGLE 00461 #define PATTERN23 00462 #define PATTERN27 00463 #define BIN2LED 00464 #define RANDOM 00465 #define DEDICATED_BUTTON 00466 #define DEDICATED_BUTTON2 00467 #define DISPLAY_1BIT_H 00468 #define FLIPBYTE MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00469 ;#define DISPLAY_2BIT_D 00470 #define ENABLE_IR 00471 #include ; processor specific variable definitions 00472 LIST P=PIC16F886 00473 NUM_TAB equ d'14' ;highest pattern table number 00474 #endif 00475 00476 ;********************************* 00477 ; 12 Single Mono Circle 00478 ;********************************* 00479 00480 #ifdef C12_SINGLE_MONO 00481 #define C12 00482 #define SINGLE 00483 #define MONO 00484 #define PATTERN23 00485 #define PATTERN27 00486 #define BIN2LED 00487 #define RANDOM 00488 #define DEDICATED_BUTTON 00489 #define DEDICATED_BUTTON2 00490 #define DISPLAY_1BIT_H 00491 #define FLIPBYTE 00492 ;#define DISPLAY_2BIT_D 00493 #define ENABLE_IR 00494 #include ; processor specific variable definitions 00495 LIST P=PIC16F886 00496 NUM_TAB equ d'14' ;highest pattern table number 00497 #endif 00498 00499 00500 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00501 ; The labels following the directive are located in the respective .inc file. 00502 ; See respective data sheet for additional information on configuration word. 00503 00504 #ifdef __16F726 00505 __CONFIG _CONFIG1, _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF 00506 #else 00507 #ifdef __16F886 00508 __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTOSCIO 00509 __CONFIG _CONFIG2, _PLLEN_OFF & _WRT_OFF & _BOR21V 00510 #else 00511 #ifdef __16F1936 8007 E984 00512 __CONFIG _CONFIG1, _CLKOUTEN_OFF & _FCMEN_ON & _IESO_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _MCL RE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC 8008 FEFF 00513 __CONFIG _CONFIG2, _WRT_OFF & _BORV_19 & _PLLEN_OFF & _STVREN_ON & _LVP_ON 00514 #else 00515 __CONFIG _CP_OFF & _CPD_OFF & _BOD_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _ FCMEN_OFF & _IESO_OFF 00516 #endif 00517 #endif 00518 #endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00519 00520 ;********************************************************************** 00521 ; Macros 00522 ;********************************************************************** 00523 ; bank select macros 00524 00525 #ifdef __16F1936 00526 setbank0 macro 00527 clrf BSR 00528 endm 00529 00530 setbank1 macro 00531 clrf BSR 00532 incf BSR,f 00533 endm 00534 #else 00535 setbank0 macro 00536 bcf STATUS,RP0 ; select bank 0 00537 bcf STATUS,RP1 00538 endm 00539 00540 setbank1 macro 00541 bsf STATUS,RP0 ; select bank 1 00542 bcf STATUS,RP1 00543 endm 00544 #endif 00000020 00545 mem = 20 0000007F 00546 mem2 = 0x7F 000000A0 00547 mem3 = 0xa0 00548 00549 var macro name 00550 name equ mem 00551 mem = mem + 1 00552 if (mem >= mem2) 00553 error 'Too much var space used' 00554 endif 00555 endm 00556 00557 dupvar macro name, name2 00558 name equ name2 00559 endm 00560 00561 var_all_bank macro name 00562 name equ mem2 00563 mem2 = mem2 - 1 00564 if (mem >= mem2) 00565 error 'Too much var space used' 00566 endm 00567 000000A0 00568 mem3 = 0xa0 00569 var_bank2 macro name 00570 name equ mem3 00571 mem3 = mem3 + 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00572 if (mem3 >= 0xef) 00573 error 'Too much var space used' 00574 endm 00575 00000000 00576 patternc = 0 00577 start_pattern macro typem, delaym 00578 00579 table#v(patternc) 00580 if (typem == 1) || (typem == 6) || (typem == 0x15) 00581 leng = (endpat#v(patternc)-$-3)/3 ;tbltype1,speed,length 00582 else 00583 if (typem == 3) || (typem == 0x0b) || (typem == 0x10) || (typem == 0x13) || (typem == 0x14)|| (typem == 0x18) 00584 leng = (endpat#v(patternc)-$-3)/2 ;tbltype1,speed,length 00585 else 00586 if (typem == 9) || (typem == 0x0e) 00587 leng =(endpat#v(patternc)-$-3)/5 ;tbltype1,speed,length 00588 else 00589 if (typem == 0x0a) 00590 leng =(endpat#v(patternc)-$-3)/4 ;tbltype1,speed,length 00591 else 00592 if (typem == 0x0d) 00593 leng =(endpat#v(patternc)-$-3)/(9+1) ;tbltype1,speed,length 00594 else 00595 if (typem == 0x0f) || (typem == 0x12)|| (typem == 0x17)||(typem == 0x1b) 00596 leng =(endpat#v(patternc)-$-3)/(6) ;tbltype1,speed,length 00597 else 00598 if (typem == 0x11) 00599 leng = (endpat#v(patternc)-$-3)/(9+4) ;tbltype1,speed,length 00600 else 00601 if (typem == 0x16) || (typem == 0x1a) 00602 leng = (endpat#v(patternc)-$-3)/0x20 ;tbltype1,speed,length 00603 else 00604 leng =(endpat#v(patternc)-$-3) 00605 endif 00606 endif 00607 endif 00608 endif 00609 endif 00610 endif 00611 endif 00612 endif 00613 expand 00614 if ($ < 0x2100) 00615 dt typem,delaym,(leng) 00616 else 00617 de typem,delaym,(leng) 00618 endif 00619 endm 00620 00621 storedata macro stuff 00622 if ($ < 0x2100) 00623 dt stuff MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00624 else 00625 de stuff 00626 endif 00627 endm 00628 00629 end_pattern macro 00630 endpat#v(patternc) 00631 patternc = patternc + 1 00632 endm 00633 00634 mult_nop macro nup_count 00635 local i = nup_count 00636 while i > 3 00637 call Lcontinue ;4 cycles 00638 i -= 4 00639 endw 00640 while i > 1 00641 goto $+1 ;2 cycles 00642 i -= 2 00643 endw 00644 if i > 0 00645 nop ;1 cycle 00646 endif 00647 endm 00648 00649 LedOut macro word,reg_dir,port 00650 movfw TMR0 00651 subwf word,w 00652 btfss STATUS,C 00653 bsf reg_dir, port 00654 endm 00655 00656 LedOutInd macro word,reg_dir,port 00657 movlw word 00658 movwf FSR ; set indirect pointer to word 00659 movfw TMR0 00660 subwf INDF,w 00661 btfss STATUS,C 00662 bsf reg_dir, port 00663 endm 00664 00665 ; Indirect Paged 00666 LedOutIndP macro page,word,reg_dir,port 00667 if (page == 0) 00668 bcf STATUS,IRP 00669 else 00670 bsf STATUS,IRP 00671 endif 00672 movlw (word & 0xff) 00673 movwf FSR ; set indirect pointer to word 00674 movfw TMR0 00675 subwf INDF,w 00676 btfss STATUS,C MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00677 bsf reg_dir, port 00678 endm 00679 00680 LedOutL macro word,reg_dir,port 00681 swapf word,w 00682 movwf temp4 00683 movfw TMR0 00684 subwf temp4,w 00685 btfss STATUS,C 00686 bsf reg_dir, port 00687 endm 00688 00689 LedOutH macro word,reg_dir,port 00690 nop 00691 nop 00692 movfw TMR0 00693 subwf word,w 00694 btfss STATUS,C 00695 bsf reg_dir, port 00696 endm 00697 00698 state_tbl macro num,zero,one,flag 00699 Lstate#v(num) 00700 #ifndef MULTIBUTTON 00701 if (flag == 0) 00702 bcf button,0 00703 movlw 0x30 00704 movwf butcount 00705 endif 00706 if (flag == 1) 00707 bsf button,0 00708 endif 00709 #endif 00710 btfsc IR_in,0 00711 goto Lstate#v(num)a 00712 00713 movlw zero 00714 movwf instate 00715 00716 goto Lcontinue 00717 00718 Lstate#v(num)a 00719 movlw one 00720 movwf instate 00721 00722 goto Lcontinue 00723 endm 00724 00725 state2_tbl macro num, name, offset 00726 Lstate#v(num) 00727 ; save the 1st half of word 00728 movf IR_in,w ; save 1st half 00729 movwf IR_lhalf MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00730 incf instate,f 00731 00732 goto Lcontinue 00733 00734 Lstate#v(num+1) 00735 ; save the 2nd half of word 00736 ; check for protocal error should get 01 or 10 00737 movf IR_lhalf,w 00738 xorwf IR_in,w 00739 btfss STATUS,Z 00740 goto Lstate#v(num+1)a 00741 clrf instate ; error state = zero 00742 00743 goto Lcontinue 00744 00745 ; set the correct bit in output vars. 00746 Lstate#v(num+1)a 00747 btfsc IR_in,0 00748 bcf name,offset 00749 btfss IR_in,0 00750 bsf name,offset 00751 00752 incf instate,f 00753 goto Lcontinue 00754 endm 00755 00756 entry macro a0,a1,a2 00757 dt a0,a1,a2 00758 endm 00759 00760 tbltype1 macro speed,length 00761 if (length > 2) & (length < d'256') 00762 dt 0x01,speed,length 00763 else 00764 error 'pattern length must be > 2 and < 256' 00765 endif 00766 endm 00767 00768 make_mtab macro numtab 00769 local i = 0 00770 while i <= numtab 00771 dt HIGH table#v(i), LOW table#v(i) 00772 i += 1 00773 endw 00774 endm 00775 00776 make_state_jump_table macro max_state 00777 local i = 0 00778 while i <= max_state 00779 dt HIGH Lstate#v(i), LOW Lstate#v(i) 00780 i += 1 00781 endw 00782 endm MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00783 00784 00785 #ifdef __12F683 00786 PORTA EQU GPIO 00787 TRISA EQU TRISIO 00788 NOT_RAPU EQU NOT_GPPU 00789 #endif 00790 00791 #ifdef __16F1936 00000000 00792 INDF EQU INDF0 0000018C 00793 ANSEL EQU ANSELA 00794 #endif 00795 00796 ; ++-------- A7 A6 unimplemented (0) 00797 ; || +------ A4 IR LED output (0) 00798 ; || |+----- A3 detector/button input (1) 00799 ; || || 00800 ; b'00101111' ;set LED matrix pins to input (tri-stated) 00801 ; | ||| 00802 ; +--+++-- LED matrix on A5 A2 A1 A0 (1) 00803 00804 ;********************************************************************** 0000 00805 ORG 0x000 ; processor reset vector 00806 ;********************************************************************** 0000 2D7C 00807 goto main ; go to beginning of program 00808 00809 ;********************************************************************** 0004 00810 ORG 0x004 ; interrupt vector location 00811 ;********************************************************************** 00812 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' 00813 var_all_bank status_temp ; variable used for context saving 0000007E M status_temp equ mem2 0000007D M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00814 00815 #ifdef __16F688 00816 var_all_bank fsr_save 00817 var_all_bank pclath_temp 00818 #endif 00819 00820 #ifdef __16F726 00821 var_all_bank fsr_save 00822 var_all_bank pclath_temp 00823 #endif 00824 00825 #ifdef __16F886 00826 var_all_bank fsr_save 00827 var_all_bank pclath_temp MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00828 #endif 00829 00830 00831 00832 00833 var nextf ; flags for timing loops 00000020 M nextf equ mem 00000021 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00834 ; bit 0 is one display cycle (890 usec) 00835 ; bit 1 is about 1 minute 00836 var dcycle ; stobe counter [0-3] 00000021 M dcycle equ mem 00000022 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00837 var count1 ; lower bit counter 00000022 M count1 equ mem 00000023 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00838 var count2 ; higher bit counter. 00000023 M count2 equ mem 00000024 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00839 00840 #ifdef __12F683 00841 movwf w_temp ; copy W to TEMP register 00842 swapf STATUS,w ; Swap status to be saved into W 00843 clrf STATUS ; Bank 0 00844 movwf status_temp ; save off contents of PCLATH register 00845 #else 00846 #ifdef __16F1936 00847 ; 16F1936 W, Status, BSR,FSR, and PCLATCH are auto saved via shadow registers! 00848 #else 00849 movwf w_temp ; save off current W register contents 00850 movf STATUS,w ; move status register into W register 00851 movwf status_temp ; save off contents of STATUS register 00852 movf PCLATH,w ; move pclath register into W register 00853 movwf pclath_temp ; save off contents of PCLATH register 00854 movf FSR,w 00855 movwf fsr_save 00856 #endif 00857 #endif 00858 0004 00859 here 00860 setbank0 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0004 0188 M clrf BSR 00861 #ifdef __16F1936 0005 3180 00862 MOVLP high here ; DDF 00863 #else 00864 pageselw here 00865 #endif 00866 ; 00867 ; set tick interupt to 889ms for IR RC5 protocal 1/2 digit. 00868 ; an Interupt every 889us /w 8mhz internal osc 00869 ; 00870 00871 #define TICK_VALUE D'35' 00872 0006 3023 00873 movlw TICK_VALUE 0007 0095 00874 movwf TMR0 00875 ; 00876 ; increment the stobe and duration counters 00877 ; 00878 0008 0AA1 00879 incf dcycle,f 00880 00881 #ifdef RGB4 00882 movlw 0x04 00883 #else 00884 #ifdef BI6 00885 movlw 0x04 00886 #else 00887 #ifdef S19 00888 movlw 0x05 00889 #else 00890 #ifdef C19 00891 movlw 0x07 00892 #else 00893 #ifdef M3X3 00894 movlw 0x05 00895 #else 00896 #ifdef SRGB 00897 movlw 0x07 00898 #else 00899 #ifdef M8X16 00900 movlw 0x10 00901 #else 00902 #ifdef C12 0009 3006 00903 movlw 0x06 00904 #else 00905 error "unknown board strobe type" 00906 #endif 00907 #endif 00908 #endif 00909 #endif 00910 #endif 00911 #endif 00912 #endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00913 #endif 00914 000A 0221 00915 subwf dcycle,w 000B 1803 00916 btfsc STATUS,C 000C 01A1 00917 clrf dcycle 00918 000D 1420 00919 bsf nextf,0 00920 000E 0FA2 00921 incfsz count1,f 000F 2813 00922 goto skip1 00923 0010 0FA3 00924 incfsz count2,f 0011 2813 00925 goto skip1 00926 0012 14A0 00927 bsf nextf,1 00928 0013 00929 skip1 00930 0013 083D 00931 movf scount,w ; F22 0014 3E00 00932 addlw 0 ; F23 0015 1903 00933 btfsc STATUS,Z ; F24 0016 2832 00934 goto send_nothing ; F25 00935 0017 1C2E 00936 btfss tx_1,0 ; F26 0018 2830 00937 goto send_zero ; F27 00938 00939 ;-------------------------------------------------------------------------------------- 0019 00940 send_one ; we are slaming the 36K IR siginal, its like a busy wait! 00941 ;-------------------------------------------------------------------------------------- 00942 var repeat 00000024 M repeat equ mem 00000025 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00943 #ifdef S19 00944 setbank1 00945 movlw b'00011010' ;set A0 & A5 led to output 00946 movwf TRISA 00947 setbank0 00948 #define IRBIT 0 00949 #define IRPORT PORTA 00950 #else 00951 #ifdef C12 00952 setbank1 0019 0188 M clrf BSR 001A 0A88 M incf BSR,f 001B 30DB 00953 movlw b'11011011' ;set B2 & B5 led to output 001C 008D 00954 movwf TRISB 00955 setbank0 001D 0188 M clrf BSR 00956 #define IRBIT 2 00957 #define IRPORT PORTB MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00958 #else 00959 #ifdef M8X16 00960 #define IRBIT 1 00961 #define IRPORT PORTC 00962 #else 00963 #ifdef M3X3 00964 setbank1 00965 movlw b'00111001' ;set A1 & A2 led to output 00966 movwf TRISA 00967 setbank0 00968 #define IRBIT 1 00969 #define IRPORT PORTA 00970 #else 00971 #ifdef SRGB 00972 #define IRBIT 1 00973 #define IRPORT PORTA 00974 #else 00975 #define IRBIT 4 00976 #define IRPORT PORTA 00977 #endif 00978 #endif 00979 #endif 00980 #endif 00981 #endif 00982 001E 018D 00983 clrf IRPORT 001F 150D 00984 bsf IRPORT,IRBIT ; A01 00985 0020 2345 00986 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00987 ; mult_nop d'9' ; A17-A25 0021 3001 00988 movlw 01h 0022 234F 00989 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 0023 0000 00990 nop 00991 0024 301E 00992 movlw 0x1E ; C26 (23) 0025 00A4 00993 movwf repeat ; C27 0026 00994 repeat_loop 0026 110D 00995 bcf IRPORT,IRBIT ; D01 00996 00997 ; mult_nop d'26' ; D02-D27 0027 3007 00998 movlw 07h 0028 234F 00999 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 01000 0029 150D 01001 bsf IRPORT,IRBIT ; E01 (27) 01002 01003 ; mult_nop d'23' ; E02-E24 002A 3006 01004 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 002B 234F 01005 call qdelay 01006 002C 0BA4 01007 decfsz repeat,f ; E25 (24) 002D 2826 01008 goto repeat_loop ; E26/E27 01009 002E 110D 01010 bcf IRPORT,IRBIT MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002F 2853 01011 goto exit_tx 01012 01013 ;-------------------------------------------------------------------------------------- 0030 01014 send_zero ; we are going to release all the CPU time to the main line for display. 01015 ;-------------------------------------------------------------------------------------- 01016 0030 2345 01017 call get_next_tx_bit ; 2 + 11 cycles A04-A16 0031 2834 01018 goto drive_main_leds 01019 01020 ;-------------------------------------------------------------------------------------- 0032 01021 send_nothing ; Drive the main LEDs. 01022 ;-------------------------------------------------------------------------------------- 01023 0032 233A 01024 call read_ir_in 01025 #ifdef DEDICATED_BUTTON 0033 2333 01026 call read_button_in 01027 #endif 01028 ; goto drive_main_leds 01029 01030 ;-------------------------------------------------------------------------------------- 0034 01031 drive_main_leds ; Drive the main LEDs. 01032 ;-------------------------------------------------------------------------------------- 01033 var fcount 00000025 M fcount equ mem 00000026 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01034 #ifndef S19 01035 #ifndef C19 01036 #ifndef SRGB 01037 #ifndef M3X3 01038 #ifndef M8X16 01039 #ifndef C12 01040 var Ar_reg 01041 var Ag_reg 01042 var Ab_reg 01043 var Br_reg 01044 var Bg_reg 01045 var Bb_reg 01046 var Cr_reg 01047 var Cg_reg 01048 var Cb_reg 01049 var Dr_reg 01050 var Dg_reg 01051 var Db_reg 01052 #endif 01053 #endif 01054 #endif 01055 #endif 01056 #endif 01057 #endif 01058 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01059 #ifdef BADGE 01060 var Center_reg 01061 #endif 01062 #ifdef M3X3 01063 var A0_A1_reg 01064 var A0_A2_reg 01065 var A0_A4_reg 01066 var A0_A5_reg 01067 var A1_A0_reg 01068 var A1_A2_reg 01069 var A1_A4_reg 01070 var A1_A5_reg 01071 var A2_A0_reg 01072 var A2_A1_reg 01073 var A2_A4_reg 01074 var A2_A5_reg 01075 var A4_A0_reg 01076 var A4_A1_reg 01077 var A4_A2_reg 01078 var A4_A5_reg 01079 var A5_A0_reg 01080 var A5_A1_reg 01081 var A5_A2_reg 01082 var A5_A4_reg 01083 #endif 01084 #ifdef S19 01085 var A0_A1_reg 01086 var A0_A2_reg 01087 var A0_A4_reg 01088 var A0_A5_reg 01089 var A1_A0_reg 01090 var A1_A2_reg 01091 var A1_A4_reg 01092 var A1_A5_reg 01093 var A2_A0_reg 01094 var A2_A1_reg 01095 var A2_A4_reg 01096 var A2_A5_reg 01097 var A4_A0_reg 01098 var A4_A1_reg 01099 var A4_A2_reg 01100 var A4_A5_reg 01101 var A5_A0_reg 01102 var A5_A1_reg 01103 var A5_A2_reg 01104 var A5_A4_reg 01105 #endif 01106 #ifdef C19 01107 var_bank2 A0_A1_reg 01108 var_bank2 A0_A2_reg 01109 var_bank2 A0_C0_reg 01110 var_bank2 A0_C1_reg 01111 var_bank2 A0_C2_reg MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01112 var_bank2 A0_C4_reg 01113 01114 var_bank2 A1_A0_reg 01115 var_bank2 A1_A2_reg 01116 var_bank2 A1_C0_reg 01117 var_bank2 A1_C1_reg 01118 var_bank2 A1_C2_reg 01119 var_bank2 A1_C4_reg 01120 01121 var_bank2 A2_A0_reg 01122 var_bank2 A2_A1_reg 01123 var_bank2 A2_C0_reg 01124 var_bank2 A2_C1_reg 01125 var_bank2 A2_C2_reg 01126 var_bank2 A2_C4_reg 01127 01128 var_bank2 C0_A0_reg 01129 var_bank2 C0_A1_reg 01130 var_bank2 C0_A2_reg 01131 var_bank2 C0_C1_reg 01132 var_bank2 C0_C2_reg 01133 var_bank2 C0_C4_reg 01134 01135 var_bank2 C1_A0_reg 01136 var_bank2 C1_A1_reg 01137 var_bank2 C1_A2_reg 01138 var_bank2 C1_C0_reg 01139 var_bank2 C1_C2_reg 01140 var_bank2 C1_C4_reg 01141 01142 var_bank2 C2_A0_reg 01143 var_bank2 C2_A1_reg 01144 var_bank2 C2_A2_reg 01145 var_bank2 C2_C0_reg 01146 var_bank2 C2_C1_reg 01147 var_bank2 C2_C4_reg 01148 01149 var_bank2 C4_A0_reg 01150 var_bank2 C4_A1_reg 01151 var_bank2 C4_A2_reg 01152 var_bank2 C4_C0_reg 01153 var_bank2 C4_C1_reg 01154 var_bank2 C4_C2_reg 01155 #endif 01156 #ifdef SRGB 01157 ; 01158 ; The shifter pattern needs the colored LEDs defined sequentially 01159 ; 01160 var_bank2 C5_C3_reg ; 01 R 01161 var_bank2 C2_C3_reg ; 02 R 01162 var_bank2 C0_C4_reg ; 03 R 01163 var_bank2 C5_C4_reg ; 04 R 01164 var_bank2 C3_C5_reg ; 05 R MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01165 var_bank2 C4_C5_reg ; 06 R 01166 var_bank2 A2_C0_reg ; 07 R 01167 var_bank2 C3_C0_reg ; 08 R 01168 var_bank2 C0_A2_reg ; 09 R 01169 var_bank2 C3_A2_reg ; 10 R 01170 var_bank2 A2_C2_reg ; 11 R 01171 var_bank2 C3_C2_reg ; 12 R 01172 var_bank2 A2_C1_reg ; 13 R 01173 var_bank2 C3_C1_reg ; 14 R 01174 01175 var_bank2 A2_C3_reg ; 01 G 01176 var_bank2 C0_C3_reg ; 02 G 01177 var_bank2 A2_C4_reg ; 03 G 01178 var_bank2 C3_C4_reg ; 04 G 01179 var_bank2 C0_C5_reg ; 05 G 01180 var_bank2 A2_C5_reg ; 06 G 01181 var_bank2 C4_C0_reg ; 07 G 01182 var_bank2 C5_C0_reg ; 08 G 01183 var_bank2 C4_A2_reg ; 09 G 01184 var_bank2 C5_A2_reg ; 10 G 01185 var_bank2 C4_C2_reg ; 11 G 01186 var_bank2 C5_C2_reg ; 12 G 01187 var_bank2 C4_C1_reg ; 13 G 01188 var_bank2 C5_C1_reg ; 14 G 01189 01190 var_bank2 C1_C3_reg ; 01 B ? 01191 var_bank2 C4_C3_reg 01192 var_bank2 C2_C4_reg ; 03 B 01193 var_bank2 C1_C4_reg ; 04 B 01194 var_bank2 C1_C5_reg ; 05 B 01195 var_bank2 C2_C5_reg ; 06 B 01196 var_bank2 C2_C0_reg ; 07 B 01197 var_bank2 C1_C0_reg ; 08 B 01198 var_bank2 C2_A2_reg ; 09 B 01199 var_bank2 C1_A2_reg ; 10 B 01200 var_bank2 C1_C2_reg ; 11 B 01201 var_bank2 C0_C2_reg 01202 var_bank2 C2_C1_reg ; 13 B ? 01203 var_bank2 C0_C1_reg ; 14 B 01204 01205 #endif 01206 01207 #ifdef M8X16 01208 #ifdef M8X16G2 01209 ; Using Linerar Data Memory address mode. 01210 Led_G00 equ 0x20F0 01211 Led_G01 equ 0x20F1 01212 Led_G02 equ 0x20F2 01213 Led_G03 equ 0x20F3 01214 Led_G04 equ 0x20F4 01215 Led_G05 equ 0x20F5 01216 Led_G06 equ 0x20F6 01217 Led_G07 equ 0x20F7 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01218 01219 Led_G10 equ 0x20F8 01220 Led_G11 equ 0x20F9 01221 Led_G12 equ 0x20Fa 01222 Led_G13 equ 0x20Fb 01223 Led_G14 equ 0x20Fc 01224 Led_G15 equ 0x20Fd 01225 Led_G16 equ 0x20Fe 01226 Led_G17 equ 0x20Ff 01227 01228 Led_G20 equ 0x2100 01229 Led_G21 equ 0x2101 01230 Led_G22 equ 0x2102 01231 Led_G23 equ 0x2103 01232 Led_G24 equ 0x2104 01233 Led_G25 equ 0x2105 01234 Led_G26 equ 0x2106 01235 Led_G27 equ 0x2107 01236 01237 Led_G30 equ 0x2108 01238 Led_G31 equ 0x2109 01239 Led_G32 equ 0x210a 01240 Led_G33 equ 0x210b 01241 Led_G34 equ 0x210c 01242 Led_G35 equ 0x210d 01243 Led_G36 equ 0x210e 01244 Led_G37 equ 0x210f 01245 01246 Led_G40 equ 0x2110 01247 Led_G41 equ 0x2111 01248 Led_G42 equ 0x2112 01249 Led_G43 equ 0x2113 01250 Led_G44 equ 0x2114 01251 Led_G45 equ 0x2115 01252 Led_G46 equ 0x2116 01253 Led_G47 equ 0x2117 01254 01255 Led_G50 equ 0x2118 01256 Led_G51 equ 0x2119 01257 Led_G52 equ 0x211a 01258 Led_G53 equ 0x211b 01259 Led_G54 equ 0x211c 01260 Led_G55 equ 0x211d 01261 Led_G56 equ 0x211e 01262 Led_G57 equ 0x211f 01263 01264 Led_G60 equ 0x2120 01265 Led_G61 equ 0x2121 01266 Led_G62 equ 0x2122 01267 Led_G63 equ 0x2123 01268 Led_G64 equ 0x2124 01269 Led_G65 equ 0x2125 01270 Led_G66 equ 0x2126 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01271 Led_G67 equ 0x2127 01272 01273 Led_G70 equ 0x2128 01274 Led_G71 equ 0x2129 01275 Led_G72 equ 0x212a 01276 Led_G73 equ 0x212b 01277 Led_G74 equ 0x212c 01278 Led_G75 equ 0x212d 01279 Led_G76 equ 0x212e 01280 Led_G77 equ 0x212f 01281 01282 Led_G80 equ 0x2130 01283 Led_G81 equ 0x2131 01284 Led_G82 equ 0x2132 01285 Led_G83 equ 0x2133 01286 Led_G84 equ 0x2134 01287 Led_G85 equ 0x2135 01288 Led_G86 equ 0x2136 01289 Led_G87 equ 0x2137 01290 01291 Led_G90 equ 0x2138 01292 Led_G91 equ 0x2139 01293 Led_G92 equ 0x213a 01294 Led_G93 equ 0x213b 01295 Led_G94 equ 0x213c 01296 Led_G95 equ 0x213d 01297 Led_G96 equ 0x213e 01298 Led_G97 equ 0x213f 01299 01300 Led_GA0 equ 0x2140 01301 Led_GA1 equ 0x2141 01302 Led_GA2 equ 0x2142 01303 Led_GA3 equ 0x2143 01304 Led_GA4 equ 0x2144 01305 Led_GA5 equ 0x2145 01306 Led_GA6 equ 0x2146 01307 Led_GA7 equ 0x2147 01308 01309 Led_GB0 equ 0x2148 01310 Led_GB1 equ 0x2149 01311 Led_GB2 equ 0x214a 01312 Led_GB3 equ 0x214b 01313 Led_GB4 equ 0x214c 01314 Led_GB5 equ 0x214d 01315 Led_GB6 equ 0x214e 01316 Led_GB7 equ 0x214f 01317 01318 Led_GC0 equ 0x2150 01319 Led_GC1 equ 0x2151 01320 Led_GC2 equ 0x2152 01321 Led_GC3 equ 0x2153 01322 Led_GC4 equ 0x2154 01323 Led_GC5 equ 0x2155 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01324 Led_GC6 equ 0x2156 01325 Led_GC7 equ 0x2157 01326 01327 Led_GD0 equ 0x2158 01328 Led_GD1 equ 0x2159 01329 Led_GD2 equ 0x215a 01330 Led_GD3 equ 0x215b 01331 Led_GD4 equ 0x215c 01332 Led_GD5 equ 0x215d 01333 Led_GD6 equ 0x215e 01334 Led_GD7 equ 0x215f 01335 01336 Led_GE0 equ 0x2160 01337 Led_GE1 equ 0x2161 01338 Led_GE2 equ 0x2162 01339 Led_GE3 equ 0x2163 01340 Led_GE4 equ 0x2164 01341 Led_GE5 equ 0x2165 01342 Led_GE6 equ 0x2166 01343 Led_GE7 equ 0x2167 01344 01345 Led_GF0 equ 0x2168 01346 Led_GF1 equ 0x2169 01347 Led_GF2 equ 0x216a 01348 Led_GF3 equ 0x216b 01349 Led_GF4 equ 0x216c 01350 Led_GF5 equ 0x216d 01351 Led_GF6 equ 0x216e 01352 Led_GF7 equ 0x216f 01353 01354 Led_R00 equ 0x2170 01355 Led_R01 equ 0x2171 01356 Led_R02 equ 0x2172 01357 Led_R03 equ 0x2173 01358 Led_R04 equ 0x2174 01359 Led_R05 equ 0x2175 01360 Led_R06 equ 0x2176 01361 Led_R07 equ 0x2177 01362 01363 Led_R10 equ 0x2178 01364 Led_R11 equ 0x2179 01365 Led_R12 equ 0x217a 01366 Led_R13 equ 0x217b 01367 Led_R14 equ 0x217c 01368 Led_R15 equ 0x217d 01369 Led_R16 equ 0x217e 01370 Led_R17 equ 0x217f 01371 01372 Led_R20 equ 0x2180 01373 Led_R21 equ 0x2181 01374 Led_R22 equ 0x2182 01375 Led_R23 equ 0x2183 01376 Led_R24 equ 0x2184 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01377 Led_R25 equ 0x2185 01378 Led_R26 equ 0x2186 01379 Led_R27 equ 0x2187 01380 01381 Led_R30 equ 0x2188 01382 Led_R31 equ 0x2189 01383 Led_R32 equ 0x218a 01384 Led_R33 equ 0x218b 01385 Led_R34 equ 0x218c 01386 Led_R35 equ 0x218d 01387 Led_R36 equ 0x218e 01388 Led_R37 equ 0x218f 01389 01390 Led_R40 equ 0x2190 01391 Led_R41 equ 0x2191 01392 Led_R42 equ 0x2192 01393 Led_R43 equ 0x2193 01394 Led_R44 equ 0x2194 01395 Led_R45 equ 0x2195 01396 Led_R46 equ 0x2196 01397 Led_R47 equ 0x2197 01398 01399 Led_R50 equ 0x2198 01400 Led_R51 equ 0x2199 01401 Led_R52 equ 0x219a 01402 Led_R53 equ 0x219b 01403 Led_R54 equ 0x219c 01404 Led_R55 equ 0x219d 01405 Led_R56 equ 0x219e 01406 Led_R57 equ 0x219f 01407 01408 Led_R60 equ 0x21a0 01409 Led_R61 equ 0x21a1 01410 Led_R62 equ 0x21a2 01411 Led_R63 equ 0x21a3 01412 Led_R64 equ 0x21a4 01413 Led_R65 equ 0x21a5 01414 Led_R66 equ 0x21a6 01415 Led_R67 equ 0x21a7 01416 01417 Led_R70 equ 0x21a8 01418 Led_R71 equ 0x21a9 01419 Led_R72 equ 0x21aa 01420 Led_R73 equ 0x21ab 01421 Led_R74 equ 0x21ac 01422 Led_R75 equ 0x21ad 01423 Led_R76 equ 0x21ae 01424 Led_R77 equ 0x21af 01425 01426 Led_R80 equ 0x21b0 01427 Led_R81 equ 0x21b1 01428 Led_R82 equ 0x21b2 01429 Led_R83 equ 0x21b3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01430 Led_R84 equ 0x21b4 01431 Led_R85 equ 0x21b5 01432 Led_R86 equ 0x21b6 01433 Led_R87 equ 0x21b7 01434 01435 Led_R90 equ 0x21b8 01436 Led_R91 equ 0x21b9 01437 Led_R92 equ 0x21ba 01438 Led_R93 equ 0x21bb 01439 Led_R94 equ 0x21bc 01440 Led_R95 equ 0x21bd 01441 Led_R96 equ 0x21be 01442 Led_R97 equ 0x21bf 01443 01444 Led_RA0 equ 0x21c0 01445 Led_RA1 equ 0x21c1 01446 Led_RA2 equ 0x21c2 01447 Led_RA3 equ 0x21c3 01448 Led_RA4 equ 0x21c4 01449 Led_RA5 equ 0x21c5 01450 Led_RA6 equ 0x21c6 01451 Led_RA7 equ 0x21c7 01452 01453 Led_RB0 equ 0x21c8 01454 Led_RB1 equ 0x21c9 01455 Led_RB2 equ 0x21ca 01456 Led_RB3 equ 0x21cb 01457 Led_RB4 equ 0x21cc 01458 Led_RB5 equ 0x21cd 01459 Led_RB6 equ 0x21ce 01460 Led_RB7 equ 0x21cf 01461 01462 Led_RC0 equ 0x21d0 01463 Led_RC1 equ 0x21d1 01464 Led_RC2 equ 0x21d2 01465 Led_RC3 equ 0x21d3 01466 Led_RC4 equ 0x21d4 01467 Led_RC5 equ 0x21d5 01468 Led_RC6 equ 0x21d6 01469 Led_RC7 equ 0x21d7 01470 01471 Led_RD0 equ 0x21d8 01472 Led_RD1 equ 0x21d9 01473 Led_RD2 equ 0x21da 01474 Led_RD3 equ 0x21db 01475 Led_RD4 equ 0x21dc 01476 Led_RD5 equ 0x21dd 01477 Led_RD6 equ 0x21de 01478 Led_RD7 equ 0x21df 01479 01480 Led_RE0 equ 0x21e0 01481 Led_RE1 equ 0x21e1 01482 Led_RE2 equ 0x21e2 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01483 Led_RE3 equ 0x21e3 01484 Led_RE4 equ 0x21e4 01485 Led_RE5 equ 0x21e5 01486 Led_RE6 equ 0x21e6 01487 Led_RE7 equ 0x21e7 01488 01489 Led_RF0 equ 0x21e8 01490 Led_RF1 equ 0x21e9 01491 Led_RF2 equ 0x21ea 01492 Led_RF3 equ 0x21eb 01493 Led_RF4 equ 0x21ec 01494 Led_RF5 equ 0x21ed 01495 Led_RF6 equ 0x21ee 01496 Led_RF7 equ 0x21ef 01497 #else 01498 ; Bank 1 01499 Led_G00 equ 0x0b0 01500 Led_G01 equ 0x0b1 01501 Led_G02 equ 0x0b2 01502 Led_G03 equ 0x0b3 01503 Led_G04 equ 0x0b4 01504 Led_G05 equ 0x0b5 01505 Led_G06 equ 0x0b6 01506 Led_G07 equ 0x0b7 01507 01508 Led_G10 equ 0x0b8 01509 Led_G11 equ 0x0b9 01510 Led_G12 equ 0x0ba 01511 Led_G13 equ 0x0bb 01512 Led_G14 equ 0x0bc 01513 Led_G15 equ 0x0bd 01514 Led_G16 equ 0x0be 01515 Led_G17 equ 0x0bf 01516 01517 Led_G20 equ 0x0c0 01518 Led_G21 equ 0x0c1 01519 Led_G22 equ 0x0c2 01520 Led_G23 equ 0x0c3 01521 Led_G24 equ 0x0c4 01522 Led_G25 equ 0x0c5 01523 Led_G26 equ 0x0c6 01524 Led_G27 equ 0x0c7 01525 01526 Led_G30 equ 0x0c8 01527 Led_G31 equ 0x0c9 01528 Led_G32 equ 0x0ca 01529 Led_G33 equ 0x0cb 01530 Led_G34 equ 0x0cc 01531 Led_G35 equ 0x0cd 01532 Led_G36 equ 0x0ce 01533 Led_G37 equ 0x0cf 01534 01535 ; Bank 2 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01536 Led_G40 equ 0x110 01537 Led_G41 equ 0x111 01538 Led_G42 equ 0x112 01539 Led_G43 equ 0x113 01540 Led_G44 equ 0x114 01541 Led_G45 equ 0x115 01542 Led_G46 equ 0x116 01543 Led_G47 equ 0x117 01544 01545 Led_G50 equ 0x118 01546 Led_G51 equ 0x119 01547 Led_G52 equ 0x11a 01548 Led_G53 equ 0x11b 01549 Led_G54 equ 0x11c 01550 Led_G55 equ 0x11d 01551 Led_G56 equ 0x11e 01552 Led_G57 equ 0x11f 01553 01554 Led_G60 equ 0x120 01555 Led_G61 equ 0x121 01556 Led_G62 equ 0x122 01557 Led_G63 equ 0x123 01558 Led_G64 equ 0x124 01559 Led_G65 equ 0x125 01560 Led_G66 equ 0x126 01561 Led_G67 equ 0x127 01562 01563 Led_G70 equ 0x128 01564 Led_G71 equ 0x129 01565 Led_G72 equ 0x12a 01566 Led_G73 equ 0x12b 01567 Led_G74 equ 0x12c 01568 Led_G75 equ 0x12d 01569 Led_G76 equ 0x12e 01570 Led_G77 equ 0x12f 01571 01572 Led_G80 equ 0x130 01573 Led_G81 equ 0x131 01574 Led_G82 equ 0x132 01575 Led_G83 equ 0x133 01576 Led_G84 equ 0x134 01577 Led_G85 equ 0x135 01578 Led_G86 equ 0x136 01579 Led_G87 equ 0x137 01580 01581 Led_G90 equ 0x138 01582 Led_G91 equ 0x139 01583 Led_G92 equ 0x13a 01584 Led_G93 equ 0x13b 01585 Led_G94 equ 0x13c 01586 Led_G95 equ 0x13d 01587 Led_G96 equ 0x13e 01588 Led_G97 equ 0x13f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01589 01590 Led_GA0 equ 0x140 01591 Led_GA1 equ 0x141 01592 Led_GA2 equ 0x142 01593 Led_GA3 equ 0x143 01594 Led_GA4 equ 0x144 01595 Led_GA5 equ 0x145 01596 Led_GA6 equ 0x146 01597 Led_GA7 equ 0x147 01598 01599 Led_GB0 equ 0x148 01600 Led_GB1 equ 0x149 01601 Led_GB2 equ 0x14a 01602 Led_GB3 equ 0x14b 01603 Led_GB4 equ 0x14c 01604 Led_GB5 equ 0x14d 01605 Led_GB6 equ 0x14e 01606 Led_GB7 equ 0x14f 01607 01608 Led_GC0 equ 0x150 01609 Led_GC1 equ 0x151 01610 Led_GC2 equ 0x152 01611 Led_GC3 equ 0x153 01612 Led_GC4 equ 0x154 01613 Led_GC5 equ 0x155 01614 Led_GC6 equ 0x156 01615 Led_GC7 equ 0x157 01616 01617 Led_GD0 equ 0x158 01618 Led_GD1 equ 0x159 01619 Led_GD2 equ 0x15a 01620 Led_GD3 equ 0x15b 01621 Led_GD4 equ 0x15c 01622 Led_GD5 equ 0x15d 01623 Led_GD6 equ 0x15e 01624 Led_GD7 equ 0x15f 01625 01626 Led_GE0 equ 0x160 01627 Led_GE1 equ 0x161 01628 Led_GE2 equ 0x162 01629 Led_GE3 equ 0x163 01630 Led_GE4 equ 0x164 01631 Led_GE5 equ 0x165 01632 Led_GE6 equ 0x166 01633 Led_GE7 equ 0x167 01634 01635 Led_GF0 equ 0x168 01636 Led_GF1 equ 0x169 01637 Led_GF2 equ 0x16a 01638 Led_GF3 equ 0x16b 01639 Led_GF4 equ 0x16c 01640 Led_GF5 equ 0x16d 01641 Led_GF6 equ 0x16e MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01642 Led_GF7 equ 0x16f 01643 01644 ; Bank 1 01645 Led_R00 equ 0x0d0 01646 Led_R01 equ 0x0d1 01647 Led_R02 equ 0x0d2 01648 Led_R03 equ 0x0d3 01649 Led_R04 equ 0x0d4 01650 Led_R05 equ 0x0d5 01651 Led_R06 equ 0x0d6 01652 Led_R07 equ 0x0d7 01653 01654 Led_R10 equ 0x0d8 01655 Led_R11 equ 0x0d9 01656 Led_R12 equ 0x0da 01657 Led_R13 equ 0x0db 01658 Led_R14 equ 0x0dc 01659 Led_R15 equ 0x0dd 01660 Led_R16 equ 0x0de 01661 Led_R17 equ 0x0df 01662 01663 Led_R20 equ 0x0e0 01664 Led_R21 equ 0x0e1 01665 Led_R22 equ 0x0e2 01666 Led_R23 equ 0x0e3 01667 Led_R24 equ 0x0e4 01668 Led_R25 equ 0x0e5 01669 Led_R26 equ 0x0e6 01670 Led_R27 equ 0x0e7 01671 01672 Led_R30 equ 0x0e8 01673 Led_R31 equ 0x0e9 01674 Led_R32 equ 0x0ea 01675 Led_R33 equ 0x0eb 01676 Led_R34 equ 0x0ec 01677 Led_R35 equ 0x0ed 01678 Led_R36 equ 0x0ee 01679 Led_R37 equ 0x0ef 01680 01681 ; bank 3 01682 Led_R40 equ 0x190 01683 Led_R41 equ 0x191 01684 Led_R42 equ 0x192 01685 Led_R43 equ 0x193 01686 Led_R44 equ 0x194 01687 Led_R45 equ 0x195 01688 Led_R46 equ 0x196 01689 Led_R47 equ 0x197 01690 01691 Led_R50 equ 0x198 01692 Led_R51 equ 0x199 01693 Led_R52 equ 0x19a 01694 Led_R53 equ 0x19b MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01695 Led_R54 equ 0x19c 01696 Led_R55 equ 0x19d 01697 Led_R56 equ 0x19e 01698 Led_R57 equ 0x19f 01699 01700 Led_R60 equ 0x1a0 01701 Led_R61 equ 0x1a1 01702 Led_R62 equ 0x1a2 01703 Led_R63 equ 0x1a3 01704 Led_R64 equ 0x1a4 01705 Led_R65 equ 0x1a5 01706 Led_R66 equ 0x1a6 01707 Led_R67 equ 0x1a7 01708 01709 Led_R70 equ 0x1a8 01710 Led_R71 equ 0x1a9 01711 Led_R72 equ 0x1aa 01712 Led_R73 equ 0x1ab 01713 Led_R74 equ 0x1ac 01714 Led_R75 equ 0x1ad 01715 Led_R76 equ 0x1ae 01716 Led_R77 equ 0x1af 01717 01718 Led_R80 equ 0x1b0 01719 Led_R81 equ 0x1b1 01720 Led_R82 equ 0x1b2 01721 Led_R83 equ 0x1b3 01722 Led_R84 equ 0x1b4 01723 Led_R85 equ 0x1b5 01724 Led_R86 equ 0x1b6 01725 Led_R87 equ 0x1b7 01726 01727 Led_R90 equ 0x1b8 01728 Led_R91 equ 0x1b9 01729 Led_R92 equ 0x1ba 01730 Led_R93 equ 0x1bb 01731 Led_R94 equ 0x1bc 01732 Led_R95 equ 0x1bd 01733 Led_R96 equ 0x1be 01734 Led_R97 equ 0x1bf 01735 01736 Led_RA0 equ 0x1c0 01737 Led_RA1 equ 0x1c1 01738 Led_RA2 equ 0x1c2 01739 Led_RA3 equ 0x1c3 01740 Led_RA4 equ 0x1c4 01741 Led_RA5 equ 0x1c5 01742 Led_RA6 equ 0x1c6 01743 Led_RA7 equ 0x1c7 01744 01745 Led_RB0 equ 0x1c8 01746 Led_RB1 equ 0x1c9 01747 Led_RB2 equ 0x1ca MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01748 Led_RB3 equ 0x1cb 01749 Led_RB4 equ 0x1cc 01750 Led_RB5 equ 0x1cd 01751 Led_RB6 equ 0x1ce 01752 Led_RB7 equ 0x1cf 01753 01754 Led_RC0 equ 0x1d0 01755 Led_RC1 equ 0x1d1 01756 Led_RC2 equ 0x1d2 01757 Led_RC3 equ 0x1d3 01758 Led_RC4 equ 0x1d4 01759 Led_RC5 equ 0x1d5 01760 Led_RC6 equ 0x1d6 01761 Led_RC7 equ 0x1d7 01762 01763 Led_RD0 equ 0x1d8 01764 Led_RD1 equ 0x1d9 01765 Led_RD2 equ 0x1da 01766 Led_RD3 equ 0x1db 01767 Led_RD4 equ 0x1dc 01768 Led_RD5 equ 0x1dd 01769 Led_RD6 equ 0x1de 01770 Led_RD7 equ 0x1df 01771 01772 Led_RE0 equ 0x1e0 01773 Led_RE1 equ 0x1e1 01774 Led_RE2 equ 0x1e2 01775 Led_RE3 equ 0x1e3 01776 Led_RE4 equ 0x1e4 01777 Led_RE5 equ 0x1e5 01778 Led_RE6 equ 0x1e6 01779 Led_RE7 equ 0x1e7 01780 01781 Led_RF0 equ 0x1e8 01782 Led_RF1 equ 0x1e9 01783 Led_RF2 equ 0x1ea 01784 Led_RF3 equ 0x1eb 01785 Led_RF4 equ 0x1ec 01786 Led_RF5 equ 0x1ed 01787 Led_RF6 equ 0x1ee 01788 Led_RF7 equ 0x1ef 01789 #endif 01790 #endif 01791 01792 #ifdef C12 01793 var_bank2 A0_A1_reg 000000A0 M A0_A1_reg equ mem3 000000A1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01794 var_bank2 A0_A2_reg 000000A1 M A0_A2_reg equ mem3 000000A2 M mem3 = mem3 + 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem3 >= 0xef) M error 'Too much var space used' 01795 ; var_bank2 A0_A3_reg 01796 var_bank2 A0_A4_reg 000000A2 M A0_A4_reg equ mem3 000000A3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01797 var_bank2 A0_A5_reg 000000A3 M A0_A5_reg equ mem3 000000A4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01798 01799 var_bank2 A1_A0_reg 000000A4 M A1_A0_reg equ mem3 000000A5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01800 var_bank2 A1_A2_reg 000000A5 M A1_A2_reg equ mem3 000000A6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01801 var_bank2 A1_A3_reg 000000A6 M A1_A3_reg equ mem3 000000A7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01802 ; var_bank2 A1_A4_reg 01803 var_bank2 A1_A5_reg 000000A7 M A1_A5_reg equ mem3 000000A8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01804 01805 var_bank2 A2_A0_reg 000000A8 M A2_A0_reg equ mem3 000000A9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01806 var_bank2 A2_A1_reg 000000A9 M A2_A1_reg equ mem3 000000AA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01807 var_bank2 A2_A3_reg 000000AA M A2_A3_reg equ mem3 000000AB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01808 var_bank2 A2_A4_reg 000000AB M A2_A4_reg equ mem3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000AC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01809 ; var_bank2 A2_A5_reg 01810 01811 ; var_bank2 A3_A0_reg 01812 var_bank2 A3_A1_reg 000000AC M A3_A1_reg equ mem3 000000AD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01813 var_bank2 A3_A2_reg 000000AD M A3_A2_reg equ mem3 000000AE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01814 var_bank2 A3_A4_reg 000000AE M A3_A4_reg equ mem3 000000AF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01815 var_bank2 A3_A5_reg 000000AF M A3_A5_reg equ mem3 000000B0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01816 01817 var_bank2 A4_A0_reg 000000B0 M A4_A0_reg equ mem3 000000B1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01818 ; var_bank2 A4_A1_reg 01819 var_bank2 A4_A2_reg 000000B1 M A4_A2_reg equ mem3 000000B2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01820 var_bank2 A4_A3_reg 000000B2 M A4_A3_reg equ mem3 000000B3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01821 var_bank2 A4_A5_reg 000000B3 M A4_A5_reg equ mem3 000000B4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01822 01823 var_bank2 A5_A0_reg 000000B4 M A5_A0_reg equ mem3 000000B5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 01824 var_bank2 A5_A1_reg 000000B5 M A5_A1_reg equ mem3 000000B6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01825 ; var_bank2 A5_A2_reg 01826 var_bank2 A5_A3_reg 000000B6 M A5_A3_reg equ mem3 000000B7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01827 var_bank2 A5_A4_reg 000000B7 M A5_A4_reg equ mem3 000000B8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01828 01829 var_bank2 B7_B6_reg 000000B8 M B7_B6_reg equ mem3 000000B9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01830 var_bank2 B7_B5_reg 000000B9 M B7_B5_reg equ mem3 000000BA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01831 ; var_bank2 B7_B4_reg 01832 var_bank2 B7_B3_reg 000000BA M B7_B3_reg equ mem3 000000BB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01833 var_bank2 B7_B2_reg 000000BB M B7_B2_reg equ mem3 000000BC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01834 01835 var_bank2 B6_B7_reg 000000BC M B6_B7_reg equ mem3 000000BD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01836 var_bank2 B6_B5_reg 000000BD M B6_B5_reg equ mem3 000000BE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01837 var_bank2 B6_B4_reg 000000BE M B6_B4_reg equ mem3 000000BF M mem3 = mem3 + 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem3 >= 0xef) M error 'Too much var space used' 01838 ; var_bank2 B6_B3_reg 01839 var_bank2 B6_B2_reg 000000BF M B6_B2_reg equ mem3 000000C0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01840 01841 var_bank2 B5_B7_reg 000000C0 M B5_B7_reg equ mem3 000000C1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01842 var_bank2 B5_B6_reg 000000C1 M B5_B6_reg equ mem3 000000C2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01843 var_bank2 B5_B4_reg 000000C2 M B5_B4_reg equ mem3 000000C3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01844 var_bank2 B5_B3_reg 000000C3 M B5_B3_reg equ mem3 000000C4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01845 ; var_bank2 B5_B2_reg 01846 01847 ; var_bank2 B4_B7_reg 01848 var_bank2 B4_B6_reg 000000C4 M B4_B6_reg equ mem3 000000C5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01849 var_bank2 B4_B5_reg 000000C5 M B4_B5_reg equ mem3 000000C6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01850 var_bank2 B4_B3_reg 000000C6 M B4_B3_reg equ mem3 000000C7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01851 var_bank2 B4_B2_reg 000000C7 M B4_B2_reg equ mem3 000000C8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01852 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01853 var_bank2 B3_B7_reg 000000C8 M B3_B7_reg equ mem3 000000C9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01854 ; var_bank2 B3_B6_reg 01855 var_bank2 B3_B5_reg 000000C9 M B3_B5_reg equ mem3 000000CA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01856 var_bank2 B3_B4_reg 000000CA M B3_B4_reg equ mem3 000000CB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01857 var_bank2 B3_B2_reg 000000CB M B3_B2_reg equ mem3 000000CC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01858 01859 var_bank2 B2_B7_reg 000000CC M B2_B7_reg equ mem3 000000CD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01860 var_bank2 B2_B6_reg 000000CD M B2_B6_reg equ mem3 000000CE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01861 ; var_bank2 B2_B5_reg 01862 var_bank2 B2_B4_reg 000000CE M B2_B4_reg equ mem3 000000CF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01863 var_bank2 B2_B3_reg 000000CF M B2_B3_reg equ mem3 000000D0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01864 #endif 01865 01866 #ifndef M8X16 01867 var_all_bank Ax_dir 0000007D M Ax_dir equ mem2 0000007C M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 01868 #endif 01869 #ifdef C19 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01870 var_all_bank Cx_dir 01871 #endif 01872 #ifdef SRGB 01873 var_all_bank Cx_dir 01874 #endif 01875 #ifdef C12 01876 var_all_bank Bx_dir 0000007C M Bx_dir equ mem2 0000007B M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 01877 #endif 01878 01879 ; 01880 ; This is the number of times the display logic should cycle before exiting. It's been hand timed from t he 01881 ; start of the interupt to the end to be around 800usec. This leaves 90 usec for the main loop. 01882 ; The 19 stick has an extra display line strobe cycle. 01883 ; 01884 #ifdef RGB4 01885 movlw 0x36 01886 #else 01887 #ifdef BI6 01888 movlw 0x3a 01889 #else 01890 #ifdef S19 01891 movlw 0x30 01892 #else 01893 #ifdef C19 01894 movlw 0x18 01895 #else 01896 #ifdef M3X3 01897 movlw 0x2E 01898 #else 01899 #ifdef SRGB 01900 movlw 0x18 01901 #else 01902 #ifdef M8X16 01903 #ifdef __16F1936 01904 movlw 0x28 01905 #else 01906 movlw 0x0a 01907 #endif 01908 #else 01909 #ifdef C12 0034 3014 01910 movlw 0x14 01911 #else 01912 error "unknown board delaytimer" 01913 #endif 01914 #endif 01915 #endif 01916 #endif 01917 #endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01918 #endif 01919 #endif 01920 #endif 01921 0035 00A5 01922 movwf fcount 01923 01924 #ifdef C19 01925 movlw b'00101000' ;set LED matrix pins to input (tri-stated) 01926 movwf Ax_dir 01927 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 01928 #else 01929 #ifdef D10 01930 movlw b'00101000' ;set LED matrix pins to input (tri-stated) 01931 movwf Ax_dir 01932 #else 01933 #ifdef SRGB 01934 movlw b'00111000' ;set LED matrix pins to input (tri-stated) 01935 movwf Ax_dir 01936 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 01937 #else 01938 #ifdef C12 0036 01FD 01939 clrf Ax_dir ;set LED matrix pins to input (tri-stated) 0037 01FC 01940 clrf Bx_dir 01941 #else 01942 #ifndef M8X16 01943 movlw b'00001000' ;set LED matrix pins to input (tri-stated) 01944 movwf Ax_dir 01945 #endif 01946 #endif 01947 #endif 01948 #endif 01949 #endif 01950 0038 21D9 01951 call get_state_tbl_hi_address 0039 21DF 01952 call get_state_tbl_low_address 003A 21ED 01953 call go_state_table 003B 233E 01954 call set_max_state 01955 01956 ; turn off the LEDs DDF 01957 ; clrf PORTA 01958 ; clrf PORTB 01959 003C 0821 01960 movf dcycle,w ; testing for 0 003D 1903 01961 btfsc STATUS,Z 003E 2059 01962 call display_cycle0 01963 003F 3001 01964 movlw 0x01 ; testing for 1 0040 0221 01965 subwf dcycle,w 0041 1903 01966 btfsc STATUS,Z 0042 2099 01967 call display_cycle1 01968 0043 3002 01969 movlw 0x02 ; testing for 2 0044 0221 01970 subwf dcycle,w MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0045 1903 01971 btfsc STATUS,Z 0046 20D9 01972 call display_cycle2 01973 0047 3003 01974 movlw 0x03 ; testing for 3 0048 0221 01975 subwf dcycle,w 0049 1903 01976 btfsc STATUS,Z 004A 2119 01977 call display_cycle3 01978 01979 #ifndef BI6 01980 #ifndef RGB4 004B 3004 01981 movlw 0x04 ; testing for 4 004C 0221 01982 subwf dcycle,w 004D 1903 01983 btfsc STATUS,Z 004E 2159 01984 call display_cycle4 01985 01986 #ifndef S19 01987 #ifndef M3X3 004F 3005 01988 movlw 0x05 ; testing for 5 0050 0221 01989 subwf dcycle,w 0051 1903 01990 btfsc STATUS,Z 0052 2199 01991 call display_cycle5 01992 01993 #ifndef C12 01994 movlw 0x06 ; testing for 6 01995 subwf dcycle,w 01996 btfsc STATUS,Z 01997 call display_cycle6 01998 01999 #ifndef C19 02000 #ifndef SRGB 02001 movlw 0x07 ; testing for 7 02002 subwf dcycle,w 02003 btfsc STATUS,Z 02004 call display_cycle7 02005 02006 movlw 0x08 ; testing for 8 02007 subwf dcycle,w 02008 btfsc STATUS,Z 02009 call display_cycle8 02010 02011 movlw 0x09 ; testing for 9 02012 subwf dcycle,w 02013 btfsc STATUS,Z 02014 call display_cycle9 02015 02016 movlw 0x0a ; testing for 10 02017 subwf dcycle,w 02018 btfsc STATUS,Z 02019 call display_cycle10 02020 02021 movlw 0x0b ; testing for 11 02022 subwf dcycle,w 02023 btfsc STATUS,Z MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02024 call display_cycle11 02025 02026 movlw 0x0c ; testing for 12 02027 subwf dcycle,w 02028 btfsc STATUS,Z 02029 call display_cycle12 02030 02031 movlw 0x0d ; testing for 13 02032 subwf dcycle,w 02033 btfsc STATUS,Z 02034 call display_cycle13 02035 02036 movlw 0x0e ; testing for 14 02037 subwf dcycle,w 02038 btfsc STATUS,Z 02039 call display_cycle14 02040 02041 movlw 0x0f ; testing for 15 02042 subwf dcycle,w 02043 btfsc STATUS,Z 02044 call display_cycle15 02045 #endif 02046 #endif 02047 #endif 02048 #endif 02049 #endif 02050 #endif 02051 #endif 02052 02053 ;-------------------------------------------------------------------------------------- 0053 02054 exit_tx 02055 ;-------------------------------------------------------------------------------------- 02056 #ifdef __16F886 02057 ; clrf PORTA ;DDF debug hack ; turn all the LED off 02058 ; clrf PORTB ;DDF debug hack ; turn all the LED off 02059 ; clrf PORTC ;DDF debug hack ; turn all the LED off 02060 #else 02061 #ifdef MULTIBUTTON 02062 movlw b'00110111' 02063 movwf PORTA 02064 #else 0053 018E 02065 clrf PORTC 0054 018C 02066 clrf PORTA 0055 018D 02067 clrf PORTB 02068 #endif 02069 #ifndef __12F683 0056 018E 02070 clrf PORTC ;DDF debug hack ; turn all the LED off 02071 #endif 02072 #endif 02073 02074 02075 ; clear timer0 interupt 02076 #ifdef __16F1936 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0057 110B 02077 bcf INTCON,TMR0IF 02078 #else 02079 bcf INTCON,T0IF 02080 #endif 02081 02082 02083 ; restore state, return form interupt 02084 0058 02085 exit_int 02086 ; bsf INTCON,GIE ; this is done on retfie 02087 #ifdef __12F683 02088 swapf status_temp,w 02089 movwf STATUS 02090 swapf w_temp,f 02091 swapf w_temp,w 02092 #else 02093 #ifdef __16F1936 02094 ; 16F1936 W, Status, BSR,FSR, and PCLATCH are auto saved/restored via shadow registers! 02095 #else 02096 movf fsr_save,w 02097 movwf FSR 02098 movf pclath_temp,w ; retrieve copy of PCLATH register 02099 movwf PCLATH ; restore pre-isr PCLATH register contents 02100 movf status_temp,w ; retrieve copy of STATUS register 02101 movwf STATUS ; restore pre-isr STATUS register contents 02102 swapf w_temp,f 02103 swapf w_temp,w ; restore pre-isr W register content 02104 #endif 02105 #endif 0058 0009 02106 retfie ; return from interrupt 02107 02108 02109 #define DEBOUNCE 0x10 02110 02111 02112 02113 #ifdef RGB4 02114 #include 02115 #else 02116 #ifdef D10 02117 #include 02118 #else 02119 #ifdef BI6 02120 swapf w_temp,f # should not be here 02121 #include 02122 #else 02123 #ifdef S19 02124 #include 02125 #else 02126 #ifdef C19 02127 #include 02128 #else 02129 #ifdef M3X3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02130 #include 02131 #else 02132 #ifdef SRGB 02133 #include 02134 #else 02135 #ifdef M8X16 02136 #ifdef __16F1936 02137 #include 02138 #else 02139 #include 02140 #endif 02141 #else 02142 #ifdef C12 02143 #include 00001 ;-------------------------------------------------------------------------------------- 0059 00002 display_cycle0 00003 ;-------------------------------------------------------------------------------------- 00004 LedOutInd B7_B6_reg,Bx_dir,6 0059 30B8 M movlw B7_B6_reg 005A 0084 M movwf FSR ; set indirect pointer to word 005B 0815 M movfw TMR0 005C 0200 M subwf INDF,w 005D 1C03 M btfss STATUS,C 005E 177C M bsf Bx_dir, 6 00005 LedOutInd B7_B5_reg,Bx_dir,5 005F 30B9 M movlw B7_B5_reg 0060 0084 M movwf FSR ; set indirect pointer to word 0061 0815 M movfw TMR0 0062 0200 M subwf INDF,w 0063 1C03 M btfss STATUS,C 0064 16FC M bsf Bx_dir, 5 00006 ; LedOutInd B7_B4_reg,Bx_dir,4 0065 167C 00007 bsf Bx_dir, 4 00008 00009 LedOutInd B7_B3_reg,Bx_dir,3 0066 30BA M movlw B7_B3_reg 0067 0084 M movwf FSR ; set indirect pointer to word 0068 0815 M movfw TMR0 0069 0200 M subwf INDF,w 006A 1C03 M btfss STATUS,C 006B 15FC M bsf Bx_dir, 3 00010 LedOutInd B7_B2_reg,Bx_dir,2 006C 30BB M movlw B7_B2_reg 006D 0084 M movwf FSR ; set indirect pointer to word 006E 0815 M movfw TMR0 006F 0200 M subwf INDF,w 0070 1C03 M btfss STATUS,C 0071 157C M bsf Bx_dir, 2 00011 00012 LedOutInd A0_A5_reg,Ax_dir,5 0072 30A3 M movlw A0_A5_reg 0073 0084 M movwf FSR ; set indirect pointer to word 0074 0815 M movfw TMR0 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0075 0200 M subwf INDF,w 0076 1C03 M btfss STATUS,C 0077 16FD M bsf Ax_dir, 5 00013 LedOutInd A0_A4_reg,Ax_dir,4 0078 30A2 M movlw A0_A4_reg 0079 0084 M movwf FSR ; set indirect pointer to word 007A 0815 M movfw TMR0 007B 0200 M subwf INDF,w 007C 1C03 M btfss STATUS,C 007D 167D M bsf Ax_dir, 4 00014 ; LedOutInd A0_A3_reg,Ax_dir,3 007E 15FD 00015 bsf Ax_dir, 3 00016 LedOutInd A0_A2_reg,Ax_dir,2 007F 30A1 M movlw A0_A2_reg 0080 0084 M movwf FSR ; set indirect pointer to word 0081 0815 M movfw TMR0 0082 0200 M subwf INDF,w 0083 1C03 M btfss STATUS,C 0084 157D M bsf Ax_dir, 2 00017 LedOutInd A0_A1_reg,Ax_dir,1 0085 30A0 M movlw A0_A1_reg 0086 0084 M movwf FSR ; set indirect pointer to word 0087 0815 M movfw TMR0 0088 0200 M subwf INDF,w 0089 1C03 M btfss STATUS,C 008A 14FD M bsf Ax_dir, 1 00018 00019 setbank1 008B 0188 M clrf BSR 008C 0A88 M incf BSR,f 008D 087D 00020 movf Ax_dir,w ;set portA direction 008E 008C 00021 movwf TRISA 008F 087C 00022 movf Bx_dir,w ;set portA direction 0090 008D 00023 movwf TRISB 00024 setbank0 0091 0188 M clrf BSR 00025 0092 3080 00026 movlw b'10000000' 0093 008D 00027 movwf PORTB 0094 3001 00028 movlw b'00000001' 0095 008C 00029 movwf PORTA 00030 0096 0BA5 00031 decfsz fcount,f 0097 2859 00032 goto display_cycle0 00033 0098 0008 00034 return 00035 00036 ;-------------------------------------------------------------------------------------- 0099 00037 display_cycle1 00038 ;-------------------------------------------------------------------------------------- 00039 LedOutInd B6_B7_reg,Bx_dir,7 0099 30BC M movlw B6_B7_reg 009A 0084 M movwf FSR ; set indirect pointer to word MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 009B 0815 M movfw TMR0 009C 0200 M subwf INDF,w 009D 1C03 M btfss STATUS,C 009E 17FC M bsf Bx_dir, 7 00040 LedOutInd B6_B5_reg,Bx_dir,5 009F 30BD M movlw B6_B5_reg 00A0 0084 M movwf FSR ; set indirect pointer to word 00A1 0815 M movfw TMR0 00A2 0200 M subwf INDF,w 00A3 1C03 M btfss STATUS,C 00A4 16FC M bsf Bx_dir, 5 00041 LedOutInd B6_B4_reg,Bx_dir,4 00A5 30BE M movlw B6_B4_reg 00A6 0084 M movwf FSR ; set indirect pointer to word 00A7 0815 M movfw TMR0 00A8 0200 M subwf INDF,w 00A9 1C03 M btfss STATUS,C 00AA 167C M bsf Bx_dir, 4 00042 ; LedOutInd B6_B3_reg,Bx_dir,3 00AB 15FC 00043 bsf Bx_dir, 3 00044 LedOutInd B6_B2_reg,Bx_dir,2 00AC 30BF M movlw B6_B2_reg 00AD 0084 M movwf FSR ; set indirect pointer to word 00AE 0815 M movfw TMR0 00AF 0200 M subwf INDF,w 00B0 1C03 M btfss STATUS,C 00B1 157C M bsf Bx_dir, 2 00045 00046 LedOutInd A1_A5_reg,Ax_dir,5 00B2 30A7 M movlw A1_A5_reg 00B3 0084 M movwf FSR ; set indirect pointer to word 00B4 0815 M movfw TMR0 00B5 0200 M subwf INDF,w 00B6 1C03 M btfss STATUS,C 00B7 16FD M bsf Ax_dir, 5 00047 ; LedOutInd A1_A4_reg,Ax_dir,4 00B8 167D 00048 bsf Ax_dir, 4 00049 LedOutInd A1_A3_reg,Ax_dir,3 00B9 30A6 M movlw A1_A3_reg 00BA 0084 M movwf FSR ; set indirect pointer to word 00BB 0815 M movfw TMR0 00BC 0200 M subwf INDF,w 00BD 1C03 M btfss STATUS,C 00BE 15FD M bsf Ax_dir, 3 00050 LedOutInd A1_A2_reg,Ax_dir,2 00BF 30A5 M movlw A1_A2_reg 00C0 0084 M movwf FSR ; set indirect pointer to word 00C1 0815 M movfw TMR0 00C2 0200 M subwf INDF,w 00C3 1C03 M btfss STATUS,C 00C4 157D M bsf Ax_dir, 2 00051 LedOutInd A1_A0_reg,Ax_dir,0 00C5 30A4 M movlw A1_A0_reg MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00C6 0084 M movwf FSR ; set indirect pointer to word 00C7 0815 M movfw TMR0 00C8 0200 M subwf INDF,w 00C9 1C03 M btfss STATUS,C 00CA 147D M bsf Ax_dir, 0 00052 00053 setbank1 00CB 0188 M clrf BSR 00CC 0A88 M incf BSR,f 00CD 087D 00054 movf Ax_dir,w ;set portA direction 00CE 008C 00055 movwf TRISA 00CF 087C 00056 movf Bx_dir,w ;set portA direction 00D0 008D 00057 movwf TRISB 00058 setbank0 00D1 0188 M clrf BSR 00059 00D2 3040 00060 movlw b'01000000' 00D3 008D 00061 movwf PORTB 00D4 3002 00062 movlw b'00000010' 00D5 008C 00063 movwf PORTA 00064 00D6 0BA5 00065 decfsz fcount,f 00D7 2899 00066 goto display_cycle1 00067 00D8 0008 00068 return 00069 00070 ;-------------------------------------------------------------------------------------- 00D9 00071 display_cycle2 00072 ;-------------------------------------------------------------------------------------- 00073 LedOutInd B5_B7_reg,Bx_dir,7 00D9 30C0 M movlw B5_B7_reg 00DA 0084 M movwf FSR ; set indirect pointer to word 00DB 0815 M movfw TMR0 00DC 0200 M subwf INDF,w 00DD 1C03 M btfss STATUS,C 00DE 17FC M bsf Bx_dir, 7 00074 LedOutInd B5_B6_reg,Bx_dir,6 00DF 30C1 M movlw B5_B6_reg 00E0 0084 M movwf FSR ; set indirect pointer to word 00E1 0815 M movfw TMR0 00E2 0200 M subwf INDF,w 00E3 1C03 M btfss STATUS,C 00E4 177C M bsf Bx_dir, 6 00075 LedOutInd B5_B4_reg,Bx_dir,4 00E5 30C2 M movlw B5_B4_reg 00E6 0084 M movwf FSR ; set indirect pointer to word 00E7 0815 M movfw TMR0 00E8 0200 M subwf INDF,w 00E9 1C03 M btfss STATUS,C 00EA 167C M bsf Bx_dir, 4 00076 LedOutInd B5_B3_reg,Bx_dir,3 00EB 30C3 M movlw B5_B3_reg 00EC 0084 M movwf FSR ; set indirect pointer to word MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00ED 0815 M movfw TMR0 00EE 0200 M subwf INDF,w 00EF 1C03 M btfss STATUS,C 00F0 15FC M bsf Bx_dir, 3 00077 ; LedOutInd B5_B2_reg,Bx_dir,2 00F1 157C 00078 bsf Bx_dir, 2 00079 00080 ; LedOutInd A2_A5_reg,Ax_dir,5 00F2 16FD 00081 bsf Ax_dir, 5 00082 LedOutInd A2_A4_reg,Ax_dir,4 00F3 30AB M movlw A2_A4_reg 00F4 0084 M movwf FSR ; set indirect pointer to word 00F5 0815 M movfw TMR0 00F6 0200 M subwf INDF,w 00F7 1C03 M btfss STATUS,C 00F8 167D M bsf Ax_dir, 4 00083 LedOutInd A2_A3_reg,Ax_dir,3 00F9 30AA M movlw A2_A3_reg 00FA 0084 M movwf FSR ; set indirect pointer to word 00FB 0815 M movfw TMR0 00FC 0200 M subwf INDF,w 00FD 1C03 M btfss STATUS,C 00FE 15FD M bsf Ax_dir, 3 00084 LedOutInd A2_A1_reg,Ax_dir,1 00FF 30A9 M movlw A2_A1_reg 0100 0084 M movwf FSR ; set indirect pointer to word 0101 0815 M movfw TMR0 0102 0200 M subwf INDF,w 0103 1C03 M btfss STATUS,C 0104 14FD M bsf Ax_dir, 1 00085 LedOutInd A2_A0_reg,Ax_dir,0 0105 30A8 M movlw A2_A0_reg 0106 0084 M movwf FSR ; set indirect pointer to word 0107 0815 M movfw TMR0 0108 0200 M subwf INDF,w 0109 1C03 M btfss STATUS,C 010A 147D M bsf Ax_dir, 0 00086 00087 setbank1 010B 0188 M clrf BSR 010C 0A88 M incf BSR,f 010D 087D 00088 movf Ax_dir,w ;set portA direction 010E 008C 00089 movwf TRISA 010F 087C 00090 movf Bx_dir,w ;set portA direction 0110 008D 00091 movwf TRISB 00092 setbank0 0111 0188 M clrf BSR 00093 0112 3020 00094 movlw b'00100000' 0113 008D 00095 movwf PORTB 0114 3004 00096 movlw b'00000100' 0115 008C 00097 movwf PORTA 00098 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0116 0BA5 00099 decfsz fcount,f 0117 28D9 00100 goto display_cycle2 00101 0118 0008 00102 return 00103 00104 ;-------------------------------------------------------------------------------------- 0119 00105 display_cycle3 00106 ;-------------------------------------------------------------------------------------- 00107 00108 ; LedOutInd B4_B7_reg,Bx_dir,7 0119 17FC 00109 bsf Bx_dir, 7 00110 LedOutInd B4_B6_reg,Bx_dir,6 011A 30C4 M movlw B4_B6_reg 011B 0084 M movwf FSR ; set indirect pointer to word 011C 0815 M movfw TMR0 011D 0200 M subwf INDF,w 011E 1C03 M btfss STATUS,C 011F 177C M bsf Bx_dir, 6 00111 LedOutInd B4_B5_reg,Bx_dir,5 0120 30C5 M movlw B4_B5_reg 0121 0084 M movwf FSR ; set indirect pointer to word 0122 0815 M movfw TMR0 0123 0200 M subwf INDF,w 0124 1C03 M btfss STATUS,C 0125 16FC M bsf Bx_dir, 5 00112 LedOutInd B4_B3_reg,Bx_dir,3 0126 30C6 M movlw B4_B3_reg 0127 0084 M movwf FSR ; set indirect pointer to word 0128 0815 M movfw TMR0 0129 0200 M subwf INDF,w 012A 1C03 M btfss STATUS,C 012B 15FC M bsf Bx_dir, 3 00113 LedOutInd B4_B2_reg,Bx_dir,2 012C 30C7 M movlw B4_B2_reg 012D 0084 M movwf FSR ; set indirect pointer to word 012E 0815 M movfw TMR0 012F 0200 M subwf INDF,w 0130 1C03 M btfss STATUS,C 0131 157C M bsf Bx_dir, 2 00114 00115 LedOutInd A3_A5_reg,Ax_dir,5 0132 30AF M movlw A3_A5_reg 0133 0084 M movwf FSR ; set indirect pointer to word 0134 0815 M movfw TMR0 0135 0200 M subwf INDF,w 0136 1C03 M btfss STATUS,C 0137 16FD M bsf Ax_dir, 5 00116 LedOutInd A3_A4_reg,Ax_dir,4 0138 30AE M movlw A3_A4_reg 0139 0084 M movwf FSR ; set indirect pointer to word 013A 0815 M movfw TMR0 013B 0200 M subwf INDF,w 013C 1C03 M btfss STATUS,C MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 013D 167D M bsf Ax_dir, 4 00117 LedOutInd A3_A2_reg,Ax_dir,2 013E 30AD M movlw A3_A2_reg 013F 0084 M movwf FSR ; set indirect pointer to word 0140 0815 M movfw TMR0 0141 0200 M subwf INDF,w 0142 1C03 M btfss STATUS,C 0143 157D M bsf Ax_dir, 2 00118 LedOutInd A3_A1_reg,Ax_dir,1 0144 30AC M movlw A3_A1_reg 0145 0084 M movwf FSR ; set indirect pointer to word 0146 0815 M movfw TMR0 0147 0200 M subwf INDF,w 0148 1C03 M btfss STATUS,C 0149 14FD M bsf Ax_dir, 1 00119 ; LedOutInd A3_A0_reg,Ax_dir,0 014A 147D 00120 bsf Ax_dir, 0 00121 00122 setbank1 014B 0188 M clrf BSR 014C 0A88 M incf BSR,f 014D 087D 00123 movf Ax_dir,w ;set portA direction 014E 008C 00124 movwf TRISA 014F 087C 00125 movf Bx_dir,w ;set portA direction 0150 008D 00126 movwf TRISB 00127 setbank0 0151 0188 M clrf BSR 00128 0152 3010 00129 movlw b'00010000' 0153 008D 00130 movwf PORTB 0154 3008 00131 movlw b'00001000' 0155 008C 00132 movwf PORTA 00133 0156 0BA5 00134 decfsz fcount,f 0157 2919 00135 goto display_cycle3 00136 0158 0008 00137 return 00138 00139 ;-------------------------------------------------------------------------------------- 0159 00140 display_cycle4 00141 ;-------------------------------------------------------------------------------------- 00142 00143 LedOutInd B3_B7_reg,Bx_dir,7 0159 30C8 M movlw B3_B7_reg 015A 0084 M movwf FSR ; set indirect pointer to word 015B 0815 M movfw TMR0 015C 0200 M subwf INDF,w 015D 1C03 M btfss STATUS,C 015E 17FC M bsf Bx_dir, 7 00144 ; LedOutInd B3_B6_reg,Bx_dir,6 015F 177C 00145 bsf Bx_dir, 6 00146 LedOutInd B3_B5_reg,Bx_dir,5 0160 30C9 M movlw B3_B5_reg MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0161 0084 M movwf FSR ; set indirect pointer to word 0162 0815 M movfw TMR0 0163 0200 M subwf INDF,w 0164 1C03 M btfss STATUS,C 0165 16FC M bsf Bx_dir, 5 00147 LedOutInd B3_B4_reg,Bx_dir,4 0166 30CA M movlw B3_B4_reg 0167 0084 M movwf FSR ; set indirect pointer to word 0168 0815 M movfw TMR0 0169 0200 M subwf INDF,w 016A 1C03 M btfss STATUS,C 016B 167C M bsf Bx_dir, 4 00148 LedOutInd B3_B2_reg,Bx_dir,2 016C 30CB M movlw B3_B2_reg 016D 0084 M movwf FSR ; set indirect pointer to word 016E 0815 M movfw TMR0 016F 0200 M subwf INDF,w 0170 1C03 M btfss STATUS,C 0171 157C M bsf Bx_dir, 2 00149 00150 LedOutInd A4_A5_reg,Ax_dir,5 0172 30B3 M movlw A4_A5_reg 0173 0084 M movwf FSR ; set indirect pointer to word 0174 0815 M movfw TMR0 0175 0200 M subwf INDF,w 0176 1C03 M btfss STATUS,C 0177 16FD M bsf Ax_dir, 5 00151 LedOutInd A4_A3_reg,Ax_dir,3 0178 30B2 M movlw A4_A3_reg 0179 0084 M movwf FSR ; set indirect pointer to word 017A 0815 M movfw TMR0 017B 0200 M subwf INDF,w 017C 1C03 M btfss STATUS,C 017D 15FD M bsf Ax_dir, 3 00152 LedOutInd A4_A2_reg,Ax_dir,2 017E 30B1 M movlw A4_A2_reg 017F 0084 M movwf FSR ; set indirect pointer to word 0180 0815 M movfw TMR0 0181 0200 M subwf INDF,w 0182 1C03 M btfss STATUS,C 0183 157D M bsf Ax_dir, 2 00153 ; LedOutInd A4_A1_reg,Ax_dir,1 0184 14FD 00154 bsf Ax_dir, 1 00155 LedOutInd A4_A0_reg,Ax_dir,0 0185 30B0 M movlw A4_A0_reg 0186 0084 M movwf FSR ; set indirect pointer to word 0187 0815 M movfw TMR0 0188 0200 M subwf INDF,w 0189 1C03 M btfss STATUS,C 018A 147D M bsf Ax_dir, 0 00156 00157 setbank1 018B 0188 M clrf BSR MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 018C 0A88 M incf BSR,f 018D 087D 00158 movf Ax_dir,w ;set portA direction 018E 008C 00159 movwf TRISA 018F 087C 00160 movf Bx_dir,w ;set portA direction 0190 008D 00161 movwf TRISB 00162 setbank0 0191 0188 M clrf BSR 00163 0192 3008 00164 movlw b'00001000' 0193 008D 00165 movwf PORTB 0194 3010 00166 movlw b'00010000' 0195 008C 00167 movwf PORTA 00168 0196 0BA5 00169 decfsz fcount,f 0197 2959 00170 goto display_cycle4 00171 0198 0008 00172 return 00173 00174 00175 ;-------------------------------------------------------------------------------------- 0199 00176 display_cycle5 00177 ;-------------------------------------------------------------------------------------- 00178 00179 LedOutInd B2_B7_reg,Bx_dir,7 0199 30CC M movlw B2_B7_reg 019A 0084 M movwf FSR ; set indirect pointer to word 019B 0815 M movfw TMR0 019C 0200 M subwf INDF,w 019D 1C03 M btfss STATUS,C 019E 17FC M bsf Bx_dir, 7 00180 LedOutInd B2_B6_reg,Bx_dir,6 019F 30CD M movlw B2_B6_reg 01A0 0084 M movwf FSR ; set indirect pointer to word 01A1 0815 M movfw TMR0 01A2 0200 M subwf INDF,w 01A3 1C03 M btfss STATUS,C 01A4 177C M bsf Bx_dir, 6 00181 ; LedOutInd B2_B5_reg,Bx_dir,5 01A5 16FC 00182 bsf Bx_dir, 5 00183 LedOutInd B2_B4_reg,Bx_dir,4 01A6 30CE M movlw B2_B4_reg 01A7 0084 M movwf FSR ; set indirect pointer to word 01A8 0815 M movfw TMR0 01A9 0200 M subwf INDF,w 01AA 1C03 M btfss STATUS,C 01AB 167C M bsf Bx_dir, 4 00184 LedOutInd B2_B3_reg,Bx_dir,3 01AC 30CF M movlw B2_B3_reg 01AD 0084 M movwf FSR ; set indirect pointer to word 01AE 0815 M movfw TMR0 01AF 0200 M subwf INDF,w 01B0 1C03 M btfss STATUS,C 01B1 15FC M bsf Bx_dir, 3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00185 00186 LedOutInd A5_A4_reg,Ax_dir,4 01B2 30B7 M movlw A5_A4_reg 01B3 0084 M movwf FSR ; set indirect pointer to word 01B4 0815 M movfw TMR0 01B5 0200 M subwf INDF,w 01B6 1C03 M btfss STATUS,C 01B7 167D M bsf Ax_dir, 4 00187 LedOutInd A5_A3_reg,Ax_dir,3 01B8 30B6 M movlw A5_A3_reg 01B9 0084 M movwf FSR ; set indirect pointer to word 01BA 0815 M movfw TMR0 01BB 0200 M subwf INDF,w 01BC 1C03 M btfss STATUS,C 01BD 15FD M bsf Ax_dir, 3 00188 ; LedOutInd A5_A2_reg,Ax_dir,2 01BE 157D 00189 bsf Ax_dir, 2 00190 LedOutInd A5_A1_reg,Ax_dir,1 01BF 30B5 M movlw A5_A1_reg 01C0 0084 M movwf FSR ; set indirect pointer to word 01C1 0815 M movfw TMR0 01C2 0200 M subwf INDF,w 01C3 1C03 M btfss STATUS,C 01C4 14FD M bsf Ax_dir, 1 00191 LedOutInd A5_A0_reg,Ax_dir,0 01C5 30B4 M movlw A5_A0_reg 01C6 0084 M movwf FSR ; set indirect pointer to word 01C7 0815 M movfw TMR0 01C8 0200 M subwf INDF,w 01C9 1C03 M btfss STATUS,C 01CA 147D M bsf Ax_dir, 0 00192 setbank1 01CB 0188 M clrf BSR 01CC 0A88 M incf BSR,f 01CD 087D 00193 movf Ax_dir,w ;set portA direction 01CE 008C 00194 movwf TRISA 01CF 087C 00195 movf Bx_dir,w ;set portA direction 01D0 008D 00196 movwf TRISB 00197 setbank0 01D1 0188 M clrf BSR 00198 01D2 3004 00199 movlw b'00000100' 01D3 008D 00200 movwf PORTB 01D4 3020 00201 movlw b'00100000' 01D5 008C 00202 movwf PORTA 00203 01D6 0BA5 00204 decfsz fcount,f 01D7 2999 00205 goto display_cycle5 00206 01D8 0008 00207 return 02144 #else 02145 error "unknown board strobe type" 02146 #endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02147 #endif 02148 #endif 02149 #endif 02150 #endif 02151 #endif 02152 #endif 02153 #endif 02154 #endif 02155 02156 ;************************************************************************************** 02157 ; 02158 ; State Machine 02159 ; 02160 ;************************************************************************************** 02161 02162 var instate 00000026 M instate equ mem 00000027 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02163 var max_instate 00000027 M max_instate equ mem 00000028 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02164 var IR_in 00000028 M IR_in equ mem 00000029 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02165 var command 00000029 M command equ mem 0000002A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02166 var address 0000002A M address equ mem 0000002B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02167 var toggle 0000002B M toggle equ mem 0000002C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02168 var IR_lhalf 0000002C M IR_lhalf equ mem MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000002D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02169 var button 0000002D M button equ mem 0000002E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02170 #ifdef M3X3 02171 var button0 02172 var button1 02173 var button2 02174 var button3 02175 var button4 02176 #endif 02177 var tx_1 0000002E M tx_1 equ mem 0000002F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02178 var pindex2 0000002F M pindex2 equ mem 00000030 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02179 var IR_in_good 00000030 M IR_in_good equ mem 00000031 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02180 var butcount 00000031 M butcount equ mem 00000032 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02181 02182 ;-------------------------------------------------------------------------------------- 01D9 02183 get_state_tbl_hi_address ; 17 cycles 02184 ;-------------------------------------------------------------------------------------- 02185 var tbl2_hi 00000032 M tbl2_hi equ mem 00000033 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02186 01D9 1003 02187 bcf STATUS,0 ; clear carry flag ; 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01DA 0D26 02188 rlf instate,w ; entry = table * 2 ; 2 01DB 00AF 02189 movwf pindex2 ; 3 01DC 21E6 02190 call table_lookup2 ; 14 (9+2) 01DD 00B2 02191 movwf tbl2_hi ; 15 01DE 0008 02192 return ; 16/17 02193 02194 ;-------------------------------------------------------------------------------------- 01DF 02195 get_state_tbl_low_address ; 18 cycles 02196 ;-------------------------------------------------------------------------------------- 02197 var tbl2_low 00000033 M tbl2_low equ mem 00000034 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02198 01DF 1003 02199 bcf STATUS,0 ; clear carry flag (just in case) ; 1 01E0 0D26 02200 rlf instate,w ; entry = table * 2 + 1 ; 2 01E1 3E01 02201 addlw 1 ; 3 01E2 00AF 02202 movwf pindex2 ; 4 01E3 21E6 02203 call table_lookup2 ; 15 (9+2) 01E4 00B3 02204 movwf tbl2_low ; 16 01E5 0008 02205 return ; 17/18 02206 02207 ;********************************************************************** 01E6 02208 table_lookup2 ; 9 cycles 02209 ;********************************************************************** 01E6 3001 02210 movlw HIGH state_jump_table ; 1 01E7 008A 02211 movwf PCLATH ; 2 01E8 082F 02212 movf pindex2,w ; 3 01E9 3EF1 02213 addlw LOW state_jump_table ; 4 01EA 1803 02214 btfsc STATUS,0 ; check carry flag ; 5 01EB 0A8A 02215 incf PCLATH,f ; 6 01EC 0082 02216 movwf PCL ; 7 + 2 02217 02218 ;********************************************************************** 01ED 02219 go_state_table ; 18 cycles 02220 ;********************************************************************** 02221 01ED 0832 02222 movf tbl2_hi,w ; 1 01EE 008A 02223 movwf PCLATH ; 2 01EF 0833 02224 movf tbl2_low,w ; 3 01F0 0082 02225 movwf PCL ; 4 02226 02227 ;********************************************************************** 01F1 02228 state_jump_table 02229 ;********************************************************************** 02230 make_state_jump_table d'31' 0000 M local i = 0 M while i <= d'31' 01F1 3402 3431 M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 01F3 3402 343C M dt HIGH Lstate1, LOW Lstate1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000002 M i += 1 01F5 3402 3444 M dt HIGH Lstate2, LOW Lstate2 00000003 M i += 1 01F7 3402 344C M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 01F9 3402 3454 M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 01FB 3402 345C M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 01FD 3402 3464 M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 01FF 3402 3470 M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 0201 3402 3474 M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 0203 3402 3480 M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 0205 3402 3484 M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 0207 3402 3490 M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 0209 3402 3494 M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 020B 3402 34A0 M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 020D 3402 34A4 M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 020F 3402 34B0 M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 0211 3402 34B4 M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 0213 3402 34C0 M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 0215 3402 34C4 M dt HIGH Lstate18, LOW Lstate18 00000013 M i += 1 0217 3402 34D0 M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 0219 3402 34D4 M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 021B 3402 34E0 M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 021D 3402 34E4 M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 021F 3402 34F0 M dt HIGH Lstate23, LOW Lstate23 00000018 M i += 1 0221 3402 34F4 M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 0223 3403 3400 M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 0225 3403 3404 M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 0227 3403 3410 M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0229 3403 3414 M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 022B 3403 3420 M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 022D 3403 3424 M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 022F 3403 3430 M dt HIGH Lstate31, LOW Lstate31 00000020 M i += 1 M endw 02231 02232 state_tbl 0, 6, 1, 0 0231 M Lstate0 M #ifndef MULTIBUTTON M if (0 == 0) 0231 102D M bcf button,0 0232 3030 M movlw 0x30 0233 00B1 M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M #endif 0234 1828 M btfsc IR_in,0 0235 2A39 M goto Lstate0a M 0236 3006 M movlw 6 0237 00A6 M movwf instate M 0238 2B32 M goto Lcontinue M 0239 M Lstate0a 0239 3001 M movlw 1 023A 00A6 M movwf instate M 023B 2B32 M goto Lcontinue 02233 state_tbl 1, 0, 2, -1 023C M Lstate1 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 023C 1828 M btfsc IR_in,0 023D 2A41 M goto Lstate1a M 023E 3000 M movlw 0 023F 00A6 M movwf instate M MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0240 2B32 M goto Lcontinue M 0241 M Lstate1a 0241 3002 M movlw 2 0242 00A6 M movwf instate M 0243 2B32 M goto Lcontinue 02234 state_tbl 2, 0, 3, -1 0244 M Lstate2 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 0244 1828 M btfsc IR_in,0 0245 2A49 M goto Lstate2a M 0246 3000 M movlw 0 0247 00A6 M movwf instate M 0248 2B32 M goto Lcontinue M 0249 M Lstate2a 0249 3003 M movlw 3 024A 00A6 M movwf instate M 024B 2B32 M goto Lcontinue 02235 state_tbl 3, 4, 3, -1 024C M Lstate3 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 024C 1828 M btfsc IR_in,0 024D 2A51 M goto Lstate3a M 024E 3004 M movlw 4 024F 00A6 M movwf instate M 0250 2B32 M goto Lcontinue M 0251 M Lstate3a MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0251 3003 M movlw 3 0252 00A6 M movwf instate M 0253 2B32 M goto Lcontinue 02236 state_tbl 4, 0, 5, -1 0254 M Lstate4 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 0254 1828 M btfsc IR_in,0 0255 2A59 M goto Lstate4a M 0256 3000 M movlw 0 0257 00A6 M movwf instate M 0258 2B32 M goto Lcontinue M 0259 M Lstate4a 0259 3005 M movlw 5 025A 00A6 M movwf instate M 025B 2B32 M goto Lcontinue 02237 state_tbl 5, 7, 0, -1 025C M Lstate5 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 025C 1828 M btfsc IR_in,0 025D 2A61 M goto Lstate5a M 025E 3007 M movlw 7 025F 00A6 M movwf instate M 0260 2B32 M goto Lcontinue M 0261 M Lstate5a 0261 3000 M movlw 0 0262 00A6 M movwf instate M MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0263 2B32 M goto Lcontinue 02238 0264 02239 Lstate6 02240 0264 1828 02241 btfsc IR_in,0 0265 2A6E 02242 goto Lstate6a 02243 0266 3000 02244 movlw 0 0267 0731 02245 addwf butcount,w 0268 1903 02246 btfsc STATUS,Z 0269 2A6C 02247 goto Lstate6b 02248 026A 0BB1 02249 decfsz butcount,f 026B 2B32 02250 goto Lcontinue 02251 026C 02252 Lstate6b 02253 02254 #ifndef MULTIBUTTON 026C 142D 02255 bsf button,0 02256 #endif 026D 2B32 02257 goto Lcontinue 02258 026E 02259 Lstate6a 026E 01A6 02260 clrf instate 026F 2B32 02261 goto Lcontinue 02262 02263 state2_tbl 7, toggle, 0 0270 M Lstate7 M ; save the 1st half of word 0270 0828 M movf IR_in,w ; save 1st half 0271 00AC M movwf IR_lhalf 0272 0AA6 M incf instate,f M 0273 2B32 M goto Lcontinue M 0274 M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0274 082C M movf IR_lhalf,w 0275 0628 M xorwf IR_in,w 0276 1D03 M btfss STATUS,Z 0277 2A7A M goto Lstate8a 0278 01A6 M clrf instate ; error state = zero M 0279 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 027A M Lstate8a 027A 1828 M btfsc IR_in,0 027B 102B M bcf toggle,0 027C 1C28 M btfss IR_in,0 027D 142B M bsf toggle,0 M MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 027E 0AA6 M incf instate,f 027F 2B32 M goto Lcontinue 02264 state2_tbl 9, address, 4 0280 M Lstate9 M ; save the 1st half of word 0280 0828 M movf IR_in,w ; save 1st half 0281 00AC M movwf IR_lhalf 0282 0AA6 M incf instate,f M 0283 2B32 M goto Lcontinue M 0284 M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0284 082C M movf IR_lhalf,w 0285 0628 M xorwf IR_in,w 0286 1D03 M btfss STATUS,Z 0287 2A8A M goto Lstate10a 0288 01A6 M clrf instate ; error state = zero M 0289 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 028A M Lstate10a 028A 1828 M btfsc IR_in,0 028B 122A M bcf address,4 028C 1C28 M btfss IR_in,0 028D 162A M bsf address,4 M 028E 0AA6 M incf instate,f 028F 2B32 M goto Lcontinue 02265 state2_tbl d'11', address, 3 0290 M Lstate11 M ; save the 1st half of word 0290 0828 M movf IR_in,w ; save 1st half 0291 00AC M movwf IR_lhalf 0292 0AA6 M incf instate,f M 0293 2B32 M goto Lcontinue M 0294 M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0294 082C M movf IR_lhalf,w 0295 0628 M xorwf IR_in,w 0296 1D03 M btfss STATUS,Z 0297 2A9A M goto Lstate12a 0298 01A6 M clrf instate ; error state = zero M 0299 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 029A M Lstate12a MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 029A 1828 M btfsc IR_in,0 029B 11AA M bcf address,3 029C 1C28 M btfss IR_in,0 029D 15AA M bsf address,3 M 029E 0AA6 M incf instate,f 029F 2B32 M goto Lcontinue 02266 state2_tbl d'13', address, 2 02A0 M Lstate13 M ; save the 1st half of word 02A0 0828 M movf IR_in,w ; save 1st half 02A1 00AC M movwf IR_lhalf 02A2 0AA6 M incf instate,f M 02A3 2B32 M goto Lcontinue M 02A4 M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02A4 082C M movf IR_lhalf,w 02A5 0628 M xorwf IR_in,w 02A6 1D03 M btfss STATUS,Z 02A7 2AAA M goto Lstate14a 02A8 01A6 M clrf instate ; error state = zero M 02A9 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 02AA M Lstate14a 02AA 1828 M btfsc IR_in,0 02AB 112A M bcf address,2 02AC 1C28 M btfss IR_in,0 02AD 152A M bsf address,2 M 02AE 0AA6 M incf instate,f 02AF 2B32 M goto Lcontinue 02267 state2_tbl d'15', address, 1 02B0 M Lstate15 M ; save the 1st half of word 02B0 0828 M movf IR_in,w ; save 1st half 02B1 00AC M movwf IR_lhalf 02B2 0AA6 M incf instate,f M 02B3 2B32 M goto Lcontinue M 02B4 M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02B4 082C M movf IR_lhalf,w 02B5 0628 M xorwf IR_in,w 02B6 1D03 M btfss STATUS,Z 02B7 2ABA M goto Lstate16a 02B8 01A6 M clrf instate ; error state = zero MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 02B9 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 02BA M Lstate16a 02BA 1828 M btfsc IR_in,0 02BB 10AA M bcf address,1 02BC 1C28 M btfss IR_in,0 02BD 14AA M bsf address,1 M 02BE 0AA6 M incf instate,f 02BF 2B32 M goto Lcontinue 02268 state2_tbl d'17', address, 0 02C0 M Lstate17 M ; save the 1st half of word 02C0 0828 M movf IR_in,w ; save 1st half 02C1 00AC M movwf IR_lhalf 02C2 0AA6 M incf instate,f M 02C3 2B32 M goto Lcontinue M 02C4 M Lstate18 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02C4 082C M movf IR_lhalf,w 02C5 0628 M xorwf IR_in,w 02C6 1D03 M btfss STATUS,Z 02C7 2ACA M goto Lstate18a 02C8 01A6 M clrf instate ; error state = zero M 02C9 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 02CA M Lstate18a 02CA 1828 M btfsc IR_in,0 02CB 102A M bcf address,0 02CC 1C28 M btfss IR_in,0 02CD 142A M bsf address,0 M 02CE 0AA6 M incf instate,f 02CF 2B32 M goto Lcontinue 02269 state2_tbl d'19', command, 5 02D0 M Lstate19 M ; save the 1st half of word 02D0 0828 M movf IR_in,w ; save 1st half 02D1 00AC M movwf IR_lhalf 02D2 0AA6 M incf instate,f M 02D3 2B32 M goto Lcontinue M 02D4 M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02D4 082C M movf IR_lhalf,w 02D5 0628 M xorwf IR_in,w 02D6 1D03 M btfss STATUS,Z 02D7 2ADA M goto Lstate20a 02D8 01A6 M clrf instate ; error state = zero M 02D9 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 02DA M Lstate20a 02DA 1828 M btfsc IR_in,0 02DB 12A9 M bcf command,5 02DC 1C28 M btfss IR_in,0 02DD 16A9 M bsf command,5 M 02DE 0AA6 M incf instate,f 02DF 2B32 M goto Lcontinue 02270 state2_tbl d'21', command, 4 02E0 M Lstate21 M ; save the 1st half of word 02E0 0828 M movf IR_in,w ; save 1st half 02E1 00AC M movwf IR_lhalf 02E2 0AA6 M incf instate,f M 02E3 2B32 M goto Lcontinue M 02E4 M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02E4 082C M movf IR_lhalf,w 02E5 0628 M xorwf IR_in,w 02E6 1D03 M btfss STATUS,Z 02E7 2AEA M goto Lstate22a 02E8 01A6 M clrf instate ; error state = zero M 02E9 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 02EA M Lstate22a 02EA 1828 M btfsc IR_in,0 02EB 1229 M bcf command,4 02EC 1C28 M btfss IR_in,0 02ED 1629 M bsf command,4 M 02EE 0AA6 M incf instate,f 02EF 2B32 M goto Lcontinue 02271 state2_tbl d'23', command, 3 02F0 M Lstate23 M ; save the 1st half of word 02F0 0828 M movf IR_in,w ; save 1st half 02F1 00AC M movwf IR_lhalf 02F2 0AA6 M incf instate,f M MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02F3 2B32 M goto Lcontinue M 02F4 M Lstate24 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02F4 082C M movf IR_lhalf,w 02F5 0628 M xorwf IR_in,w 02F6 1D03 M btfss STATUS,Z 02F7 2AFA M goto Lstate24a 02F8 01A6 M clrf instate ; error state = zero M 02F9 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 02FA M Lstate24a 02FA 1828 M btfsc IR_in,0 02FB 11A9 M bcf command,3 02FC 1C28 M btfss IR_in,0 02FD 15A9 M bsf command,3 M 02FE 0AA6 M incf instate,f 02FF 2B32 M goto Lcontinue 02272 state2_tbl d'25', command, 2 0300 M Lstate25 M ; save the 1st half of word 0300 0828 M movf IR_in,w ; save 1st half 0301 00AC M movwf IR_lhalf 0302 0AA6 M incf instate,f M 0303 2B32 M goto Lcontinue M 0304 M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0304 082C M movf IR_lhalf,w 0305 0628 M xorwf IR_in,w 0306 1D03 M btfss STATUS,Z 0307 2B0A M goto Lstate26a 0308 01A6 M clrf instate ; error state = zero M 0309 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 030A M Lstate26a 030A 1828 M btfsc IR_in,0 030B 1129 M bcf command,2 030C 1C28 M btfss IR_in,0 030D 1529 M bsf command,2 M 030E 0AA6 M incf instate,f 030F 2B32 M goto Lcontinue 02273 state2_tbl d'27', command, 1 0310 M Lstate27 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE M ; save the 1st half of word 0310 0828 M movf IR_in,w ; save 1st half 0311 00AC M movwf IR_lhalf 0312 0AA6 M incf instate,f M 0313 2B32 M goto Lcontinue M 0314 M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0314 082C M movf IR_lhalf,w 0315 0628 M xorwf IR_in,w 0316 1D03 M btfss STATUS,Z 0317 2B1A M goto Lstate28a 0318 01A6 M clrf instate ; error state = zero M 0319 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 031A M Lstate28a 031A 1828 M btfsc IR_in,0 031B 10A9 M bcf command,1 031C 1C28 M btfss IR_in,0 031D 14A9 M bsf command,1 M 031E 0AA6 M incf instate,f 031F 2B32 M goto Lcontinue 02274 state2_tbl d'29', command, 0 0320 M Lstate29 M ; save the 1st half of word 0320 0828 M movf IR_in,w ; save 1st half 0321 00AC M movwf IR_lhalf 0322 0AA6 M incf instate,f M 0323 2B32 M goto Lcontinue M 0324 M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0324 082C M movf IR_lhalf,w 0325 0628 M xorwf IR_in,w 0326 1D03 M btfss STATUS,Z 0327 2B2A M goto Lstate30a 0328 01A6 M clrf instate ; error state = zero M 0329 2B32 M goto Lcontinue M M ; set the correct bit in output vars. 032A M Lstate30a 032A 1828 M btfsc IR_in,0 032B 1029 M bcf command,0 032C 1C28 M btfss IR_in,0 032D 1429 M bsf command,0 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 032E 0AA6 M incf instate,f 032F 2B32 M goto Lcontinue 02275 0330 02276 Lstate31 0330 01A6 02277 clrf instate 0331 1430 02278 bsf IR_in_good,0 02279 0332 02280 Lcontinue 0332 0008 02281 return 02282 02283 ;-------------------------------------------------------------------------------------- 0333 02284 read_button_in ; 5 cycles 02285 ;-------------------------------------------------------------------------------------- 02286 ; Portability : hardcoded button port 02287 ; 02288 02289 #ifndef ENABLE_IR 02290 clrf button 02291 #endif 02292 02293 #ifndef SIM_DEBUG 02294 #ifdef D10 02295 btfss PORTA,3 ; 2 02296 bsf button,0 ; 3 02297 btfss PORTA,5 ; 2 02298 bsf button,1 ; 3 02299 #else 02300 #ifdef M8X16 02301 bcf button,1 ; 1 02302 btfss PORTC,2 ; 2 02303 bsf button,1 ; 3 02304 #else ; M8X16 02305 #ifndef MULTIBUTTON 0333 102D 02306 bcf button,0 ; 1 0334 10AD 02307 bcf button,1 ; 1 02308 #ifdef DEDICATED_BUTTON2 02309 #ifdef SRGB 02310 btfss PORTA,5 ; 2 ; stick has 2 buttons. 02311 bsf button,1 ; 3 02312 btfss PORTA,4 ; 2 02313 bsf button,0 ; 3 02314 #else ; SRGB 0335 1E8E 02315 btfss PORTC,5 ; 2 ; Dual 12C has 2 buttons. 0336 142D 02316 bsf button,0 ; 3 0337 1F8E 02317 btfss PORTC,7 ; 2 0338 14AD 02318 bsf button,1 ; 3 02319 #endif ; SRGB 02320 #else ; DEDICATED_BUTTON2 02321 btfss PORTA,5 ; 2 02322 bsf button,0 ; 3 02323 #endif ; not DEDICATED_BUTTON2 02324 #endif ; not MULTIBUTTON MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02325 #endif ; not M8x16 02326 #endif ; D10 02327 #endif ; not SIM_DEBUG 0339 0008 02328 return 02329 02330 ;-------------------------------------------------------------------------------------- 033A 02331 read_ir_in ; 5 cycles 02332 ;-------------------------------------------------------------------------------------- 02333 033A 1028 02334 bcf IR_in,0 ; 1 02335 #ifndef SIM_DEBUG 02336 #ifdef C12 033B 1B0E 02337 btfsc PORTC,6 ; 2 02338 #else 02339 #ifdef M8X16 02340 btfsc PORTE,3 ; 2 02341 #else 02342 btfsc PORTA,3 ; 2 02343 #endif 02344 #endif 02345 #endif 02346 033C 1428 02347 bsf IR_in,0 ; 3 02348 02349 ; movf tx_1,w ; loopback for testing HACK!! ;1 02350 ; xorlw 0x01 ; loopback for testing HACK!! ;2 02351 ; movwf IR_in ; loopback for testing HACK!! ;3 033D 0008 02352 return ; 4/5 02353 02354 ;-------------------------------------------------------------------------------------- 033E 02355 set_max_state ; 5-7 cycles 02356 ;-------------------------------------------------------------------------------------- 033E 0827 02357 movf max_instate,w 033F 0226 02358 subwf instate,w 0340 1C03 02359 btfss STATUS,C 0341 2B44 02360 goto smi_l1 0342 0826 02361 movf instate,w 0343 00A7 02362 movwf max_instate 0344 02363 smi_l1 0344 0008 02364 return 02365 02366 ;-------------------------------------------------------------------------------------- 0345 02367 get_next_tx_bit ; 11 cycles 02368 ;-------------------------------------------------------------------------------------- 02369 0345 102E 02370 bcf tx_1,0 ;1 0346 03BD 02371 decf scount,f ;2 0347 1003 02372 bcf STATUS, C ; clear carry bit ;3 0348 0CBC 02373 rrf out3,f ;4 0349 0CBB 02374 rrf out2,f ;5 034A 0CBA 02375 rrf out1,f ;6 034B 0CB9 02376 rrf out0,f ;7 034C 1803 02377 btfsc STATUS, C ;8 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 034D 142E 02378 bsf tx_1,0 ;9 02379 02380 ; movf tx_1,w ; loopback for testing HACK!! 02381 ; xorlw 0x01 ; loopback for testing HACK!! 02382 ; movwf tx_1 ; loopback for testing HACK!! 02383 ; mult_nop d'6' ; for debuging 02384 034E 0008 02385 return ;10/11 02386 02387 ;********************************************************************** 034F 02388 qdelay 02389 ;********************************************************************** 02390 var qcount 00000034 M qcount equ mem 00000035 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02391 034F 00B4 02392 movwf qcount 0350 02393 delay_loop2 0350 0BB4 02394 decfsz qcount,1 0351 2B50 02395 goto delay_loop2 0352 0008 02396 return 02397 ;********************************************************************** 0353 02398 rf_command_out 02399 ;********************************************************************** 02400 02401 var out_address 00000035 M out_address equ mem 00000036 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02402 var out_command 00000036 M out_command equ mem 00000037 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02403 var out_toggle 00000037 M out_toggle equ mem 00000038 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02404 var out_pattern 00000038 M out_pattern equ mem 00000039 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02405 var out0 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000039 M out0 equ mem 0000003A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02406 var out1 0000003A M out1 equ mem 0000003B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02407 var out2 0000003B M out2 equ mem 0000003C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02408 var out3 0000003C M out3 equ mem 0000003D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02409 var scount 0000003D M scount equ mem 0000003E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02410 0353 01BA 02411 clrf out1 0354 01BB 02412 clrf out2 0355 01BC 02413 clrf out3 02414 02415 ; start flag 0356 30A0 02416 movlw B'10100000' 0357 00B9 02417 movwf out0 02418 02419 02420 ; toggle bit 0358 09B7 02421 comf out_toggle,f ; toggle the toggle flag 0359 1C37 02422 btfss out_toggle,0 035A 143A 02423 bsf out1,0 035B 1837 02424 btfsc out_toggle,0 035C 14BA 02425 bsf out1,1 02426 02427 ; address bits 035D 1E35 02428 btfss out_address,4 035E 153A 02429 bsf out1,2 035F 1A35 02430 btfsc out_address,4 0360 15BA 02431 bsf out1,3 02432 0361 1DB5 02433 btfss out_address,3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0362 163A 02434 bsf out1,4 0363 19B5 02435 btfsc out_address,3 0364 16BA 02436 bsf out1,5 02437 0365 1D35 02438 btfss out_address,2 0366 173A 02439 bsf out1,6 0367 1935 02440 btfsc out_address,2 0368 17BA 02441 bsf out1,7 02442 0369 1CB5 02443 btfss out_address,1 036A 143B 02444 bsf out2,0 036B 18B5 02445 btfsc out_address,1 036C 14BB 02446 bsf out2,1 02447 036D 1C35 02448 btfss out_address,0 036E 153B 02449 bsf out2,2 036F 1835 02450 btfsc out_address,0 0370 15BB 02451 bsf out2,3 02452 02453 ; command bits 0371 1EB6 02454 btfss out_command,5 0372 163B 02455 bsf out2,4 0373 1AB6 02456 btfsc out_command,5 0374 16BB 02457 bsf out2,5 02458 0375 1E36 02459 btfss out_command,4 0376 173B 02460 bsf out2,6 0377 1A36 02461 btfsc out_command,4 0378 17BB 02462 bsf out2,7 02463 0379 1DB6 02464 btfss out_command,3 037A 143C 02465 bsf out3,0 037B 19B6 02466 btfsc out_command,3 037C 14BC 02467 bsf out3,1 02468 037D 1D36 02469 btfss out_command,2 037E 153C 02470 bsf out3,2 037F 1936 02471 btfsc out_command,2 0380 15BC 02472 bsf out3,3 02473 0381 1CB6 02474 btfss out_command,1 0382 163C 02475 bsf out3,4 0383 18B6 02476 btfsc out_command,1 0384 16BC 02477 bsf out3,5 02478 0385 1C36 02479 btfss out_command,0 0386 173C 02480 bsf out3,6 0387 1836 02481 btfsc out_command,0 0388 17BC 02482 bsf out3,7 02483 0389 3021 02484 movlw 0x21 038A 00BD 02485 movwf scount 02486 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 038B 0008 02487 return 02488 02489 #ifdef BIN2LED 02490 ;********************************************************************** 038C 02491 bin2led 02492 ;********************************************************************** 02493 var b2l_out_hi 0000003E M b2l_out_hi equ mem 0000003F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02494 var b2l_out_low 0000003F M b2l_out_low equ mem 00000040 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02495 var b2l_lcount 00000040 M b2l_lcount equ mem 00000041 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02496 var b2l_in_red 00000041 M b2l_in_red equ mem 00000042 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02497 var b2l_in_green 00000042 M b2l_in_green equ mem 00000043 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02498 038C 01BE 02499 clrf b2l_out_hi 038D 01BF 02500 clrf b2l_out_low 038E 3008 02501 movlw 0x08 038F 00C0 02502 movwf b2l_lcount 0390 02503 b2l_loop 0390 1003 02504 bcf STATUS, C 0391 0CC2 02505 rrf b2l_in_green,f 0392 0DBF 02506 rlf b2l_out_low,f 0393 0DBE 02507 rlf b2l_out_hi,f 0394 0CC1 02508 rrf b2l_in_red,f 0395 0DBF 02509 rlf b2l_out_low,f 0396 0DBE 02510 rlf b2l_out_hi,f 02511 0397 0BC0 02512 decfsz b2l_lcount,f 0398 2B90 02513 goto b2l_loop 0399 0008 02514 return MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02515 #endif 02516 02517 #ifdef FLIPBYTE 02518 ;********************************************************************** 039A 02519 flipbyte 02520 ;********************************************************************** 02521 var flip_in 00000043 M flip_in equ mem 00000044 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02522 var flip_out 00000044 M flip_out equ mem 00000045 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02523 var flip_lcount 00000045 M flip_lcount equ mem 00000046 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02524 039A 00C3 02525 movwf flip_in 039B 01C4 02526 clrf flip_out 039C 3008 02527 movlw 0x08 039D 00C5 02528 movwf flip_lcount 039E 02529 fbyte_loop 039E 1003 02530 bcf STATUS, C 039F 0CC3 02531 rrf flip_in,f 03A0 0DC4 02532 rlf flip_out,f 02533 03A1 0BC5 02534 decfsz flip_lcount,f 03A2 2B9E 02535 goto fbyte_loop 02536 03A3 0844 02537 movfw flip_out 03A4 0008 02538 return 02539 #endif 02540 02541 ;********************************************************************** 03A5 02542 delay 02543 ;********************************************************************** 02544 02545 var delay_count 00000046 M delay_count equ mem 00000047 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02546 02547 ; movlw 0ffh MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03A5 00C6 02548 movwf delay_count 03A6 02549 delay_loop 03A6 0000 02550 nop 03A7 0BC6 02551 decfsz delay_count,1 03A8 2BA6 02552 goto delay_loop 03A9 0008 02553 return 02554 02555 ;********************************************************************** 03AA 02556 next_pattern 02557 ;********************************************************************** 03AA 0ACD 02558 incf pattern,f 03AB 084D 02559 movf pattern,w 03AC 3C0F 02560 sublw NUM_TAB+1 ; max pattern? 03AD 1903 02561 btfsc STATUS,2 ; z bit check 03AE 01CD 02562 clrf pattern ; reset to zero 03AF 084D 02563 movfw pattern 03B0 00B8 02564 movwf out_pattern 03B1 01FB 02565 clrf pindex 03B2 01FA 02566 clrf pindex1 03B3 0008 02567 return 02568 02569 ;********************************************************************** 03B4 02570 past_pattern 02571 ;********************************************************************** 03B4 03CD 02572 decf pattern,f 03B5 084D 02573 movf pattern,w 03B6 3E01 02574 addlw 1 ; max pattern? 03B7 1D03 02575 btfss STATUS,2 ; z bit check 03B8 2BBC 02576 goto past_exit 03B9 300E 02577 movlw NUM_TAB 03BA 00CD 02578 movwf pattern 03BB 00B8 02579 movwf out_pattern 03BC 02580 past_exit 03BC 01FB 02581 clrf pindex 03BD 01FA 02582 clrf pindex1 03BE 0008 02583 return 02584 02585 ;********************************************************************** 03BF 02586 set_pattern ;set pattern from IR 02587 ;********************************************************************** 02588 ; extra logic because all the different blinkes talk to each other, but 02589 ; do not have the same number of patterns. So if blinkie "A" sents a 02590 ; pattern 22 to blinkie "B" which only has 10 patterns, Blinkie "B" 02591 ; starts to show pattern 2. (22 % 10 a mod function.) But to make 02592 ; things fair in blinkie wars, it will transmit pattern 22 to other 02593 ; blinkies. 02594 ;********************************************************************** 02595 03BF 0829 02596 movfw command 03C0 00CD 02597 movwf pattern 03C1 00B8 02598 movwf out_pattern 03C2 02599 set_loop 03C2 3EF1 02600 addlw 0xff-NUM_TAB MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03C3 1C03 02601 btfss STATUS, C 03C4 2BC9 02602 goto set_exit 02603 03C5 300E 02604 movlw NUM_TAB 03C6 02CD 02605 subwf pattern,f 03C7 084D 02606 movfw pattern 03C8 2BC2 02607 goto set_loop 02608 03C9 02609 set_exit 03C9 01FB 02610 clrf pindex 03CA 01FA 02611 clrf pindex1 03CB 0008 02612 return 02613 02614 ;********************************************************************** 03CC 02615 strobe_delay 02616 ;********************************************************************** 02617 02618 var strobe_count 00000047 M strobe_count equ mem 00000048 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02619 03CC 00C7 02620 movwf strobe_count 03CD 02621 strobe_delay1 03CD 1020 02622 bcf nextf,0 02623 03CE 02624 strobe_delay2 03CE 1C20 02625 btfss nextf,0 03CF 2BCE 02626 goto strobe_delay2 02627 03D0 0BC7 02628 decfsz strobe_count,f 03D1 2BCD 02629 goto strobe_delay1 02630 03D2 0008 02631 return 02632 02633 02634 #ifdef M8X16 02635 #include display_pattern_id_8x16.asm 02636 #else 02637 ;********************************************************************** 03D3 02638 display_pattern_id 02639 ;********************************************************************** 02640 03D3 0A4D 02641 incf pattern,w ; W = pattern + 1 02642 #ifdef SRGB 02643 movwf in1 02644 clrf in0 02645 clrf in2 02646 clrf in3 02647 clrf in4 02648 clrf in5 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02649 #else 02650 #ifdef C12 03D4 239A 02651 call flipbyte 03D5 00CF 02652 movwf in0 03D6 01D0 02653 clrf in1 03D7 01D1 02654 clrf in2 03D8 01D2 02655 clrf in3 03D9 01D3 02656 clrf in4 03DA 01D4 02657 clrf in5 03DB 3070 02658 movlw b'01110000' 03DC 1857 02659 btfsc demo_mode,0 03DD 00D0 02660 movwf in1 02661 #else 02662 movwf in0 02663 #endif 02664 #endif 02665 02666 #ifdef S19 02667 call flipbyte 02668 movwf in0 02669 #endif 02670 #ifdef BI6 02671 #ifdef MONO 02672 call flipbyte 02673 movwf in0 02674 #else 02675 #ifdef D10 02676 call flipbyte 02677 movwf in0 02678 clrf in1 02679 #else 02680 movwf b2l_in_green 02681 clrf b2l_in_red 02682 call bin2led 02683 movf b2l_out_hi,w 02684 movwf in0 02685 movf b2l_out_low,w 02686 movwf in1 02687 #endif ; D10 02688 #endif ; Mono 02689 #endif ; BI6 02690 02691 #ifdef M3X3 02692 movwf b2l_in_green 02693 clrf b2l_in_red 02694 call bin2led 02695 movf b2l_out_hi,w 02696 movwf in0 02697 movf b2l_out_low,w 02698 movwf in1 02699 #endif 02700 02701 #ifdef C19 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02702 ; outer ring hars the pattern number 02703 movwf b2l_in_red 02704 clrf b2l_in_green 02705 call bin2led 02706 movf b2l_out_hi,w 02707 movwf in0 02708 movf b2l_out_low,w 02709 movwf in1 02710 02711 ; center LED turned on 02712 clrf in2 02713 clrf in3 02714 movlw b'00001100' 02715 movwf in4 02716 02717 ; middle ring on if demo mode 02718 btfss demo_mode,0 02719 goto skip4 02720 02721 comf in3,f 02722 movlw b'11111100' 02723 movwf in4 02724 skip4 02725 02726 #endif 02727 02728 #ifdef M3X3 02729 clrf in2 02730 02731 movlw b'11100000' 02732 btfsc demo_mode,0 02733 movwf in2 02734 #endif 02735 02736 #ifdef S19 02737 clrf in1 02738 clrf in2 02739 02740 movlw b'11100000' 02741 btfsc demo_mode,0 02742 movwf in2 02743 #else 02744 #ifdef BI6 02745 #ifdef MONO 02746 btfsc demo_mode,0 02747 bsf in0,2 02748 #else ; bicolor 02749 btfsc demo_mode,0 02750 bsf in1,4 02751 #endif ; end Mono/bicolor 02752 #endif ; end BI 02753 #endif ; end S19/BI6 02754 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02755 #ifdef RGB4 02756 btfsc demo_mode,0 02757 bsf in1,7 02758 #endif 02759 #ifdef SRGB 02760 movlw b'00111000' 02761 btfsc demo_mode,0 02762 movwf in4 02763 #endif 02764 03DE 30FF 02765 movlw 0xFF 03DF 24C8 02766 call display_1bit 02767 03E0 01CF 02768 clrf in0 03E1 01D0 02769 clrf in1 03E2 01D1 02770 clrf in2 03E3 3001 02771 movlw 0x01 03E4 24C8 02772 call display_1bit 03E5 0008 02773 return 02774 #endif 02775 02776 ;********************************************************************** 03E6 02777 setup_pattern_table 02778 ;********************************************************************** 02779 var tbl_hi 00000048 M tbl_hi equ mem 00000049 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02780 var tbl_low 00000049 M tbl_low equ mem 0000004A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02781 var temp_high 0000004A M temp_high equ mem 0000004B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02782 02783 ;slabel1 02784 ; 02785 ; Set the pattern (table) 02786 ; 03E6 3005 02787 movlw HIGH MasterTable 03E7 00C8 02788 movwf tbl_hi 03E8 30CB 02789 movlw LOW MasterTable 03E9 00C9 02790 movwf tbl_low 02791 02792 ; get the high address for the pattern table MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03EA 1003 02793 bcf STATUS,0 ; clear carry flag 03EB 0D4D 02794 rlf pattern,w ; entry = table * 2 03EC 00FB 02795 movwf pindex 03ED 138B 02796 bcf INTCON, GIE ; disable INTs 03EE 25BE 02797 call table_lookup 03EF 178B 02798 bsf INTCON, GIE ; enable INTs 03F0 00CA 02799 movwf temp_high ; can't put it in tbl_high yet 02800 02801 ; get the low address for the pattern table 03F1 1403 02802 bsf STATUS,0 ; set carry 03F2 0D4D 02803 rlf pattern,w ; entry = table * 2 + 1 03F3 00FB 02804 movwf pindex 03F4 138B 02805 bcf INTCON, GIE ; disable INTs 03F5 25BE 02806 call table_lookup 03F6 178B 02807 bsf INTCON, GIE ; enable INTs 03F7 00C9 02808 movwf tbl_low 02809 03F8 084A 02810 movf temp_high,w 03F9 00C8 02811 movwf tbl_hi 02812 03FA 02813 sreturn 03FA 0008 02814 return 02815 02816 ;********************************************************************** 03FB 02817 get_next_pattern_entry 02818 ;********************************************************************** 02819 var pclath_save 0000004B M pclath_save equ mem 0000004C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02820 var temp2 0000004C M temp2 equ mem 0000004D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02821 02822 #ifndef NOEEPROM 02823 ; if hi address is 0x21 pattern is in eeprom 03FB 3021 02824 movlw 0x21 03FC 0248 02825 subwf tbl_hi,w 03FD 1D03 02826 btfss STATUS,Z 03FE 2C03 02827 goto glabel1 02828 02829 ; table in eeprom 03FF 0849 02830 movfw tbl_low 0400 077B 02831 addwf pindex,w 02832 0401 242C 02833 call read_eeprom 02834 0402 2C15 02835 goto greturn MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02836 #endif 02837 02838 ; table in program memory 0403 02839 glabel1 0403 138B 02840 bcf INTCON, GIE ; disable INTs 0404 080A 02841 movfw PCLATH 0405 00CB 02842 movwf pclath_save 02843 0406 0848 02844 movfw tbl_hi 0407 077A 02845 addwf pindex1,w 0408 00DB 02846 movwf offset_hi 02847 0409 1003 02848 bcf STATUS,C 040A 0849 02849 movfw tbl_low 040B 077B 02850 addwf pindex,w 040C 00DC 02851 movwf offset_low 02852 040D 1803 02853 btfsc STATUS,C 040E 0ADB 02854 incf offset_hi,f 040F 25C5 02855 call jump_address 02856 0410 00CC 02857 movwf temp2 0411 084B 02858 movfw pclath_save 0412 008A 02859 movwf PCLATH 0413 084C 02860 movfw temp2 0414 178B 02861 bsf INTCON, GIE ; enable INTs 02862 0415 02863 greturn 0415 0FFB 02864 incfsz pindex,f 0416 2C18 02865 goto gskip 0417 0AFA 02866 incf pindex1,f 0418 02867 gskip 0418 0008 02868 return 02869 02870 02871 #ifndef NOEEPROM 02872 ;********************************************************************** 0419 02873 write_eeprom 02874 ; expects EEPROM address and data in pindex and input 02875 ; makes sure previous write (if any) has completed before proceeding 02876 ;********************************************************************** 0419 0023 02877 BANKSEL EECON1 02878 041A 1895 02879 btfsc EECON1,WR ;wait for WR to clear 041B 2C1A 02880 goto $-1 02881 041C 138B 02882 bcf INTCON, GIE ; disable INTs 041D 1515 02883 bsf EECON1,WREN ;enable writes 041E 0023 02884 BANKSEL EEADR 041F 087B 02885 movf pindex,w ;set address 0420 0091 02886 movwf EEADR 0421 0879 02887 movf input,w ;set data 0422 0093 02888 movwf EEDAT MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0423 0023 02889 BANKSEL EECON1 0424 3055 02890 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 0425 0096 02891 movwf EECON2 0426 30AA 02892 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 0427 0096 02893 movwf EECON2 0428 1495 02894 bsf EECON1,WR ;initiate a write cycle 0429 178B 02895 bsf INTCON, GIE ; enable INT 02896 02897 setbank0 042A 0188 M clrf BSR 042B 0008 02898 return 02899 02900 02901 ;********************************************************************** 042C 02902 read_eeprom 02903 ; expects EEPROM address in W 02904 ; returns EEPROM data in W 02905 ; makes sure previous write (if any) has completed before proceeding 02906 ;********************************************************************** 042C 138B 02907 bcf INTCON, GIE ; disable INTs 02908 042D 0023 02909 BANKSEL EECON1 042E 1895 02910 btfsc EECON1,WR ;wait for WR to clear 042F 2C2E 02911 goto $-1 02912 0430 1115 02913 bcf EECON1,WREN ;disable writes 0431 0023 02914 BANKSEL EEADR 0432 0091 02915 movwf EEADR ;EEADR = W 0433 0023 02916 BANKSEL EECON1 0434 1395 02917 bcf EECON1,7 ;clear EEPGD 0435 1415 02918 bsf EECON1,RD ;initiate a read cycle 0436 0023 02919 BANKSEL EEDAT 0437 0813 02920 movf EEDAT,w ;W = EEDAT 02921 02922 setbank0 0438 0188 M clrf BSR 0439 178B 02923 bsf INTCON, GIE ; enable INT 043A 0008 02924 return 02925 #endif 02926 02927 ;********************************************************************** 043B 02928 read_demo_mode 02929 ;********************************************************************** 02930 #ifndef NOEEPROM 043B 3000 02931 movlw LOW demo_store 043C 242C 02932 call read_eeprom 02933 #else 02934 movlw 0x00 02935 #endif 043D 00D7 02936 movwf demo_mode 043E 0008 02937 return 02938 02939 ;********************************************************************** MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 043F 02940 toggle_demo 02941 ;********************************************************************** 043F 243B 02942 call read_demo_mode 02943 #ifndef NOEEPROM 0440 1C57 02944 btfss demo_mode,0 ; 0441 2C44 02945 goto tdemo_on 02946 02947 ; toggle off 0442 1057 02948 bcf demo_mode,0 0443 2C45 02949 goto tdemo_cont 02950 0444 02951 tdemo_on 0444 1457 02952 bsf demo_mode,0 02953 0445 02954 tdemo_cont 0445 3000 02955 movlw LOW demo_store 0446 00FB 02956 movwf pindex 0447 0857 02957 movfw demo_mode 0448 00F9 02958 movwf input 0449 2419 02959 call write_eeprom 02960 044A 23D3 02961 call display_pattern_id 044B 23D3 02962 call display_pattern_id 02963 #endif 044C 0008 02964 return 02965 02966 02967 ;********************************************************************** 044D 02968 pattern_driver 02969 ;********************************************************************** 02970 02971 var pattern 0000004D M pattern equ mem 0000004E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02972 var tbltype 0000004E M tbltype equ mem 0000004F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02973 var in0 0000004F M in0 equ mem 00000050 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02974 var in1 00000050 M in1 equ mem 00000051 M mem = mem + 1 M if (mem >= mem2) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' M endif 02975 var in2 00000051 M in2 equ mem 00000052 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02976 #ifdef C12 02977 var in3 00000052 M in3 equ mem 00000053 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02978 var in4 00000053 M in4 equ mem 00000054 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02979 var in5 00000054 M in5 equ mem 00000055 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02980 #endif 02981 #ifdef C19 02982 var in3 02983 var in4 02984 var in5 02985 var in6 02986 var in7 02987 var in8 02988 var in9 02989 #endif 02990 #ifdef SRGB 02991 var in3 02992 var in4 02993 var in5 02994 var in6 02995 var in7 02996 var in8 02997 var in9 02998 var in10 02999 var in11 03000 var in12 03001 #endif 03002 #ifdef BADGE 03003 var in3 03004 #endif 03005 #ifdef M8X16 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03006 var in3 03007 var in4 03008 var in5 03009 var in6 03010 var in7 03011 var in8 03012 var in9 03013 var ina 03014 var inb 03015 var inc 03016 var ind 03017 var ine 03018 var inf 03019 var in10 03020 var in11 03021 var in12 03022 var in13 03023 var in14 03024 var in15 03025 var in16 03026 var in17 03027 var in18 03028 var in19 03029 var in1a 03030 var in1b 03031 var in1c 03032 var in1d 03033 var in1e 03034 var in1f 03035 #endif 03036 var speed 00000055 M speed equ mem 00000056 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03037 var pspeed 00000056 M pspeed equ mem 00000057 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03038 var demo_mode 00000057 M demo_mode equ mem 00000058 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03039 var psize 00000058 M psize equ mem 00000059 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 03040 03041 ; need to be able to access from page1 & page2 for eeprom read/write 03042 var_all_bank pindex ; pattern index 0000007B M pindex equ mem2 0000007A M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 03043 var_all_bank pindex1 ; pattern index 0000007A M pindex1 equ mem2 00000079 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 03044 var_all_bank input 00000079 M input equ mem2 00000078 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 03045 044D 03046 ptop 03047 03048 044D 23E6 03049 call setup_pattern_table 03050 044E 01FB 03051 clrf pindex 044F 01FA 03052 clrf pindex1 03053 03054 ; load the table type (Currently only 1 type) 0450 23FB 03055 call get_next_pattern_entry 0451 00CE 03056 movwf tbltype 0452 13CE 03057 bcf tbltype,7 ; using top bit for demo mode. 03058 03059 ; load the speed (someday this will be a table type 1 only thing.) 0453 23FB 03060 call get_next_pattern_entry 0454 00D6 03061 movwf pspeed 0455 0AD6 03062 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 03063 03064 ; load the table size 0456 23FB 03065 call get_next_pattern_entry ;4rgb 0457 00D8 03066 movwf psize ;4rgb 03067 0458 03068 ploop0 03069 ; 03070 ; Check for IR command in 03071 ; 0458 1C30 03072 btfss IR_in_good,0 0459 2C76 03073 goto button_check 03074 045A 03075 blinkie_check 045A 3007 03076 movlw 0x07 ; blinkines use address 0x07 (Experimental) 045B 022A 03077 subwf address,w 045C 1D03 03078 btfss STATUS,Z 045D 2C61 03079 goto remote_check MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03080 045E 23BF 03081 call set_pattern 045F 01B0 03082 clrf IR_in_good 0460 2C4D 03083 goto ptop 03084 0461 03085 remote_check 0461 08AA 03086 movf address,f ; remote giving "0" for address (TV)? 0462 1D03 03087 btfss STATUS,Z 0463 2C76 03088 goto button_check 03089 0464 3020 03090 movlw 0x20 ; remote curser right (pattern ++) 0465 0229 03091 subwf command,w 0466 1903 03092 btfsc STATUS,Z 0467 23AA 03093 call next_pattern 03094 0468 3021 03095 movlw 0x21 ; remote curser left (pattern --) 0469 0229 03096 subwf command,w 046A 1903 03097 btfsc STATUS,Z 046B 23B4 03098 call past_pattern 03099 046C 3000 03100 movlw 0x00 ; remote "0" key (pattern = 0) 046D 0229 03101 subwf command,w 046E 1903 03102 btfsc STATUS,Z 046F 01CD 03103 clrf pattern 03104 0470 300C 03105 movlw 0x0c ; remote on/off key (togle demo mode!) 0471 0229 03106 subwf command,w 0472 1903 03107 btfsc STATUS,Z 0473 243F 03108 call toggle_demo 03109 0474 01B0 03110 clrf IR_in_good 0475 2C4D 03111 goto ptop 03112 0476 03113 button_check 03114 ; ploop1 03115 0476 082D 03116 movfw button ; if any putton pressed show pattern id 0477 1903 03117 btfsc STATUS,Z 0478 2C8C 03118 goto ploop2 03119 0479 23D3 03120 call display_pattern_id 047A 23D3 03121 call display_pattern_id 03122 047B 03123 ploop1a 03124 03125 #ifdef M3X3 03126 movlw 0x03 ; if button 3 & 4 presses 03127 subwf button,w 03128 btfsc STATUS,Z 03129 goto mode_loop 03130 03131 movlw 0x0C ; if button 1 & 2 presses 03132 subwf button,w MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03133 btfsc STATUS,Z 03134 call toggle_demo 03135 03136 #endif 03137 03138 #ifdef M8X16 03139 movlw 0x03 ; if both buttons pressed 03140 subwf button,w 03141 btfsc STATUS,Z 03142 call toggle_demo 03143 #endif 03144 #ifdef C12 047B 3003 03145 movlw 0x03 ; if both buttons pressed 047C 022D 03146 subwf button,w 047D 1903 03147 btfsc STATUS,Z 047E 243F 03148 call toggle_demo 03149 #endif 03150 03151 047F 182D 03152 btfsc button,0 ; if button 3 pressed inc pattern 0480 2C84 03153 goto ploop1up 03154 0481 18AD 03155 btfsc button,1 ; if button 4 pressed dec pattern 0482 2C88 03156 goto ploop1down 03157 0483 2C4D 03158 goto ptop 03159 0484 03160 ploop1up 0484 23AA 03161 call next_pattern 0485 23D3 03162 call display_pattern_id 0486 23D3 03163 call display_pattern_id 0487 2C7B 03164 goto ploop1a 03165 0488 03166 ploop1down 0488 23B4 03167 call past_pattern 0489 23D3 03168 call display_pattern_id 048A 23D3 03169 call display_pattern_id 048B 2C7B 03170 goto ploop1a 048C 03171 ploop2 03172 03173 #ifdef PATTERN1 03174 movlw 0x01 ; pattern1 03175 subwf tbltype,w 03176 btfsc STATUS,Z 03177 call table_type_1 03178 #endif 03179 03180 #ifdef PATTERN2 03181 movlw 0x02 ; pattern2 03182 subwf tbltype,w 03183 btfsc STATUS,Z 03184 call table_type_2 03185 #endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03186 03187 #ifdef PATTERN3 03188 movlw 0x03 ; pattern3 03189 subwf tbltype,w 03190 btfsc STATUS,Z 03191 call table_type_3 03192 #endif 03193 03194 #ifdef PATTERN4 03195 movlw 0x04 ; pattern4 03196 subwf tbltype,w 03197 btfsc STATUS,Z 03198 call table_type_4 03199 #endif 03200 03201 #ifdef PATTERN5 03202 movlw 0x05 ; pattern5 03203 subwf tbltype,w 03204 btfsc STATUS,Z 03205 call table_type_5 03206 #endif 03207 03208 #ifdef PATTERN6 03209 movlw 0x06 ; pattern6 03210 subwf tbltype,w 03211 btfsc STATUS,Z 03212 call table_type_6 03213 #endif 03214 03215 #ifdef PATTERN7 03216 movlw 0x07 ; pattern7 03217 subwf tbltype,w 03218 btfsc STATUS,Z 03219 call table_type_7 03220 #endif 03221 03222 #ifdef PATTERN8 03223 movlw 0x08 ; pattern8 03224 subwf tbltype,w 03225 btfsc STATUS,Z 03226 call table_type_8 03227 #endif 03228 03229 #ifdef PATTERN9 03230 movlw 0x09 ; pattern9 03231 subwf tbltype,w 03232 btfsc STATUS,Z 03233 call table_type_9 03234 #endif 03235 03236 #ifdef PATTERN10 03237 movlw 0x0A ; pattern10 03238 subwf tbltype,w MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03239 btfsc STATUS,Z 03240 call table_type_10 03241 #endif 03242 03243 #ifdef PATTERN11 03244 movlw 0x0B ; pattern11 03245 subwf tbltype,w 03246 btfsc STATUS,Z 03247 call table_type_11 03248 #endif 03249 03250 #ifdef PATTERN12 03251 movlw 0x0C ; pattern12 03252 subwf tbltype,w 03253 btfsc STATUS,Z 03254 call table_type_12 03255 #endif 03256 03257 #ifdef PATTERN13 03258 movlw 0x0D ; pattern13 03259 subwf tbltype,w 03260 btfsc STATUS,Z 03261 call table_type_13 03262 #endif 03263 03264 #ifdef PATTERN14 03265 movlw 0x0E ; pattern14 03266 subwf tbltype,w 03267 btfsc STATUS,Z 03268 call table_type_14 03269 #endif 03270 03271 #ifdef PATTERN15 03272 movlw 0x0F ; pattern15 03273 subwf tbltype,w 03274 btfsc STATUS,Z 03275 call table_type_15 03276 #endif 03277 03278 #ifdef PATTERN16 03279 movlw 0x10 ; pattern16 03280 subwf tbltype,w 03281 pageselw table_type_16 03282 btfsc STATUS,Z 03283 call table_type_16 03284 pageselw pattern_driver 03285 #endif 03286 03287 #ifdef PATTERN17 03288 movlw 0x11 ; pattern17 03289 subwf tbltype,w 03290 btfsc STATUS,Z 03291 call table_type_17 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03292 #endif 03293 03294 #ifdef PATTERN18 03295 movlw 0x12 ; pattern18 03296 subwf tbltype,w 03297 pageselw table_type_18 03298 btfsc STATUS,Z 03299 call table_type_18 03300 pageselw pattern_driver 03301 #endif 03302 03303 #ifdef PATTERN19 03304 movlw 0x13 ; pattern19 03305 subwf tbltype,w 03306 pageselw table_type_19 03307 btfsc STATUS,Z 03308 call table_type_19 03309 pageselw pattern_driver 03310 #endif 03311 03312 #ifdef PATTERN20 03313 movlw 0x14 ; pattern20 03314 subwf tbltype,w 03315 pageselw table_type_20 03316 btfsc STATUS,Z 03317 call table_type_20 03318 pageselw pattern_driver 03319 #endif 03320 03321 #ifdef PATTERN21 03322 movlw 0x15 ; pattern21 03323 subwf tbltype,w 03324 pageselw table_type_21 03325 btfsc STATUS,Z 03326 call table_type_21 03327 pageselw pattern_driver 03328 #endif 03329 03330 #ifdef PATTERN22 03331 movlw 0x16 ; pattern22 03332 subwf tbltype,w 03333 #ifdef __16F1936 03334 MOVLP high table_type_22 03335 #else 03336 pageselw table_type_22 03337 #endif 03338 03339 btfsc STATUS,Z 03340 call table_type_22 03341 #ifdef __16F1936 03342 MOVLP high pattern_driver 03343 #else 03344 pageselw pattern_driver MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03345 #endif 03346 03347 #endif 03348 03349 #ifdef PATTERN23 048C 3017 03350 movlw 0x17 ; pattern23 048D 024E 03351 subwf tbltype,w 03352 #ifdef __16F1936 048E 3184 03353 MOVLP high table_type_23 03354 #else 03355 pageselw table_type_23 03356 #endif 03357 048F 1903 03358 btfsc STATUS,Z 0490 24B5 03359 call table_type_23 03360 #ifdef __16F1936 0491 3184 03361 MOVLP high pattern_driver 03362 #else 03363 pageselw pattern_driver 03364 #endif 03365 #endif 03366 03367 #ifdef PATTERN24 03368 movlw 0x18 ; pattern24 03369 subwf tbltype,w 03370 #ifdef __16F1936 03371 MOVLP high table_type_24 03372 #else 03373 pageselw pattern_driver 03374 #endif 03375 btfsc STATUS,Z 03376 call table_type_24 03377 #ifdef __16F1936 03378 MOVLP high pattern_driver 03379 #else 03380 pageselw pattern_driver 03381 #endif 03382 #endif 03383 03384 #ifdef PATTERN25 03385 movlw 0x19 ; pattern25 03386 subwf tbltype,w 03387 #ifdef __16F1936 03388 MOVLP high table_type_25 03389 #else 03390 pageselw table_type_25 03391 #endif 03392 btfsc STATUS,Z 03393 call table_type_25 03394 #ifdef __16F1936 03395 MOVLP high pattern_driver 03396 #else 03397 pageselw pattern_driver MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03398 #endif 03399 #endif 03400 03401 #ifdef PATTERN26 03402 movlw 0x1a ; pattern26 03403 subwf tbltype,w 03404 #ifdef __16F1936 03405 MOVLP high table_type_26 03406 #else 03407 pageselw table_type_26 03408 #endif 03409 btfsc STATUS,Z 03410 goto table_type_26 03411 #ifdef __16F1936 03412 MOVLP high pattern_driver 03413 #else 03414 pageselw pattern_driver 03415 #endif 03416 #endif 03417 03418 #ifdef PATTERN27 0492 301B 03419 movlw 0x1b ; pattern27 0493 024E 03420 subwf tbltype,w 03421 #ifdef __16F1936 0494 3188 03422 MOVLP high table_type_27 03423 #else 03424 pageselw table_type_27 03425 #endif 0495 1903 03426 btfsc STATUS,Z Message[306]: Crossing page boundary -- ensure page bits are set. 0496 2800 03427 goto table_type_27 03428 #ifdef __16F1936 0497 3184 03429 MOVLP high pattern_driver 03430 #else 03431 pageselw pattern_driver 03432 #endif 03433 #endif 03434 03435 0498 03436 pattern_return 03437 03438 ; make sure we are not sending a IR signel 0498 083D 03439 movf scount,w ; F22 0499 3E00 03440 addlw 0 ; F23 049A 1D03 03441 btfss STATUS,Z ; F24 049B 2CA8 03442 goto ploop3 03443 03444 ; count down till net IR signel 049C 1CA0 03445 btfss nextf,1 049D 2CA8 03446 goto ploop3 03447 049E 10A0 03448 bcf nextf,1 049F 1C57 03449 btfss demo_mode,0 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04A0 2CA3 03450 goto ploop2a 03451 04A1 23AA 03452 call next_pattern 04A2 2C4D 03453 goto ptop 03454 04A3 03455 ploop2a 03456 ; send an IR signel 03457 #ifdef ENABLE_IR 04A3 3007 03458 movlw 0x07 ; address 0x07 "Experimental" 04A4 00B5 03459 movwf out_address 04A5 0838 03460 movfw out_pattern 04A6 00B6 03461 movwf out_command ; copy out_pettern 03462 04A7 2353 03463 call rf_command_out 03464 #endif 03465 04A8 03466 ploop3 04A8 0BD8 03467 decfsz psize,f ;check for end of pattern (4rgb) 04A9 2C58 03468 goto ploop0 03469 04AA 2C4D 03470 goto ptop 03471 03472 03473 #ifdef PATTERN1 03474 #include pattern_01.asm 03475 #endif 03476 03477 #ifdef PATTERN2 03478 #include pattern_02.asm 03479 #endif 03480 03481 03482 #ifdef PATTERN3 03483 #include pattern_03.asm 03484 #endif 03485 03486 03487 #ifdef PATTERN4 03488 #include pattern_04.asm 03489 #endif 03490 03491 #ifdef PATTERN5 03492 ;********************************************************************** 03493 table_type_5 03494 ;********************************************************************** 03495 ; 03496 ; 1 bytes 03497 ; 03498 ; ABCDEFX = 7 bits for LEDs. 03499 ; 03500 03501 var p2count 03502 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03503 call get_next_pattern_entry 03504 movwf in0 03505 03506 movlw 0x04 ; call display 4 times, speed thing 03507 movwf p2count 03508 03509 p2loop 03510 movfw pspeed 03511 call display_1bit 03512 03513 decfsz p2count,f 03514 goto p2loop 03515 03516 return 03517 #endif 03518 03519 #ifdef PATTERN6 03520 ;********************************************************************** 03521 table_type_6 03522 ;********************************************************************** 03523 ; 03524 ; 3 bytes 03525 ; 03526 ; AAAAAAAA AAAAAAAA AAADDDDD 03527 ; 03528 ; A = 19 bits of LED 03529 ; DDDDD = a repeat counter. 03530 03531 var p2count 03532 03533 call get_next_pattern_entry 03534 movwf in0 03535 03536 call get_next_pattern_entry 03537 movwf in1 03538 03539 call get_next_pattern_entry 03540 movwf in2 03541 03542 movlw b'00011111' 03543 andwf in2,w 03544 movwf p2count 03545 incf p2count,f 03546 rlf p2count,f 03547 rlf p2count,f 03548 03549 p2loop 03550 movfw pspeed 03551 call display_1bit 03552 03553 decfsz p2count,f 03554 goto p2loop 03555 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03556 return 03557 #endif 03558 03559 #define BRIGHT1 0x40 03560 #define BRIGHT2 0xA0 03561 03562 #ifdef PATTERN7 03563 #include pattern_07.asm 03564 #endif 03565 03566 #ifdef PATTERN19 03567 #include pattern_19.asm 03568 #endif 03569 03570 03571 #ifdef PATTERN8 03572 ;********************************************************************** 03573 table_type_8 ; - 19 LED fader 03574 ;********************************************************************** 03575 03576 var delay1 03577 var fad 03578 var color 03579 03580 03581 incf delay1,f 03582 03583 movf delay1,w ; testing for 0 03584 btfss STATUS,Z 03585 goto cf8_loop2a 03586 03587 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 03588 movwf delay1 03589 03590 ; 03591 ; select a pattern 03592 ; 03593 comf fad,f 03594 movf fad,w ; testing for 0 03595 btfss fad,0 03596 incf color,f 03597 03598 movlw 0xFD ; testing for greater then 3 03599 addwf color,w 03600 btfsc STATUS,C 03601 clrf color 03602 03603 #ifdef M3X3 03604 nop 03605 cf8_loop2a 03606 clrf A4_A0_reg ; 1G 03607 clrf A5_A0_reg ; 2G 03608 clrf A5_A1_reg ; 3G MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03609 clrf A2_A0_reg ; 4G 03610 clrf A4_A2_reg ; 5G 03611 clrf A5_A2_reg ; 6G 03612 clrf A1_A0_reg ; 7G 03613 clrf A4_A1_reg ; 8G 03614 clrf A5_A4_reg ; 9G 03615 clrf A0_A4_reg ; 1R 03616 clrf A0_A5_reg ; 2R 03617 clrf A1_A5_reg ; 3R 03618 clrf A0_A2_reg ; 4R 03619 clrf A2_A4_reg ; 5R 03620 clrf A2_A5_reg ; 6R 03621 clrf A0_A1_reg ; 7R 03622 clrf A1_A4_reg ; 8R 03623 clrf A4_A5_reg ; 9R 03624 03625 movf delay1,w ; fading up 03626 btfsc fad,0 03627 comf delay1,w ; fading down 03628 03629 btfsc color,0 03630 goto t8_skip_r 03631 03632 movwf A4_A0_reg ; 1G 03633 movwf A5_A0_reg ; 2G 03634 movwf A5_A1_reg ; 3G 03635 movwf A2_A0_reg ; 4G 03636 movwf A4_A2_reg ; 5G 03637 movwf A5_A2_reg ; 6G 03638 movwf A1_A0_reg ; 7G 03639 movwf A4_A1_reg ; 8G 03640 movwf A5_A4_reg ; 9G 03641 03642 t8_skip_r 03643 btfsc color,1 03644 goto t8_skip_g 03645 03646 movwf A0_A4_reg ; 1R 03647 movwf A0_A5_reg ; 2R 03648 movwf A1_A5_reg ; 3R 03649 movwf A0_A2_reg ; 4R 03650 movwf A2_A4_reg ; 5R 03651 movwf A2_A5_reg ; 6R 03652 movwf A0_A1_reg ; 7R 03653 movwf A1_A4_reg ; 8R 03654 movwf A4_A5_reg ; 9R 03655 t8_skip_g 03656 03657 #else 03658 03659 nop 03660 cf8_loop2a 03661 movf delay1,w ; fading up MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03662 btfsc fad,0 03663 comf delay1,w ; fading down 03664 03665 movwf A5_A0_reg ; 01 03666 movwf A2_A5_reg ; 02 03667 movwf A5_A2_reg ; 03 03668 movwf A4_A5_reg ; 04 03669 movwf A5_A4_reg ; 05 03670 movwf A1_A5_reg ; 06 03671 movwf A5_A1_reg ; 07 03672 movwf A2_A0_reg ; 08 03673 movwf A0_A2_reg ; 09 03674 movwf A4_A0_reg ; 10 03675 movwf A0_A4_reg ; 11 03676 movwf A1_A0_reg ; 12 03677 movwf A0_A1_reg ; 13 03678 movwf A4_A2_reg ; 14 03679 movwf A2_A4_reg ; 15 03680 movwf A1_A2_reg ; 16 03681 movwf A2_A1_reg ; 17 03682 movwf A1_A4_reg ; 18 03683 movwf A4_A1_reg ; 19 03684 #endif 03685 03686 movlw 0x03 03687 call strobe_delay 03688 03689 return 03690 #endif 03691 03692 #ifdef PATTERN9 03693 ;********************************************************************** 03694 table_type_9 03695 ;********************************************************************** 03696 ; 03697 ; 5 bytes 03698 ; 00000000 00000000 00111111 11111111 111111XX 03699 ; 11223344 55667788 99001122 33445566 778899XX 03700 ; RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGXX 03701 ; 03702 ; XX = a repeat counter. 03703 03704 var p2count 03705 03706 call get_next_pattern_entry 03707 movwf in0 03708 03709 call get_next_pattern_entry 03710 movwf in1 03711 03712 call get_next_pattern_entry 03713 movwf in2 03714 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03715 call get_next_pattern_entry 03716 movwf in3 03717 03718 call get_next_pattern_entry 03719 movwf in4 03720 03721 movlw b'00000011' 03722 andwf in4,w 03723 movwf p2count 03724 incf p2count,f 03725 rlf p2count,f 03726 rlf p2count,f 03727 03728 p2loop 03729 movfw pspeed 03730 call display_1bit 03731 03732 decfsz p2count,f 03733 goto p2loop 03734 03735 return 03736 #endif 03737 03738 #ifdef PATTERN10 03739 ;********************************************************************** 03740 table_type_10 03741 ;********************************************************************** 03742 ; 76543210 <-- bits 03743 ; AABBCCDD <-- LEDs 03744 ; 01010101 <-- stays on for 1 unit - b'01' 03745 ; 10101010 <-- stays on for 2 units - b'10' 03746 ; 11111111 <-- stays on for 3 units - b'11' 03747 03748 ; in0 LEDs 0,1 03749 ; in1 LEDs 2,3 03750 ; in2 LEDs 4,5 03751 ; in3 LED 6 03752 03753 call get_next_pattern_entry 03754 movwf in0 03755 03756 call get_next_pattern_entry 03757 movwf in1 03758 03759 call get_next_pattern_entry ;4rgb 03760 movwf in2 ;4rgb 03761 03762 call get_next_pattern_entry ;4rgb 03763 movwf in3 ;4rgb 03764 03765 03766 03767 movf pspeed,w MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03768 movwf speed 03769 call display_2bit 03770 03771 return 03772 #endif 03773 03774 #ifdef PATTERN11 03775 ;********************************************************************** 03776 table_type_11 03777 ;********************************************************************** 03778 ; 76543210 <-- bits 03779 ; AABBCCDD <-- LEDs 03780 ; 01010101 <-- stays on for 1 unit - b'01' 03781 ; 10101010 <-- stays on for 2 units - b'10' 03782 ; 11111111 <-- stays on for 3 units - b'11' 03783 03784 ; in0 LEDs 0,1,3,4 03785 ; in1 LEDs 5,6,C 03786 03787 call get_next_pattern_entry 03788 movwf in0 03789 03790 call get_next_pattern_entry 03791 movwf in1 03792 03793 movf pspeed,w 03794 movwf speed 03795 call display_2bit 03796 03797 return 03798 #endif 03799 03800 #ifdef RANDOM 03801 03802 ;********************************************************************** 04AB 03803 gen_random 03804 ;********************************************************************** 03805 03806 var random 00000059 M random equ mem 0000005A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03807 04AB 0D59 03808 RLF random,W 04AC 0D59 03809 RLF random,W 04AD 1A59 03810 BTFSC random,4 04AE 3A01 03811 XORLW 1 04AF 1AD9 03812 BTFSC random,5 04B0 3A01 03813 XORLW 1 04B1 19D9 03814 BTFSC random,3 04B2 3A01 03815 XORLW 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04B3 00D9 03816 MOVWF random 04B4 0008 03817 return 03818 #endif 03819 03820 #ifdef PATTERN12 03821 ;********************************************************************** 03822 table_type_12 03823 ;********************************************************************** 03824 ; 03825 dupvar p12_count, b2l_out_hi 03826 03827 #ifdef __16F1936 03828 movlw LOW in0 ; shift down in1f->in0 03829 movwf FSR0L 03830 movlw HIGH in0 03831 movwf FSR0H 03832 #else 03833 movlw in0 ; shift down in1f->in0 03834 movwf FSR 03835 bcf STATUS,IRP 03836 #endif 03837 03838 03839 03840 #ifdef M8X16 03841 movlw 0x20 03842 #else 03843 movlw 0x04 03844 #endif 03845 03846 movwf p12_count 03847 03848 p12_loop 03849 call gen_random 03850 call gen_random 03851 call gen_random 03852 call gen_random 03853 call gen_random 03854 movwf INDF 03855 #ifdef __16F1936 03856 incf FSR0L,f 03857 #else 03858 incf FSR,f 03859 #endif 03860 03861 decfsz p12_count,f 03862 goto p12_loop 03863 03864 movfw pspeed 03865 call display_1bit 03866 03867 return 03868 #endif ; PATTERN12 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03869 03870 #ifdef PATTERN13 03871 ;********************************************************************** 03872 table_type_13 03873 ;********************************************************************** 03874 ; 03875 ; 10 bytes 03876 ; 11112222 33334444 55556666 77778888 99990000 11112222 33334444 55556666 77778888 9999XXXX 03877 ; 03878 ; XX = a repeat counter. 03879 03880 call get_next_pattern_entry 03881 movwf in0 03882 03883 call get_next_pattern_entry 03884 movwf in1 03885 03886 call get_next_pattern_entry 03887 movwf in2 03888 03889 call get_next_pattern_entry 03890 movwf in3 03891 03892 call get_next_pattern_entry 03893 movwf in4 03894 03895 call get_next_pattern_entry 03896 movwf in5 03897 03898 call get_next_pattern_entry 03899 movwf in6 03900 03901 call get_next_pattern_entry 03902 movwf in7 03903 03904 call get_next_pattern_entry 03905 movwf in8 03906 03907 call get_next_pattern_entry 03908 movwf in9 03909 03910 movlw b'00001111' 03911 andwf in9,w 03912 movwf p2count 03913 incf p2count,f 03914 rlf p2count,f 03915 rlf p2count,f 03916 03917 p3loop 03918 movfw pspeed 03919 call display_2bit 03920 03921 decfsz p2count,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03922 goto p3loop 03923 03924 return 03925 #endif 03926 03927 #ifdef PATTERN14 03928 ;********************************************************************** 03929 table_type_14 03930 ;********************************************************************** 03931 ; 03932 ; 5 bytes 03933 ; 11223344 55667788 99001122 33445566 778899XX 03934 ; 03935 ; XX = a repeat counter. 03936 03937 call get_next_pattern_entry 03938 movwf in0 03939 03940 call get_next_pattern_entry 03941 movwf in1 03942 03943 call get_next_pattern_entry 03944 movwf in2 03945 03946 call get_next_pattern_entry 03947 movwf in3 03948 03949 call get_next_pattern_entry 03950 movwf in4 03951 03952 movlw b'00000011' 03953 andwf in4,w 03954 movwf p2count 03955 incf p2count,f 03956 rlf p2count,f 03957 rlf p2count,f 03958 03959 p3loop 03960 movfw pspeed 03961 call display_2bit 03962 03963 decfsz p2count,f 03964 goto p3loop 03965 03966 return 03967 #endif 03968 03969 #ifdef PATTERN15 03970 ;********************************************************************** 03971 table_type_15 03972 ;********************************************************************** 03973 ; 03974 ; 6 bytes MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03975 ; 0 1 2 3 4 5 03976 ; DDRRRRRR RRRRRRRR XXGGGGGG GGGGGGGG XXBBBBBB BBBBBBBB 03977 ; xx111110 00000000 xx111110 00000000 xx111110 00000000 03978 ; xx432109 87654321 xx432109 87654321 xx432109 87654321 03979 ; 03980 ; DD = delay counter 03981 ; XX = not used 03982 var p2count 03983 03984 call get_next_pattern_entry 03985 movwf in0 03986 03987 call get_next_pattern_entry 03988 movwf in1 03989 03990 call get_next_pattern_entry 03991 movwf in2 03992 03993 call get_next_pattern_entry 03994 movwf in3 03995 03996 call get_next_pattern_entry 03997 movwf in4 03998 03999 call get_next_pattern_entry 04000 movwf in5 04001 04002 movlw b'11000000' 04003 andwf in0,w 04004 movwf p2count 04005 bcf STATUS, C 04006 rrf p2count,f 04007 rrf p2count,f 04008 rrf p2count,f 04009 rrf p2count,f 04010 rrf p2count,f 04011 rrf p2count,f 04012 incf p2count,f 04013 04014 p3loop 04015 movfw pspeed 04016 call display_1bit 04017 04018 decfsz p2count,f 04019 goto p3loop 04020 04021 return 04022 #endif 04023 04024 #ifdef PATTERN17 04025 #include "pattern_17.asm" 04026 #endif 04027 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 107 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04028 #ifdef PATTERN22 04029 ;********************************************************************** 04030 table_type_22 04031 ;********************************************************************** 04032 ; 04033 ; 32 bytes 04034 ; 04035 ; AAAABBBB 04036 ; 04037 ; A = shire Right/Left 04038 ; BB = two bit intensity to shift on 04039 ; CCCCC = Number of shifts to loop 04040 ; 04041 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 04042 ; 04043 var fcount1 ;, b2l_out_hi 04044 04045 #ifdef __16F1936 04046 movlw LOW in0 04047 movwf FSR0L 04048 movlw HIGH in0 04049 movwf FSR0H 04050 #else 04051 movlw in0 04052 movwf FSR 04053 bcf STATUS,IRP 04054 #endif 04055 04056 movlw 0x20 04057 movwf fcount1 04058 04059 t22_loop 04060 call get_next_pattern_entry 04061 movwf INDF 04062 #ifdef __16F1936 04063 incf FSR0L,f 04064 #else 04065 incf FSR,f 04066 #endif 04067 decfsz fcount1,f 04068 goto t22_loop 04069 04070 movfw pspeed 04071 call display_1bit 04072 movfw pspeed 04073 call display_1bit 04074 movfw pspeed 04075 call display_1bit 04076 movfw pspeed 04077 call display_1bit 04078 04079 return 04080 #endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04081 04082 #ifdef PATTERN23 04083 ;********************************************************************** 04B5 04084 table_type_23 04085 ;********************************************************************** 04086 ; 04087 ; 3 bytes 04088 ; 04089 ; AAAAAAAA AAAAAAAA AAADDDDD 04090 ; 04091 ; A = 19 bits of LED 04092 ; DDDDD = a repeat counter. 04093 04094 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 04095 04B5 23FB 04096 call get_next_pattern_entry 04B6 00CF 04097 movwf in0 04098 04B7 23FB 04099 call get_next_pattern_entry 04B8 00D0 04100 movwf in1 04101 04B9 23FB 04102 call get_next_pattern_entry 04BA 00D1 04103 movwf in2 04104 04BB 23FB 04105 call get_next_pattern_entry 04BC 00D2 04106 movwf in3 04107 04BD 23FB 04108 call get_next_pattern_entry 04BE 00D3 04109 movwf in4 04110 04BF 23FB 04111 call get_next_pattern_entry 04C0 00D4 04112 movwf in5 04113 04C1 3030 04114 movlw 0x30 04C2 00DA 04115 movwf p2count 04116 04C3 04117 p2loop 04C3 0856 04118 movfw pspeed 04C4 24C8 04119 call display_1bit 04120 04C5 0BDA 04121 decfsz p2count,f 04C6 2CC3 04122 goto p2loop 04123 04C7 0008 04124 return 04125 #endif 04126 04127 #ifdef M8X16 04128 ;********************************************************************** MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04129 shift_left 04130 ;********************************************************************** 04131 ; 04132 ; shift the in1f->in1e->in1d->....->in1->in0 04133 ; 04134 04135 #ifdef __16F1936 04136 movlw LOW in0 ; shift down in1f->in0 04137 movwf FSR0L 04138 movlw HIGH in0 04139 movwf FSR0H 04140 #else 04141 movlw in0 ; shift down in1f->in0 04142 movwf FSR 04143 bcf STATUS,IRP 04144 #endif 04145 04146 04147 movlw 0x1f 04148 movwf fcount1 04149 04150 t23_loop 04151 #ifdef __16F1936 04152 incf FSR0L,f 04153 movfw INDF ; get n 04154 decf FSR0L,f 04155 movwf INDF ; put n+1 04156 incf FSR0L,f 04157 #else 04158 incf FSR,f 04159 movfw INDF ; get n 04160 decf FSR,f 04161 movwf INDF ; put n+1 04162 incf FSR,f 04163 #endif 04164 04165 decfsz fcount1,f 04166 goto t23_loop 04167 04168 return 04169 #endif 04170 04171 #ifdef PATTERN24 04172 ;********************************************************************** 04173 table_type_24 04174 ;********************************************************************** 04175 ; 04176 ; 2 bytes 04177 ; 04178 ; shift_left 04179 ; load new in1f and inf 04180 ; display 04181 ; MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04182 04183 call shift_left 04184 04185 #ifdef __16F1936 04186 movlw LOW inf ; shift down in1f->in0 04187 movwf FSR0L 04188 movlw HIGH inf 04189 movwf FSR0H 04190 #else 04191 movlw inf ; shift down in1f->in0 04192 movwf FSR 04193 bcf STATUS,IRP 04194 #endif 04195 04196 call get_next_pattern_entry 04197 movwf INDF 04198 04199 #ifdef __16F1936 04200 movlw LOW in1f ; shift down in1f->in0 04201 movwf FSR0L 04202 movlw HIGH in1f 04203 movwf FSR0H 04204 #else 04205 movlw in1f ; shift down in1f->in0 04206 movwf FSR 04207 bcf STATUS,IRP 04208 #endif 04209 04210 call get_next_pattern_entry 04211 movwf INDF 04212 04213 movfw pspeed ; display 04214 call display_1bit 04215 movfw pspeed 04216 call display_1bit 04217 movfw pspeed 04218 call display_1bit 04219 movfw pspeed 04220 call display_1bit 04221 04222 return 04223 #endif 04224 04225 #ifdef PATTERN25 04226 ;********************************************************************** 04227 table_type_25 04228 ;********************************************************************** 04229 ; 04230 ; 04231 ; get the char 04232 ; lookup char line count 04233 ; loop char count 04234 ; shift_left MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04235 ; load char line 04236 ; display 04237 ; endloop 04238 ; 04239 04240 dupvar char_in, b2l_out_hi 04241 dupvar char_color, b2l_out_low 04242 dupvar tentry, b2l_lcount 04243 dupvar char_words, b2l_in_red 04244 ; 04245 ; offset = chartabel + (char_in - 0x20) * 6 + char_offset 04246 ; offset = chartabel + (char_in - 0x20) + ((char_in - 0x21) * 4) + char_offset <<1 04247 ; offset = chartabel + (char_in - 0x20) + ((char_in - 0x21) <<2) + char_offset <<1 04248 ; 12 bit 12 bit 7 bit 9 bit 4 bit 04249 04250 call get_next_pattern_entry 04251 04252 movwf char_in 04253 movf char_in,f ; test for zero 04254 04255 movlw 0x20 ; color code? 04256 subwf char_in,w 04257 04258 btfsc STATUS,C 04259 goto skipt3 04260 04261 movf char_in,w ; get color, then pull next entry 04262 movwf char_color 04263 goto p25_return 04264 04265 skipt3 04266 ; char_in = char_in - 0x20 04267 movlw 0x20 04268 subwf char_in,f 04269 04270 ; offset = chartabel 04271 movlw LOW chartable 04272 movwf offset_low 04273 movlw HIGH chartable 04274 movwf offset_hi 04275 04276 ; offset = offset + char_in <<1 04277 movf char_in,w 04278 bcf STATUS, C ; clear carry flag just in case 04279 rlf char_in,w 04280 addwf offset_low, f 04281 btfsc STATUS,C ; check carry flag 04282 incf offset_hi,f 04283 04284 ; char_in << 2 ; if carry offset_hi++ 04285 bcf STATUS, C ; clear carry flag just in case 04286 rlf char_in, f 04287 rlf char_in, f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04288 btfsc STATUS,C ; check carry flag 04289 incf offset_hi,f 04290 04291 ; offset = offset + char_in 04292 movf char_in,w ; offset = offset + char_in 04293 addwf offset_low, f 04294 btfsc STATUS,C ; check carry flag 04295 incf offset_hi,f 04296 04297 bcf INTCON, GIE ; disable INTs 04298 call jump_address 04299 movwf char_words 04300 04301 movf pclath_save,w 04302 movwf PCLATH 04303 bsf INTCON, GIE ; enable INTs 04304 04305 ; offset = offset + 1 04306 movlw 1 04307 addwf offset_low, f 04308 btfsc STATUS,C ; check carry flag 04309 incf offset_hi,f 04310 04311 p25_looper 04312 04313 bcf INTCON, GIE ; disable INTs 04314 call jump_address 04315 movwf tentry 04316 04317 movf pclath_save,w 04318 movwf PCLATH 04319 bsf INTCON, GIE ; enable INTs 04320 04321 ; ------------------- 04322 call shift_left 04323 04324 movf tentry, w 04325 movwf in1f 04326 04327 movf tentry, w 04328 movwf inf 04329 04330 btfss char_color,0 ; color adjust 04331 clrf in1f 04332 04333 btfss char_color,2 04334 clrf inf 04335 04336 btfsc char_color,1 ; color adjust 04337 comf in1f,f 04338 04339 btfsc char_color,3 04340 comf inf,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 113 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04341 04342 ; ------------------ 04343 04344 ; offset = offset + 1 04345 movlw 1 04346 addwf offset_low, f 04347 btfsc STATUS,C ; check carry flag 04348 incf offset_hi,f 04349 04350 movfw pspeed ; display 04351 call display_1bit 04352 movfw pspeed 04353 call display_1bit 04354 movfw pspeed 04355 call display_1bit 04356 movfw pspeed 04357 call display_1bit 04358 04359 decfsz char_words,f 04360 goto p25_looper 04361 04362 ; add a blank line after the char and display (spacing) 04363 call shift_left 04364 clrf in1f 04365 clrf inf 04366 04367 btfsc char_color,1 ; color adjust 04368 comf in1f,f 04369 04370 btfsc char_color,3 04371 comf inf,f 04372 ;-- 04373 04374 movfw pspeed ; display 04375 call display_1bit 04376 movfw pspeed 04377 call display_1bit 04378 movfw pspeed 04379 call display_1bit 04380 movfw pspeed 04381 call display_1bit 04382 04383 p25_return 04384 return 04385 04386 #endif 04387 04388 #ifdef PATTERN26 04389 #include "pattern_26.asm" 04390 #endif 04391 04392 04393 #ifdef DISPLAY_1BIT_A MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04394 ;********************************************************************** 04395 display_1bit ; Mono 6 LEDs, Badge LED add center (IR) for 7 04396 ;********************************************************************** 04397 04398 movwf speed ;w has the speed/delay 04399 04400 clrf Ar_reg 04401 btfsc in0,7 04402 comf Ar_reg,f 04403 04404 clrf Ag_reg 04405 btfsc in0,5 04406 comf Ag_reg,f 04407 04408 clrf Ab_reg 04409 btfsc in0,3 04410 comf Ab_reg,f 04411 04412 clrf Cr_reg 04413 btfsc in0,6 04414 comf Cr_reg,f 04415 04416 clrf Cg_reg 04417 btfsc in0,4 04418 comf Cg_reg,f 04419 04420 clrf Cb_reg 04421 btfsc in0,2 04422 comf Cb_reg,f 04423 04424 #ifdef BADGE 04425 clrf Center_reg 04426 btfsc in0,1 04427 comf Center_reg,f 04428 #endif 04429 04430 04431 movf speed,w 04432 call strobe_delay 04433 04434 return 04435 #endif 04436 #ifdef DISPLAY_1BIT_B 04437 #include display_1bit_b.asm 04438 #endif 04439 #ifdef DISPLAY_1BIT_C 04440 ;********************************************************************** 04441 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 04442 ;********************************************************************** 04443 04444 movwf speed ;w has the speed/delay 04445 04446 clrf Ar_reg MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04447 btfsc in0,7 04448 comf Ar_reg,f 04449 04450 clrf Ag_reg 04451 btfsc in0,3 04452 comf Ag_reg,f 04453 04454 clrf Ab_reg 04455 btfsc in1,7 04456 comf Ab_reg,f 04457 04458 clrf Br_reg 04459 btfsc in0,6 04460 comf Br_reg,f 04461 04462 clrf Bg_reg 04463 btfsc in0,2 04464 comf Bg_reg,f 04465 04466 clrf Bb_reg 04467 btfsc in1,6 04468 comf Bb_reg,f 04469 04470 clrf Cr_reg 04471 btfsc in0,5 04472 comf Cr_reg,f 04473 04474 clrf Cg_reg 04475 btfsc in0,1 04476 comf Cg_reg,f 04477 04478 clrf Cb_reg 04479 btfsc in1,5 04480 comf Cb_reg,f 04481 04482 clrf Dr_reg 04483 btfsc in0,4 04484 comf Dr_reg,f 04485 04486 clrf Dg_reg 04487 btfsc in0,0 04488 comf Dg_reg,f 04489 04490 clrf Db_reg 04491 btfsc in1,4 04492 comf Db_reg,f 04493 04494 #ifdef BADGE 04495 clrf Center_reg 04496 btfsc in1,3 04497 comf Center_reg,f 04498 #endif 04499 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04500 movf speed,w 04501 call strobe_delay 04502 04503 return 04504 #endif 04505 #ifdef DISPLAY_1BIT_D 04506 ;********************************************************************** 04507 display_1bit ; 20 LEDs 04508 ;********************************************************************** 04509 04510 movwf speed ;w has the speed/delay 04511 04512 clrf A0_A5_reg ; IR 04513 04514 clrf A5_A0_reg ; 01 04515 btfsc in0,7 04516 comf A5_A0_reg,f 04517 04518 clrf A2_A5_reg ; 02 04519 btfsc in0,6 04520 comf A2_A5_reg,f 04521 04522 clrf A5_A2_reg ; 03 04523 btfsc in0,5 04524 comf A5_A2_reg,f 04525 04526 clrf A4_A5_reg ; 04 04527 btfsc in0,4 04528 comf A4_A5_reg,f 04529 04530 clrf A5_A4_reg ; 05 04531 btfsc in0,3 04532 comf A5_A4_reg,f 04533 04534 clrf A1_A5_reg ; 06 04535 btfsc in0,2 04536 comf A1_A5_reg,f 04537 04538 clrf A5_A1_reg ; 07 04539 btfsc in0,1 04540 comf A5_A1_reg,f 04541 04542 clrf A2_A0_reg ; 08 04543 btfsc in0,0 04544 comf A2_A0_reg,f 04545 04546 clrf A0_A2_reg ; 09 04547 btfsc in1,7 04548 comf A0_A2_reg,f 04549 04550 clrf A4_A0_reg ; 10 04551 btfsc in1,6 04552 comf A4_A0_reg,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 117 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04553 04554 clrf A0_A4_reg ; 11 04555 btfsc in1,5 04556 comf A0_A4_reg,f 04557 04558 clrf A1_A0_reg ; 12 04559 btfsc in1,4 04560 comf A1_A0_reg,f 04561 04562 clrf A0_A1_reg ; 13 04563 btfsc in1,3 04564 comf A0_A1_reg,f 04565 04566 clrf A4_A2_reg ; 14 04567 btfsc in1,2 04568 comf A4_A2_reg,f 04569 04570 clrf A2_A4_reg ; 15 04571 btfsc in1,1 04572 comf A2_A4_reg,f 04573 04574 clrf A1_A2_reg ; 16 04575 btfsc in1,0 04576 comf A1_A2_reg,f 04577 04578 clrf A2_A1_reg ; 17 04579 btfsc in2,7 04580 comf A2_A1_reg,f 04581 04582 clrf A1_A4_reg ; 18 04583 btfsc in2,6 04584 comf A1_A4_reg,f 04585 04586 clrf A4_A1_reg ; 19 04587 btfsc in2,5 04588 comf A4_A1_reg,f 04589 04590 04591 movf speed,w 04592 call strobe_delay 04593 04594 return 04595 #endif 04596 04597 #ifdef DISPLAY_1BIT_F 04598 ;********************************************************************** 04599 display_1bit ; 20 LEDs 3x3 04600 ;********************************************************************** 04601 04602 movwf speed ;w has the speed/delay 04603 04604 clrf A4_A0_reg ; 1G 04605 btfsc in0,7 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04606 comf A4_A0_reg,f 04607 04608 clrf A5_A0_reg ; 2G 04609 btfsc in0,5 04610 comf A5_A0_reg,f 04611 04612 clrf A5_A1_reg ; 3G 04613 btfsc in0,3 04614 comf A5_A1_reg,f 04615 04616 clrf A2_A0_reg ; 4G 04617 btfsc in0,1 04618 comf A2_A0_reg,f 04619 04620 clrf A4_A2_reg ; 5G 04621 btfsc in1,7 04622 comf A4_A2_reg,f 04623 04624 clrf A5_A2_reg ; 6G 04625 btfsc in1,5 04626 comf A5_A2_reg,f 04627 04628 clrf A1_A0_reg ; 7G 04629 btfsc in1,3 04630 comf A1_A0_reg,f 04631 04632 clrf A4_A1_reg ; 8G 04633 btfsc in1,1 04634 comf A4_A1_reg,f 04635 04636 clrf A5_A4_reg ; 9G 04637 btfsc in2,7 04638 comf A5_A4_reg,f 04639 04640 #ifdef MONO 04641 clrf A0_A4_reg ; 1R 04642 clrf A0_A5_reg ; 2R 04643 clrf A1_A5_reg ; 3R 04644 clrf A0_A2_reg ; 4R 04645 clrf A2_A4_reg ; 5R 04646 clrf A2_A5_reg ; 6R 04647 clrf A0_A1_reg ; 7R 04648 clrf A1_A4_reg ; 8R 04649 clrf A4_A5_reg ; 9R 04650 04651 #else 04652 04653 clrf A0_A4_reg ; 1R 04654 btfsc in0,6 04655 comf A0_A4_reg,f 04656 04657 clrf A0_A5_reg ; 2R 04658 btfsc in0,4 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04659 comf A0_A5_reg,f 04660 04661 clrf A1_A5_reg ; 3R 04662 btfsc in0,2 04663 comf A1_A5_reg,f 04664 04665 clrf A0_A2_reg ; 4R 04666 btfsc in0,0 04667 comf A0_A2_reg,f 04668 04669 clrf A2_A4_reg ; 5R 04670 btfsc in1,6 04671 comf A2_A4_reg,f 04672 04673 clrf A2_A5_reg ; 6R 04674 btfsc in1,4 04675 comf A2_A5_reg,f 04676 04677 clrf A0_A1_reg ; 7R 04678 btfsc in1,2 04679 comf A0_A1_reg,f 04680 04681 clrf A1_A4_reg ; 8R 04682 btfsc in1,0 04683 comf A1_A4_reg,f 04684 04685 clrf A4_A5_reg ; 9R 04686 btfsc in2,6 04687 comf A4_A5_reg,f 04688 #endif 04689 04690 clrf A1_A2_reg ; 16 IR 04691 clrf A2_A1_reg ; 17 IR 04692 04693 04694 04695 movf speed,w 04696 call strobe_delay 04697 04698 return 04699 #endif 04700 04701 04702 #ifdef DISPLAY_1BIT_G 04703 ;********************************************************************** 04704 display_1bit ; 256 Led 16x8x2 matrix 04705 ;********************************************************************** 04706 04707 movwf speed ;w has the speed/delay 04708 ; 04709 ; going to break good coding rulTMR2es for compact code, reorder or move 04710 ; the Led_xxx vars and you break the code! 04711 ; MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04712 04713 04714 ; process page 1 (0x20) Led_Gxx vars 04715 #ifdef __16F1936 04716 movlw LOW Led_G00 ; shift down in1f->in0 04717 movwf FSR0L 04718 movlw HIGH Led_G00 04719 movwf FSR0H 04720 #else 04721 movlw (Led_G00 & 0xff) 04722 movwf FSR 04723 bcf STATUS,IRP 04724 #endif 04725 04726 movfw in0 04727 call d2b_8bits 04728 movfw in1 04729 call d2b_8bits 04730 movfw in2 04731 call d2b_8bits 04732 movfw in3 04733 call d2b_8bits 04734 04735 ; process page 2 (0x60) Led_Gxx vars 04736 #ifndef __16F1936 04737 movlw (Led_G40 & 0xff) 04738 movwf FSR 04739 bsf STATUS,IRP 04740 #endif 04741 04742 movfw in4 04743 call d2b_8bits 04744 movfw in5 04745 call d2b_8bits 04746 movfw in6 04747 call d2b_8bits 04748 movfw in7 04749 call d2b_8bits 04750 movfw in8 04751 call d2b_8bits 04752 movfw in9 04753 call d2b_8bits 04754 movfw ina 04755 call d2b_8bits 04756 movfw inb 04757 call d2b_8bits 04758 movfw inc 04759 call d2b_8bits 04760 movfw ind 04761 call d2b_8bits 04762 movfw ine 04763 call d2b_8bits 04764 movfw inf MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04765 call d2b_8bits 04766 04767 ; process page 1 (0x20) Led_Rxx vars 04768 #ifndef __16F1936 04769 movlw (Led_R00 & 0xff) 04770 movwf FSR 04771 bcf STATUS,IRP 04772 #endif 04773 04774 movfw in10 04775 call d2b_8bits 04776 movfw in11 04777 call d2b_8bits 04778 movfw in12 04779 call d2b_8bits 04780 movfw in13 04781 call d2b_8bits 04782 04783 04784 04785 ; process page 3 (0x60) Led_Rxx vars 04786 #ifndef __16F1936 04787 movlw (Led_R40 & 0xff) 04788 movwf FSR 04789 bsf STATUS,IRP 04790 #endif 04791 04792 movfw in14 04793 call d2b_8bits 04794 movfw in15 04795 call d2b_8bits 04796 movfw in16 04797 call d2b_8bits 04798 movfw in17 04799 call d2b_8bits 04800 movfw in18 04801 call d2b_8bits 04802 movfw in19 04803 call d2b_8bits 04804 movfw in1a 04805 call d2b_8bits 04806 movfw in1b 04807 call d2b_8bits 04808 movfw in1c 04809 call d2b_8bits 04810 movfw in1d 04811 call d2b_8bits 04812 movfw in1e 04813 call d2b_8bits 04814 movfw in1f 04815 call d2b_8bits 04816 04817 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04818 movf speed,w 04819 call strobe_delay 04820 04821 #ifndef __16F1936 04822 bcf STATUS,IPR 04823 #endif 04824 return 04825 04826 #ifdef __16F1936 04827 ;********************************************************************** 04828 d2b_8bits 04829 ;********************************************************************** 04830 movwf fcount1 04831 04832 movlw 0x00 04833 btfsc fcount1,7 04834 movlw 0xFF 04835 04836 movwi INDF0++ 04837 04838 movlw 0x00 04839 btfsc fcount1,6 04840 movlw 0xFF 04841 04842 movwi INDF0++ 04843 04844 movlw 0x00 04845 btfsc fcount1,5 04846 movlw 0xFF 04847 04848 movwi INDF0++ 04849 04850 movlw 0x00 04851 btfsc fcount1,4 04852 movlw 0xFF 04853 04854 movwi INDF0++ 04855 04856 movlw 0x00 04857 btfsc fcount1,3 04858 movlw 0xFF 04859 04860 movwi INDF0++ 04861 04862 movlw 0x00 04863 btfsc fcount1,2 04864 movlw 0xFF 04865 04866 movwi INDF0++ 04867 04868 movlw 0x00 04869 btfsc fcount1,1 04870 movlw 0xFF MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04871 04872 movwi INDF0++ 04873 04874 movlw 0x00 04875 btfsc fcount1,0 04876 movlw 0xFF 04877 04878 movwi INDF0++ 04879 04880 return 04881 04882 #else 04883 ;********************************************************************** 04884 d2b_8bits 04885 ;********************************************************************** 04886 movwf fcount1 04887 04888 clrf INDF 04889 btfsc fcount1,7 04890 comf INDF,f 04891 04892 incf FSR,f 04893 04894 clrf INDF 04895 btfsc fcount1,6 04896 comf INDF,f 04897 04898 incf FSR,f 04899 04900 clrf INDF 04901 btfsc fcount1,5 04902 comf INDF,f 04903 04904 incf FSR,f 04905 04906 clrf INDF 04907 btfsc fcount1,4 04908 comf INDF,f 04909 04910 incf FSR,f 04911 04912 clrf INDF 04913 btfsc fcount1,3 04914 comf INDF,f 04915 04916 incf FSR,f 04917 04918 clrf INDF 04919 btfsc fcount1,2 04920 comf INDF,f 04921 04922 incf FSR,f 04923 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04924 clrf INDF 04925 btfsc fcount1,1 04926 comf INDF,f 04927 04928 incf FSR,f 04929 04930 clrf INDF 04931 btfsc fcount1,0 04932 comf INDF,f 04933 04934 incf FSR,f 04935 04936 return 04937 04938 #endif 04939 #endif 04940 04941 #ifdef DISPLAY_1BIT_H 04942 #include display_1bit_h.asm 00001 ; list p=12f683,b=4,n=0 ; declare processor, tabs, and lines/page 00002 00003 ;********************************************************************** 00004 ; Copyright (C) 2005,2006,2007 Dwayne Forsyth 00005 ; 00006 ; This program is free software; you can redistribute it and/or 00007 ; modify it under the terms of the GNU General Public License 00008 ; as published by the Free Software Foundation; either version 2 00009 ; of the License, or (at your option) any later version. 00010 ; 00011 ; This program is distributed in the hope that it will be useful, 00012 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 ; GNU General Public License for more details. 00015 ; 00016 ; You should have received a copy of the GNU General Public License 00017 ; along with this program; if not, write to the 00018 ; 00019 ; Free Software Foundation, Inc. 00020 ; 51 Franklin Street, Fifth Floor 00021 ; Boston, MA 02110-1301, USA. 00022 ; 00023 ;********************************************************************** 00024 00025 ;********************************************************************** 04C8 00026 display_1bit ; 2 x 12 Circle LEDs 48 LEDs 00027 ;********************************************************************** 00028 04C8 00D5 00029 movwf speed ;w has the speed/delay 00030 00031 00032 #ifndef SINGLE 04C9 30AE 00033 movlw A3_A4_reg ; R1 04CA 0084 00034 movwf FSR MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04CB 0180 00035 clrf INDF 04CC 1BD2 00036 btfsc in3,7 04CD 0980 00037 comf INDF,f 00038 04CE 30B3 00039 movlw A4_A5_reg ; R2 04CF 0084 00040 movwf FSR 04D0 0180 00041 clrf INDF 04D1 1B52 00042 btfsc in3,6 04D2 0980 00043 comf INDF,f 00044 04D3 30AF 00045 movlw A3_A5_reg ; R3 04D4 0084 00046 movwf FSR 04D5 0180 00047 clrf INDF 04D6 1AD2 00048 btfsc in3,5 04D7 0980 00049 comf INDF,f 00050 04D8 30AB 00051 movlw A2_A4_reg ; R4 04D9 0084 00052 movwf FSR 04DA 0180 00053 clrf INDF 04DB 1A52 00054 btfsc in3,4 04DC 0980 00055 comf INDF,f 00056 04DD 30AA 00057 movlw A2_A3_reg ; R5 04DE 0084 00058 movwf FSR 04DF 0180 00059 clrf INDF 04E0 19D2 00060 btfsc in3,3 04E1 0980 00061 comf INDF,f 00062 04E2 30A2 00063 movlw A0_A4_reg ; R6 04E3 0084 00064 movwf FSR 04E4 0180 00065 clrf INDF 04E5 1952 00066 btfsc in3,2 04E6 0980 00067 comf INDF,f 00068 04E7 30A3 00069 movlw A0_A5_reg ; R7 04E8 0084 00070 movwf FSR 04E9 0180 00071 clrf INDF 04EA 18D2 00072 btfsc in3,1 04EB 0980 00073 comf INDF,f 00074 04EC 30A7 00075 movlw A1_A5_reg ; R8 04ED 0084 00076 movwf FSR 04EE 0180 00077 clrf INDF 04EF 1852 00078 btfsc in3,0 04F0 0980 00079 comf INDF,f 00080 04F1 30A6 00081 movlw A1_A3_reg ; R9 04F2 0084 00082 movwf FSR 04F3 0180 00083 clrf INDF 04F4 1BD3 00084 btfsc in4,7 04F5 0980 00085 comf INDF,f 00086 04F6 30A5 00087 movlw A1_A2_reg ; R10 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04F7 0084 00088 movwf FSR 04F8 0180 00089 clrf INDF 04F9 1B53 00090 btfsc in4,6 04FA 0980 00091 comf INDF,f 00092 04FB 30A1 00093 movlw A0_A2_reg ; R11 04FC 0084 00094 movwf FSR 04FD 0180 00095 clrf INDF 04FE 1AD3 00096 btfsc in4,5 04FF 0980 00097 comf INDF,f 00098 0500 30A0 00099 movlw A0_A1_reg ; R12 0501 0084 00100 movwf FSR 0502 0180 00101 clrf INDF 0503 1A53 00102 btfsc in4,4 0504 0980 00103 comf INDF,f 00104 00105 ; movlw A3_A0_reg ; 00106 ; movwf FSR 00107 ; clrf INDF 00108 00109 ; movlw A4_A1_reg ; 00110 ; movwf FSR 00111 ; clrf INDF 00112 00113 ; movlw A5_A2_reg ; 00114 ; movwf FSR 00115 ; clrf INDF 00116 00117 ; movlw A0_A3_reg ; 00118 ; movwf FSR 00119 ; clrf INDF 00120 00121 ; movlw A1_A4_reg ; 00122 ; movwf FSR 00123 ; clrf INDF 00124 00125 ; movlw A2_A5_reg ; 00126 ; movwf FSR 00127 ; clrf INDF 00128 00129 00130 #ifndef MONO 00131 movlw A4_A3_reg ; G1 00132 movwf FSR 00133 clrf INDF 00134 btfsc in4,3 00135 comf INDF,f 00136 00137 movlw A5_A4_reg ; G2 00138 movwf FSR 00139 clrf INDF 00140 btfsc in4,2 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00141 comf INDF,f 00142 00143 movlw A5_A3_reg ; G3 00144 movwf FSR 00145 clrf INDF 00146 btfsc in4,1 00147 comf INDF,f 00148 00149 movlw A4_A2_reg ; G4 00150 movwf FSR 00151 clrf INDF 00152 btfsc in4,0 00153 comf INDF,f 00154 00155 movlw A3_A2_reg ; G5 00156 movwf FSR 00157 clrf INDF 00158 btfsc in5,7 00159 comf INDF,f 00160 00161 movlw A4_A0_reg ; G6 00162 movwf FSR 00163 clrf INDF 00164 btfsc in5,6 00165 comf INDF,f 00166 00167 movlw A5_A0_reg ; G7 00168 movwf FSR 00169 clrf INDF 00170 btfsc in5,5 00171 comf INDF,f 00172 00173 movlw A5_A1_reg ; G8 00174 movwf FSR 00175 clrf INDF 00176 btfsc in5,4 00177 comf INDF,f 00178 00179 movlw A3_A1_reg ; G9 00180 movwf FSR 00181 clrf INDF 00182 btfsc in5,3 00183 comf INDF,f 00184 00185 movlw A2_A1_reg ; G10 00186 movwf FSR 00187 clrf INDF 00188 btfsc in5,2 00189 comf INDF,f 00190 00191 movlw A2_A0_reg ; G11 00192 movwf FSR 00193 clrf INDF MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00194 btfsc in5,1 00195 comf INDF,f 00196 00197 movlw A1_A0_reg ; G12 00198 movwf FSR 00199 clrf INDF 00200 btfsc in5,0 00201 comf INDF,f 00202 00203 #endif 00204 #endif 00205 0505 30CC 00206 movlw B2_B7_reg ; R1 0506 0084 00207 movwf FSR 0507 0180 00208 clrf INDF 0508 1BCF 00209 btfsc in0,7 0509 0980 00210 comf INDF,f 00211 050A 30C8 00212 movlw B3_B7_reg ; R2 050B 0084 00213 movwf FSR 050C 0180 00214 clrf INDF 050D 1B4F 00215 btfsc in0,6 050E 0980 00216 comf INDF,f 00217 050F 30C9 00218 movlw B3_B5_reg ; R3 0510 0084 00219 movwf FSR 0511 0180 00220 clrf INDF 0512 1ACF 00221 btfsc in0,5 0513 0980 00222 comf INDF,f 00223 0514 30CA 00224 movlw B3_B4_reg ; R4 0515 0084 00225 movwf FSR 0516 0180 00226 clrf INDF 0517 1A4F 00227 btfsc in0,4 0518 0980 00228 comf INDF,f 00229 0519 30CE 00230 movlw B2_B4_reg ; R5 051A 0084 00231 movwf FSR 051B 0180 00232 clrf INDF 051C 19CF 00233 btfsc in0,3 051D 0980 00234 comf INDF,f 00235 051E 30CF 00236 movlw B2_B3_reg ; R6 051F 0084 00237 movwf FSR 0520 0180 00238 clrf INDF 0521 194F 00239 btfsc in0,2 0522 0980 00240 comf INDF,f 00241 0523 30C1 00242 movlw B5_B6_reg ; R7 0524 0084 00243 movwf FSR 0525 0180 00244 clrf INDF 0526 18CF 00245 btfsc in0,1 0527 0980 00246 comf INDF,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00247 0528 30BC 00248 movlw B6_B7_reg ; R8 0529 0084 00249 movwf FSR 052A 0180 00250 clrf INDF 052B 184F 00251 btfsc in0,0 052C 0980 00252 comf INDF,f 00253 052D 30C0 00254 movlw B5_B7_reg ; R9 052E 0084 00255 movwf FSR 052F 0180 00256 clrf INDF 0530 1BD0 00257 btfsc in1,7 0531 0980 00258 comf INDF,f 00259 0532 30C4 00260 movlw B4_B6_reg ; R10 0533 0084 00261 movwf FSR 0534 0180 00262 clrf INDF 0535 1B50 00263 btfsc in1,6 0536 0980 00264 comf INDF,f 00265 0537 30C5 00266 movlw B4_B5_reg ; R11 0538 0084 00267 movwf FSR 0539 0180 00268 clrf INDF 053A 1AD0 00269 btfsc in1,5 053B 0980 00270 comf INDF,f 00271 053C 30CD 00272 movlw B2_B6_reg ; R12 053D 0084 00273 movwf FSR 053E 0180 00274 clrf INDF 053F 1A50 00275 btfsc in1,4 0540 0980 00276 comf INDF,f 00277 00278 ; movlw B4_B7_reg 00279 ; movwf FSR 00280 ; clrf INDF 00281 00282 ; movlw B3_B6_reg 00283 ; movwf FSR 00284 ; clrf INDF 00285 00286 ; movlw B2_B5_reg 00287 ; movwf FSR 00288 ; clrf INDF 00289 00290 ; movlw B7_B4_reg 00291 ; movwf FSR 00292 ; clrf INDF 00293 00294 ; movlw B6_B3_reg 00295 ; movwf FSR 00296 ; clrf INDF 00297 00298 ; movlw B5_B2_reg 00299 ; movwf FSR MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00300 ; clrf INDF 00301 00302 #ifndef MONO 00303 movlw B7_B2_reg ; G1 00304 movwf FSR 00305 clrf INDF 00306 btfsc in1,3 00307 comf INDF,f 00308 00309 movlw B7_B3_reg ; G2 00310 movwf FSR 00311 clrf INDF 00312 btfsc in1,2 00313 comf INDF,f 00314 00315 movlw B5_B3_reg ; G3 00316 movwf FSR 00317 clrf INDF 00318 btfsc in1,1 00319 comf INDF,f 00320 00321 movlw B4_B3_reg ; G4 00322 movwf FSR 00323 clrf INDF 00324 btfsc in1,0 00325 comf INDF,f 00326 00327 movlw B4_B2_reg ; G5 00328 movwf FSR 00329 clrf INDF 00330 btfsc in2,7 00331 comf INDF,f 00332 00333 movlw B3_B2_reg ; G6 00334 movwf FSR 00335 clrf INDF 00336 btfsc in2,6 00337 comf INDF,f 00338 00339 movlw B6_B5_reg ; G7 00340 movwf FSR 00341 clrf INDF 00342 btfsc in2,5 00343 comf INDF,f 00344 00345 movlw B7_B6_reg ; G8 00346 movwf FSR 00347 clrf INDF 00348 btfsc in2,4 00349 comf INDF,f 00350 00351 movlw B7_B5_reg ; G9 00352 movwf FSR MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00353 clrf INDF 00354 btfsc in2,3 00355 comf INDF,f 00356 00357 movlw B6_B4_reg ; G10 00358 movwf FSR 00359 clrf INDF 00360 btfsc in2,2 00361 comf INDF,f 00362 00363 movlw B5_B4_reg ; G11 00364 movwf FSR 00365 clrf INDF 00366 btfsc in2,1 00367 comf INDF,f 00368 00369 movlw B6_B2_reg ; G12 00370 movwf FSR 00371 clrf INDF 00372 btfsc in2,0 00373 comf INDF,f 00374 #endif 00375 0541 0855 00376 movf speed,w 0542 23CC 00377 call strobe_delay 00378 0543 0008 00379 return 00380 04943 #endif 04944 04945 #ifdef DISPLAY_1BIT_I 04946 ;********************************************************************** 04947 display_1bit ; 12 LEDs, DI10 04948 ;********************************************************************** 04949 04950 movwf speed ;w has the speed/delay 04951 04952 clrf Ar_reg 04953 btfsc in1,5 ; 1 -> 11 (5 04954 comf Ar_reg,f 04955 04956 clrf Ag_reg 04957 btfsc in0,5 ; 5 -> 3 (5 04958 comf Ag_reg,f 04959 04960 clrf Ab_reg 04961 btfsc in1,6 ; 9 -> 10 (6 04962 comf Ab_reg,f 04963 04964 clrf Br_reg 04965 btfsc in1,4 ; 2 -> 12 (4 04966 comf Br_reg,f 04967 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04968 clrf Bg_reg 04969 btfsc in0,4 ; 6 - > 4 (4 04970 comf Bg_reg,f 04971 04972 clrf Bb_reg 04973 btfsc in1,7 ; 10 -> 9 (7 04974 comf Bb_reg,f 04975 04976 clrf Cr_reg 04977 btfsc in0,7 ; 3 -> 1 (7 04978 comf Cr_reg,f 04979 04980 clrf Cg_reg 04981 btfsc in0,3 ; 7 - > 5 (3 04982 comf Cg_reg,f 04983 04984 clrf Cb_reg 04985 btfsc in0,1 ; 11 -> 7 (1 04986 comf Cb_reg,f 04987 04988 clrf Dr_reg 04989 btfsc in0,6 ; 4 -> 2 (6 04990 comf Dr_reg,f 04991 04992 clrf Dg_reg 04993 btfsc in0,2 ; 8 - > 6 (2 04994 comf Dg_reg,f 04995 04996 clrf Db_reg 04997 btfsc in0,0 ; 12 -> 8 (0 04998 comf Db_reg,f 04999 05000 05001 movf speed,w 05002 call strobe_delay 05003 05004 return 05005 #endif 05006 05007 #ifdef DISPLAY_2BIT_A 05008 ;********************************************************************** 05009 display_2bit 05010 ;********************************************************************** 05011 movf speed,w ;enter here if repeat count is in speed 05012 display_w_2bit ;enter here if repeat count is in W reg 05013 05014 ; 76543210 <-- bits 05015 ; AABBCCDD <-- LEDs 05016 ; 01010101 <-- stays on for 1 unit - b'01' 05017 ; 10101010 <-- stays on for 2 units - b'10' 05018 ; 11111111 <-- stays on for 3 units - b'11' 05019 05020 ; in0 LEDs 1,2,3,4 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05021 ; in1 LEDs 5,6,C 05022 05023 05024 clrf Ar_reg 05025 movlw BRIGHT1 05026 btfsc in0,6 05027 addwf Ar_reg,f 05028 movlw BRIGHT2 05029 btfsc in0,7 05030 addwf Ar_reg,f 05031 05032 clrf Ag_reg 05033 movlw BRIGHT1 05034 btfsc in0,2 05035 addwf Ag_reg,f 05036 movlw BRIGHT2 05037 btfsc in0,3 05038 addwf Ag_reg,f 05039 05040 clrf Ab_reg 05041 movlw BRIGHT1 05042 btfsc in1,6 05043 addwf Ab_reg,f 05044 movlw BRIGHT2 05045 btfsc in1,7 05046 addwf Ab_reg,f 05047 05048 clrf Cr_reg 05049 movlw BRIGHT1 05050 btfsc in0,4 05051 addwf Cr_reg,f 05052 movlw BRIGHT2 05053 btfsc in0,5 05054 addwf Cr_reg,f 05055 05056 clrf Cg_reg 05057 movlw BRIGHT1 05058 btfsc in0,0 05059 addwf Cg_reg,f 05060 movlw BRIGHT2 05061 btfsc in0,1 05062 addwf Cg_reg,f 05063 05064 clrf Cb_reg 05065 movlw BRIGHT1 05066 btfsc in1,4 05067 addwf Cb_reg,f 05068 movlw BRIGHT2 05069 btfsc in1,5 05070 addwf Cb_reg,f 05071 05072 #ifdef BADGE 05073 clrf Center_reg MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05074 movlw BRIGHT1 05075 btfsc in1,2 05076 addwf Center_reg,f 05077 movlw BRIGHT2 05078 btfsc in1,3 05079 addwf Center_reg,f 05080 #endif 05081 05082 movf speed,w 05083 call strobe_delay 05084 movf speed,w 05085 call strobe_delay 05086 movf speed,w 05087 call strobe_delay 05088 05089 return 05090 #endif 05091 05092 #ifdef DISPLAY_2BIT_C 05093 ;********************************************************************** 05094 display_2bit 05095 ;********************************************************************** 05096 movf speed,w ;enter here if repeat count is in speed 05097 display_w_2bit ;enter here if repeat count is in W reg 05098 05099 ; 76543210 <-- bits 05100 ; AABBCCDD <-- LEDs 05101 ; 01010101 <-- stays on for 1 unit - b'01' 05102 ; 10101010 <-- stays on for 2 units - b'10' 05103 ; 11111111 <-- stays on for 3 units - b'11' 05104 05105 ; in0 red 05106 ; in1 green 05107 ; in2 blue 05108 05109 clrf Ar_reg 05110 movlw BRIGHT1 05111 btfsc in0,6 05112 addwf Ar_reg,f 05113 movlw BRIGHT2 05114 btfsc in0,7 05115 addwf Ar_reg,f 05116 05117 clrf Ag_reg 05118 movlw BRIGHT1 05119 btfsc in1,6 05120 addwf Ag_reg,f 05121 movlw BRIGHT2 05122 btfsc in1,7 05123 addwf Ag_reg,f 05124 05125 clrf Ab_reg 05126 movlw BRIGHT1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05127 btfsc in2,6 05128 addwf Ab_reg,f 05129 movlw BRIGHT2 05130 btfsc in2,7 05131 addwf Ab_reg,f 05132 05133 clrf Br_reg 05134 movlw BRIGHT1 05135 btfsc in0,4 05136 addwf Br_reg,f 05137 movlw BRIGHT2 05138 btfsc in0,5 05139 addwf Br_reg,f 05140 05141 clrf Bg_reg 05142 movlw BRIGHT1 05143 btfsc in1,4 05144 addwf Bg_reg,f 05145 movlw BRIGHT2 05146 btfsc in1,5 05147 addwf Bg_reg,f 05148 05149 clrf Bb_reg 05150 movlw BRIGHT1 05151 btfsc in2,4 05152 addwf Bb_reg,f 05153 movlw BRIGHT2 05154 btfsc in2,5 05155 addwf Bb_reg,f 05156 05157 clrf Cr_reg 05158 movlw BRIGHT1 05159 btfsc in0,2 05160 addwf Cr_reg,f 05161 movlw BRIGHT2 05162 btfsc in0,3 05163 addwf Cr_reg,f 05164 05165 clrf Cg_reg 05166 movlw BRIGHT1 05167 btfsc in1,2 05168 addwf Cg_reg,f 05169 movlw BRIGHT2 05170 btfsc in1,3 05171 addwf Cg_reg,f 05172 05173 clrf Cb_reg 05174 movlw BRIGHT1 05175 btfsc in2,2 05176 addwf Cb_reg,f 05177 movlw BRIGHT2 05178 btfsc in2,3 05179 addwf Cb_reg,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 136 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05180 05181 clrf Dr_reg 05182 movlw BRIGHT1 05183 btfsc in0,0 05184 addwf Dr_reg,f 05185 movlw BRIGHT2 05186 btfsc in0,1 05187 addwf Dr_reg,f 05188 05189 clrf Dg_reg 05190 movlw BRIGHT1 05191 btfsc in1,0 05192 addwf Dg_reg,f 05193 movlw BRIGHT2 05194 btfsc in1,1 05195 addwf Dg_reg,f 05196 05197 clrf Db_reg 05198 movlw BRIGHT1 05199 btfsc in2,0 05200 addwf Db_reg,f 05201 movlw BRIGHT2 05202 btfsc in2,1 05203 addwf Db_reg,f 05204 05205 #ifdef BADGE 05206 clrf Center_reg 05207 movlw BRIGHT1 05208 btfsc in3,6 05209 addwf Center_reg,f 05210 movlw BRIGHT2 05211 btfsc in3,7 05212 addwf Center_reg,f 05213 #endif 05214 05215 movf speed,w 05216 call strobe_delay 05217 movf speed,w 05218 call strobe_delay 05219 movf speed,w 05220 call strobe_delay 05221 05222 return 05223 #endif 05224 05225 #define BRIGHT1H 0xA0 05226 #define BRIGHT2H 0x40 05227 05228 #ifdef DISPLAY_2BIT_D 05229 #include display_2bit_d 05230 #endif 05231 05232 #ifdef DISPLAY_2BIT_E MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 137 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05233 #include display_2bit_e 05234 #endif 05235 05236 #ifdef DISPLAY_1BIT_E 05237 ;********************************************************************** 05238 display_1bit ; RGB Stick (14 * 3 = 42 LEDs 05239 ;********************************************************************** 05240 var temp4 05241 05242 movwf speed ;w has the speed/delay 05243 05244 ; set all var 0xA0 to 0xEF to zero 05245 movlw 0xA0 05246 movwf FSR 05247 05248 movlw 0x50 05249 movwf temp4 05250 05251 clr_loop 05252 05253 clrf INDF 05254 incf FSR,f 05255 decfsz temp4,f 05256 goto clr_loop 05257 05258 pageselw rgb_stick_expand 05259 call rgb_stick_expand 05260 pageselw display_1bit 05261 05262 movf speed,w 05263 call strobe_delay 05264 05265 return 05266 #endif 05267 05268 ;********************************************************************** 05269 ; IR Tester 05270 ;********************************************************************** 0544 05271 IR_Tester 0544 05272 itop 0544 3002 05273 movlw 0x02 0545 0226 05274 subwf instate,w 0546 1C03 05275 btfss STATUS,C 0547 0103 05276 clrw 0548 00CF 05277 movwf in0 05278 0549 3000 05279 movlw 0x00 054A 00D0 05280 movwf in1 05281 054B 3001 05282 movlw 0x01 054C 24C8 05283 call display_1bit 05284 05285 ; MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 138 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05286 ; Check for push button 05287 ; 054D 05288 ibutton 054D 082D 05289 movf button,w 054E 1903 05290 btfsc STATUS,Z 054F 2D60 05291 goto iloop1 0550 01A7 05292 clrf max_instate 0551 01A6 05293 clrf instate 05294 0552 083D 05295 movf scount,w ; if sending an IR command ignore button 0553 3E00 05296 addlw 0 ; not sure if needed 0554 1D03 05297 btfss STATUS,Z 0555 2D4D 05298 goto ibutton 05299 0556 082D 05300 movf button,w ; 2st 8 bits are the buttons 0557 00D0 05301 movwf in1 0558 01CF 05302 clrf in0 ; next 8 are zero 05303 ; movlw 0x80 05304 ; movwf in2 ; led 17 is on 05305 05306 #ifdef M8X16 05307 movfw button 05308 movwf in3 05309 #endif 05310 0559 3001 05311 movlw 0x01 055A 24C8 05312 call display_1bit 05313 05314 ; send an IR signel 055B 01B5 05315 clrf out_address ; address 0x00 "TV remote" 05316 05317 #ifdef M3X3 05318 05319 movlw 0x03 ; if button 3 & 4 presses 05320 subwf button,w 05321 btfsc STATUS,Z 05322 goto mode_loop 05323 05324 btfsc button,0 ; if button 3 pressed 05325 goto send_chan_up 05326 05327 btfsc button,1 ; if button 4 pressed 05328 goto send_chan_down 05329 05330 btfsc button,2 ; if button 1 pressed 05331 goto send_vol_up 05332 05333 btfsc button,3 ; if button 2 pressed 05334 goto send_vol_down 05335 05336 btfsc button,4 ; if button 5 pressed 05337 goto send_on_off 05338 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 139 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05339 send_chan_up 05340 movlw 0x20 05341 movwf out_command ; code 0x0c (on/off) 05342 call rf_command_out 05343 goto ibutton 05344 05345 send_chan_down 05346 movlw 0x21 05347 movwf out_command ; code 0x0c (on/off) 05348 call rf_command_out 05349 goto ibutton 05350 05351 send_vol_up 05352 movlw 0x10 05353 movwf out_command ; code 0x0c (on/off) 05354 call rf_command_out 05355 goto ibutton 05356 05357 send_vol_down 05358 movlw 0x11 05359 movwf out_command ; code 0x0c (on/off) 05360 call rf_command_out 05361 goto ibutton 05362 05363 #endif 05364 055C 05365 send_on_off 055C 300C 05366 movlw 0x0c 055D 00B6 05367 movwf out_command ; code 0x0c (on/off) 055E 2353 05368 call rf_command_out 055F 2D4D 05369 goto ibutton 05370 05371 05372 ; 05373 ; Check for IR Command 05374 ; 0560 05375 iloop1 0560 1C30 05376 btfss IR_in_good,0 0561 2D44 05377 goto itop 0562 01B0 05378 clrf IR_in_good 05379 05380 ; flash all LEDs Red 0563 30F0 05381 movlw 0xF0 0564 00CF 05382 movwf in0 0565 01D0 05383 clrf in1 05384 0566 307F 05385 movlw 0x7f 0567 24C8 05386 call display_1bit 05387 05388 ; flash all LEDs off 0568 01CF 05389 clrf in0 0569 01D0 05390 clrf in1 05391 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 140 LOC OBJECT CODE LINE SOURCE TEXT VALUE 056A 303F 05392 movlw 0x3f 056B 24C8 05393 call display_1bit 05394 05395 ; flash all LEDs Red 056C 30F0 05396 movlw 0xF0 056D 00CF 05397 movwf in0 056E 01D0 05398 clrf in1 05399 056F 307F 05400 movlw 0x7f 0570 24C8 05401 call display_1bit 05402 05403 ; display command and address 0571 0829 05404 movf command,w 0572 00CF 05405 movwf in0 0573 082A 05406 movf address,w 0574 00D0 05407 movwf in1 05408 0575 30FF 05409 movlw 0xff 0576 24C8 05410 call display_1bit 0577 30FF 05411 movlw 0xff 0578 24C8 05412 call display_1bit 0579 01A7 05413 clrf max_instate 057A 01A6 05414 clrf instate 05415 057B 2D44 05416 goto itop 05417 05418 05419 #ifdef M3X3 05420 ;********************************************************************** 05421 Dice 05422 ;********************************************************************** 05423 var temp 05424 05425 call roll_dice 05426 dice_loop 05427 05428 movlw 0x03 ; if button 3 & 4 presses 05429 subwf button,w 05430 btfsc STATUS,Z 05431 goto mode_loop 05432 05433 btfsc button,0 ; if button 1 pressed 05434 call roll_dice 05435 05436 movlw 0x01 05437 subwf temp,w 05438 btfsc STATUS,Z 05439 goto diplay_1 05440 05441 movlw 0x02 05442 subwf temp,w 05443 btfsc STATUS,Z 05444 goto diplay_2 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 141 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05445 05446 movlw 0x03 05447 subwf temp,w 05448 btfsc STATUS,Z 05449 goto diplay_3 05450 05451 movlw 0x04 05452 subwf temp,w 05453 btfsc STATUS,Z 05454 goto diplay_4 05455 05456 movlw 0x05 05457 subwf temp,w 05458 btfsc STATUS,Z 05459 goto diplay_5 05460 05461 movlw 0x06 05462 subwf temp,w 05463 btfsc STATUS,Z 05464 goto diplay_6 05465 05466 ; get random number 0-7 re-roll if we get a 0 or 7. 05467 call roll_dice 05468 goto dice_loop 05469 05470 05471 diplay_1 05472 clrf in0 05473 movlw b'11000000' 05474 movwf in1 05475 clrf in2 05476 goto dice_display_digit 05477 05478 diplay_2 05479 movlw b'00001100' 05480 movwf in0 05481 movwf in1 05482 clrf in2 05483 goto dice_display_digit 05484 05485 diplay_3 05486 movlw b'00001100' 05487 movwf in0 05488 movlw b'11001100' 05489 movwf in1 05490 clrf in2 05491 goto dice_display_digit 05492 05493 diplay_4 05494 movlw b'11001100' 05495 movwf in0 05496 movwf in2 05497 movlw b'00001100' MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 142 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05498 movwf in1 05499 goto dice_display_digit 05500 05501 diplay_5 05502 movlw b'11001100' 05503 movwf in0 05504 movwf in1 05505 movwf in1 05506 goto dice_display_digit 05507 05508 diplay_6 05509 movlw b'11001111' 05510 movwf in0 05511 movwf in2 05512 movlw b'00111100' 05513 movwf in1 05514 05515 dice_display_digit 05516 movlw 0xff 05517 call display_1bit 05518 05519 goto dice_loop 05520 05521 05522 roll_dice 05523 incf temp2,f 05524 call gen_random 05525 movlw b'01010101' 05526 movwf in0 05527 movwf in1 05528 movwf in2 05529 05530 movlw 0xff 05531 call display_1bit 05532 05533 movlw b'10101010' 05534 movwf in0 05535 movwf in1 05536 movwf in2 05537 05538 movlw 0xff 05539 call display_1bit 05540 05541 btfsc button,0 ; if button 1 pressed 05542 goto roll_dice 05543 05544 movfw random 05545 addwf count1,w 05546 addwf temp2,w 05547 movwf temp 05548 rrf temp,f 05549 movlw 0x07 05550 andwf temp,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 143 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05551 05552 return 05553 05554 #endif 05555 05556 ; 05557 ; M A I N 05558 ; 05559 ;********************************************************************** 057C 05560 main 05561 ;********************************************************************** 057C 018C 05562 clrf PORTA 057D 0195 05563 clrf TMR0 057E 01CD 05564 clrf pattern 05565 ; movlw 0x05 05566 ; movwf pattern 057F 01BD 05567 clrf scount 0580 01AB 05568 clrf toggle 0581 01AA 05569 clrf address 0582 01A9 05570 clrf command 0583 01AC 05571 clrf IR_lhalf 0584 01A6 05572 clrf instate 0585 01A7 05573 clrf max_instate 0586 01B0 05574 clrf IR_in_good 0587 01A1 05575 clrf dcycle 0588 01A2 05576 clrf count1 0589 01A3 05577 clrf count2 058A 01AD 05578 clrf button 05579 #ifdef PATTERN2 05580 clrf delay1 05581 clrf fad 05582 clrf color 05583 #endif 05584 #ifndef C12 05585 #ifndef C19 05586 #ifndef M3X3 05587 #ifdef MONO 05588 clrf Br_reg 05589 clrf Bg_reg 05590 clrf Bb_reg 05591 clrf Dr_reg 05592 clrf Dg_reg 05593 clrf Db_reg 05594 #endif 05595 #endif 05596 #endif 05597 #endif 05598 058B 0021 05599 BANKSEL OSCCON 05600 #ifdef __16F886 05601 movlw b'01110001' ;switch to 8 MHz clock 05602 #else 05603 #ifdef __16F1936 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 144 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05604 05605 ; +------------- PPL disable (0) 05606 ; |++++--------- OSC 8MHZ (1110) 05607 ; ||||| ++------ System Clock Internal (1x) 05608 ; ||||| || 058C 3072 05609 movlw b'01110010' ;switch to 8 MHz clock 05610 #else 05611 #endif 05612 #endif 058D 0099 05613 movwf OSCCON 05614 05615 #ifdef __16F886 05616 BANKSEL ANSEL 05617 clrf ANSEL ;set pins to digital 05618 clrf ANSELH ;set pins to digital 05619 #else 05620 #ifdef __16F1936 058E 0023 05621 BANKSEL ANSEL 058F 018C 05622 clrf ANSEL ;set pins to digital 0590 0022 05623 BANKSEL LATA 0591 018C 05624 clrf LATA 05625 0592 0022 05626 BANKSEL LATB 0593 018D 05627 clrf LATB 0594 0023 05628 BANKSEL ANSELB 0595 018D 05629 clrf ANSELB 05630 #else 05631 BANKSEL ANSEL 05632 clrf ANSEL ;set pins to digital 05633 #endif 05634 #endif 05635 05636 0596 0021 05637 BANKSEL OPTION_REG 05638 05639 ; set up TMR0 & pullups 05640 ; +---------- disable pullups (1) 05641 ; |+--------- interrupt edge select (don't care) 05642 ; ||+-------- TMR0 source = internal clock (0) 05643 ; |||+------- TMR0 source edge select (don't care) 05644 ; ||||+------ assign prescaler to TMR0 (0) 05645 ; |||||+++--- prescaler set to 8X (010) 05646 ; |||||||| 0597 3082 05647 movlw b'10000010' 0598 0095 05648 movwf OPTION_REG 05649 05650 #ifdef C19 05651 ; enable pullups on portA 05652 bcf OPTION_REG,NOT_RAPU 05653 05654 ; input on A5 05655 clrf WPUA ; disable all pullups 05656 bsf WPUA,5 ; enable pullup A5 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 145 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05657 #endif 05658 05659 #ifdef SRGB 05660 ; enable pullups on portA 05661 bcf OPTION_REG,NOT_RAPU 05662 05663 ; input on A5 05664 clrf WPUA ; disable all pullups 05665 bsf WPUA,5 ; enable pullup A5 05666 bsf WPUA,4 ; enable pullup A4 05667 #endif 05668 05669 #ifdef C12 05670 ; BANKSEL OPTION_REG 05671 ; bsf OPTION_REG, NOT_RBPU 05672 ; 05673 ; input C7,C5 buttons 05674 ; input C6 IR. 0599 0021 05675 BANKSEL TRISC 059A 30E0 05676 movlw b'11100000' 059B 008E 05677 movwf TRISC ; C7,C6,C5 input 05678 #endif 05679 05680 #ifdef M8X16 05681 ; E1 - IR/Button 05682 ; C2 - Button2 05683 ; C1 - IR out 05684 ; C3/C4 - I2C 05685 ; C0,C5,C6,C7 - strobe select output 05686 BANKSEL TRISC 05687 movlw b'00011100' 05688 movwf TRISC ; C7,C6,C5,C1,C0 output 05689 clrf TRISA ; all A output 05690 clrf TRISB ; all B output 05691 movlw b'00001000' 05692 movwf TRISE ; E3 input 05693 #endif 05694 05695 #ifdef D10 05696 ; A0,A1,A2,A4 - LEDs 05697 ; A3,A5 Push Button 05698 BANKSEL TRISA 05699 movlw b'00101000' 05700 movwf TRISA 05701 05702 ; enable pullups on portA 05703 BANKSEL OPTION_REG 05704 bcf OPTION_REG,NOT_RAPU 05705 05706 ; input on A5 05707 BANKSEL WPUA 05708 clrf WPUA ; disable all pullups 05709 bsf WPUA,5 ; enable pullup A5 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 146 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05710 bsf WPUA,3 ; enable pullup A3 05711 05712 BANKSEL CMCON0 05713 movlw 0x07 05714 movwf CMCON0 05715 05716 BANKSEL ANSEL 05717 clrf ANSEL ;set pins to digital 05718 #endif 05719 05720 059C 0020 05721 BANKSEL button 059D 01AD 05722 clrf button 05723 05724 #ifdef RANDOM 059E 301D 05725 movlw 0x1D 059F 00D9 05726 movwf random 05727 #endif 05728 05729 ; enable timer0 interupt 05730 #ifdef __16F1936 05A0 168B 05731 bsf INTCON,TMR0IE 05732 #else 05733 bsf INTCON,T0IE 05734 #endif 05A1 178B 05735 bsf INTCON,GIE 05736 05737 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 05738 #ifdef M8X16 05739 #ifdef __16F1936 05740 movlw LOW in0 ; shift down in1f->in0 05741 movwf FSR0L 05742 movlw HIGH in0 05743 movwf FSR0H 05744 #else 05745 movlw in0 05746 movwf FSR 05747 #endif 05748 movlw 0x20 05749 movwf fcount1 05750 05751 movlw 0xFF 05752 loop_set_on 05753 movwf INDF 05754 #ifdef __16F1936 05755 incf FSR0L,f 05756 #else 05757 incf FSR,f 05758 #endif 05759 decfsz fcount1,f 05760 goto loop_set_on 05761 #else 05A2 30FF 05762 movlw b'11111111' MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 147 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05763 05A3 00CF 05764 movwf in0 05A4 00D0 05765 movwf in1 05A5 00D1 05766 movwf in2 05767 #ifdef C19 05768 movwf in3 05769 movwf in4 05770 #endif 05771 #ifdef SRGB 05772 movwf in3 05773 movwf in4 05774 movwf in5 05775 #endif 05776 #endif 05777 05778 #ifdef C12a ; going to flash the config1 value! 05779 movfw config1 05780 movwf fcount1 ; flash 1 - mono single, 2 - mono dual 3 - bi single or 4 - bi dual 05781 incf fcount1,f 05782 05783 flash_loop 05784 movlw b'10101010' 05785 movwf in0 05786 movwf in1 05787 movwf in2 05788 movwf in3 05789 movwf in4 05790 05791 movlw 0xff 05792 call display_1bit 05793 movlw 0xff 05794 call display_1bit 05795 05796 movlw b'01010101' 05797 movwf in0 05798 movwf in1 05799 movwf in2 05800 movwf in3 05801 movwf in4 05802 05803 movlw 0xff 05804 call display_1bit 05805 movlw 0xff 05806 call display_1bit 05807 05808 decfsz fcount1,f 05809 goto flash_loop 05810 05811 movlw b'11111111' 05812 movwf in0 05813 movwf in1 05814 movwf in2 05815 movwf in3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 148 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05816 movwf in4 05817 05818 #endif 05819 05820 05A6 30FF 05821 movlw 0xff ; allways flash once 05A7 24C8 05822 call display_1bit 05A8 30FF 05823 movlw 0xff 05A9 24C8 05824 call display_1bit 05825 05826 #ifdef M3X3 ; have to wait for the IR to go high, and the buttons to de-bounce on 3x3 po werup 05827 movlw 0xff 05828 call display_1bit 05829 movlw 0xff 05830 call display_1bit 05831 #endif 05832 05833 05834 ; Trun all the LEDs off 05835 #ifdef M8X16 05836 #ifdef __16F1936 05837 movlw LOW in0 ; shift down in1f->in0 05838 movwf FSR0L 05839 movlw HIGH in0 05840 movwf FSR0H 05841 #else 05842 movlw in0 05843 movwf FSR 05844 #endif 05845 movlw 0x20 05846 movwf fcount1 05847 05848 movlw 0x00 05849 loop_set_off 05850 movwf INDF 05851 #ifdef __16F1936 05852 incf FSR0L,f 05853 #else 05854 incf FSR,f 05855 #endif 05856 decfsz fcount1,f 05857 goto loop_set_off 05858 #else 05AA 01CF 05859 clrf in0 05AB 01D0 05860 clrf in1 05AC 01D1 05861 clrf in2 05862 #ifdef C19 05863 clrf in3 05864 clrf in4 05865 #endif 05866 #ifdef SRGB 05867 clrf in3 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 149 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05868 clrf in4 05869 clrf in5 05870 #endif 05871 #endif 05AD 30FF 05872 movlw 0xff 05AE 24C8 05873 call display_1bit 05AF 30FF 05874 movlw 0xff 05B0 24C8 05875 call display_1bit 05B1 30FF 05876 movlw 0xff 05B2 24C8 05877 call display_1bit 05878 05B3 243B 05879 call read_demo_mode 05880 05B4 082D 05881 movfw button 05B5 00D0 05882 movwf in1 05B6 30FF 05883 movlw 0xff 05B7 24C8 05884 call display_1bit 05B8 30FF 05885 movlw 0xff 05B9 24C8 05886 call display_1bit 05887 05888 05889 05890 #ifndef M3X3 05891 ; if button pressed durring powerup run IR_Tester 05892 ; else run pattern driver 05893 ; 05BA 1C2D 05894 btfss button,0 05BB 2C4D 05895 goto pattern_driver 05BC 243F 05896 call toggle_demo 05897 #ifdef ENABLE_IR 05BD 2D44 05898 goto IR_Tester 05899 #else 05900 goto pattern_driver 05901 #endif 05902 #else 05903 ; 05904 ; 3X3 mode selection logic 05905 ; 05906 var mode 05907 #define MAX_MODE 3 05908 clrf mode 05909 05910 movfw button ; if no button go to pattern mode. 05911 btfsc STATUS,Z 05912 goto pattern_driver 05913 05914 mode_loop 05915 05916 ; 05917 ; Dsiplay the Mode in LEDs 7,8 and 9 05918 ; 05919 clrf in0 05920 incf mode,w MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 150 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05921 movwf b2l_in_green 05922 clrf b2l_in_red 05923 call bin2led 05924 movf b2l_out_hi,w 05925 movwf in1 05926 movf b2l_out_low,w 05927 movwf in2 05928 rrf in1,f 05929 rrf in2,f 05930 rrf in1,f 05931 rrf in2,f 05932 rrf in1,f 05933 rrf in2,f 05934 rrf in1,f 05935 rrf in2,f 05936 05937 movlw 0xff 05938 call display_1bit 05939 05940 movlw 0xff 05941 call display_1bit 05942 05943 btfsc button,0 ; if button 1 pressed inc pattern 05944 call next_mode 05945 05946 btfsc button,1 ; if button 2 pressed dec pattern 05947 call past_mode 05948 ; 05949 ; missing bound check on up/down of pattern. 05950 ; 05951 btfsc button,4 ; if button 5 try to exit 05952 goto mode_loop2 05953 05954 goto mode_loop 05955 05956 mode_loop2 05957 05958 movlw 0x00 ; mode=0 05959 subwf mode,w 05960 btfsc STATUS,Z 05961 goto pattern_driver 05962 05963 movlw 0x01 ; mode=1 05964 subwf mode,w 05965 btfsc STATUS,Z 05966 goto IR_Tester 05967 05968 05969 movlw 0x02 ; mode=2 05970 subwf mode,w 05971 btfsc STATUS,Z 05972 goto Dice 05973 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 151 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05974 ; movlw 0x02 ; mode=3 05975 ; subwf mode,w 05976 ; btfsc STATUS,Z 05977 ; goto TicTacToe 05978 05979 goto mode_loop 05980 #endif 05981 05982 #ifdef M3X3 05983 ;********************************************************************** 05984 next_mode 05985 ;********************************************************************** 05986 incf mode,f 05987 movf mode,w 05988 sublw MAX_MODE ; max pattern? 05989 btfsc STATUS,2 ; z bit check 05990 clrf mode ; reset to zero 05991 return 05992 05993 ;********************************************************************** 05994 past_mode 05995 ;********************************************************************** 05996 decf mode,f 05997 movf mode,w 05998 addlw 1 ; max pattern? 05999 btfss STATUS,2 ; z bit check 06000 goto mode_past_exit 06001 movlw MAX_MODE-1 06002 movwf mode 06003 mode_past_exit 06004 return 06005 06006 06007 #endif 06008 06009 ;********************************************************************** 05BE 06010 table_lookup 06011 ;********************************************************************** 05BE 0848 06012 movf tbl_hi,w 05BF 008A 06013 movwf PCLATH 05C0 087B 06014 movf pindex,w 05C1 0749 06015 addwf tbl_low,w 05C2 1803 06016 btfsc STATUS,0 ; check carry flag 05C3 0A8A 06017 incf PCLATH,f 05C4 0082 06018 movwf PCL 06019 06020 ;********************************************************************** 05C5 06021 jump_address 06022 ;********************************************************************** 06023 ; Portability : clean 06024 ; 06025 var offset_hi 0000005B M offset_hi equ mem MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 152 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000005C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 06026 var offset_low 0000005C M offset_low equ mem 0000005D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 06027 05C5 080A 06028 movf PCLATH,w 05C6 00CB 06029 movwf pclath_save 05C7 085B 06030 movf offset_hi,w 05C8 008A 06031 movwf PCLATH 06032 05C9 085C 06033 movf offset_low, w 05CA 0082 06034 movwf PCL 06035 06036 06037 ;********************************************************************** 05CB 06038 MasterTable 06039 ;********************************************************************** 06040 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 05CB 3408 34B2 M dt HIGH table0, LOW table0 00000001 M i += 1 05CD 3408 34FD M dt HIGH table1, LOW table1 00000002 M i += 1 05CF 3409 3412 M dt HIGH table2, LOW table2 00000003 M i += 1 05D1 3409 345D M dt HIGH table3, LOW table3 00000004 M i += 1 05D3 3409 3478 M dt HIGH table4, LOW table4 00000005 M i += 1 05D5 3409 34DB M dt HIGH table5, LOW table5 00000006 M i += 1 05D7 3409 34F0 M dt HIGH table6, LOW table6 00000007 M i += 1 05D9 340A 3423 M dt HIGH table7, LOW table7 00000008 M i += 1 05DB 340A 3438 M dt HIGH table8, LOW table8 00000009 M i += 1 05DD 340A 344D M dt HIGH table9, LOW table9 0000000A M i += 1 05DF 340A 3474 M dt HIGH table10, LOW table10 0000000B M i += 1 05E1 340B 342B M dt HIGH table11, LOW table11 0000000C M i += 1 05E3 340B 347C M dt HIGH table12, LOW table12 0000000D M i += 1 05E5 340B 34CD M dt HIGH table13, LOW table13 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 153 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000000E M i += 1 05E7 340B 34F4 M dt HIGH table14, LOW table14 0000000F M i += 1 M endw 06041 06042 06043 #ifdef PATTERN16 06044 #define BRIGHT1_lo 0x04 06045 #define BRIGHT2_lo 0x0A 06046 #define BRIGHT1_hi 0x40 06047 #define BRIGHT2_hi 0xA0 06048 06049 ;********************************************************************** 06050 table_type_16 06051 ;********************************************************************** 06052 ; 06053 ; 1 bytes 06054 ; 06055 ; ABBCCCCC 06056 ; 06057 ; A = shire Right/Left 06058 ; BB = two bit intensity to shift on 06059 ; CCCCC = Number of shifts to loop 06060 ; 06061 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 06062 06063 var t7count 06064 var t17_loop 06065 06066 pageselw get_next_pattern_entry 06067 call get_next_pattern_entry 06068 movwf in0 06069 06070 call get_next_pattern_entry 06071 movwf in1 06072 pageselw table_type_16 06073 06074 movlw b'00011111' 06075 andwf in0,w 06076 movwf t7count 06077 06078 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 06079 subwf t7count,w 06080 btfss STATUS,Z 06081 goto t7_loop_red 06082 06083 clrf in0 ; quick way to clear all the LEDS. 06084 clrf in1 06085 clrf in2 06086 clrf in3 06087 clrf in4 06088 clrf in5 06089 pageselw display_1bit MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 154 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06090 call display_1bit 06091 pageselw table_type_16 06092 goto t7_return 06093 06094 t7_loop_red 06095 btfsc in0,7 06096 goto t7_set19_red 06097 06098 call red_up 06099 goto t7_loop_green 06100 06101 t7_set19_red 06102 06103 call red_down 06104 06105 t7_loop_green 06106 btfsc in0,6 06107 goto t7_set19_green 06108 06109 call green_up 06110 06111 goto t7_loop_blue 06112 ; 06113 ; set LED 19 06114 t7_set19_green 06115 06116 call green_down 06117 06118 t7_loop_blue 06119 06120 btfsc in0,5 06121 goto t7_set19_blue 06122 06123 call blue_up 06124 06125 goto t7_cont 06126 ; 06127 ; set LED 19 06128 t7_set19_blue 06129 call blue_dowm 06130 t7_cont 06131 pageselw strobe_delay 06132 movf pspeed,w 06133 call strobe_delay 06134 pageselw t7_cont 06135 ; 06136 ; This is a quick hack, because without this button presses are not seen for minutes 06137 ; This early exit might impact the pattern getting displayed. 06138 ; 06139 btfsc button,0 ; if putton pressed show pattern id 06140 goto t7_return 06141 06142 btfsc IR_in_good,0 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 155 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06143 goto t7_return 06144 06145 decfsz t7count,f 06146 goto t7_loop_red 06147 06148 t7_return 06149 return 06150 06151 ;********************************************************************** 06152 red_up 06153 ;********************************************************************** 06154 06155 movlw 0x0d 06156 movwf t17_loop 06157 06158 movlw A2_C1_reg ; index = 13 R 06159 movwf FSR 06160 06161 red_up_loop 06162 movfw INDF ; load R [index] 06163 incf FSR,f ; index ++ 06164 movwf INDF ; store R [index] 06165 06166 decf FSR,f ; index - 2 06167 decf FSR,f 06168 06169 decfsz t17_loop,f 06170 goto red_up_loop 06171 ; 06172 ; 01 Red 06173 ; 06174 incf FSR,f 06175 clrf INDF 06176 movlw BRIGHT1 06177 btfsc in1,6 06178 addwf INDF,f ;01 06179 movlw BRIGHT2 06180 btfsc in1,7 06181 addwf INDF,f ;01 06182 06183 return 06184 06185 ;********************************************************************** 06186 red_down 06187 ;********************************************************************** 06188 06189 movlw 0x0d 06190 movwf t17_loop 06191 06192 movlw C2_C3_reg ; index = 02 R 06193 movwf FSR 06194 06195 red_down_loop MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 156 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06196 movfw INDF ; load R [index] 06197 decf FSR,f ; index - 1 06198 movwf INDF ; store R [index] 06199 06200 incf FSR,f ; index + 2 06201 incf FSR,f 06202 06203 decfsz t17_loop,f 06204 goto red_down_loop 06205 ; 06206 ; 14 Red 06207 ; 06208 decf FSR,f 06209 clrf INDF 06210 movlw BRIGHT1 06211 btfsc in1,6 06212 addwf INDF,f ;01 06213 movlw BRIGHT2 06214 btfsc in1,7 06215 addwf INDF,f ;01 06216 06217 return 06218 06219 ;********************************************************************** 06220 green_up 06221 ;********************************************************************** 06222 06223 movlw 0x0d 06224 movwf t17_loop 06225 06226 movlw C4_C1_reg ; index = 13 G 06227 movwf FSR 06228 06229 green_up_loop 06230 movfw INDF ; load G [index] 06231 incf FSR,f ; index ++ 06232 movwf INDF ; store G [index] 06233 06234 decf FSR,f ; index - 2 06235 decf FSR,f 06236 06237 decfsz t17_loop,f 06238 goto green_up_loop 06239 ; 06240 ; 01 Green 06241 ; 06242 incf FSR,f 06243 clrf INDF 06244 movlw BRIGHT1 06245 btfsc in1,4 06246 addwf INDF,f ;01 06247 movlw BRIGHT2 06248 btfsc in1,5 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 157 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06249 addwf INDF,f ;01 06250 06251 return 06252 06253 ;********************************************************************** 06254 green_down 06255 ;********************************************************************** 06256 06257 movlw 0x0d 06258 movwf t17_loop 06259 06260 movlw C0_C3_reg ; index = 02 Green 06261 movwf FSR 06262 06263 green_down_loop 06264 movfw INDF ; load R [index] 06265 decf FSR,f ; index - 1 06266 movwf INDF ; store R [index] 06267 06268 incf FSR,f ; index + 2 06269 incf FSR,f 06270 06271 decfsz t17_loop,f 06272 goto green_down_loop 06273 ; 06274 ; 14 Green 06275 ; 06276 decf FSR,f 06277 clrf INDF 06278 movlw BRIGHT1 06279 btfsc in1,4 06280 addwf INDF,f ;01 06281 movlw BRIGHT2 06282 btfsc in1,5 06283 addwf INDF,f ;01 06284 06285 return 06286 06287 06288 ;********************************************************************** 06289 blue_up 06290 ;********************************************************************** 06291 06292 movlw 0x0d 06293 movwf t17_loop 06294 06295 movlw C2_C1_reg ; index = 13 G 06296 movwf FSR 06297 06298 blue_up_loop 06299 movfw INDF ; load G [index] 06300 incf FSR,f ; index ++ 06301 movwf INDF ; store G [index] MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 158 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06302 06303 decf FSR,f ; index - 2 06304 decf FSR,f 06305 06306 decfsz t17_loop,f 06307 goto blue_up_loop 06308 ; 06309 ; 01 blue 06310 ; 06311 incf FSR,f 06312 clrf INDF 06313 movlw BRIGHT1 06314 btfsc in1,2 06315 addwf INDF,f ;01 06316 movlw BRIGHT2 06317 btfsc in1,3 06318 addwf INDF,f ;01 06319 06320 return 06321 06322 06323 ;********************************************************************** 06324 blue_dowm 06325 ;********************************************************************** 06326 06327 movlw 0x0d 06328 movwf t17_loop 06329 06330 movlw C4_C3_reg ; index = 02 Blue 06331 movwf FSR 06332 06333 blue_down_loop 06334 movfw INDF ; load R [index] 06335 decf FSR,f ; index - 1 06336 movwf INDF ; store R [index] 06337 06338 incf FSR,f ; index + 2 06339 incf FSR,f 06340 06341 decfsz t17_loop,f 06342 goto blue_down_loop 06343 ; 06344 ; 14 Green 06345 ; 06346 decf FSR,f 06347 clrf INDF 06348 movlw BRIGHT1 06349 btfsc in1,2 06350 addwf INDF,f ;01 06351 movlw BRIGHT2 06352 btfsc in1,3 06353 addwf INDF,f ;01 06354 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 159 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06355 return 06356 #endif 06357 06358 ; 06359 ; These are down here for memory placement 06360 ; 06361 06362 #ifdef DISPLAY_1BIT_E 06363 #include display_1bit_e_part2 06364 #endif 06365 06366 #ifdef PATTERN17 06367 #include pattern_17_part2.asm 06368 #endif 06369 06370 #ifdef PATTERN18 06371 #include pattern_18.asm 06372 #endif 06373 06374 #ifdef PATTERN20 06375 #include pattern_20.asm 06376 #endif 06377 06378 #ifdef PATTERN21 06379 #include pattern_21.asm 06380 #endif 06381 06382 #ifdef C12 0800 06383 ORG 0x800 06384 #endif 06385 06386 #ifdef PATTERN27 06387 #include "pattern_27.asm" 00001 ;********************************************************************** 0800 00002 table_type_27 ; dual 12 circle fader 00003 ;********************************************************************** 0800 0856 00004 movfw pspeed 0801 00D5 00005 movwf speed ;w has the speed/delay 00006 ; 00007 ; going to break good coding rules for compact code, reorder or move 00008 ; the Led_xxx vars and you break the code! 00009 ; 00010 00011 dupvar p27_loop, b2l_out_low 0000003F M p27_loop equ b2l_out_low 00012 00013 #ifdef __16F1936 0802 3183 00014 MOVLP high get_next_pattern_entry 00015 #else 00016 pageselw get_next_pattern_entry 00017 #endif Message[306]: Crossing page boundary -- ensure page bits are set. 0803 23FB 00018 call get_next_pattern_entry MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 160 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0804 00CF 00019 movwf in0 00020 Message[306]: Crossing page boundary -- ensure page bits are set. 0805 23FB 00021 call get_next_pattern_entry 0806 00D0 00022 movwf in1 00023 Message[306]: Crossing page boundary -- ensure page bits are set. 0807 23FB 00024 call get_next_pattern_entry 0808 00D1 00025 movwf in2 00026 Message[306]: Crossing page boundary -- ensure page bits are set. 0809 23FB 00027 call get_next_pattern_entry 080A 00D2 00028 movwf in3 00029 Message[306]: Crossing page boundary -- ensure page bits are set. 080B 23FB 00030 call get_next_pattern_entry 080C 00D3 00031 movwf in4 00032 Message[306]: Crossing page boundary -- ensure page bits are set. 080D 23FB 00033 call get_next_pattern_entry 080E 00D4 00034 movwf in5 00035 #ifdef __16F1936 080F 3188 00036 MOVLP high table_type_27 00037 #else 00038 pageselw table_type_27 00039 #endif 00040 00041 ; hardcode count to 64 0810 3064 00042 movlw 0x64 0811 00BF 00043 movwf p27_loop 00044 0812 00045 t27_loop2 00046 00047 #ifndef SINGLE 0812 30AE 00048 movlw A3_A4_reg ; R1 0813 0084 00049 movwf FSR 0814 1BD2 00050 btfsc in3,7 0815 20AA 00051 call p27_led_up 0816 1FD2 00052 btfss in3,7 0817 20AE 00053 call p27_led_down 00054 0818 30B3 00055 movlw A4_A5_reg ; R2 0819 0084 00056 movwf FSR 081A 1B52 00057 btfsc in3,6 081B 20AA 00058 call p27_led_up 081C 1F52 00059 btfss in3,6 081D 20AE 00060 call p27_led_down 00061 081E 30AF 00062 movlw A3_A5_reg ; R3 081F 0084 00063 movwf FSR 0820 1AD2 00064 btfsc in3,5 0821 20AA 00065 call p27_led_up 0822 1ED2 00066 btfss in3,5 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 161 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0823 20AE 00067 call p27_led_down 00068 0824 30AB 00069 movlw A2_A4_reg ; R4 0825 0084 00070 movwf FSR 0826 1A52 00071 btfsc in3,4 0827 20AA 00072 call p27_led_up 0828 1E52 00073 btfss in3,4 0829 20AE 00074 call p27_led_down 00075 082A 30AA 00076 movlw A2_A3_reg ; R5 082B 0084 00077 movwf FSR 082C 19D2 00078 btfsc in3,3 082D 20AA 00079 call p27_led_up 082E 1DD2 00080 btfss in3,3 082F 20AE 00081 call p27_led_down 00082 0830 30A2 00083 movlw A0_A4_reg ; R6 0831 0084 00084 movwf FSR 0832 1952 00085 btfsc in3,2 0833 20AA 00086 call p27_led_up 0834 1D52 00087 btfss in3,2 0835 20AE 00088 call p27_led_down 00089 0836 30A3 00090 movlw A0_A5_reg ; R7 0837 0084 00091 movwf FSR 0838 18D2 00092 btfsc in3,1 0839 20AA 00093 call p27_led_up 083A 1CD2 00094 btfss in3,1 083B 20AE 00095 call p27_led_down 00096 083C 30A7 00097 movlw A1_A5_reg ; R8 083D 0084 00098 movwf FSR 083E 1852 00099 btfsc in3,0 083F 20AA 00100 call p27_led_up 0840 1C52 00101 btfss in3,0 0841 20AE 00102 call p27_led_down 00103 0842 30A6 00104 movlw A1_A3_reg ; R9 0843 0084 00105 movwf FSR 0844 1BD3 00106 btfsc in4,7 0845 20AA 00107 call p27_led_up 0846 1FD3 00108 btfss in4,7 0847 20AE 00109 call p27_led_down 00110 0848 30A5 00111 movlw A1_A2_reg ; R10 0849 0084 00112 movwf FSR 084A 1B53 00113 btfsc in4,6 084B 20AA 00114 call p27_led_up 084C 1F53 00115 btfss in4,6 084D 20AE 00116 call p27_led_down 00117 084E 30A1 00118 movlw A0_A2_reg ; R11 084F 0084 00119 movwf FSR MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 162 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0850 1AD3 00120 btfsc in4,5 0851 20AA 00121 call p27_led_up 0852 1ED3 00122 btfss in4,5 0853 20AE 00123 call p27_led_down 00124 0854 30A0 00125 movlw A0_A1_reg ; R12 0855 0084 00126 movwf FSR 0856 1A53 00127 btfsc in4,4 0857 20AA 00128 call p27_led_up 0858 1E53 00129 btfss in4,4 0859 20AE 00130 call p27_led_down 00131 #ifndef MONO 00132 00133 movlw A4_A3_reg ; G1 00134 movwf FSR 00135 btfsc in4,3 00136 call p27_led_up 00137 btfss in4,3 00138 call p27_led_down 00139 00140 movlw A5_A4_reg ; G2 00141 movwf FSR 00142 btfsc in4,2 00143 call p27_led_up 00144 btfss in4,2 00145 call p27_led_down 00146 00147 movlw A5_A3_reg ; G3 00148 movwf FSR 00149 btfsc in4,1 00150 call p27_led_up 00151 btfss in4,1 00152 call p27_led_down 00153 00154 movlw A4_A2_reg ; G4 00155 movwf FSR 00156 btfsc in4,0 00157 call p27_led_up 00158 btfss in4,0 00159 call p27_led_down 00160 00161 movlw A3_A2_reg ; G5 00162 movwf FSR 00163 btfsc in5,7 00164 call p27_led_up 00165 btfss in5,7 00166 call p27_led_down 00167 00168 movlw A4_A0_reg ; G6 00169 movwf FSR 00170 btfsc in5,6 00171 call p27_led_up 00172 btfss in5,6 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 163 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00173 call p27_led_down 00174 00175 movlw A5_A0_reg ; G7 00176 movwf FSR 00177 btfsc in5,5 00178 call p27_led_up 00179 btfss in5,5 00180 call p27_led_down 00181 00182 movlw A5_A1_reg ; G8 00183 movwf FSR 00184 btfsc in5,4 00185 call p27_led_up 00186 btfss in5,4 00187 call p27_led_down 00188 00189 movlw A3_A1_reg ; G9 00190 movwf FSR 00191 btfsc in5,3 00192 call p27_led_up 00193 btfss in5,3 00194 call p27_led_down 00195 00196 movlw A2_A1_reg ; G10 00197 movwf FSR 00198 btfsc in5,2 00199 call p27_led_up 00200 btfss in5,2 00201 call p27_led_down 00202 00203 movlw A2_A0_reg ; G11 00204 movwf FSR 00205 btfsc in5,1 00206 call p27_led_up 00207 btfss in5,1 00208 call p27_led_down 00209 00210 movlw A1_A0_reg ; G12 00211 movwf FSR 00212 btfsc in5,0 00213 call p27_led_up 00214 btfss in5,0 00215 call p27_led_down 00216 #endif 00217 #endif 00218 00219 ;----- 00220 00221 00222 ; A0_A3_reg ; 00223 ; A1_A4_reg ; 00224 ; A2_A5_reg ; 00225 ; A3_A0_reg ; MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 164 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00226 ; A4_A1_reg ; 00227 ; A5_A2_reg ; 00228 00229 ;---- 085A 30CC 00230 movlw B2_B7_reg ; R1 085B 0084 00231 movwf FSR 085C 1BCF 00232 btfsc in0,7 085D 20AA 00233 call p27_led_up 085E 1FCF 00234 btfss in0,7 085F 20AE 00235 call p27_led_down 00236 0860 30C8 00237 movlw B3_B7_reg ; R2 0861 0084 00238 movwf FSR 0862 1B4F 00239 btfsc in0,6 0863 20AA 00240 call p27_led_up 0864 1F4F 00241 btfss in0,6 0865 20AE 00242 call p27_led_down 00243 0866 30C9 00244 movlw B3_B5_reg ; R3 0867 0084 00245 movwf FSR 0868 1ACF 00246 btfsc in0,5 0869 20AA 00247 call p27_led_up 086A 1ECF 00248 btfss in0,5 086B 20AE 00249 call p27_led_down 00250 086C 30CA 00251 movlw B3_B4_reg ; R4 086D 0084 00252 movwf FSR 086E 1A4F 00253 btfsc in0,4 086F 20AA 00254 call p27_led_up 0870 1E4F 00255 btfss in0,4 0871 20AE 00256 call p27_led_down 00257 0872 30CE 00258 movlw B2_B4_reg ; R5 0873 0084 00259 movwf FSR 0874 19CF 00260 btfsc in0,3 0875 20AA 00261 call p27_led_up 0876 1DCF 00262 btfss in0,3 0877 20AE 00263 call p27_led_down 00264 0878 30CF 00265 movlw B2_B3_reg ; R6 0879 0084 00266 movwf FSR 087A 194F 00267 btfsc in0,2 087B 20AA 00268 call p27_led_up 087C 1D4F 00269 btfss in0,2 087D 20AE 00270 call p27_led_down 00271 087E 30C1 00272 movlw B5_B6_reg ; R7 087F 0084 00273 movwf FSR 0880 18CF 00274 btfsc in0,1 0881 20AA 00275 call p27_led_up 0882 1CCF 00276 btfss in0,1 0883 20AE 00277 call p27_led_down 00278 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 165 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0884 30BC 00279 movlw B6_B7_reg ; R8 0885 0084 00280 movwf FSR 0886 184F 00281 btfsc in0,0 0887 20AA 00282 call p27_led_up 0888 1C4F 00283 btfss in0,0 0889 20AE 00284 call p27_led_down 00285 088A 30C0 00286 movlw B5_B7_reg ; R9 088B 0084 00287 movwf FSR 088C 1BD0 00288 btfsc in1,7 088D 20AA 00289 call p27_led_up 088E 1FD0 00290 btfss in1,7 088F 20AE 00291 call p27_led_down 00292 0890 30C4 00293 movlw B4_B6_reg ; R10 0891 0084 00294 movwf FSR 0892 1B50 00295 btfsc in1,6 0893 20AA 00296 call p27_led_up 0894 1F50 00297 btfss in1,6 0895 20AE 00298 call p27_led_down 00299 0896 30C5 00300 movlw B4_B5_reg ; R11 0897 0084 00301 movwf FSR 0898 1AD0 00302 btfsc in1,5 0899 20AA 00303 call p27_led_up 089A 1ED0 00304 btfss in1,5 089B 20AE 00305 call p27_led_down 00306 089C 30CD 00307 movlw B2_B6_reg ; R12 089D 0084 00308 movwf FSR 089E 1A50 00309 btfsc in1,4 089F 20AA 00310 call p27_led_up 08A0 1E50 00311 btfss in1,4 08A1 20AE 00312 call p27_led_down 00313 00314 #ifndef MONO 00315 movlw B7_B2_reg ; G1 00316 movwf FSR 00317 btfsc in1,3 00318 call p27_led_up 00319 btfss in1,3 00320 call p27_led_down 00321 00322 movlw B7_B3_reg ; G2 00323 movwf FSR 00324 btfsc in1,2 00325 call p27_led_up 00326 btfss in1,2 00327 call p27_led_down 00328 00329 movlw B5_B3_reg ; G3 00330 movwf FSR 00331 btfsc in1,1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 166 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00332 call p27_led_up 00333 btfss in1,1 00334 call p27_led_down 00335 00336 movlw B4_B3_reg ; G4 00337 movwf FSR 00338 btfsc in1,0 00339 call p27_led_up 00340 btfss in1,0 00341 call p27_led_down 00342 00343 movlw B4_B2_reg ; G5 00344 movwf FSR 00345 btfsc in2,7 00346 call p27_led_up 00347 btfss in2,7 00348 call p27_led_down 00349 00350 movlw B3_B2_reg ; G6 00351 movwf FSR 00352 btfsc in2,6 00353 call p27_led_up 00354 btfss in2,6 00355 call p27_led_down 00356 movlw B6_B5_reg ; G7 00357 movwf FSR 00358 btfsc in2,5 00359 call p27_led_up 00360 btfss in2,5 00361 call p27_led_down 00362 00363 movlw B7_B6_reg ; G8 00364 movwf FSR 00365 btfsc in2,4 00366 call p27_led_up 00367 btfss in2,4 00368 call p27_led_down 00369 00370 movlw B7_B5_reg ; G9 00371 movwf FSR 00372 btfsc in2,3 00373 call p27_led_up 00374 btfss in2,3 00375 call p27_led_down 00376 00377 movlw B6_B4_reg ; G10 00378 movwf FSR 00379 btfsc in2,2 00380 call p27_led_up 00381 btfss in2,2 00382 call p27_led_down 00383 00384 movlw B5_B4_reg ; G11 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 167 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00385 movwf FSR 00386 btfsc in2,1 00387 call p27_led_up 00388 btfss in2,1 00389 call p27_led_down 00390 00391 movlw B6_B2_reg ; G12 00392 movwf FSR 00393 btfsc in2,0 00394 call p27_led_up 00395 btfss in2,0 00396 call p27_led_down 00397 #endif 00398 00399 ; B6_B3_reg 00400 ; B5_B2_reg 00401 ; B4_B7_reg 00402 ; B3_B6_reg 00403 ; B2_B5_reg 00404 ; B7_B4_reg 00405 08A2 0855 00406 movf speed,w 00407 #ifdef __16F1936 08A3 3183 00408 MOVLP high strobe_delay 00409 #else 00410 pageselw strobe_delay 00411 #endif Message[306]: Crossing page boundary -- ensure page bits are set. 08A4 23CC 00412 call strobe_delay 00413 00414 #ifdef __16F1936 08A5 3188 00415 MOVLP high t27_loop2 00416 #else 00417 pageselw t27_loop2 00418 #endif 08A6 0BBF 00419 decfsz p27_loop,f 08A7 2812 00420 goto t27_loop2 00421 00422 ; bcf STATUS,7 DDF this is now FSR0H 00423 #ifdef __16F1936 08A8 3184 00424 MOVLP high pattern_return 00425 #else 00426 pageselw pattern_return 00427 #endif Message[306]: Crossing page boundary -- ensure page bits are set. 08A9 2C98 00428 goto pattern_return 00429 00430 00431 ;********************************************************************** 08AA 00432 p27_led_up 00433 ;********************************************************************** 00434 08AA 0A80 00435 incf INDF,f MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 168 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08AB 1903 00436 btfsc STATUS,Z 08AC 0980 00437 comf INDF,f 08AD 0008 00438 return 00439 00440 ;********************************************************************** 08AE 00441 p27_led_down 00442 ;********************************************************************** 00443 08AE 0880 00444 movf INDF,f 08AF 1D03 00445 btfss STATUS,Z 08B0 0380 00446 decf INDF,f 08B1 0008 00447 return 00448 06388 #endif 06389 06390 ; 06391 ; These are the pattern tables 06392 ; 06393 06394 06395 #ifdef RGB4 06396 #include 06397 #endif 06398 06399 #ifdef SRGB 06400 #include 06401 #endif 06402 06403 #ifdef BI6 06404 #ifdef MONO 06405 #ifdef BADGE 06406 #include 06407 #else 06408 #include 06409 #endif 06410 #else 06411 #ifdef BADGE 06412 #include 06413 #else 06414 #include 06415 #endif 06416 #endif 06417 #endif 06418 06419 #ifdef M3X3 06420 #include 06421 #endif 06422 06423 #ifdef S19 06424 #include 06425 #endif 06426 06427 #ifdef C19 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 169 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06428 #ifdef MONO 06429 #include 06430 #else 06431 #include 06432 #endif 06433 #endif 06434 06435 #ifdef M8X16 06436 #include 06437 #endif 06438 06439 #ifdef C12 06440 #include 00001 ;********************************************************************** 00002 ; Copyright (C) 2005,2006,2007,2008 Dwayne Forsyth 00003 ; 00004 ; This program is free software; you can redistribute it and/or 00005 ; modify it under the terms of the GNU General Public License 00006 ; as published by the Free Software Foundation; either version 2 00007 ; of the License, or (at your option) any later version. 00008 ; 00009 ; This program is distributed in the hope that it will be useful, 00010 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 ; GNU General Public License for more details. 00013 ; 00014 ; You should have received a copy of the GNU General Public License 00015 ; along with this program; if not, write to the 00016 ; 00017 ; Free Software Foundation, Inc. 00018 ; 51 Franklin Street, Fifth Floor 00019 ; Boston, MA 02110-1301, USA. 00020 ; 00021 ;********************************************************************** 00022 00023 00024 ;********************************************************************** 00025 ; walking LED test 00026 ;********************************************************************** 00027 start_pattern 0x17, 0x10 M 08B2 M table0 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat0-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat0-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat0-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 170 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng =(endpat0-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat0-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 0000000C M leng =(endpat0-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat0-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat0-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat0-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 08B2 3417 3410 340C M dt 0x17,0x10,(leng) M else M de 0x17,0x10,(leng) M endif 00028 ; RRRRRRRR RRRRGGGG GGGGGGGG 00029 ; 00000000 01110000 00000111 00030 ; 12345678 90121234 56789012 08B5 3480 3400 3400 00031 dt b'10000000',b'00000000',b'00000000',b'10000000',b'00000000',b'00000000' 3480 3400 3400 08BB 3440 3400 3400 00032 dt b'01000000',b'00000000',b'00000000',b'01000000',b'00000000',b'00000000' 3440 3400 3400 08C1 3420 3400 3400 00033 dt b'00100000',b'00000000',b'00000000',b'00100000',b'00000000',b'00000000' 3420 3400 3400 08C7 3410 3400 3400 00034 dt b'00010000',b'00000000',b'00000000',b'00010000',b'00000000',b'00000000' 3410 3400 3400 08CD 3408 3400 3400 00035 dt b'00001000',b'00000000',b'00000000',b'00001000',b'00000000',b'00000000' 3408 3400 3400 08D3 3404 3400 3400 00036 dt b'00000100',b'00000000',b'00000000',b'00000100',b'00000000',b'00000000' 3404 3400 3400 08D9 3402 3400 3400 00037 dt b'00000010',b'00000000',b'00000000',b'00000010',b'00000000',b'00000000' 3402 3400 3400 08DF 3401 3400 3400 00038 dt b'00000001',b'00000000',b'00000000',b'00000001',b'00000000',b'00000000' 3401 3400 3400 08E5 3400 3480 3400 00039 dt b'00000000',b'10000000',b'00000000',b'00000000',b'10000000',b'00000000' 3400 3480 3400 08EB 3400 3440 3400 00040 dt b'00000000',b'01000000',b'00000000',b'00000000',b'01000000',b'00000000' 3400 3440 3400 08F1 3400 3420 3400 00041 dt b'00000000',b'00100000',b'00000000',b'00000000',b'00100000',b'00000000' MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 171 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3400 3420 3400 08F7 3400 3410 3400 00042 dt b'00000000',b'00010000',b'00000000',b'00000000',b'00010000',b'00000000' 3400 3410 3400 00043 #ifndef MONO 00044 dt b'00000000',b'00001000',b'00000000',b'00000000',b'00001000',b'00000000' 00045 dt b'00000000',b'00000100',b'00000000',b'00000000',b'00000100',b'00000000' 00046 dt b'00000000',b'00000010',b'00000000',b'00000000',b'00000010',b'00000000' 00047 dt b'00000000',b'00000001',b'00000000',b'00000000',b'00000001',b'00000000' 00048 dt b'00000000',b'00000000',b'10000000',b'00000000',b'00000000',b'10000000' 00049 dt b'00000000',b'00000000',b'01000000',b'00000000',b'00000000',b'01000000' 00050 dt b'00000000',b'00000000',b'00100000',b'00000000',b'00000000',b'00100000' 00051 dt b'00000000',b'00000000',b'00010000',b'00000000',b'00000000',b'00010000' 00052 dt b'00000000',b'00000000',b'00001000',b'00000000',b'00000000',b'00001000' 00053 dt b'00000000',b'00000000',b'00000100',b'00000000',b'00000000',b'00000100' 00054 dt b'00000000',b'00000000',b'00000010',b'00000000',b'00000000',b'00000010' 00055 dt b'00000000',b'00000000',b'00000001',b'00000000',b'00000000',b'00000001' 00056 #endif 00057 end_pattern 08FD M endpat0 00000001 M patternc = patternc + 1 00058 00059 ;********************************************************************** 00060 ; Color change 00061 ;********************************************************************** 00062 00063 start_pattern 0x17, 0x10 M 08FD M table1 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat1-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat1-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat1-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat1-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat1-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat1-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat1-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat1-$-3)/0x20 ;tbltype1,speed,length M else MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 172 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng =(endpat1-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 08FD 3417 3410 3403 M dt 0x17,0x10,(leng) M else M de 0x17,0x10,(leng) M endif 00064 ; RRRRRRRR RRRRGGGG GGGGGGGG 00065 ; 00000000 01110000 00000111 00066 ; 12345678 90121234 56789012 0900 34FF 34FF 34FF 00067 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0906 34FF 34F0 3400 00068 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 090C 3400 340F 34FF 00069 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 3400 340F 34FF 00070 00071 end_pattern 0912 M endpat1 00000002 M patternc = patternc + 1 00072 00073 ; dt b'11111111',b'11111111',b'11111111',b'00000000',b'00000000',b'00000000' ; 1st board 00074 ; dt b'00000000',b'00000000',b'00000000',b'11111111',b'11111111',b'11111111' ; 2nd board 00075 00076 ;********************************************************************** 00077 ; moving 2 red down, 2 green down 00078 ;********************************************************************** 00079 00080 start_pattern 0x17, 0x03 M 0912 M table2 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat2-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat2-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat2-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat2-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 173 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng =(endpat2-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 0000000C M leng =(endpat2-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat2-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat2-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat2-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0912 3417 3403 340C M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00081 ; RRRRRRRR RRRRGGGG GGGGGGGG 00082 ; 00000000 01110000 00000111 00083 ; 12345678 90121234 56789012 0915 3480 3410 3400 00084 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 091B 3440 3420 3400 00085 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 0921 3420 3440 3400 00086 dt b'00100000',b'01000000',b'00000000',b'00100000',b'01000000',b'00000000' 3420 3440 3400 0927 3410 3480 3400 00087 dt b'00010000',b'10000000',b'00000000',b'00010000',b'10000000',b'00000000' 3410 3480 3400 092D 3409 3400 3400 00088 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 0933 3406 3400 3400 00089 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 0939 3480 3410 3400 00090 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 093F 3440 3420 3400 00091 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 0945 3420 3440 3400 00092 dt b'00100000',b'01000000',b'00000000',b'00100000',b'01000000',b'00000000' 3420 3440 3400 094B 3410 3480 3400 00093 dt b'00010000',b'10000000',b'00000000',b'00010000',b'10000000',b'00000000' 3410 3480 3400 0951 3409 3400 3400 00094 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 0957 3406 3400 3400 00095 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 174 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00096 00097 #ifndef MONO 00098 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 00099 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 00100 dt b'00000000',b'00000010',b'00000100',b'00000000',b'00000010',b'00000100' 00101 dt b'00000000',b'00000001',b'00001000',b'00000000',b'00000001',b'00001000' 00102 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 00103 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 00104 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 00105 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 00106 dt b'00000000',b'00000010',b'00000100',b'00000000',b'00000010',b'00000100' 00107 dt b'00000000',b'00000001',b'00001000',b'00000000',b'00000001',b'00001000' 00108 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 00109 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 00110 #endif 00111 end_pattern 095D M endpat2 00000003 M patternc = patternc + 1 00112 00113 ;********************************************************************** 00114 ; rotate around 00115 ;********************************************************************** 00116 00117 start_pattern 0x17, 0x10 M 095D M table3 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat3-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat3-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat3-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat3-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat3-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000004 M leng =(endpat3-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat3-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat3-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat3-$-3) M endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 175 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 095D 3417 3410 3404 M dt 0x17,0x10,(leng) M else M de 0x17,0x10,(leng) M endif 00118 ; RRRRRRRR RRRRGGGG GGGGGGGG 00119 ; 00000000 01110000 00000111 00120 ; 12345678 90121234 56789012 00121 #ifdef SINGLE 00122 dt b'11111100',b'00001111',b'11000000',b'00000000',b'00000000',b'00000000' 00123 dt b'00011111',b'10000001',b'11111000',b'00000000',b'00000000',b'00000000' 00124 dt b'00000011',b'11110000',b'00111111',b'00000000',b'00000000',b'00000000' 00125 dt b'11100000',b'01111110',b'00000111',b'00000000',b'00000000',b'00000000' 00126 #else 0960 34FC 340F 34C0 00127 dt b'11111100',b'00001111',b'11000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0966 3400 3400 3400 00128 dt b'00000000',b'00000000',b'00000000',b'11111100',b'00001111',b'11000000' 34FC 340F 34C0 096C 3403 34F0 343F 00129 dt b'00000011',b'11110000',b'00111111',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0972 3400 3400 3400 00130 dt b'00000000',b'00000000',b'00000000',b'00000011',b'11110000',b'00111111' 3403 34F0 343F 00131 #endif 00132 00133 end_pattern 0978 M endpat3 00000004 M patternc = patternc + 1 00134 00135 ;********************************************************************** 00136 ; Fader 00137 ;********************************************************************** 00138 00139 start_pattern 0x1b, 0x04 M 0978 M table4 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat4-$-3)/3 ;tbltype1,speed,length M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b == 0x18) M leng = (endpat4-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat4-$-3)/5 ;tbltype1,speed,length M else MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 176 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (0x1b == 0x0a) M leng =(endpat4-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat4-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 00000010 M leng =(endpat4-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat4-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat4-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat4-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0978 341B 3404 3410 M dt 0x1b,0x04,(leng) M else M de 0x1b,0x04,(leng) M endif 00140 ; RRRRRRRR RRRRGGGG GGGGGGGG 00141 ; 00000000 01110000 00000111 00142 ; 12345678 90121234 56789012 097B 34FF 34FF 34FF 00143 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0981 34FF 34FF 34FF 00144 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0987 34FF 34FF 34FF 00145 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 098D 34FF 34FF 34FF 00146 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0993 3400 3400 3400 00147 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0999 3400 3400 3400 00148 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 099F 3400 3400 3400 00149 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 09A5 3400 3400 3400 00150 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 09AB 34FF 34F0 3400 00151 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 09B1 34FF 34F0 3400 00152 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 177 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09B7 34FF 34F0 3400 00153 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 09BD 34FF 34F0 3400 00154 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 09C3 3400 3400 3400 00155 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 09C9 3400 3400 3400 00156 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 09CF 3400 3400 3400 00157 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 09D5 3400 3400 3400 00158 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00159 #ifndef MONO 00160 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 00161 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 00162 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 00163 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 00164 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00165 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00166 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00167 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00168 #endif 00169 end_pattern 09DB M endpat4 00000005 M patternc = patternc + 1 00170 00171 ;********************************************************************** 00172 ; all-on spinner ( rotate 11_11_11_11_ sequence around the circle ) 00173 ;********************************************************************** 00174 00175 start_pattern 0x17, 0x03 M 09DB M table5 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat5-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat5-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat5-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat5-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat5-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat5-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 178 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng = (endpat5-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat5-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat5-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 09DB 3417 3403 3403 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00176 ; RRRRRRRR RRRRGGGG GGGGGGGG 00177 ; 00000000 01110000 00000111 00178 ; 12345678 90121234 56789012 09DE 34DB 346D 34B6 00179 dt b'11011011',b'01101101',b'10110110',b'11011011',b'01101101',b'10110110' ; 110 34DB 346D 34B6 09E4 346D 34B6 34DB 00180 dt b'01101101',b'10110110',b'11011011',b'01101101',b'10110110',b'11011011' ; 011 346D 34B6 34DB 09EA 34B6 34DB 346D 00181 dt b'10110110',b'11011011',b'01101101',b'10110110',b'11011011',b'01101101' ; 101 34B6 34DB 346D 00182 end_pattern 09F0 M endpat5 00000006 M patternc = patternc + 1 00183 00184 #ifdef SINGLE 00185 ;********************************************************************** 00186 ; animated smiley (did not look good in 3D) 00187 ;********************************************************************** 00188 00189 start_pattern 0x17, 0x02 00190 ; RRRRRRRR RRRRGGGG GGGGGGGG 00191 ; 00000000 01110000 00000111 00192 ; 12345678 90121234 56789012 00193 00194 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00195 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00196 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00197 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00198 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00199 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00200 dt b'00001111',b'00000100',b'11110010',b'00000000',b'00000000',b'00000000' ; eyes blink 00201 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 00202 dt b'00001111',b'00000100',b'11110010',b'00000000',b'00000000',b'00000000' ; eyes blink 00203 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 179 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00204 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00205 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00206 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00207 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00208 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00209 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00210 ; dt b'00000001',b'11100000',b'00011110',b'00000001',b'11100000',b'00011110' ; eyes blink 00211 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00212 ; dt b'00000001',b'11100000',b'00011110',b'00000001',b'11100000',b'00011110' ; eyes blink 00213 end_pattern 00214 #else 00215 ;********************************************************************** 00216 ; double down chase 00217 ;********************************************************************** 00218 start_pattern 0x17, 0x02 M 09F0 M table6 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat6-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat6-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat6-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat6-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat6-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000008 M leng =(endpat6-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat6-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat6-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat6-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 180 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09F0 3417 3402 3408 M dt 0x17,0x02,(leng) M else M de 0x17,0x02,(leng) M endif 00219 ; RRRRRRRR RRRRGGGG GGGGGGGG 00220 ; 00000000 01110000 00000111 00221 ; 12345678 90121234 56789012 09F3 3480 3410 3400 00222 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 09F9 3440 3420 3400 00223 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 09FF 34A0 3450 3400 00224 dt b'10100000',b'01010000',b'00000000',b'10100000',b'01010000',b'00000000' 34A0 3450 3400 0A05 3450 34A0 3400 00225 dt b'01010000',b'10100000',b'00000000',b'01010000',b'10100000',b'00000000' 3450 34A0 3400 0A0B 3429 3440 3400 00226 dt b'00101001',b'01000000',b'00000000',b'00101001',b'01000000',b'00000000' 3429 3440 3400 0A11 3416 3480 3400 00227 dt b'00010110',b'10000000',b'00000000',b'00010110',b'10000000',b'00000000' 3416 3480 3400 0A17 3409 3400 3400 00228 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 0A1D 3406 3400 3400 00229 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 00230 #ifndef MONO 00231 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 00232 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 00233 dt b'00000000',b'00001010',b'00000101',b'00000000',b'00001010',b'00000101' 00234 dt b'00000000',b'00000101',b'00001010',b'00000000',b'00000101',b'00001010' 00235 dt b'00000000',b'00000010',b'10010100',b'00000000',b'00000010',b'10010100' 00236 dt b'00000000',b'00000001',b'01101000',b'00000000',b'00000001',b'01101000' 00237 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 00238 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 00239 #endif 00240 end_pattern 0A23 M endpat6 00000007 M patternc = patternc + 1 00241 00242 #endif 00243 00244 ;********************************************************************** 00245 ; red spinner ( rotate Red-Red-off sequence: RR_RR_RR_RR_ ) 00246 ;********************************************************************** 00247 00248 start_pattern 0x17, 0x03 M 0A23 M table7 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat7-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat7-$-3)/2 ;tbltype1,speed,length M else MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 181 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat7-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat7-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat7-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat7-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat7-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat7-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat7-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0A23 3417 3403 3403 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00249 ; RRRRRRRR RRRRGGGG GGGGGGGG 00250 ; 00000000 01110000 00000111 00251 ; 12345678 90121234 56789012 0A26 34DB 3460 3400 00252 dt b'11011011',b'01100000',b'00000000',b'11011011',b'01100000',b'00000000' ; 110 Red 34DB 3460 3400 0A2C 346D 34B0 3400 00253 dt b'01101101',b'10110000',b'00000000',b'01101101',b'10110000',b'00000000' ; 011 Red 346D 34B0 3400 0A32 34B6 34D0 3400 00254 dt b'10110110',b'11010000',b'00000000',b'01101101',b'10110000',b'00000000' ; 101 Red 346D 34B0 3400 00255 end_pattern 0A38 M endpat7 00000008 M patternc = patternc + 1 00256 00257 #ifdef MONO 00258 ;********************************************************************** 00259 ; every 3nd 00260 ;********************************************************************** 00261 00262 start_pattern 0x17, 0x03 M MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 182 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A38 M table8 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat8-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat8-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat8-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat8-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat8-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat8-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat8-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat8-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat8-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0A38 3417 3403 3403 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00263 ; RRRRRRRR RRRRGGGG GGGGGGGG 00264 ; 00000000 01110000 00000111 00265 ; 12345678 90121234 56789012 0A3B 3492 3440 3400 00266 dt b'10010010',b'01000000',b'00000000',b'10010010',b'01000000',b'00000000' ; 110 Green 3492 3440 3400 0A41 3449 3420 3400 00267 dt b'01001001',b'00100000',b'00000000',b'01001001',b'00100000',b'00000000' ; 011 Green 3449 3420 3400 0A47 3424 3490 3400 00268 dt b'00100100',b'10010000',b'00000000',b'00100100',b'10010000',b'00000000' ; 101 Green 3424 3490 3400 00269 end_pattern 0A4D M endpat8 00000009 M patternc = patternc + 1 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 183 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00270 #else 00271 ;********************************************************************** 00272 ; green spinner ( rotate Green-Green-off sequence: GG_GG_GG_GG_ ) 00273 ;********************************************************************** 00274 00275 start_pattern 0x17, 0x03 00276 ; RRRRRRRR RRRRGGGG GGGGGGGG 00277 ; 00000000 01110000 00000111 00278 ; 12345678 90121234 56789012 00279 dt b'00000000',b'00001101',b'10110110',b'00000000',b'00001101',b'10110110' ; 110 Green 00280 dt b'00000000',b'00000110',b'11011011',b'00000000',b'00000110',b'11011011' ; 011 Green 00281 dt b'00000000',b'00001011',b'01101101',b'00000000',b'00001011',b'01101101' ; 101 Green 00282 end_pattern 00283 #endif 00284 00285 ;********************************************************************** 00286 ; alternating colors spinner ( rotate RR_GG_RR_GG_ sequence ) 00287 ;********************************************************************** 00288 00289 start_pattern 0x17, 0x03 M 0A4D M table9 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat9-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat9-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat9-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat9-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat9-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000006 M leng =(endpat9-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat9-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat9-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat9-$-3) M endif M endif M endif M endif M endif MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 184 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M expand M if ($ < 0x2100) 0A4D 3417 3403 3406 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00290 ; RRRRRRRR RRRRGGGG GGGGGGGG 00291 ; 00000000 01110000 00000111 00292 ; 12345678 90121234 56789012 0A50 34C3 3401 3486 00293 dt b'11000011',b'00000001',b'10000110',b'11000011',b'00000001',b'10000110' ; 110000 R 000110 G 34C3 3401 3486 0A56 3461 3480 34C3 00294 dt b'01100001',b'10000000',b'11000011',b'01100001',b'10000000',b'11000011' ; 011000 R 000011 G 3461 3480 34C3 0A5C 3430 34C8 3461 00295 dt b'00110000',b'11001000',b'01100001',b'00110000',b'11001000',b'01100001' ; 001100 R 100001 G 3430 34C8 3461 0A62 3418 346C 3430 00296 dt b'00011000',b'01101100',b'00110000',b'00011000',b'01101100',b'00110000' ; 000110 R 110000 G 3418 346C 3430 0A68 340C 3436 3418 00297 dt b'00001100',b'00110110',b'00011000',b'00001100',b'00110110',b'00011000' ; 000011 R 011000 G 340C 3436 3418 0A6E 3486 3413 340C 00298 dt b'10000110',b'00010011',b'00001100',b'10000110',b'00010011',b'00001100' ; 100001 R 001100 G 3486 3413 340C 00299 end_pattern 0A74 M endpat9 0000000A M patternc = patternc + 1 00300 00301 ;********************************************************************** 00302 ; fader Green down, Red up 00303 ;********************************************************************** 00304 00305 start_pattern 0x1b, 0x04 M 0A74 M table10 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat10-$-3)/3 ;tbltype1,speed,length M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b == 0x18) M leng = (endpat10-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat10-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat10-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat10-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 0000001E M leng =(endpat10-$-3)/(6) ;tbltype1,speed,length MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 185 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x1b == 0x11) M leng = (endpat10-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat10-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat10-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0A74 341B 3404 341E M dt 0x1b,0x04,(leng) M else M de 0x1b,0x04,(leng) M endif 00306 ; RRRRRRRR RRRRGGGG GGGGGGGG 00307 ; 00000000 01110000 00000111 00308 ; 12345678 90121234 56789012 00309 #ifdef SINGLE 00310 dt b'10000000',b'01111110',b'00000001',b'00000000',b'00000000',b'00000000' ; all off 00311 dt b'11000000',b'00111100',b'00000011',b'00000000',b'00000000',b'00000000' ; all off 00312 dt b'11100000',b'00011000',b'00000111',b'00000000',b'00000000',b'00000000' ; all off 00313 #else 0A77 3480 3400 3401 00314 dt b'10000000',b'00000000',b'00000001',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A7D 34C0 3400 3403 00315 dt b'11000000',b'00000000',b'00000011',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A83 34E0 3400 3407 00316 dt b'11100000',b'00000000',b'00000111',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00317 #endif 0A89 34F0 3400 340F 00318 dt b'11110000',b'00000000',b'00001111',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A8F 3478 3400 341E 00319 dt b'01111000',b'00000000',b'00011110',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A95 343C 3400 343C 00320 dt b'00111100',b'00000000',b'00111100',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A9B 341E 3400 3478 00321 dt b'00011110',b'00000000',b'01111000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0AA1 340F 3400 34F0 00322 dt b'00001111',b'00000000',b'11110000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0AA7 3407 3481 34E0 00323 dt b'00000111',b'10000001',b'11100000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0AAD 3403 34C3 34C0 00324 dt b'00000011',b'11000011',b'11000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0AB3 3401 34E7 3480 00325 dt b'00000001',b'11100111',b'10000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 186 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0AB9 3400 34FF 3400 00326 dt b'00000000',b'11111111',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00327 #ifndef SINGLE 0ABF 3400 347E 3400 00328 dt b'00000000',b'01111110',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0AC5 3400 343C 3400 00329 dt b'00000000',b'00111100',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0ACB 3400 3418 3400 00330 dt b'00000000',b'00011000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00331 0AD1 3400 3400 3400 00332 dt b'00000000',b'00000000',b'00000000',b'10000000',b'00000000',b'00000001' ; all off 3480 3400 3401 0AD7 3400 3400 3400 00333 dt b'00000000',b'00000000',b'00000000',b'11000000',b'00000000',b'00000011' ; all off 34C0 3400 3403 0ADD 3400 3400 3400 00334 dt b'00000000',b'00000000',b'00000000',b'11100000',b'00000000',b'00000111' ; all off 34E0 3400 3407 0AE3 3400 3400 3400 00335 dt b'00000000',b'00000000',b'00000000',b'11110000',b'00000000',b'00001111' ; all off 34F0 3400 340F 0AE9 3400 3400 3400 00336 dt b'00000000',b'00000000',b'00000000',b'01111000',b'00000000',b'00011110' ; all off 3478 3400 341E 0AEF 3400 3400 3400 00337 dt b'00000000',b'00000000',b'00000000',b'00111100',b'00000000',b'00111100' ; all off 343C 3400 343C 0AF5 3400 3400 3400 00338 dt b'00000000',b'00000000',b'00000000',b'00011110',b'00000000',b'01111000' ; all off 341E 3400 3478 0AFB 3400 3400 3400 00339 dt b'00000000',b'00000000',b'00000000',b'00001111',b'00000000',b'11110000' ; all off 340F 3400 34F0 0B01 3400 3400 3400 00340 dt b'00000000',b'00000000',b'00000000',b'00000111',b'10000001',b'11100000' ; all off 3407 3481 34E0 0B07 3400 3400 3400 00341 dt b'00000000',b'00000000',b'00000000',b'00000011',b'11000011',b'11000000' ; all off 3403 34C3 34C0 0B0D 3401 3400 3400 00342 dt b'00000001',b'00000000',b'00000000',b'00000001',b'11100111',b'10000000' ; all off 3401 34E7 3480 0B13 3400 3400 3400 00343 dt b'00000000',b'00000000',b'00000000',b'00000000',b'11111111',b'00000000' ; all off 3400 34FF 3400 0B19 3400 3400 3400 00344 dt b'00000000',b'00000000',b'00000000',b'00000000',b'01111110',b'00000000' ; all off 3400 347E 3400 0B1F 3400 3400 3400 00345 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00111100',b'00000000' ; all off 3400 343C 3400 0B25 3400 3400 3400 00346 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00011000',b'00000000' ; all off 3400 3418 3400 00347 #endif 00348 end_pattern 0B2B M endpat10 0000000B M patternc = patternc + 1 00349 00350 ;********************************************************************** 00351 ; fader Down 00352 ;********************************************************************** 00353 00354 start_pattern 0x1b, 0x04 M 0B2B M table11 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 187 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng = (endpat11-$-3)/3 ;tbltype1,speed,length M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b == 0x18) M leng = (endpat11-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat11-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat11-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat11-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 0000000D M leng =(endpat11-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat11-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat11-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat11-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0B2B 341B 3404 340D M dt 0x1b,0x04,(leng) M else M de 0x1b,0x04,(leng) M endif 00355 ; RRRRRRRR RRRRGGGG GGGGGGGG 00356 ; 00000000 01110000 00000111 00357 ; 12345678 90121234 56789012 0B2E 3480 3410 3400 00358 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' ; all off 3480 3410 3400 0B34 34C0 3430 3400 00359 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' ; all off 34C0 3430 3400 0B3A 34E0 3470 3400 00360 dt b'11100000',b'01110000',b'00000000',b'11100000',b'01110000',b'00000000' ; all off 34E0 3470 3400 0B40 34F0 34F0 3400 00361 dt b'11110000',b'11110000',b'00000000',b'11110000',b'11110000',b'00000000' ; all off 34F0 34F0 3400 0B46 3479 34E0 3400 00362 dt b'01111001',b'11100000',b'00000000',b'01111001',b'11100000',b'00000000' ; all off 3479 34E0 3400 0B4C 343F 34C0 3400 00363 dt b'00111111',b'11000000',b'00000000',b'00111101',b'11000000',b'00000000' ; all off MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 188 LOC OBJECT CODE LINE SOURCE TEXT VALUE 343D 34C0 3400 0B52 341F 3480 3400 00364 dt b'00011111',b'10000000',b'00000000',b'00011111',b'10000000',b'00000000' ; all off 341F 3480 3400 0B58 340F 3400 3400 00365 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' ; all off 340F 3400 3400 0B5E 3406 3400 3400 00366 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' ; all off 3406 3400 3400 0B64 3400 3400 3400 00367 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B6A 3400 3400 3400 00368 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B70 3400 3400 3400 00369 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B76 3400 3400 3400 00370 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00371 #ifndef MONO 00372 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' ; all off 00373 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' ; all off 00374 dt b'00000000',b'00001110',b'00000111',b'00000000',b'00001110',b'00000111' ; all off 00375 dt b'00000000',b'00001111',b'00001111',b'00000000',b'00001111',b'00001111' ; all off 00376 dt b'00000000',b'00000111',b'10011110',b'00000000',b'00000111',b'10011110' ; all off 00377 dt b'00000000',b'00000011',b'11111100',b'00000000',b'00000011',b'11111100' ; all off 00378 dt b'00000000',b'00000001',b'11111000',b'00000000',b'00000001',b'11111000' ; all off 00379 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' ; all off 00380 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' ; all off 00381 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00382 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00383 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00384 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00385 #endif 00386 end_pattern 0B7C M endpat11 0000000C M patternc = patternc + 1 00387 00388 ;********************************************************************** 00389 ; fader up Red, up Green, up both 00390 ;********************************************************************** 00391 00392 start_pattern 0x1b, 0x04 M 0B7C M table12 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat12-$-3)/3 ;tbltype1,speed,length M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b == 0x18) M leng = (endpat12-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat12-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat12-$-3)/4 ;tbltype1,speed,length MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 189 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x1b == 0x0d) M leng =(endpat12-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 0000000D M leng =(endpat12-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat12-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat12-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat12-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0B7C 341B 3404 340D M dt 0x1b,0x04,(leng) M else M de 0x1b,0x04,(leng) M endif 00393 ; RRRRRRRR RRRRGGGG GGGGGGGG 00394 ; 00000000 01110000 00000111 00395 ; 12345678 90121234 56789012 0B7F 3406 3400 3400 00396 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' ; all off 3406 3400 3400 0B85 340F 3400 3400 00397 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' ; all off 340F 3400 3400 0B8B 341F 3480 3400 00398 dt b'00011111',b'10000000',b'00000000',b'00011111',b'10000000',b'00000000' ; all off 341F 3480 3400 0B91 343F 34C0 3400 00399 dt b'00111111',b'11000000',b'00000000',b'00111101',b'11000000',b'00000000' ; all off 343D 34C0 3400 0B97 3479 34E0 3400 00400 dt b'01111001',b'11100000',b'00000000',b'01111001',b'11100000',b'00000000' ; all off 3479 34E0 3400 0B9D 34F0 34F0 3400 00401 dt b'11110000',b'11110000',b'00000000',b'11110000',b'11110000',b'00000000' ; all off 34F0 34F0 3400 0BA3 34E0 3470 3400 00402 dt b'11100000',b'01110000',b'00000000',b'11100000',b'01110000',b'00000000' ; all off 34E0 3470 3400 0BA9 34C0 3430 3400 00403 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' ; all off 34C0 3430 3400 0BAF 3480 3410 3400 00404 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' ; all off 3480 3410 3400 0BB5 3400 3400 3400 00405 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0BBB 3400 3400 3400 00406 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 190 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BC1 3400 3400 3400 00407 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0BC7 3400 3400 3400 00408 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00409 #ifndef MONO 00410 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' ; all off 00411 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' ; all off 00412 dt b'00000000',b'00000001',b'11111000',b'00000000',b'00000001',b'11111000' ; all off 00413 dt b'00000000',b'00000011',b'11111100',b'00000000',b'00000011',b'11111100' ; all off 00414 dt b'00000000',b'00000111',b'10011110',b'00000000',b'00000111',b'10011110' ; all off 00415 dt b'00000000',b'00001111',b'00001111',b'00000000',b'00001111',b'00001111' ; all off 00416 dt b'00000000',b'00001110',b'00000111',b'00000000',b'00001110',b'00000111' ; all off 00417 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' ; all off 00418 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' ; all off 00419 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00420 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00421 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00422 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00423 00424 dt b'00000110',b'00000000',b'01100000',b'00000110',b'00000000',b'01100000' ; all off 00425 dt b'00001111',b'00000000',b'11110000',b'00001111',b'00000000',b'11110000' ; all off 00426 dt b'00011111',b'10000001',b'11111000',b'00011111',b'10000001',b'11111000' ; all off 00427 dt b'00111111',b'11000011',b'11111100',b'00111111',b'11000011',b'11111100' ; all off 00428 dt b'01111001',b'11100111',b'10011110',b'01111001',b'11100111',b'10011110' ; all off 00429 dt b'11110000',b'11111111',b'00001111',b'11110000',b'11111111',b'00001111' ; all off 00430 dt b'11100000',b'01111110',b'00000111',b'11100000',b'01111110',b'00000111' ; all off 00431 dt b'11000000',b'00111100',b'00000011',b'11000000',b'00111100',b'00000011' ; all off 00432 dt b'10000000',b'00011000',b'00000001',b'10000000',b'00011000',b'00000001' ; all off 00433 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00434 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00435 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00436 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00437 #endif 00438 end_pattern 0BCD M endpat12 0000000D M patternc = patternc + 1 00439 ;********************************************************************** 00440 ; even red, odd red, even green, odd green 00441 ;********************************************************************** 00442 00443 start_pattern 0x17, 0x03 M 0BCD M table13 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat13-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat13-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat13-$-3)/5 ;tbltype1,speed,length M else MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 191 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (0x17 == 0x0a) M leng =(endpat13-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat13-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000006 M leng =(endpat13-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat13-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat13-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat13-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0BCD 3417 3403 3406 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00444 ; RRRRRRRR RRRRGGGG GGGGGGGG 00445 ; 00000000 01110000 00000111 00446 ; 12345678 90121234 56789012 0BD0 3480 3410 3400 00447 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 0BD6 3420 3440 3400 00448 dt b'00100000',b'01000000',b'00000000',b'00100000',b'01000000',b'00000000' 3420 3440 3400 0BDC 3409 3400 3400 00449 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 00450 00451 #ifndef MONO 00452 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 00453 dt b'00000000',b'00000010',b'00000100',b'00000000',b'00000010',b'00000100' 00454 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 00455 #endif 00456 0BE2 3440 3420 3400 00457 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 0BE8 3410 3480 3400 00458 dt b'00010000',b'10000000',b'00000000',b'00010000',b'10000000',b'00000000' 3410 3480 3400 0BEE 3406 3400 3400 00459 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 00460 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 192 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00461 #ifndef MONO 00462 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 00463 dt b'00000000',b'00000001',b'00001000',b'00000000',b'00000001',b'00001000' 00464 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 00465 #endif 00466 end_pattern 0BF4 M endpat13 0000000E M patternc = patternc + 1 00467 00468 ;********************************************************************** 00469 ; Flashy 00470 ;********************************************************************** 00471 00472 start_pattern 0x17, 0x01 M 0BF4 M table14 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat14-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat14-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat14-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat14-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat14-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000021 M leng =(endpat14-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat14-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat14-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat14-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0BF4 3417 3401 3421 M dt 0x17,0x01,(leng) MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 193 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M de 0x17,0x01,(leng) M endif 00473 ; RRRRRRRR RRRRGGGG GGGGGGGG 00474 ; 00000000 01110000 00000111 00475 ; 12345678 90121234 56789012 00476 00477 #ifdef SINGLE 00478 dt b'11100000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00479 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00480 dt b'11100000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00481 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00482 dt b'00000000',b'00001110',b'00000000',b'00000000',b'00000000',b'00000000' 00483 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00484 dt b'00000000',b'00001110',b'00000000',b'00000000',b'00000000',b'00000000' 00485 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00486 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00487 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00488 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00489 dt b'00011100',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00490 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00491 dt b'00011100',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00492 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00493 dt b'00000000',b'00000001',b'11000000',b'00000000',b'00000000',b'00000000' 00494 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00495 dt b'00000000',b'00000001',b'11000000',b'00000000',b'00000000',b'00000000' 00496 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00497 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00498 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00499 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00500 dt b'00000011',b'10000000',b'00000000',b'00000000',b'00000000',b'00000000' 00501 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00502 dt b'00000011',b'10000000',b'00000000',b'00000000',b'00000000',b'00000000' 00503 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00504 dt b'00000000',b'00000000',b'00111000',b'00000000',b'00000000',b'00000000' 00505 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00506 dt b'00000000',b'00000000',b'00111000',b'00000000',b'00000000',b'00000000' 00507 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00508 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00509 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00510 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00511 dt b'00000000',b'01110000',b'00000000',b'00000000',b'00000000',b'00000000' 00512 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00513 dt b'00000000',b'01110000',b'00000000',b'00000000',b'00000000',b'00000000' 00514 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00515 dt b'00000000',b'00000000',b'00000111',b'00000000',b'00000000',b'00000000' 00516 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00517 dt b'00000000',b'00000000',b'00000111',b'00000000',b'00000000',b'00000000' 00518 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00519 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00520 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00521 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00522 #else MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 194 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BF7 34C0 3430 3400 00523 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' 34C0 3430 3400 0BFD 3400 3400 3400 00524 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C03 34C0 3430 3400 00525 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' 34C0 3430 3400 0C09 3400 3400 3400 00526 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C0F 3400 340C 3403 00527 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' 3400 340C 3403 0C15 3400 3400 3400 00528 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C1B 3400 340C 3403 00529 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' 3400 340C 3403 0C21 3400 3400 3400 00530 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C27 3400 3400 3400 00531 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C2D 3400 3400 3400 00532 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C33 3400 3400 3400 00533 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C39 3430 34C0 3400 00534 dt b'00110000',b'11000000',b'00000000',b'00110000',b'11000000',b'00000000' 3430 34C0 3400 0C3F 3400 3400 3400 00535 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C45 3430 34C0 3400 00536 dt b'00110000',b'11000000',b'00000000',b'00110000',b'11000000',b'00000000' 3430 34C0 3400 0C4B 3400 3400 3400 00537 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C51 3400 3403 340C 00538 dt b'00000000',b'00000011',b'00001100',b'00000000',b'00000011',b'00001100' 3400 3403 340C 0C57 3400 3400 3400 00539 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C5D 3400 3403 340C 00540 dt b'00000000',b'00000011',b'00001100',b'00000000',b'00000011',b'00001100' 3400 3403 340C 0C63 3400 3400 3400 00541 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C69 3400 3400 3400 00542 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C6F 3400 3400 3400 00543 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C75 3400 3400 3400 00544 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C7B 340F 3400 3400 00545 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' 340F 3400 3400 0C81 3400 3400 3400 00546 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C87 340F 3400 3400 00547 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' 340F 3400 3400 0C8D 3400 3400 3400 00548 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C93 3400 3400 34F0 00549 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 195 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3400 3400 34F0 0C99 3400 3400 3400 00550 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0C9F 3400 3400 34F0 00551 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' 3400 3400 34F0 0CA5 3400 3400 3400 00552 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0CAB 3400 3400 3400 00553 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0CB1 3400 3400 3400 00554 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0CB7 3400 3400 3400 00555 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 00556 #endif 00557 end_pattern 0CBD M endpat14 0000000F M patternc = patternc + 1 00558 00559 #ifdef __16F1936 F000 00560 ORG 0xF000 00561 #else 00562 00563 ORG 0x2100 ; data EEPROM location 00564 #endif 00565 F000 00566 demo_store F000 34FF 00567 dt 0xff 06441 #endif 06442 06443 END ; directive 'end of program' MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 196 SYMBOL TABLE LABEL VALUE A0_A1_reg 000000A0 A0_A2_reg 000000A1 A0_A4_reg 000000A2 A0_A5_reg 000000A3 A1_A0_reg 000000A4 A1_A2_reg 000000A5 A1_A3_reg 000000A6 A1_A5_reg 000000A7 A2_A0_reg 000000A8 A2_A1_reg 000000A9 A2_A3_reg 000000AA A2_A4_reg 000000AB A3_A1_reg 000000AC A3_A2_reg 000000AD A3_A4_reg 000000AE A3_A5_reg 000000AF A4_A0_reg 000000B0 A4_A2_reg 000000B1 A4_A3_reg 000000B2 A4_A5_reg 000000B3 A5_A0_reg 000000B4 A5_A1_reg 000000B5 A5_A3_reg 000000B6 A5_A4_reg 000000B7 ABDEN 00000000 ABDOVF 00000007 ACKDT 00000005 ACKEN 00000004 ACKSTAT 00000006 ACKTIM 00000007 ADCON0 0000009D ADCON1 0000009E ADCS0 00000004 ADCS1 00000005 ADCS2 00000006 ADDEN 00000003 ADFM 00000007 ADFVR0 00000000 ADFVR1 00000001 ADGO 00000001 ADIE 00000006 ADIF 00000006 ADNREF 00000002 ADON 00000000 ADPREF0 00000000 ADPREF1 00000001 ADRES 0000009B ADRESH 0000009C ADRESL 0000009B AHEN 00000001 ANSA0 00000000 ANSA1 00000001 ANSA2 00000002 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 197 SYMBOL TABLE LABEL VALUE ANSA3 00000003 ANSA4 00000004 ANSA5 00000005 ANSB0 00000000 ANSB1 00000001 ANSB2 00000002 ANSB3 00000003 ANSB4 00000004 ANSB5 00000005 ANSEL 0000018C ANSELA 0000018C ANSELB 0000018D APFCON 0000011D Ax_dir 0000007D B2_B3_reg 000000CF B2_B4_reg 000000CE B2_B6_reg 000000CD B2_B7_reg 000000CC B3_B2_reg 000000CB B3_B4_reg 000000CA B3_B5_reg 000000C9 B3_B7_reg 000000C8 B4_B2_reg 000000C7 B4_B3_reg 000000C6 B4_B5_reg 000000C5 B4_B6_reg 000000C4 B5_B3_reg 000000C3 B5_B4_reg 000000C2 B5_B6_reg 000000C1 B5_B7_reg 000000C0 B6_B2_reg 000000BF B6_B4_reg 000000BE B6_B5_reg 000000BD B6_B7_reg 000000BC B7_B2_reg 000000BB B7_B3_reg 000000BA B7_B5_reg 000000B9 B7_B6_reg 000000B8 BAUDCON 0000019F BCLIE 00000003 BCLIF 00000003 BF 00000000 BIASMD 00000006 BIN2LED BOEN 00000004 BORCON 00000116 BORRDY 00000000 BRG16 00000003 BRGH 00000002 BRIGHT1 0x40 BRIGHT1H 0xA0 BRIGHT2 0xA0 BRIGHT2H 0x40 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 198 SYMBOL TABLE LABEL VALUE BSR 00000008 BSR0 00000000 BSR1 00000001 BSR2 00000002 BSR3 00000003 BSR4 00000004 BSR_SHAD 00000FE6 Bx_dir 0000007C C 00000000 C12 C12_MONO C1HYS 00000001 C1IE 00000005 C1IF 00000005 C1INTN 00000006 C1INTP 00000007 C1NCH0 00000000 C1NCH1 00000001 C1OE 00000005 C1ON 00000007 C1OUT 00000006 C1PCH0 00000004 C1PCH1 00000005 C1POL 00000004 C1SP 00000002 C1SYNC 00000000 C1TSEL0 00000000 C1TSEL1 00000001 C2HYS 00000001 C2IE 00000006 C2IF 00000006 C2INTN 00000006 C2INTP 00000007 C2NCH0 00000000 C2NCH1 00000001 C2OE 00000005 C2ON 00000007 C2OUT 00000006 C2OUTSEL 00000002 C2PCH0 00000004 C2PCH1 00000005 C2POL 00000004 C2SP 00000002 C2SYNC 00000000 C2TSEL0 00000002 C2TSEL1 00000003 C3TSEL0 00000004 C3TSEL1 00000005 C4TSEL0 00000006 C4TSEL1 00000007 C5TSEL0 00000000 C5TSEL1 00000001 CCP1AS 00000295 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 199 SYMBOL TABLE LABEL VALUE CCP1AS0 00000004 CCP1AS1 00000005 CCP1AS2 00000006 CCP1ASE 00000007 CCP1CON 00000293 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP2AS 0000029C CCP2AS0 00000004 CCP2AS1 00000005 CCP2AS2 00000006 CCP2ASE 00000007 CCP2CON 0000029A CCP2IE 00000000 CCP2IF 00000000 CCP2M0 00000000 CCP2M1 00000001 CCP2M2 00000002 CCP2M3 00000003 CCP2SEL 00000000 CCP3AS 00000315 CCP3AS0 00000004 CCP3AS1 00000005 CCP3AS2 00000006 CCP3ASE 00000007 CCP3CON 00000313 CCP3IE 00000004 CCP3IF 00000004 CCP3M0 00000000 CCP3M1 00000001 CCP3M2 00000002 CCP3M3 00000003 CCP3SEL 00000006 CCP4CON 0000031A CCP4IE 00000005 CCP4IF 00000005 CCP4M0 00000000 CCP4M1 00000001 CCP4M2 00000002 CCP4M3 00000003 CCP5CON 0000031E CCP5IE 00000006 CCP5IF 00000006 CCP5M0 00000000 CCP5M1 00000001 CCP5M2 00000002 CCP5M3 00000003 CCPR1H 00000292 CCPR1L 00000291 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 200 SYMBOL TABLE LABEL VALUE CCPR2H 00000299 CCPR2L 00000298 CCPR3H 00000312 CCPR3L 00000311 CCPR4H 00000319 CCPR4L 00000318 CCPR5H 0000031D CCPR5L 0000031C CCPTMRS0 0000029E CCPTMRS1 0000029F CDAFVR0 00000002 CDAFVR1 00000003 CFGS 00000006 CHS0 00000002 CHS1 00000003 CHS2 00000004 CHS3 00000005 CHS4 00000006 CKE 00000006 CKP 00000004 CM1CON0 00000111 CM1CON1 00000112 CM2CON0 00000113 CM2CON1 00000114 CMOUT 00000115 CPSCH0 00000000 CPSCH1 00000001 CPSCH2 00000002 CPSCON0 0000001E CPSCON1 0000001F CPSON 00000007 CPSOUT 00000001 CPSRNG0 00000002 CPSRNG1 00000003 CREN 00000004 CS0 00000002 CS1 00000003 CSRC 00000007 C_SHAD 00000000 DACCON0 00000118 DACCON1 00000119 DACEN 00000007 DACLPS 00000006 DACNSS 00000000 DACOE 00000005 DACPSS0 00000002 DACPSS1 00000003 DACR0 00000000 DACR1 00000001 DACR2 00000002 DACR3 00000003 DACR4 00000004 DC 00000001 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 201 SYMBOL TABLE LABEL VALUE DC1B0 00000004 DC1B1 00000005 DC2B0 00000004 DC2B1 00000005 DC3B0 00000004 DC3B1 00000005 DC4B0 00000004 DC4B1 00000005 DC5B0 00000004 DC5B1 00000005 DC_SHAD 00000001 DEBOUNCE 0x10 DEDICATED_BUTTON DEDICATED_BUTTON2 DHEN 00000000 DISPLAY_1BIT_H D_NOT_A 00000005 ECCP1AS 00000295 ECCP2AS 0000029C ECCP3AS 00000315 EEADR 00000191 EEADRH 00000192 EEADRL 00000191 EECON1 00000195 EECON2 00000196 EEDAT 00000193 EEDATH 00000194 EEDATL 00000193 EEIE 00000004 EEIF 00000004 EEPGD 00000007 ENABLE_IR F 00000001 FERR 00000002 FLIPBYTE FREE 00000004 FSR 00000004 FSR0 00000004 FSR0H 00000005 FSR0H_SHAD 00000FE9 FSR0L 00000004 FSR0L_SHAD 00000FE8 FSR1 00000006 FSR1H 00000007 FSR1H_SHAD 00000FEB FSR1L 00000006 FSR1L_SHAD 00000FEA FVRCON 00000117 FVREN 00000007 FVRRDY 00000006 GCEN 00000007 GIE 00000007 GO_NOT_DONE 00000001 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 202 SYMBOL TABLE LABEL VALUE HFIOFL 00000003 HFIOFR 00000004 HFIOFS 00000000 INDF 00000000 INDF0 00000000 INDF1 00000001 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IOCBF 00000396 IOCBF0 00000000 IOCBF1 00000001 IOCBF2 00000002 IOCBF3 00000003 IOCBF4 00000004 IOCBF5 00000005 IOCBF6 00000006 IOCBF7 00000007 IOCBN 00000395 IOCBN0 00000000 IOCBN1 00000001 IOCBN2 00000002 IOCBN3 00000003 IOCBN4 00000004 IOCBN5 00000005 IOCBN6 00000006 IOCBN7 00000007 IOCBP 00000394 IOCBP0 00000000 IOCBP1 00000001 IOCBP2 00000002 IOCBP3 00000003 IOCBP4 00000004 IOCBP5 00000005 IOCBP6 00000006 IOCBP7 00000007 IOCIE 00000003 IOCIF 00000000 IRBIT 2 IRCF0 00000003 IRCF1 00000004 IRCF2 00000005 IRCF3 00000006 IRPORT PORTB IR_Tester 00000544 IR_in 00000028 IR_in_good 00000030 IR_lhalf 0000002C LATA 0000010C LATA0 00000000 LATA1 00000001 LATA2 00000002 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 203 SYMBOL TABLE LABEL VALUE LATA3 00000003 LATA4 00000004 LATA5 00000005 LATA6 00000006 LATA7 00000007 LATB 0000010D LATB0 00000000 LATB1 00000001 LATB2 00000002 LATB3 00000003 LATB4 00000004 LATB5 00000005 LATB6 00000006 LATB7 00000007 LATC 0000010E LATC0 00000000 LATC1 00000001 LATC2 00000002 LATC3 00000003 LATC4 00000004 LATC5 00000005 LATC6 00000006 LATC7 00000007 LATE 00000110 LCDA 00000005 LCDCON 00000791 LCDCST 00000794 LCDCST0 00000000 LCDCST1 00000001 LCDCST2 00000002 LCDDATA0 000007A0 LCDDATA1 000007A1 LCDDATA10 000007AA LCDDATA3 000007A3 LCDDATA4 000007A4 LCDDATA6 000007A6 LCDDATA7 000007A7 LCDDATA9 000007A9 LCDEN 00000007 LCDIE 00000002 LCDIF 00000002 LCDIRE 00000007 LCDIRI 00000005 LCDIRS 00000006 LCDPS 00000792 LCDREF 00000793 LCDRL 00000795 LCDSE0 00000798 LCDSE1 00000799 LFIOFR 00000001 LMUX0 00000000 LMUX1 00000001 LP0 00000000 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 204 SYMBOL TABLE LABEL VALUE LP1 00000001 LP2 00000002 LP3 00000003 LRLAP0 00000006 LRLAP1 00000007 LRLAT0 00000000 LRLAT1 00000001 LRLAT2 00000002 LRLBP0 00000004 LRLBP1 00000005 LWLO 00000005 Lcontinue 00000332 LedOut LedOutH LedOutInd LedOutIndP LedOutL Lstate0 00000231 Lstate0a 00000239 Lstate1 0000023C Lstate10 00000284 Lstate10a 0000028A Lstate11 00000290 Lstate12 00000294 Lstate12a 0000029A Lstate13 000002A0 Lstate14 000002A4 Lstate14a 000002AA Lstate15 000002B0 Lstate16 000002B4 Lstate16a 000002BA Lstate17 000002C0 Lstate18 000002C4 Lstate18a 000002CA Lstate19 000002D0 Lstate1a 00000241 Lstate2 00000244 Lstate20 000002D4 Lstate20a 000002DA Lstate21 000002E0 Lstate22 000002E4 Lstate22a 000002EA Lstate23 000002F0 Lstate24 000002F4 Lstate24a 000002FA Lstate25 00000300 Lstate26 00000304 Lstate26a 0000030A Lstate27 00000310 Lstate28 00000314 Lstate28a 0000031A Lstate29 00000320 Lstate2a 00000249 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 205 SYMBOL TABLE LABEL VALUE Lstate3 0000024C Lstate30 00000324 Lstate30a 0000032A Lstate31 00000330 Lstate3a 00000251 Lstate4 00000254 Lstate4a 00000259 Lstate5 0000025C Lstate5a 00000261 Lstate6 00000264 Lstate6a 0000026E Lstate6b 0000026C Lstate7 00000270 Lstate8 00000274 Lstate8a 0000027A Lstate9 00000280 MC1OUT 00000000 MC2OUT 00000001 MFIOFR 00000002 MONO MasterTable 000005CB NOT_BOR 00000000 NOT_PD 00000003 NOT_POR 00000001 NOT_RI 00000002 NOT_RMCLR 00000003 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_WPUEN 00000007 NUM_TAB 0000000E OERR 00000001 OPTION_REG 00000095 OSCCON 00000099 OSCCONH 0000009A OSCCONL 00000099 OSCSTAT 0000009A OSCTUNE 00000098 OSFIE 00000007 OSFIF 00000007 OSTS 00000005 P 00000004 P1DC0 00000000 P1DC1 00000001 P1DC2 00000002 P1DC3 00000003 P1DC4 00000004 P1DC5 00000005 P1DC6 00000006 P1M0 00000006 P1M1 00000007 P1RSEN 00000007 P2BSEL 00000004 P2DC0 00000000 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 206 SYMBOL TABLE LABEL VALUE P2DC1 00000001 P2DC2 00000002 P2DC3 00000003 P2DC4 00000004 P2DC5 00000005 P2DC6 00000006 P2M0 00000006 P2M1 00000007 P2RSEN 00000007 P3DC0 00000000 P3DC1 00000001 P3DC2 00000002 P3DC3 00000003 P3DC4 00000004 P3DC5 00000005 P3DC6 00000006 P3M0 00000006 P3M1 00000007 P3RSEN 00000007 PATTERN23 PATTERN27 PCIE 00000006 PCL 00000002 PCLATH 0000000A PCLATH_SHAD 00000FE7 PCON 00000096 PEIE 00000006 PEN 00000002 PIE1 00000091 PIE2 00000092 PIE3 00000093 PIR1 00000011 PIR2 00000012 PIR3 00000013 PLLR 00000006 PORTA 0000000C PORTB 0000000D PORTC 0000000E PORTE 00000010 PR2 0000001B PR4 00000416 PR6 0000041D PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PSS1AC0 00000002 PSS1AC1 00000003 PSS1BD0 00000000 PSS1BD1 00000001 PSS2AC0 00000002 PSS2AC1 00000003 PSS2BD0 00000000 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 207 SYMBOL TABLE LABEL VALUE PSS2BD1 00000001 PSS3AC0 00000002 PSS3AC1 00000003 PSS3BD0 00000000 PSS3BD1 00000001 PSTR1CON 00000296 PSTR2CON 0000029D PSTR3CON 00000316 PWM1CON 00000294 PWM2CON 0000029B PWM3CON 00000314 RA0 00000000 RA1 00000001 RA2 00000002 RA3 00000003 RA4 00000004 RA5 00000005 RA6 00000006 RA7 00000007 RANDOM RB0 00000000 RB1 00000001 RB2 00000002 RB3 00000003 RB4 00000004 RB5 00000005 RB6 00000006 RB7 00000007 RC0 00000000 RC1 00000001 RC2 00000002 RC3 00000003 RC4 00000004 RC5 00000005 RC6 00000006 RC7 00000007 RCEN 00000003 RCIDL 00000006 RCIE 00000005 RCIF 00000005 RCREG 00000199 RCSTA 0000019D RD 00000000 RE3 00000003 RSEN 00000001 RX9 00000006 RX9D 00000000 R_NOT_W 00000002 S 00000003 SBCDE 00000002 SBOREN 00000007 SCIE 00000005 SCKP 00000004 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 208 SYMBOL TABLE LABEL VALUE SCS0 00000000 SCS1 00000001 SDAHT 00000003 SEG0 00000000 SEG0COM0 00000000 SEG0COM1 00000000 SEG0COM2 00000000 SEG0COM3 00000000 SEG1 00000001 SEG10 00000002 SEG10COM0 00000002 SEG10COM1 00000002 SEG10COM2 00000002 SEG10COM3 00000002 SEG11 00000003 SEG11COM0 00000003 SEG11COM1 00000003 SEG11COM2 00000003 SEG11COM3 00000003 SEG12 00000004 SEG12COM0 00000004 SEG12COM1 00000004 SEG12COM2 00000004 SEG12COM3 00000004 SEG13 00000005 SEG13COM0 00000005 SEG13COM1 00000005 SEG13COM2 00000005 SEG13COM3 00000005 SEG14 00000006 SEG14COM0 00000006 SEG14COM1 00000006 SEG14COM2 00000006 SEG14COM3 00000006 SEG15 00000007 SEG15COM0 00000007 SEG15COM1 00000007 SEG15COM2 00000007 SEG15COM3 00000007 SEG1COM0 00000001 SEG1COM1 00000001 SEG1COM2 00000001 SEG1COM3 00000001 SEG2 00000002 SEG2COM0 00000002 SEG2COM1 00000002 SEG2COM2 00000002 SEG2COM3 00000002 SEG3 00000003 SEG3COM0 00000003 SEG3COM1 00000003 SEG3COM2 00000003 SEG3COM3 00000003 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 209 SYMBOL TABLE LABEL VALUE SEG4 00000004 SEG4COM0 00000004 SEG4COM1 00000004 SEG4COM2 00000004 SEG4COM3 00000004 SEG5 00000005 SEG5COM0 00000005 SEG5COM1 00000005 SEG5COM2 00000005 SEG5COM3 00000005 SEG6 00000006 SEG6COM0 00000006 SEG6COM1 00000006 SEG6COM2 00000006 SEG6COM3 00000006 SEG7 00000007 SEG7COM0 00000007 SEG7COM1 00000007 SEG7COM2 00000007 SEG7COM3 00000007 SEG8 00000000 SEG8COM0 00000000 SEG8COM1 00000000 SEG8COM2 00000000 SEG8COM3 00000000 SEG9 00000001 SEG9COM0 00000001 SEG9COM1 00000001 SEG9COM2 00000001 SEG9COM3 00000001 SEN 00000000 SENDB 00000003 SLPEN 00000006 SMP 00000007 SPBRG 0000019B SPBRGH 0000019C SPBRGL 0000019B SPEN 00000007 SPLLEN 00000007 SRCLK0 00000004 SRCLK1 00000005 SRCLK2 00000006 SRCON0 0000011A SRCON1 0000011B SREN 00000005 SRLEN 00000007 SRNQEN 00000002 SRNQSEL 00000003 SRPR 00000000 SRPS 00000001 SRQEN 00000003 SRRC1E 00000000 SRRC2E 00000001 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 210 SYMBOL TABLE LABEL VALUE SRRCKE 00000002 SRRPE 00000003 SRSC1E 00000004 SRSC2E 00000005 SRSCKE 00000006 SRSPE 00000007 SSPADD 00000212 SSPBUF 00000211 SSPCON 00000215 SSPCON1 00000215 SSPCON2 00000216 SSPCON3 00000217 SSPEN 00000005 SSPIE 00000003 SSPIF 00000003 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPMSK 00000213 SSPOV 00000006 SSPSTAT 00000214 SSSEL 00000001 STATUS 00000003 STATUS_SHAD 00000FE4 STKOVF 00000007 STKPTR 00000FED STKUNF 00000006 STR1A 00000000 STR1B 00000001 STR1C 00000002 STR1D 00000003 STR1SYNC 00000004 STR2A 00000000 STR2B 00000001 STR2C 00000002 STR2D 00000003 STR2SYNC 00000004 STR3A 00000000 STR3B 00000001 STR3C 00000002 STR3D 00000003 STR3SYNC 00000004 SWDTEN 00000000 SYNC 00000004 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T0XCS 00000000 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000018 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 211 SYMBOL TABLE LABEL VALUE T1GCON 00000019 T1GGO 00000003 T1GPOL 00000006 T1GSEL 00000005 T1GSPM 00000004 T1GSS0 00000000 T1GSS1 00000001 T1GTM 00000005 T1GVAL 00000002 T1OSCEN 00000003 T1OSCR 00000007 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 0000001C T2OUTPS0 00000003 T2OUTPS1 00000004 T2OUTPS2 00000005 T2OUTPS3 00000006 T4CKPS0 00000000 T4CKPS1 00000001 T4CON 00000417 T4OUTPS0 00000003 T4OUTPS1 00000004 T4OUTPS2 00000005 T4OUTPS3 00000006 T6CKPS0 00000000 T6CKPS1 00000001 T6CON 0000041E T6OUTPS0 00000003 T6OUTPS1 00000004 T6OUTPS2 00000005 T6OUTPS3 00000006 TICK_VALUE D'35' TMR0 00000015 TMR0CS 00000005 TMR0IE 00000005 TMR0IF 00000002 TMR0SE 00000004 TMR1 00000016 TMR1CS0 00000006 TMR1CS1 00000007 TMR1GE 00000007 TMR1GIE 00000007 TMR1GIF 00000007 TMR1H 00000017 TMR1IE 00000000 TMR1IF 00000000 TMR1L 00000016 TMR1ON 00000000 TMR2 0000001A TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 212 SYMBOL TABLE LABEL VALUE TMR4 00000415 TMR4IE 00000001 TMR4IF 00000001 TMR4ON 00000002 TMR6 0000041C TMR6IE 00000003 TMR6IF 00000003 TMR6ON 00000002 TOSH 00000FEF TOSL 00000FEE TRISA 0000008C TRISA0 00000000 TRISA1 00000001 TRISA2 00000002 TRISA3 00000003 TRISA4 00000004 TRISA5 00000005 TRISA6 00000006 TRISA7 00000007 TRISB 0000008D TRISB0 00000000 TRISB1 00000001 TRISB2 00000002 TRISB3 00000003 TRISB4 00000004 TRISB5 00000005 TRISB6 00000006 TRISB7 00000007 TRISC 0000008E TRISC0 00000000 TRISC1 00000001 TRISC2 00000002 TRISC3 00000003 TRISC4 00000004 TRISC5 00000005 TRISC6 00000006 TRISC7 00000007 TRISE 00000090 TRMT 00000001 TUN0 00000000 TUN1 00000001 TUN2 00000002 TUN3 00000003 TUN4 00000004 TUN5 00000005 TX9 00000006 TX9D 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 0000019A TXSTA 0000019E UA 00000001 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 213 SYMBOL TABLE LABEL VALUE VLCD1PE 00000001 VLCD2PE 00000002 VLCD3PE 00000003 W 00000000 WA 00000004 WCOL 00000007 WDTCON 00000097 WDTPS0 00000001 WDTPS1 00000002 WDTPS2 00000003 WDTPS3 00000004 WDTPS4 00000005 WERR 00000005 WFT 00000007 WPUB 0000020D WPUB0 00000000 WPUB1 00000001 WPUB2 00000002 WPUB3 00000003 WPUB4 00000004 WPUB5 00000005 WPUB6 00000006 WPUB7 00000007 WPUE 00000210 WPUE3 00000003 WR 00000001 WREG 00000009 WREG_SHAD 00000FE5 WREN 00000002 WRERR 00000003 WUE 00000001 Z 00000002 Z_SHAD 00000002 _BOREN_NSLEEP 0000FDFF _BOREN_OFF 0000F9FF _BOREN_ON 0000FFFF _BOREN_SBODEN 0000FBFF _BORV_19 0000FFFF _BORV_25 0000FBFF _CLKOUTEN_OFF 0000FFFF _CLKOUTEN_ON 0000F7FF _CONFIG1 00008007 _CONFIG2 00008008 _CPD_OFF 0000FFFF _CPD_ON 0000FEFF _CP_OFF 0000FFFF _CP_ON 0000FF7F _DEVID1 00008006 _FCMEN_OFF 0000DFFF _FCMEN_ON 0000FFFF _FOSC_ECH 0000FFFF _FOSC_ECL 0000FFFD _FOSC_ECM 0000FFFE MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 214 SYMBOL TABLE LABEL VALUE _FOSC_EXTRC 0000FFFB _FOSC_HS 0000FFFA _FOSC_INTOSC 0000FFFC _FOSC_LP 0000FFF8 _FOSC_XT 0000FFF9 _IDLOC0 00008000 _IDLOC1 00008001 _IDLOC2 00008002 _IDLOC3 00008003 _IESO_OFF 0000EFFF _IESO_ON 0000FFFF _LVP_OFF 0000DFFF _LVP_ON 0000FFFF _MCLRE_OFF 0000FFBF _MCLRE_ON 0000FFFF _PLLEN_OFF 0000FEFF _PLLEN_ON 0000FFFF _PWRTE_OFF 0000FFFF _PWRTE_ON 0000FFDF _STVREN_OFF 0000FDFF _STVREN_ON 0000FFFF _VCAPEN_OFF 0000FFFF _VCAPEN_RA0 0000FFCF _VCAPEN_RA5 0000FFDF _VCAPEN_RA6 0000FFEF _WDTE_NSLEEP 0000FFF7 _WDTE_OFF 0000FFE7 _WDTE_ON 0000FFFF _WDTE_SWDTEN 0000FFEF _WRT_ALL 0000FFFC _WRT_BOOT 0000FFFE _WRT_HALF 0000FFFD _WRT_OFF 0000FFFF __16F1936 00000001 address 0000002A b2l_in_green 00000042 b2l_in_red 00000041 b2l_lcount 00000040 b2l_loop 00000390 b2l_out_hi 0000003E b2l_out_low 0000003F bin2led 0000038C blinkie_check 0000045A butcount 00000031 button 0000002D button_check 00000476 command 00000029 count1 00000022 count2 00000023 dcycle 00000021 delay 000003A5 delay_count 00000046 delay_loop 000003A6 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 215 SYMBOL TABLE LABEL VALUE delay_loop2 00000350 demo_mode 00000057 demo_store 0000F000 display_1bit 000004C8 display_cycle0 00000059 display_cycle1 00000099 display_cycle2 000000D9 display_cycle3 00000119 display_cycle4 00000159 display_cycle5 00000199 display_pattern_id 000003D3 drive_main_leds 00000034 dupvar end_pattern endpat0 000008FD endpat1 00000912 endpat10 00000B2B endpat11 00000B7C endpat12 00000BCD endpat13 00000BF4 endpat14 00000CBD endpat2 0000095D endpat3 00000978 endpat4 000009DB endpat5 000009F0 endpat6 00000A23 endpat7 00000A38 endpat8 00000A4D endpat9 00000A74 entry exit_int 00000058 exit_tx 00000053 fbyte_loop 0000039E fcount 00000025 flip_in 00000043 flip_lcount 00000045 flip_out 00000044 flipbyte 0000039A gen_random 000004AB get_next_pattern_entry 000003FB get_next_tx_bit 00000345 get_state_tbl_hi_address 000001D9 get_state_tbl_low_address 000001DF glabel1 00000403 go_state_table 000001ED greturn 00000415 gskip 00000418 here 00000004 ibutton 0000054D iloop1 00000560 in0 0000004F in1 00000050 in2 00000051 MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 216 SYMBOL TABLE LABEL VALUE in3 00000052 in4 00000053 in5 00000054 input 00000079 instate 00000026 itop 00000544 jump_address 000005C5 leng 00000021 main 0000057C make_mtab make_state_jump_table max_instate 00000027 mem 0000005D mem2 00000078 mem3 000000D0 mult_nop next_pattern 000003AA nextf 00000020 offset_hi 0000005B offset_low 0000005C out0 00000039 out1 0000003A out2 0000003B out3 0000003C out_address 00000035 out_command 00000036 out_pattern 00000038 out_toggle 00000037 p27_led_down 000008AE p27_led_up 000008AA p27_loop 0000003F p2count 0000005A p2loop 000004C3 past_exit 000003BC past_pattern 000003B4 pattern 0000004D pattern_driver 0000044D pattern_return 00000498 patternc 0000000F pclath_save 0000004B pindex 0000007B pindex1 0000007A pindex2 0000002F ploop0 00000458 ploop1a 0000047B ploop1down 00000488 ploop1up 00000484 ploop2 0000048C ploop2a 000004A3 ploop3 000004A8 psize 00000058 pspeed 00000056 ptop 0000044D MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 217 SYMBOL TABLE LABEL VALUE qcount 00000034 qdelay 0000034F random 00000059 read_button_in 00000333 read_demo_mode 0000043B read_eeprom 0000042C read_ir_in 0000033A remote_check 00000461 repeat 00000024 repeat_loop 00000026 rf_command_out 00000353 scount 0000003D send_nothing 00000032 send_on_off 0000055C send_one 00000019 send_zero 00000030 set_exit 000003C9 set_loop 000003C2 set_max_state 0000033E set_pattern 000003BF setbank0 setbank1 setup_pattern_table 000003E6 skip1 00000013 smi_l1 00000344 speed 00000055 sreturn 000003FA start_pattern state2_tbl state_jump_table 000001F1 state_tbl status_temp 0000007E storedata strobe_count 00000047 strobe_delay 000003CC strobe_delay1 000003CD strobe_delay2 000003CE t27_loop2 00000812 table0 000008B2 table1 000008FD table10 00000A74 table11 00000B2B table12 00000B7C table13 00000BCD table14 00000BF4 table2 00000912 table3 0000095D table4 00000978 table5 000009DB table6 000009F0 table7 00000A23 table8 00000A38 table9 00000A4D MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 218 SYMBOL TABLE LABEL VALUE table_lookup 000005BE table_lookup2 000001E6 table_type_23 000004B5 table_type_27 00000800 tbl2_hi 00000032 tbl2_low 00000033 tbl_hi 00000048 tbl_low 00000049 tbltype 0000004E tbltype1 tdemo_cont 00000445 tdemo_on 00000444 temp2 0000004C temp_high 0000004A toggle 0000002B toggle_demo 0000043F tx_1 0000002E var var_all_bank var_bank2 w_temp 0000007F write_eeprom 00000419 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.35 GENERIC_2009.ASM 6-12-2010 10:42:56 PAGE 219 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- ---------------- 0800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 08C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 09C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXX--- 8000 : -------XX------- ---------------- ---------------- ---------------- F000 : X--------------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 2725 Program Memory Words Free: 5467 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 9 reported, 33 suppressed