MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 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-2011 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 using the newer PIC chips. This code does NOT 00027 ; support the older 12F683, 16F688 and 16F886 2DKits chips. 00028 ; 00029 ; The newer chips have enough enhancements and keeping backward compatibility 00030 ; for is not worth the effort. The new chips are better, faster, and cheaper. 00031 ; 00032 ; 4RBG /w common anode (ufo and clear 5mm) .... unknown 00033 ; 4RBG /w common Cathode (milk 5mm) ........... unknown 00034 ; 6 BI /w bi-color LEDs. ...................... unknown 00035 ; 6 BI /w mono LEDs. .......................... unknown 00036 ; badge 6 bi-color plus 1 mono, no IR ......... unknown 00037 ; badge 7 LED /w mono LEDs, no IR ............. unknown 00038 ; 19 LED Stick ................................ unknown 00039 ; 19 circle /w mono............................ unknown 00040 ; 19 circle /w bi-color........................ unknown 00041 ; RGB Stick ................................... unknown 00042 ; 3x3 /w mono ................................. unknown 00043 ; 3x3 /w bi-color ............................. unknown 00044 ; 5x7 matrix .................................. code should be ported over. 00045 ; 16x8x2 ...................................... unknown (should be close) 00046 ; 12 Circle ................................... unknown (should be close) 00047 ; 24 Sphere ................................... unknown (should be close) 00048 ; 4x4x4 ....................................... work in progress 00049 ; 4x4 ......................................... work in progress 00050 ; gator ....................................... work in progress 00051 ; dogtag 2RGB ................................. work in progress 00052 ; dogtag 6 BI ................................. work in progress 00053 ; MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00054 ; Dwayne Forsyth wrote the original code, Dwayne pulled a number of updates, 00055 ; code cleanup, and patterns from Dave Holle. 00056 ; 00057 ;********************************************************************** 00058 ; 00059 ; Filename: generic_2011.asm 00060 ; Date: 2011 (conaints code developed from 2004 onward. 00061 ; 00062 ; Author: Dwayne Forsyth 00063 ; email: Dwayne@2DKits.com 00064 ; Company: www.2DKits.com 00065 ; 502 Rue Orleanais 00066 ; Deer Park, IL 60010 00067 ; 00068 ; Help from: Dave Holle 00069 ; 00070 ;********************************************************************** 00071 00072 errorlevel -302 ; suppress banking messages 00073 00074 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00075 ; The labels following the directive are located in the respective .inc file. 00076 ; See respective data sheet for additional information on configuration word. 00077 00078 ; this SIM_DEBUG disables the buttons and IR inputs so the code will run the patterns. 00079 ; #define SIM_DEBUG 00080 00081 ;---------------------------------------------------- 00082 ; Select 1 board config! 00083 ;---------------------------------------------------- 00084 ;#define RGB4 ; Rom "1" 00085 ;#define RGB4_Common_Cathode ; Rom "2" 00086 ;#define BI6 ; Rom "3" 00087 ;#define BI6_MONO ; Rom "4" 00088 ;#define BI6_BADGE ; Rom "5" 00089 ;#define BI6_BADGE_MONO ; Rom "6" 00090 ;#define S19 ; Rom "7" 00091 ;#define C19 ; Rom "8" 00092 ;#define C19_MONO ; Rom "9" 00093 ; 5x7 Mono ; Rom "0" 00094 ; 5x7 ; Rom "10" 00095 ;#define D10 00096 ;#define M3X3 ; Rom "E" 00097 ;#define M3X3_MONO ; Rom "F" 00098 ;#define SRGB ; Rom "G" 00099 ;#define SRGB_Common_Cathode ; Rom "H" 00100 ;#define M8X16 ; Rom "J" 00101 ;#define C12 ; Rom "M" 00102 ;#define C12_MONO ; Rom "L" 00103 ;#define C12_SINGLE ; Rom "K" 00104 ;#define C12_SINGLE_MONO ; Rom "P" 00105 ;#define GATOR ; Rom ? ; Working 08/02 00106 ;#define BI6_DOGTAG ; Rom ? ; Working 08/02 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00107 #define BI6_DOGTAG_MONO ; Rom ? 00108 ;#define RGB2_DOGTAG ; Rom ? ; Working 08/02 00109 ;#define RGB_4x4x4 ; Rom ? 00110 ;#define RGB_4x4 ; Rom ? 00111 ;---------------------------------------------------- 00112 00113 ;********************************* 00114 ; 4RBG /w common anode (ufo and clear 5mm) 00115 ;********************************* 00116 00117 #ifdef RGB4 00118 #define PATTERN1 00119 #define PATTERN2 00120 #define PATTERN3 00121 #define PATTERN4 00122 #define PATTERN20 00123 #define DISPLAY_1BIT_C 00124 #define DISPLAY_2BIT_C 00125 #define ENABLE_IR 00126 #include ; processor specific variable definitions 00127 LIST P=PIC12F683 00128 NUM_TAB equ d'14' ;highest pattern table number 00129 STROBE_LINES equ 0x04 00130 DELAYTIMER equ 0x36 00131 #endif 00132 00133 ;********************************* 00134 ; 4RBG /w common Cathode (milk 5mm and 10mm) 00135 ;********************************* 00136 00137 #ifdef RGB4_Common_Cathode 00138 #define RGB4 00139 #define Common_Cathode 00140 #define PATTERN1 00141 #define PATTERN2 00142 #define PATTERN3 00143 #define PATTERN4 00144 #define PATTERN20 00145 #define DISPLAY_1BIT_C 00146 #define DISPLAY_2BIT_C 00147 #define ENABLE_IR 00148 #include ; processor specific variable definitions 00149 LIST P=PIC12F683 00150 NUM_TAB equ d'14' ;highest pattern table number 00151 STROBE_LINES equ 0x04 00152 DELAYTIMER equ 0x36 00153 #endif 00154 00155 ;********************************* 00156 ; D10 12 LEDs. 00157 ;********************************* 00158 00159 #ifdef D10 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00160 #define BIN2LED 00161 #define PATTERN1 00162 #define PATTERN3 00163 #define FLIPBYTE 00164 #define DEDICATED_BUTTON 00165 #define DEDICATED_BUTTON2 00166 #define DISPLAY_1BIT_I 00167 #define DISPLAY_2BIT_C 00168 #include ; processor specific variable definitions 00169 LIST P=PIC12F683 00170 NUM_TAB equ d'14' ;highest pattern table number 00171 STROBE_LINES equ 0x04 00172 DELAYTIMER equ 0x0A ; not sure 00173 #endif 00174 00175 ;********************************* 00176 ; 6 BI /w bi-color LEDs. 00177 ;********************************* 00178 00179 #ifdef BI6 00180 #define BIN2LED 00181 #define PATTERN1 00182 #define PATTERN3 00183 #define DISPLAY_1BIT_C 00184 #define DISPLAY_2BIT_C 00185 #define ENABLE_IR 00186 #include ; processor specific variable definitions 00187 LIST P=PIC12F683 00188 NUM_TAB equ d'14' ;highest pattern table number 00189 STROBE_LINES equ 0x04 00190 DELAYTIMER equ 0x3A 00191 #endif 00192 00193 ;********************************* 00194 ; 6 BI /w mono LEDs. 00195 ;********************************* 00196 00197 #ifdef BI6_MONO 00198 #define BI6 00199 #define MONO 00200 #define FLIPBYTE 00201 #define PATTERN5 00202 #define PATTERN11 00203 #define DISPLAY_1BIT_A 00204 #define DISPLAY_2BIT_A 00205 #define ENABLE_IR 00206 #include ; processor specific variable definitions 00207 LIST P=PIC12F683 00208 NUM_TAB equ d'17' ;highest pattern table number 00209 STROBE_LINES equ 0x04 00210 DELAYTIMER equ 0x3A 00211 #endif 00212 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00213 ;********************************* 00214 ; badge 6 bi-color plus 1 mono LEDs. 00215 ;********************************* 00216 00217 #ifdef BI6_BADGE 00218 #define BI6 00219 #define BIN2LED 00220 #define PATTERN10 00221 #define PATTERN3 00222 #define BADGE 00223 #define DISPLAY_1BIT_C 00224 #define DISPLAY_2BIT_C 00225 #include ; processor specific variable definitions 00226 LIST P=PIC12F683 00227 NUM_TAB equ d'14' ;highest pattern table number 00228 STROBE_LINES equ 0x04 00229 DELAYTIMER equ 0x3A 00230 #endif 00231 00232 ;********************************* 00233 ; badge 6 mono LEDs. 00234 ;********************************* 00235 00236 #ifdef BI6_BADGE_MONO 00237 #define BI6 00238 #define MONO 00239 #define BADGE 00240 #define PATTERN5 00241 #define PATTERN11 00242 #define FLIPBYTE 00243 #define DISPLAY_1BIT_A 00244 #define DISPLAY_2BIT_A 00245 #include ; processor specific variable definitions 00246 LIST P=PIC12F683 00247 NUM_TAB equ d'19' ;highest pattern table number 00248 STROBE_LINES equ 0x04 00249 DELAYTIMER equ 0x3A 00250 #endif 00251 00252 ;#define DREW ; special pattern in EEProm for Drew 00253 00254 ;********************************* 00255 ; 19 LED Stick 00256 ;********************************* 00257 00258 #ifdef S19 00259 #define PATTERN6 00260 #define PATTERN7 00261 #define PATTERN8 00262 #define FLIPBYTE 00263 #define DISPLAY_1BIT_D 00264 #define ENABLE_IR 00265 #include ; processor specific variable definitions MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00266 LIST P=PIC12F683 00267 NUM_TAB equ d'23' ;highest pattern table number 00268 STROBE_LINES equ 0x05 00269 DELAYTIMER equ 0x3A 00270 #endif 00271 00272 ;********************************* 00273 ; 19 Circle bicolor 00274 ;********************************* 00275 00276 #ifdef C19 00277 #define PATTERN9 00278 #define PATTERN12 00279 #define PATTERN13 00280 #define BIN2LED 00281 #define RANDOM 00282 #define DEDICATED_BUTTON 00283 #define DISPLAY_1BIT_B 00284 #define DISPLAY_2BIT_D 00285 #define ENABLE_IR 00286 #include ; processor specific variable definitions 00287 LIST P=PIC16F688 00288 NUM_TAB equ d'25' ;highest pattern table number 00289 STROBE_LINES equ 0x07 00290 DELAYTIMER equ 0x18 00291 #endif 00292 00293 ;********************************* 00294 ; 19 Circle mono 00295 ;********************************* 00296 00297 #ifdef C19_MONO 00298 #define MONO 00299 #define C19 00300 #define PATTERN9 00301 #define PATTERN12 00302 #define PATTERN14 00303 #define RANDOM 00304 #define BIN2LED 00305 #define DEDICATED_BUTTON 00306 #define DISPLAY_1BIT_B 00307 #define DISPLAY_2BIT_E 00308 #define ENABLE_IR 00309 #include ; processor specific variable definitions 00310 LIST P=PIC16F688 00311 NUM_TAB equ d'25' ;highest pattern table number 00312 STROBE_LINES equ 0x07 00313 DELAYTIMER equ 0x18 00314 #endif 00315 00316 ;********************************* 00317 ; 3x3 matrix Bi-color 00318 ;********************************* MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00319 00320 #ifdef M3X3 00321 #define PATTERN6 00322 #define PATTERN19 00323 #define PATTERN21 00324 #define BIN2LED 00325 #define DISPLAY_1BIT_F 00326 #define ENABLE_IR 00327 #define MULTIBUTTON 00328 #define RANDOM 00329 #include ; processor specific variable definitions 00330 LIST P=PIC12F683 00331 NUM_TAB equ d'14' ;highest pattern table number 00332 STROBE_LINES equ 0x05 00333 DELAYTIMER equ 0x2E 00334 #endif 00335 00336 ;********************************* 00337 ; 3x3 matrix mono 00338 ;********************************* 00339 00340 #ifdef M3X3_MONO 00341 #define M3X3 00342 #define MONO 00343 #define PATTERN6 00344 #define PATTERN19 00345 #define PATTERN21 00346 #define BIN2LED 00347 #define DISPLAY_1BIT_F 00348 #define ENABLE_IR 00349 #define MULTIBUTTON 00350 #define RANDOM 00351 #include ; processor specific variable definitions 00352 LIST P=PIC12F683 00353 NUM_TAB equ d'14' ;highest pattern table number 00354 STROBE_LINES equ 0x05 00355 DELAYTIMER equ 0x2E 00356 #endif 00357 00358 ;********************************* 00359 ; RGB Stick (new UFO 00360 ;********************************* 00361 00362 #ifdef SRGB 00363 #define PATTERN15 00364 #define PATTERN16 00365 #define PATTERN17 00366 #define PATTERN18 00367 #define DEDICATED_BUTTON 00368 #define DEDICATED_BUTTON2 00369 #define DISPLAY_1BIT_E 00370 #define ENABLE_IR 00371 #include ; processor specific variable definitions MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00372 LIST P=PIC16F688 00373 NUM_TAB equ d'15' ;highest pattern table number 00374 STROBE_LINES equ 0x07 00375 DELAYTIMER equ 0x18 00376 #endif 00377 00378 ;********************************* 00379 ; RGB Stick 00380 ;********************************* 00381 00382 #ifdef SRGB_Common_Cathode 00383 #define SRGB 00384 #define Common_Cathode 00385 #define PATTERN15 00386 #define PATTERN16 00387 #define PATTERN17 00388 #define PATTERN18 00389 #define DEDICATED_BUTTON 00390 #define DEDICATED_BUTTON2 00391 #define DISPLAY_1BIT_E 00392 #define ENABLE_IR 00393 #include ; processor specific variable definitions 00394 LIST P=PIC16F688 00395 NUM_TAB equ d'15' ;highest pattern table number 00396 STROBE_LINES equ 0x07 00397 DELAYTIMER equ 0x18 00398 #endif 00399 00400 ;********************************* 00401 ; 8x16 Matrix 00402 ;********************************* 00403 00404 #ifdef M8X16 00405 #define PATTERN12 00406 #define PATTERN22 00407 #define PATTERN24 00408 #define PATTERN25 00409 #define PATTERN26 00410 #define BIN2LED 00411 #define RANDOM 00412 #define DEDICATED_BUTTON 00413 #define DISPLAY_1BIT_G 00414 ;#define DISPLAY_2BIT_D 00415 #define ENABLE_IR 00416 #include ; processor specific variable definitions 00417 LIST P=PIC16F1938 00418 NUM_TAB equ d'18' ;highest pattern table number 00419 STROBE_LINES equ 0x10 00420 DELAYTIMER equ 0x0a 00421 #endif 00422 00423 ;********************************* 00424 ; 24 LED 3D Sphere Bi-color MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00425 ;********************************* 00426 00427 #ifdef C12 00428 #define PATTERN23 00429 #define PATTERN27 00430 #define BIN2LED 00431 #define RANDOM 00432 #define DEDICATED_BUTTON 00433 #define DEDICATED_BUTTON2 00434 #define DISPLAY_1BIT_H 00435 #define FLIPBYTE 00436 ;#define DISPLAY_2BIT_D 00437 #define ENABLE_IR 00438 ;#include ; old chip 00439 ; LIST P=PIC16F886 ; old chip 00440 #include ; processor specific variable definitions 00441 LIST P=PIC16F1936 00442 FSR EQU FSR0L 00443 NUM_TAB equ d'14' ;highest pattern table number 00444 STROBE_LINES equ 0x06 00445 DELAYTIMER equ 0x14 00446 #endif 00447 00448 ;********************************* 00449 ; 24 LED 3D Sphere Mono 00450 ;********************************* 00451 00452 #ifdef C12_MONO 00453 #define C12 00454 #define MONO 00455 #define PATTERN23 00456 #define PATTERN27 00457 #define BIN2LED 00458 #define RANDOM 00459 #define DEDICATED_BUTTON 00460 #define DEDICATED_BUTTON2 00461 #define DISPLAY_1BIT_H 00462 #define FLIPBYTE 00463 ;#define DISPLAY_2BIT_D 00464 #define ENABLE_IR 00465 ;#include ; old chip 00466 ; LIST P=PIC16F886 ; old chip 00467 #include ; processor specific variable definitions 00468 LIST P=PIC16F1936 00469 FSR EQU FSR0L 00470 NUM_TAB equ d'14' ;highest pattern table number 00471 STROBE_LINES equ 0x06 00472 DELAYTIMER equ 0x14 00473 #endif 00474 00475 ;********************************* 00476 ; 12 Single Bi-color Circle 00477 ;********************************* MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00478 00479 #ifdef C12_SINGLE 00480 #define C12 00481 #define SINGLE 00482 #define PATTERN23 00483 #define PATTERN27 00484 #define BIN2LED 00485 #define RANDOM 00486 #define DEDICATED_BUTTON 00487 #define DEDICATED_BUTTON2 00488 #define DISPLAY_1BIT_H 00489 #define FLIPBYTE 00490 ;#define DISPLAY_2BIT_D 00491 #define ENABLE_IR 00492 ;#include ; old chip 00493 ; LIST P=PIC16F886 ; old chip 00494 #include ; processor specific variable definitions 00495 LIST P=PIC16F1936 00496 FSR EQU FSR0L 00497 NUM_TAB equ d'14' ;highest pattern table number 00498 STROBE_LINES equ 0x06 00499 DELAYTIMER equ 0x14 00500 #endif 00501 00502 ;********************************* 00503 ; 12 Single Mono Circle 00504 ;********************************* 00505 00506 #ifdef C12_SINGLE_MONO 00507 #define C12 00508 #define SINGLE 00509 #define MONO 00510 #define PATTERN23 00511 #define PATTERN27 00512 #define BIN2LED 00513 #define RANDOM 00514 #define DEDICATED_BUTTON 00515 #define DEDICATED_BUTTON2 00516 #define DISPLAY_1BIT_H 00517 #define FLIPBYTE 00518 ;#define DISPLAY_2BIT_D 00519 #define ENABLE_IR 00520 #include ; processor specific variable definitions 00521 LIST P=PIC16F1936 00522 FSR EQU FSR0L 00523 NUM_TAB equ d'14' ;highest pattern table number 00524 STROBE_LINES equ 0x06 00525 DELAYTIMER equ 0x14 00526 #endif 00527 00528 00529 ;********************************* 00530 ; GATOR MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00531 ;********************************* 00532 00533 #ifdef GATOR 00534 #define PATTERN6 00535 #define PATTERN28 00536 #define FLIPBYTE 00537 #define DISPLAY_1BIT_GATOR 00538 #define ENABLE_IR 00539 #include ; processor specific variable definitions 00540 LIST P=PIC12F1822 00541 NUM_TAB equ d'08' ;highest pattern table number 00542 STROBE_LINES equ 0x05 00543 DELAYTIMER equ 0x30 00544 #endif 00545 00546 ;********************************* 00547 ; 6 bi dogtag 00548 ;********************************* 00549 00550 #ifdef BI6_DOGTAG 00551 #define BIN2LED 00552 #define PATTERN1 00553 #define PATTERN3 00554 #define DISPLAY_1BIT_C 00555 #define DISPLAY_2BIT_C 00556 #include ; processor specific variable definitions 00557 LIST P=PIC12F1822 00558 NUM_TAB equ d'14' ;highest pattern table number 00559 STROBE_LINES equ 0x04 00560 DELAYTIMER equ 0x3a 00561 #endif 00562 00563 ;********************************* 00564 ; 6 bi dogtag MONO 00565 ;********************************* 00566 00567 #ifdef BI6_DOGTAG_MONO 00568 #define MONO 00569 #define BI6_DOGTAG 00570 #define BIN2LED 00571 #define PATTERN1 00572 #define PATTERN3 00573 #define DISPLAY_1BIT_C 00574 #define DISPLAY_2BIT_C 00575 #include ; processor specific variable definitions 00001 LIST 00002 00003 ;========================================================================== 00004 ; MPASM PIC12F1822 processor include 00005 ; 00006 ; (c) Copyright 1999-2011 Microchip Technology, All rights reserved 00007 ;========================================================================== 00008 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01032 LIST 00576 LIST P=PIC12F1822 0000000E 00577 NUM_TAB equ d'14' ;highest pattern table number 00000004 00578 STROBE_LINES equ 0x04 0000003A 00579 DELAYTIMER equ 0x3a 00580 #endif 00581 00582 ;********************************* 00583 ; 2RGB DogTag 00584 ;********************************* 00585 00586 #ifdef RGB2_DOGTAG 00587 #define PATTERN1 00588 #define PATTERN2 00589 #define PATTERN3 00590 #define PATTERN4 00591 #define PATTERN20 00592 #define DISPLAY_1BIT_C 00593 #define DISPLAY_2BIT_C 00594 #define FLIPBYTE 00595 #include ; processor specific variable definitions 00596 LIST P=PIC12F1822 00597 NUM_TAB equ d'14' ;highest pattern table number 00598 STROBE_LINES equ 0x03 00599 DELAYTIMER equ 0x3a 00600 #endif 00601 00602 00603 00604 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00605 ; The labels following the directive are located in the respective .inc file. 00606 ; See respective data sheet for additional information on configuration word. 00607 00608 #ifdef __12F1822 8007 E984 00609 __CONFIG _CONFIG1, _CLKOUTEN_OFF & _FCMEN_ON & _IESO_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _MCL RE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC 8008 DEFF 00610 __CONFIG _CONFIG2, _WRT_OFF & _BORV_19 & _PLLEN_OFF & _STVREN_ON & _LVP_OFF 00611 #else 00612 #ifdef __16F1936 00613 __CONFIG _CONFIG1, _CLKOUTEN_OFF & _FCMEN_ON & _IESO_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _MCL RE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC 00614 __CONFIG _CONFIG2, _WRT_OFF & _BORV_19 & _PLLEN_OFF & _STVREN_ON & _LVP_ON 00615 #else 00616 #ifdef __16F1938 00617 __CONFIG _CONFIG1, _CLKOUTEN_OFF & _FCMEN_ON & _IESO_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _MCL RE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTOSC 00618 __CONFIG _CONFIG2, _WRT_OFF & _BORV_19 & _PLLEN_OFF & _STVREN_ON & _LVP_ON 00619 #else 00620 error 'Non Supported PIC chip' 00621 #endif 00622 #endif 00623 #endif 00624 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00625 00626 00627 ;********************************************************************** 00628 ; Macros 00629 ;********************************************************************** 00630 00000020 00631 mem = 20 0000007F 00632 mem2 = 0x7F 000000A0 00633 mem3 = 0xa0 00634 #include macros.asm 00001 ;********************************************************************** 00002 ; Macros 00003 ;********************************************************************** 00004 00005 var macro name 00006 name equ mem 00007 mem = mem + 1 00008 if (mem >= mem2) 00009 error 'Too much var space used' 00010 endif 00011 endm 00012 00013 dupvar macro name, name2 00014 name equ name2 00015 endm 00016 00017 var_all_bank macro name 00018 name equ mem2 00019 mem2 = mem2 - 1 00020 if (mem >= mem2) 00021 error 'Too much var space used' 00022 endm 00023 000000A0 00024 mem3 = 0xa0 00025 var_bank2 macro name 00026 name equ mem3 00027 mem3 = mem3 + 1 00028 if (mem3 >= 0xef) 00029 error 'Too much var space used' 00030 endm 00031 00000000 00032 patternc = 0 00033 start_pattern macro typem, delaym 00034 00035 table#v(patternc) 00036 if (typem == 1) || (typem == 6) || (typem == 0x15) || (typem == 0x1c) 00037 leng = (endpat#v(patternc)-$-3)/3 ;tbltype1,speed,length 00038 else 00039 if (typem == 3) || (typem == 0x0b) || (typem == 0x10) || (typem == 0x13) || (typem == 0x14)|| (typem == 0x18) 00040 leng = (endpat#v(patternc)-$-3)/2 ;tbltype1,speed,length 00041 else 00042 if (typem == 9) || (typem == 0x0e) MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00043 leng =(endpat#v(patternc)-$-3)/5 ;tbltype1,speed,length 00044 else 00045 if (typem == 0x0a) 00046 leng =(endpat#v(patternc)-$-3)/4 ;tbltype1,speed,length 00047 else 00048 if (typem == 0x0d) 00049 leng =(endpat#v(patternc)-$-3)/(9+1) ;tbltype1,speed,length 00050 else 00051 if (typem == 0x0f) || (typem == 0x12)|| (typem == 0x17)||(typem == 0x1b) 00052 leng =(endpat#v(patternc)-$-3)/(6) ;tbltype1,speed,length 00053 else 00054 if (typem == 0x11) 00055 leng = (endpat#v(patternc)-$-3)/(9+4) ;tbltype1,speed,length 00056 else 00057 if (typem == 0x16) || (typem == 0x1a) 00058 leng = (endpat#v(patternc)-$-3)/0x20 ;tbltype1,speed,length 00059 else 00060 leng =(endpat#v(patternc)-$-3) 00061 endif 00062 endif 00063 endif 00064 endif 00065 endif 00066 endif 00067 endif 00068 endif 00069 expand 00070 if ($ < 0x2100) 00071 dt typem,delaym,(leng) 00072 else 00073 de typem,delaym,(leng) 00074 endif 00075 endm 00076 00077 storedata macro stuff 00078 if ($ < 0x2100) 00079 dt stuff 00080 else 00081 de stuff 00082 endif 00083 endm 00084 00085 end_pattern macro 00086 endpat#v(patternc) 00087 patternc = patternc + 1 00088 endm 00089 00090 mult_nop macro nup_count 00091 local i = nup_count 00092 while i > 3 00093 call Lcontinue ;4 cycles 00094 i -= 4 00095 endw MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00096 while i > 1 00097 goto $+1 ;2 cycles 00098 i -= 2 00099 endw 00100 if i > 0 00101 nop ;1 cycle 00102 endif 00103 endm 00104 00105 LedOut macro word,reg_dir,port 00106 movfw TMR0 00107 subwf word,w 00108 btfss STATUS,C 00109 bsf reg_dir, port 00110 endm 00111 00112 LedOutInd macro word,reg_dir,port 00113 movlw word 00114 movwf FSR ; set indirect pointer to word 00115 movfw TMR0 00116 subwf INDF0,w 00117 btfss STATUS,C 00118 bsf reg_dir, port 00119 endm 00120 00121 ; Indirect Paged 00122 LedOutIndP macro page,word,reg_dir,port 00123 if (page == 0) 00124 bcf STATUS,IRP 00125 else 00126 bsf STATUS,IRP 00127 endif 00128 movlw (word & 0xff) 00129 movwf FSR ; set indirect pointer to word 00130 movfw TMR0 00131 subwf INDF,w 00132 btfss STATUS,C 00133 bsf reg_dir, port 00134 endm 00135 00136 LedOutL macro word,reg_dir,port 00137 swapf word,w 00138 movwf temp4 00139 movfw TMR0 00140 subwf temp4,w 00141 btfss STATUS,C 00142 bsf reg_dir, port 00143 endm 00144 00145 LedOutH macro word,reg_dir,port 00146 nop 00147 nop 00148 movfw TMR0 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00149 subwf word,w 00150 btfss STATUS,C 00151 bsf reg_dir, port 00152 endm 00153 00154 state_tbl macro num,zero,one,flag 00155 Lstate#v(num) 00156 #ifndef MULTIBUTTON 00157 if (flag == 0) 00158 bcf button,0 00159 movlw 0x30 00160 movwf butcount 00161 endif 00162 if (flag == 1) 00163 bsf button,0 00164 endif 00165 #endif 00166 btfsc IR_in,0 00167 goto Lstate#v(num)a 00168 00169 movlw zero 00170 movwf instate 00171 00172 goto Lcontinue 00173 00174 Lstate#v(num)a 00175 movlw one 00176 movwf instate 00177 00178 goto Lcontinue 00179 endm 00180 00181 state2_tbl macro num, name, offset 00182 Lstate#v(num) 00183 ; save the 1st half of word 00184 movf IR_in,w ; save 1st half 00185 movwf IR_lhalf 00186 incf instate,f 00187 00188 goto Lcontinue 00189 00190 Lstate#v(num+1) 00191 ; save the 2nd half of word 00192 ; check for protocal error should get 01 or 10 00193 movf IR_lhalf,w 00194 xorwf IR_in,w 00195 btfss STATUS,Z 00196 goto Lstate#v(num+1)a 00197 clrf instate ; error state = zero 00198 00199 goto Lcontinue 00200 00201 ; set the correct bit in output vars. MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00202 Lstate#v(num+1)a 00203 btfsc IR_in,0 00204 bcf name,offset 00205 btfss IR_in,0 00206 bsf name,offset 00207 00208 incf instate,f 00209 goto Lcontinue 00210 endm 00211 00212 entry macro a0,a1,a2 00213 dt a0,a1,a2 00214 endm 00215 00216 tbltype1 macro speed,length 00217 if (length > 2) & (length < d'256') 00218 dt 0x01,speed,length 00219 else 00220 error 'pattern length must be > 2 and < 256' 00221 endif 00222 endm 00223 00224 make_mtab macro numtab 00225 local i = 0 00226 while i <= numtab 00227 dt HIGH table#v(i), LOW table#v(i) 00228 i += 1 00229 endw 00230 endm 00231 00232 make_state_jump_table macro max_state 00233 local i = 0 00234 while i <= max_state 00235 dt HIGH Lstate#v(i), LOW Lstate#v(i) 00236 i += 1 00237 endw 00238 endm 00239 00635 00636 00637 ; ++-------- A7 A6 unimplemented (0) 00638 ; || +------ A4 IR LED output (0) 00639 ; || |+----- A3 detector/button input (1) 00640 ; || || 00641 ; b'00101111' ;set LED matrix pins to input (tri-stated) 00642 ; | ||| 00643 ; +--+++-- LED matrix on A5 A2 A1 A0 (1) 00644 00645 ;********************************************************************** 0000 00646 ORG 0x000 ; processor reset vector 00647 ;********************************************************************** 00648 ; Current hack to debug 4x4x4 DDF 00649 #ifdef RGB_4x4x4 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00650 goto main3 ; go to beginning of program 00651 #else 0000 2C41 00652 goto main ; go to beginning of program 00653 #endif 00654 00655 ;********************************************************************** 0004 00656 ORG 0x004 ; interrupt vector location 00657 ;********************************************************************** 00658 00659 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 00660 ; bit 0 is one display cycle (890 usec) 00661 ; bit 1 is about 1 minute 00662 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 00663 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 00664 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 00665 00666 0004 00667 here 00668 #ifndef __12F1822 00669 PAGESEL here ; DDF 00670 #endif 00671 ; 00672 ; set tick interupt to 889ms for IR RC5 protocal 1/2 digit. 00673 ; an Interupt every 889us /w 8mhz internal osc 00674 ; 00675 00676 #define TICK_VALUE D'35' 00677 0004 0020 00678 BANKSEL TMR0 0005 3023 00679 movlw TICK_VALUE 0006 0095 00680 movwf TMR0 00681 ; 00682 ; increment the stobe and duration counters MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00683 ; 00684 0007 0AA1 00685 incf dcycle,f 00686 0008 3004 00687 movlw STROBE_LINES 0009 0221 00688 subwf dcycle,w 000A 1803 00689 btfsc STATUS,C 000B 01A1 00690 clrf dcycle 00691 000C 1420 00692 bsf nextf,0 00693 000D 0FA2 00694 incfsz count1,f 000E 2812 00695 goto skip1 00696 000F 0FA3 00697 incfsz count2,f 0010 2812 00698 goto skip1 00699 0011 14A0 00700 bsf nextf,1 00701 0012 00702 skip1 00703 0012 0849 00704 movf scount,w ; F22 0013 3E00 00705 addlw 0 ; F23 0014 1903 00706 btfsc STATUS,Z ; F24 0015 282C 00707 goto send_nothing ; F25 00708 0016 1C3A 00709 btfss tx_1,0 ; F26 0017 282A 00710 goto send_zero ; F27 00711 00712 ;-------------------------------------------------------------------------------------- 0018 00713 send_one ; we are slaming the 36K IR siginal, its like a busy wait! 00714 ;-------------------------------------------------------------------------------------- 00715 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 00716 #ifdef GATOR 00717 BANKSEL TRISA 00718 movlw b'00011010' ;set A4 & A5 led to output 00719 movwf TRISA 00720 BANKSEL 0 00721 #define IRBIT 4 00722 #define IRPORT PORTA 00723 #else 00724 #ifdef S19 00725 setbank1 00726 movlw b'00011010' ;set A0 & A5 led to output 00727 movwf TRISA 00728 setbank0 00729 #define IRBIT 0 00730 #define IRPORT PORTA MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00731 #else 00732 #ifdef C12 00733 BANKSEL TRISB 00734 movlw b'11011011' ;set B2 & B5 led to output 00735 movwf TRISB 00736 BANKSEL PORTB 00737 #define IRBIT 2 00738 #define IRPORT PORTB 00739 #else 00740 #ifdef M8X16 00741 #define IRBIT 1 00742 #define IRPORT PORTC 00743 #else 00744 #ifdef M3X3 00745 setbank1 00746 movlw b'00111001' ;set A1 & A2 led to output 00747 movwf TRISA 00748 setbank0 00749 #define IRBIT 1 00750 #define IRPORT PORTA 00751 #else 00752 #ifdef SRGB 00753 #define IRBIT 1 00754 #define IRPORT PORTA 00755 #else 00756 #define IRBIT 4 00757 #define IRPORT PORTA 00758 #endif 00759 #endif 00760 #endif 00761 #endif 00762 #endif 00763 #endif 00764 0018 018C 00765 clrf IRPORT 0019 160C 00766 bsf IRPORT,IRBIT ; A01 00767 001A 2206 00768 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00769 ; mult_nop d'9' ; A17-A25 001B 3001 00770 movlw 01h 001C 2210 00771 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 001D 0000 00772 nop 00773 001E 301E 00774 movlw 0x1E ; C26 (23) 001F 00A4 00775 movwf repeat ; C27 0020 00776 repeat_loop 0020 120C 00777 bcf IRPORT,IRBIT ; D01 00778 00779 ; mult_nop d'26' ; D02-D27 0021 3007 00780 movlw 07h 0022 2210 00781 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 00782 0023 160C 00783 bsf IRPORT,IRBIT ; E01 (27) MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00784 00785 ; mult_nop d'23' ; E02-E24 0024 3006 00786 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 0025 2210 00787 call qdelay 00788 0026 0BA4 00789 decfsz repeat,f ; E25 (24) 0027 2820 00790 goto repeat_loop ; E26/E27 00791 0028 120C 00792 bcf IRPORT,IRBIT 0029 2844 00793 goto exit_tx 00794 00795 ;-------------------------------------------------------------------------------------- 002A 00796 send_zero ; we are going to release all the CPU time to the main line for display. 00797 ;-------------------------------------------------------------------------------------- 00798 002A 2206 00799 call get_next_tx_bit ; 2 + 11 cycles A04-A16 002B 282D 00800 goto drive_main_leds 00801 00802 ;-------------------------------------------------------------------------------------- 002C 00803 send_nothing ; Drive the main LEDs. 00804 ;-------------------------------------------------------------------------------------- 00805 00806 002C 21FB 00807 call read_ir_in 00808 #ifdef DEDICATED_BUTTON 00809 call read_button_in 00810 #endif 00811 ; goto drive_main_leds 00812 00813 ;-------------------------------------------------------------------------------------- 002D 00814 drive_main_leds ; Drive the main LEDs. 00815 ;-------------------------------------------------------------------------------------- 00816 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 00817 00818 #include 00001 ;-------------------------------------------------------------------------------------- 00002 ; Define LED status storage vars 00003 ;-------------------------------------------------------------------------------------- 00004 00005 #ifndef GATOR 00006 #ifndef S19 00007 #ifndef C19 00008 #ifndef SRGB 00009 #ifndef M3X3 00010 #ifndef M8X16 00011 #ifndef C12 00012 var Ar_reg 00000026 M Ar_reg equ mem MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000027 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00013 var Ag_reg 00000027 M Ag_reg equ mem 00000028 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00014 var Ab_reg 00000028 M Ab_reg equ mem 00000029 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00015 var Br_reg 00000029 M Br_reg equ mem 0000002A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00016 var Bg_reg 0000002A M Bg_reg equ mem 0000002B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00017 var Bb_reg 0000002B M Bb_reg equ mem 0000002C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00018 var Cr_reg 0000002C M Cr_reg equ mem 0000002D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00019 var Cg_reg 0000002D M Cg_reg equ mem 0000002E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00020 var Cb_reg 0000002E M Cb_reg equ mem 0000002F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00021 var Dr_reg MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000002F M Dr_reg equ mem 00000030 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00022 var Dg_reg 00000030 M Dg_reg equ mem 00000031 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00023 var Db_reg 00000031 M Db_reg equ mem 00000032 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00024 #endif 00025 #endif 00026 #endif 00027 #endif 00028 #endif 00029 #endif 00030 #endif 00031 00032 #ifdef BADGE 00033 var Center_reg 00034 #endif 00035 #ifdef M3X3 00036 var A0_A1_reg 00037 var A0_A2_reg 00038 var A0_A4_reg 00039 var A0_A5_reg 00040 var A1_A0_reg 00041 var A1_A2_reg 00042 var A1_A4_reg 00043 var A1_A5_reg 00044 var A2_A0_reg 00045 var A2_A1_reg 00046 var A2_A4_reg 00047 var A2_A5_reg 00048 var A4_A0_reg 00049 var A4_A1_reg 00050 var A4_A2_reg 00051 var A4_A5_reg 00052 var A5_A0_reg 00053 var A5_A1_reg 00054 var A5_A2_reg 00055 var A5_A4_reg 00056 #endif 00057 #ifdef S19 00058 var A0_A1_reg 00059 var A0_A2_reg MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00060 var A0_A4_reg 00061 var A0_A5_reg 00062 var A1_A0_reg 00063 var A1_A2_reg 00064 var A1_A4_reg 00065 var A1_A5_reg 00066 var A2_A0_reg 00067 var A2_A1_reg 00068 var A2_A4_reg 00069 var A2_A5_reg 00070 var A4_A0_reg 00071 var A4_A1_reg 00072 var A4_A2_reg 00073 var A4_A5_reg 00074 var A5_A0_reg 00075 var A5_A1_reg 00076 var A5_A2_reg 00077 var A5_A4_reg 00078 #endif 00079 #ifdef GATOR 00080 var A0_A1_reg 00081 var A0_A2_reg 00082 var A0_A4_reg 00083 var A0_A5_reg 00084 var A1_A0_reg 00085 var A1_A2_reg 00086 var A1_A4_reg 00087 var A1_A5_reg 00088 var A2_A0_reg 00089 var A2_A1_reg 00090 var A2_A4_reg 00091 var A2_A5_reg 00092 var A4_A0_reg 00093 var A4_A1_reg 00094 var A4_A2_reg 00095 var A4_A5_reg 00096 var A5_A0_reg 00097 var A5_A1_reg 00098 var A5_A2_reg 00099 var A5_A4_reg 00100 #endif 00101 #ifdef C19 00102 var_bank2 A0_A1_reg 00103 var_bank2 A0_A2_reg 00104 var_bank2 A0_C0_reg 00105 var_bank2 A0_C1_reg 00106 var_bank2 A0_C2_reg 00107 var_bank2 A0_C4_reg 00108 00109 var_bank2 A1_A0_reg 00110 var_bank2 A1_A2_reg 00111 var_bank2 A1_C0_reg 00112 var_bank2 A1_C1_reg MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00113 var_bank2 A1_C2_reg 00114 var_bank2 A1_C4_reg 00115 00116 var_bank2 A2_A0_reg 00117 var_bank2 A2_A1_reg 00118 var_bank2 A2_C0_reg 00119 var_bank2 A2_C1_reg 00120 var_bank2 A2_C2_reg 00121 var_bank2 A2_C4_reg 00122 00123 var_bank2 C0_A0_reg 00124 var_bank2 C0_A1_reg 00125 var_bank2 C0_A2_reg 00126 var_bank2 C0_C1_reg 00127 var_bank2 C0_C2_reg 00128 var_bank2 C0_C4_reg 00129 00130 var_bank2 C1_A0_reg 00131 var_bank2 C1_A1_reg 00132 var_bank2 C1_A2_reg 00133 var_bank2 C1_C0_reg 00134 var_bank2 C1_C2_reg 00135 var_bank2 C1_C4_reg 00136 00137 var_bank2 C2_A0_reg 00138 var_bank2 C2_A1_reg 00139 var_bank2 C2_A2_reg 00140 var_bank2 C2_C0_reg 00141 var_bank2 C2_C1_reg 00142 var_bank2 C2_C4_reg 00143 00144 var_bank2 C4_A0_reg 00145 var_bank2 C4_A1_reg 00146 var_bank2 C4_A2_reg 00147 var_bank2 C4_C0_reg 00148 var_bank2 C4_C1_reg 00149 var_bank2 C4_C2_reg 00150 #endif 00151 #ifdef SRGB 00152 ; 00153 ; The shifter pattern needs the colored LEDs defined sequentially 00154 ; 00155 var_bank2 C5_C3_reg ; 01 R 00156 var_bank2 C2_C3_reg ; 02 R 00157 var_bank2 C0_C4_reg ; 03 R 00158 var_bank2 C5_C4_reg ; 04 R 00159 var_bank2 C3_C5_reg ; 05 R 00160 var_bank2 C4_C5_reg ; 06 R 00161 var_bank2 A2_C0_reg ; 07 R 00162 var_bank2 C3_C0_reg ; 08 R 00163 var_bank2 C0_A2_reg ; 09 R 00164 var_bank2 C3_A2_reg ; 10 R 00165 var_bank2 A2_C2_reg ; 11 R MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00166 var_bank2 C3_C2_reg ; 12 R 00167 var_bank2 A2_C1_reg ; 13 R 00168 var_bank2 C3_C1_reg ; 14 R 00169 00170 var_bank2 A2_C3_reg ; 01 G 00171 var_bank2 C0_C3_reg ; 02 G 00172 var_bank2 A2_C4_reg ; 03 G 00173 var_bank2 C3_C4_reg ; 04 G 00174 var_bank2 C0_C5_reg ; 05 G 00175 var_bank2 A2_C5_reg ; 06 G 00176 var_bank2 C4_C0_reg ; 07 G 00177 var_bank2 C5_C0_reg ; 08 G 00178 var_bank2 C4_A2_reg ; 09 G 00179 var_bank2 C5_A2_reg ; 10 G 00180 var_bank2 C4_C2_reg ; 11 G 00181 var_bank2 C5_C2_reg ; 12 G 00182 var_bank2 C4_C1_reg ; 13 G 00183 var_bank2 C5_C1_reg ; 14 G 00184 00185 var_bank2 C1_C3_reg ; 01 B ? 00186 var_bank2 C4_C3_reg 00187 var_bank2 C2_C4_reg ; 03 B 00188 var_bank2 C1_C4_reg ; 04 B 00189 var_bank2 C1_C5_reg ; 05 B 00190 var_bank2 C2_C5_reg ; 06 B 00191 var_bank2 C2_C0_reg ; 07 B 00192 var_bank2 C1_C0_reg ; 08 B 00193 var_bank2 C2_A2_reg ; 09 B 00194 var_bank2 C1_A2_reg ; 10 B 00195 var_bank2 C1_C2_reg ; 11 B 00196 var_bank2 C0_C2_reg 00197 var_bank2 C2_C1_reg ; 13 B ? 00198 var_bank2 C0_C1_reg ; 14 B 00199 00200 #endif 00201 00202 00203 #ifdef M8X16 00204 ; Using Linerar Data Memory address mode. 00205 Led_G00 equ 0x2100 00206 Led_G01 equ 0x2101 00207 Led_G02 equ 0x2102 00208 Led_G03 equ 0x2103 00209 Led_G04 equ 0x2104 00210 Led_G05 equ 0x2105 00211 Led_G06 equ 0x2106 00212 Led_G07 equ 0x2107 00213 00214 Led_G10 equ 0x2108 00215 Led_G11 equ 0x2109 00216 Led_G12 equ 0x210a 00217 Led_G13 equ 0x210b 00218 Led_G14 equ 0x210c MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00219 Led_G15 equ 0x210d 00220 Led_G16 equ 0x210e 00221 Led_G17 equ 0x210f 00222 00223 Led_G20 equ 0x2110 00224 Led_G21 equ 0x2111 00225 Led_G22 equ 0x2112 00226 Led_G23 equ 0x2113 00227 Led_G24 equ 0x2114 00228 Led_G25 equ 0x2115 00229 Led_G26 equ 0x2116 00230 Led_G27 equ 0x2117 00231 00232 Led_G30 equ 0x2118 00233 Led_G31 equ 0x2119 00234 Led_G32 equ 0x211a 00235 Led_G33 equ 0x211b 00236 Led_G34 equ 0x211c 00237 Led_G35 equ 0x211d 00238 Led_G36 equ 0x211e 00239 Led_G37 equ 0x211f 00240 00241 Led_G40 equ 0x2120 00242 Led_G41 equ 0x2121 00243 Led_G42 equ 0x2122 00244 Led_G43 equ 0x2123 00245 Led_G44 equ 0x2124 00246 Led_G45 equ 0x2125 00247 Led_G46 equ 0x2126 00248 Led_G47 equ 0x2127 00249 00250 Led_G50 equ 0x2128 00251 Led_G51 equ 0x2129 00252 Led_G52 equ 0x212a 00253 Led_G53 equ 0x212b 00254 Led_G54 equ 0x212c 00255 Led_G55 equ 0x212d 00256 Led_G56 equ 0x212e 00257 Led_G57 equ 0x212f 00258 00259 Led_G60 equ 0x2130 00260 Led_G61 equ 0x2131 00261 Led_G62 equ 0x2132 00262 Led_G63 equ 0x2133 00263 Led_G64 equ 0x2134 00264 Led_G65 equ 0x2135 00265 Led_G66 equ 0x2136 00266 Led_G67 equ 0x2137 00267 00268 Led_G70 equ 0x2138 00269 Led_G71 equ 0x2139 00270 Led_G72 equ 0x213a 00271 Led_G73 equ 0x213b MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00272 Led_G74 equ 0x213c 00273 Led_G75 equ 0x213d 00274 Led_G76 equ 0x213e 00275 Led_G77 equ 0x213f 00276 00277 Led_G80 equ 0x2140 00278 Led_G81 equ 0x2141 00279 Led_G82 equ 0x2142 00280 Led_G83 equ 0x2143 00281 Led_G84 equ 0x2144 00282 Led_G85 equ 0x2145 00283 Led_G86 equ 0x2146 00284 Led_G87 equ 0x2147 00285 00286 Led_G90 equ 0x2148 00287 Led_G91 equ 0x2149 00288 Led_G92 equ 0x214a 00289 Led_G93 equ 0x214b 00290 Led_G94 equ 0x214c 00291 Led_G95 equ 0x214d 00292 Led_G96 equ 0x214e 00293 Led_G97 equ 0x214f 00294 00295 Led_GA0 equ 0x2150 00296 Led_GA1 equ 0x2151 00297 Led_GA2 equ 0x2152 00298 Led_GA3 equ 0x2153 00299 Led_GA4 equ 0x2154 00300 Led_GA5 equ 0x2155 00301 Led_GA6 equ 0x2156 00302 Led_GA7 equ 0x2157 00303 00304 Led_GB0 equ 0x2158 00305 Led_GB1 equ 0x2159 00306 Led_GB2 equ 0x215a 00307 Led_GB3 equ 0x215b 00308 Led_GB4 equ 0x215c 00309 Led_GB5 equ 0x215d 00310 Led_GB6 equ 0x215e 00311 Led_GB7 equ 0x215f 00312 00313 Led_GC0 equ 0x2160 00314 Led_GC1 equ 0x2161 00315 Led_GC2 equ 0x2162 00316 Led_GC3 equ 0x2163 00317 Led_GC4 equ 0x2164 00318 Led_GC5 equ 0x2165 00319 Led_GC6 equ 0x2166 00320 Led_GC7 equ 0x2167 00321 00322 Led_GD0 equ 0x2168 00323 Led_GD1 equ 0x2169 00324 Led_GD2 equ 0x216a MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00325 Led_GD3 equ 0x216b 00326 Led_GD4 equ 0x216c 00327 Led_GD5 equ 0x216d 00328 Led_GD6 equ 0x216e 00329 Led_GD7 equ 0x216f 00330 00331 Led_GE0 equ 0x2170 00332 Led_GE1 equ 0x2171 00333 Led_GE2 equ 0x2172 00334 Led_GE3 equ 0x2173 00335 Led_GE4 equ 0x2174 00336 Led_GE5 equ 0x2175 00337 Led_GE6 equ 0x2176 00338 Led_GE7 equ 0x2177 00339 00340 Led_GF0 equ 0x2178 00341 Led_GF1 equ 0x2179 00342 Led_GF2 equ 0x217a 00343 Led_GF3 equ 0x217b 00344 Led_GF4 equ 0x217c 00345 Led_GF5 equ 0x217d 00346 Led_GF6 equ 0x217e 00347 Led_GF7 equ 0x217f 00348 00349 Led_R00 equ 0x2180 00350 Led_R01 equ 0x2181 00351 Led_R02 equ 0x2182 00352 Led_R03 equ 0x2183 00353 Led_R04 equ 0x2184 00354 Led_R05 equ 0x2185 00355 Led_R06 equ 0x2186 00356 Led_R07 equ 0x2187 00357 00358 Led_R10 equ 0x2188 00359 Led_R11 equ 0x2189 00360 Led_R12 equ 0x218a 00361 Led_R13 equ 0x218b 00362 Led_R14 equ 0x218c 00363 Led_R15 equ 0x218d 00364 Led_R16 equ 0x218e 00365 Led_R17 equ 0x218f 00366 00367 Led_R20 equ 0x2190 00368 Led_R21 equ 0x2191 00369 Led_R22 equ 0x2192 00370 Led_R23 equ 0x2193 00371 Led_R24 equ 0x2194 00372 Led_R25 equ 0x2195 00373 Led_R26 equ 0x2196 00374 Led_R27 equ 0x2197 00375 00376 Led_R30 equ 0x2198 00377 Led_R31 equ 0x2199 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00378 Led_R32 equ 0x219a 00379 Led_R33 equ 0x219b 00380 Led_R34 equ 0x219c 00381 Led_R35 equ 0x219d 00382 Led_R36 equ 0x219e 00383 Led_R37 equ 0x219f 00384 00385 Led_R40 equ 0x21a0 00386 Led_R41 equ 0x21a1 00387 Led_R42 equ 0x21a2 00388 Led_R43 equ 0x21a3 00389 Led_R44 equ 0x21a4 00390 Led_R45 equ 0x21a5 00391 Led_R46 equ 0x21a6 00392 Led_R47 equ 0x21a7 00393 00394 Led_R50 equ 0x21a8 00395 Led_R51 equ 0x21a9 00396 Led_R52 equ 0x21aa 00397 Led_R53 equ 0x21ab 00398 Led_R54 equ 0x21ac 00399 Led_R55 equ 0x21ad 00400 Led_R56 equ 0x21ae 00401 Led_R57 equ 0x21af 00402 00403 Led_R60 equ 0x21b0 00404 Led_R61 equ 0x21b1 00405 Led_R62 equ 0x21b2 00406 Led_R63 equ 0x21b3 00407 Led_R64 equ 0x21b4 00408 Led_R65 equ 0x21b5 00409 Led_R66 equ 0x21b6 00410 Led_R67 equ 0x21b7 00411 00412 Led_R70 equ 0x21b8 00413 Led_R71 equ 0x21b9 00414 Led_R72 equ 0x21ba 00415 Led_R73 equ 0x21bb 00416 Led_R74 equ 0x21bc 00417 Led_R75 equ 0x21bd 00418 Led_R76 equ 0x21be 00419 Led_R77 equ 0x21bf 00420 00421 Led_R80 equ 0x21c0 00422 Led_R81 equ 0x21c1 00423 Led_R82 equ 0x21c2 00424 Led_R83 equ 0x21c3 00425 Led_R84 equ 0x21c4 00426 Led_R85 equ 0x21c5 00427 Led_R86 equ 0x21c6 00428 Led_R87 equ 0x21c7 00429 00430 Led_R90 equ 0x21c8 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00431 Led_R91 equ 0x21c9 00432 Led_R92 equ 0x21ca 00433 Led_R93 equ 0x21cb 00434 Led_R94 equ 0x21cc 00435 Led_R95 equ 0x21cd 00436 Led_R96 equ 0x21ce 00437 Led_R97 equ 0x21cf 00438 00439 Led_RA0 equ 0x21d0 00440 Led_RA1 equ 0x21d1 00441 Led_RA2 equ 0x21d2 00442 Led_RA3 equ 0x21d3 00443 Led_RA4 equ 0x21d4 00444 Led_RA5 equ 0x21d5 00445 Led_RA6 equ 0x21d6 00446 Led_RA7 equ 0x21d7 00447 00448 Led_RB0 equ 0x21d8 00449 Led_RB1 equ 0x21d9 00450 Led_RB2 equ 0x21da 00451 Led_RB3 equ 0x21db 00452 Led_RB4 equ 0x21dc 00453 Led_RB5 equ 0x21dd 00454 Led_RB6 equ 0x21de 00455 Led_RB7 equ 0x21df 00456 00457 Led_RC0 equ 0x21e0 00458 Led_RC1 equ 0x21e1 00459 Led_RC2 equ 0x21e2 00460 Led_RC3 equ 0x21e3 00461 Led_RC4 equ 0x21e4 00462 Led_RC5 equ 0x21e5 00463 Led_RC6 equ 0x21e6 00464 Led_RC7 equ 0x21e7 00465 00466 Led_RD0 equ 0x21e8 00467 Led_RD1 equ 0x21e9 00468 Led_RD2 equ 0x21ea 00469 Led_RD3 equ 0x21eb 00470 Led_RD4 equ 0x21ec 00471 Led_RD5 equ 0x21ed 00472 Led_RD6 equ 0x21ee 00473 Led_RD7 equ 0x21ef 00474 00475 Led_RE0 equ 0x21f0 00476 Led_RE1 equ 0x21f1 00477 Led_RE2 equ 0x21f2 00478 Led_RE3 equ 0x21f3 00479 Led_RE4 equ 0x21f4 00480 Led_RE5 equ 0x21f5 00481 Led_RE6 equ 0x21f6 00482 Led_RE7 equ 0x21f7 00483 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00484 Led_RF0 equ 0x21f8 00485 Led_RF1 equ 0x21f9 00486 Led_RF2 equ 0x21fa 00487 Led_RF3 equ 0x21fb 00488 Led_RF4 equ 0x21fc 00489 Led_RF5 equ 0x21fd 00490 Led_RF6 equ 0x21fe 00491 Led_RF7 equ 0x21ff 00492 #endif 00493 00494 #ifdef C12 00495 var_bank2 A0_A1_reg 00496 var_bank2 A0_A2_reg 00497 ; var_bank2 A0_A3_reg 00498 var_bank2 A0_A4_reg 00499 var_bank2 A0_A5_reg 00500 00501 var_bank2 A1_A0_reg 00502 var_bank2 A1_A2_reg 00503 var_bank2 A1_A3_reg 00504 ; var_bank2 A1_A4_reg 00505 var_bank2 A1_A5_reg 00506 00507 var_bank2 A2_A0_reg 00508 var_bank2 A2_A1_reg 00509 var_bank2 A2_A3_reg 00510 var_bank2 A2_A4_reg 00511 ; var_bank2 A2_A5_reg 00512 00513 ; var_bank2 A3_A0_reg 00514 var_bank2 A3_A1_reg 00515 var_bank2 A3_A2_reg 00516 var_bank2 A3_A4_reg 00517 var_bank2 A3_A5_reg 00518 00519 var_bank2 A4_A0_reg 00520 ; var_bank2 A4_A1_reg 00521 var_bank2 A4_A2_reg 00522 var_bank2 A4_A3_reg 00523 var_bank2 A4_A5_reg 00524 00525 var_bank2 A5_A0_reg 00526 var_bank2 A5_A1_reg 00527 ; var_bank2 A5_A2_reg 00528 var_bank2 A5_A3_reg 00529 var_bank2 A5_A4_reg 00530 00531 var_bank2 B7_B6_reg 00532 var_bank2 B7_B5_reg 00533 ; var_bank2 B7_B4_reg 00534 var_bank2 B7_B3_reg 00535 var_bank2 B7_B2_reg 00536 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00537 var_bank2 B6_B7_reg 00538 var_bank2 B6_B5_reg 00539 var_bank2 B6_B4_reg 00540 ; var_bank2 B6_B3_reg 00541 var_bank2 B6_B2_reg 00542 00543 var_bank2 B5_B7_reg 00544 var_bank2 B5_B6_reg 00545 var_bank2 B5_B4_reg 00546 var_bank2 B5_B3_reg 00547 ; var_bank2 B5_B2_reg 00548 00549 ; var_bank2 B4_B7_reg 00550 var_bank2 B4_B6_reg 00551 var_bank2 B4_B5_reg 00552 var_bank2 B4_B3_reg 00553 var_bank2 B4_B2_reg 00554 00555 var_bank2 B3_B7_reg 00556 ; var_bank2 B3_B6_reg 00557 var_bank2 B3_B5_reg 00558 var_bank2 B3_B4_reg 00559 var_bank2 B3_B2_reg 00560 00561 var_bank2 B2_B7_reg 00562 var_bank2 B2_B6_reg 00563 ; var_bank2 B2_B5_reg 00564 var_bank2 B2_B4_reg 00565 var_bank2 B2_B3_reg 00566 #endif 00567 00819 00820 #ifndef M8X16 00821 var_all_bank Ax_dir 0000007F M Ax_dir equ mem2 0000007E M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00822 #endif 00823 #ifdef C19 00824 var_all_bank Cx_dir 00825 #endif 00826 #ifdef SRGB 00827 var_all_bank Cx_dir 00828 #endif 00829 #ifdef C12 00830 var_all_bank Bx_dir 00831 #endif 00832 00833 ; 00834 ; This is the number of times the display logic should cycle before exiting. It's been hand timed from t he 00835 ; start of the interupt to the end to be around 800usec. This leaves 90 usec for the main loop. MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00836 ; The 19 stick has an extra display line strobe cycle. 00837 ; 00838 002D 303A 00839 movlw DELAYTIMER 002E 00A5 00840 movwf fcount 00841 00842 #ifdef C19 00843 movlw b'00101000' ;set LED matrix pins to input (tri-stated) 00844 movwf Ax_dir 00845 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 00846 #else 00847 #ifdef D10 00848 movlw b'00101000' ;set LED matrix pins to input (tri-stated) 00849 movwf Ax_dir 00850 #else 00851 #ifdef SRGB 00852 movlw b'00111000' ;set LED matrix pins to input (tri-stated) 00853 movwf Ax_dir 00854 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 00855 #else 00856 #ifdef C12 00857 clrf Ax_dir ;set LED matrix pins to input (tri-stated) 00858 clrf Bx_dir 00859 #else 00860 #ifndef M8X16 002F 3008 00861 movlw b'00001000' ;set LED matrix pins to input (tri-stated) 0030 00FF 00862 movwf Ax_dir 00863 #endif 00864 #endif 00865 #endif 00866 #endif 00867 #endif 00868 00869 0031 209B 00870 call get_state_tbl_hi_address 0032 20A1 00871 call get_state_tbl_low_address 0033 20AF 00872 call go_state_table 0034 21FF 00873 call set_max_state 00874 00875 ; turn off the LEDs DDF 00876 ; clrf PORTA 00877 ; clrf PORTB 00878 0035 0821 00879 movf dcycle,w ; testing for 0 0036 1903 00880 btfsc STATUS,Z 0037 2047 00881 call display_cycle0 00882 0038 3001 00883 movlw 0x01 ; testing for 1 0039 0221 00884 subwf dcycle,w 003A 1903 00885 btfsc STATUS,Z 003B 205C 00886 call display_cycle1 00887 003C 3002 00888 movlw 0x02 ; testing for 2 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 003D 0221 00889 subwf dcycle,w 003E 1903 00890 btfsc STATUS,Z 003F 2071 00891 call display_cycle2 00892 00893 #ifndef RGB2_DOGTAG 0040 3003 00894 movlw 0x03 ; testing for 3 0041 0221 00895 subwf dcycle,w 0042 1903 00896 btfsc STATUS,Z 0043 2086 00897 call display_cycle3 00898 00899 #ifndef BI6 00900 #ifndef RGB4 00901 #ifndef BI6_DOGTAG 00902 movlw 0x04 ; testing for 4 00903 subwf dcycle,w 00904 btfsc STATUS,Z 00905 call display_cycle4 00906 00907 #ifndef GATOR 00908 #ifndef S19 00909 #ifndef M3X3 00910 movlw 0x05 ; testing for 5 00911 subwf dcycle,w 00912 btfsc STATUS,Z 00913 call display_cycle5 00914 00915 #ifndef C12 00916 movlw 0x06 ; testing for 6 00917 subwf dcycle,w 00918 btfsc STATUS,Z 00919 call display_cycle6 00920 00921 #ifndef C19 00922 #ifndef SRGB 00923 movlw 0x07 ; testing for 7 00924 subwf dcycle,w 00925 btfsc STATUS,Z 00926 call display_cycle7 00927 00928 movlw 0x08 ; testing for 8 00929 subwf dcycle,w 00930 btfsc STATUS,Z 00931 call display_cycle8 00932 00933 movlw 0x09 ; testing for 9 00934 subwf dcycle,w 00935 btfsc STATUS,Z 00936 call display_cycle9 00937 00938 movlw 0x0a ; testing for 10 00939 subwf dcycle,w 00940 btfsc STATUS,Z 00941 call display_cycle10 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00942 00943 movlw 0x0b ; testing for 11 00944 subwf dcycle,w 00945 btfsc STATUS,Z 00946 call display_cycle11 00947 00948 movlw 0x0c ; testing for 12 00949 subwf dcycle,w 00950 btfsc STATUS,Z 00951 call display_cycle12 00952 00953 movlw 0x0d ; testing for 13 00954 subwf dcycle,w 00955 btfsc STATUS,Z 00956 call display_cycle13 00957 00958 movlw 0x0e ; testing for 14 00959 subwf dcycle,w 00960 btfsc STATUS,Z 00961 call display_cycle14 00962 00963 movlw 0x0f ; testing for 15 00964 subwf dcycle,w 00965 btfsc STATUS,Z 00966 call display_cycle15 00967 #endif ; SRGB 00968 #endif ; C19 00969 #endif ; C12 00970 #endif ; M3X3 00971 #endif ; S19 00972 #endif ; GATOR 00973 #endif ; BI6_DOGTAG 00974 #endif ; RGB4 00975 #endif ; BI6 00976 #endif ; RGB2_DOGTAG 00977 ;-------------------------------------------------------------------------------------- 0044 00978 exit_tx 00979 ;-------------------------------------------------------------------------------------- 00980 00981 00982 0044 018C 00983 clrf PORTA 00984 #ifndef __12F1822 00985 clrf PORTB 00986 #endif 00987 ; clrf PORTC ;DDF debug hack ; turn all the LED off 00988 00989 00990 00991 ; clear timer0 interupt 00992 0045 110B 00993 bcf INTCON,TMR0IF 00994 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00995 ; restore state, return form interupt 00996 0046 00997 exit_int 0046 0009 00998 retfie ; return from interrupt 00999 01000 01001 #ifdef RGB_4x4x4 01002 ; 01003 ; M A I N 2 01004 ; 01005 ;********************************************************************** 01006 main2 01007 ;********************************************************************** 01008 01009 var fred 01010 clrf PORTA 01011 clrf TMR0 01012 clrf pattern 01013 clrf scount 01014 clrf toggle 01015 clrf address 01016 clrf command 01017 clrf IR_lhalf 01018 clrf instate 01019 clrf max_instate 01020 clrf IR_in_good 01021 clrf dcycle 01022 clrf count1 01023 clrf count2 01024 clrf button 01025 #ifdef PATTERN2 01026 clrf delay1 01027 clrf fad 01028 clrf color 01029 #endif 01030 01031 BANKSEL OSCCON 01032 01033 ; +------------- PLL enable (1) 01034 ; |++++--------- 8MHZ/32MHZ (1110) IRCF<3:0> 01035 ; ||||| ++------ Internal OSC (1x) 01036 ; ||||| || 01037 movlw b'01110000' ;switch to 32 MHz clock, PLL is set on in config1, bit 7 ignored. 01038 movwf OSCCON 01039 01040 01041 BANKSEL ANSELA 01042 clrf ANSELA ;set pins to digital 01043 BANKSEL LATA 01044 clrf LATA 01045 01046 #ifndef __12F1822 01047 BANKSEL LATB MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01048 clrf LATB 01049 BANKSEL ANSELB 01050 clrf ANSELB 01051 01052 01053 BANKSEL LATC 01054 clrf LATC 01055 #endif 01056 01057 BANKSEL OPTION_REG 01058 ; set up TMR0 & pullups 01059 ; +---------- disable pullups (1) 01060 ; |+--------- interrupt edge select (don't care) 01061 ; ||+-------- TMR0 source = internal clock (0) TMR0CS 01062 ; |||+------- TMR0 source edge select (don't care) TMR0SE 01063 ; ||||+------ assign prescaler to TMR0 (0) PSA 01064 ; |||||+++--- prescaler set to 8X (010) PS 01065 ; |||||||| 01066 movlw b'10000010' 01067 movwf OPTION_REG 01068 01069 ; E1 - IR/Button 01070 ; C2 - Button2 01071 ; C1 - IR out 01072 ; C3/C4 - I2C 01073 ; C0,C5,C6,C7 - strobe select output 01074 BANKSEL TRISC 01075 movlw b'00011100' 01076 movwf TRISC ; C7,C6,C5,C1,C0 output 01077 clrf TRISA ; all A output 01078 clrf TRISB ; all B output 01079 movlw b'00001000' 01080 movwf TRISE ; E3 input 01081 01082 BANKSEL button 01083 clrf button 01084 01085 movlw 0x1D 01086 movwf random 01087 01088 01089 ; enable timer0 interupt 01090 BANKSEL INTCON 01091 bsf INTCON,TMR0IE 01092 bsf INTCON,GIE 01093 01094 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 01095 01096 loop_main2 01097 01098 movlw LOW in0 ; shift down in1f->in0 01099 movwf FSR0L 01100 movlw HIGH in0 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01101 movwf FSR0H 01102 01103 movlw 0x20 01104 movwf fcount1 01105 01106 incf fred,f 01107 movfw fred 01108 loop_set_ona 01109 movwf INDF0 01110 01111 incf FSR0L,f 01112 decfsz fcount1,f 01113 goto loop_set_ona 01114 01115 movlw 0xff ; allways flash once 01116 call display_1bit 01117 movlw 0xff 01118 call display_1bit 01119 01120 goto loop_main2 01121 01122 ; 01123 ; M A I N 01124 ; 01125 ;********************************************************************** 01126 main3 01127 ;********************************************************************** 01128 01129 clrf PORTA 01130 clrf TMR0 01131 clrf pattern 01132 clrf scount 01133 clrf toggle 01134 clrf address 01135 clrf command 01136 clrf IR_lhalf 01137 clrf instate 01138 clrf max_instate 01139 clrf IR_in_good 01140 clrf dcycle 01141 clrf count1 01142 clrf count2 01143 clrf button 01144 #ifdef PATTERN2 01145 clrf delay1 01146 clrf fad 01147 clrf color 01148 #endif 01149 01150 movlw 0x00 01151 movwf fred 01152 01153 BANKSEL OSCCON MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01154 01155 ; +------------- PLL enable (1) 01156 ; |++++--------- 8MHZ/32MHZ (1110) IRCF<3:0> 01157 ; ||||| ++------ Internal OSC (1x) 01158 ; ||||| || 01159 movlw b'11110000' ;switch to 32 MHz clock, if PLL is set on in config1, bit 7 ignored. 01160 ; movlw b'01111000' ;switch to 16 MHz clock 01161 ; movlw b'01110000' ;switch to 8 MHz clock, if PLL is set on in config1 must be OFF 01162 movwf OSCCON 01163 01164 01165 BANKSEL ANSELA 01166 clrf ANSELA ;set pins to digital 01167 BANKSEL LATA 01168 clrf LATA 01169 01170 BANKSEL LATB 01171 clrf LATB 01172 BANKSEL ANSELB 01173 clrf ANSELB 01174 01175 BANKSEL LATC 01176 clrf LATC 01177 01178 BANKSEL OPTION_REG 01179 ; set up TMR0 & pullups 01180 ; +---------- disable pullups (1) 01181 ; |+--------- interrupt edge select (don't care) 01182 ; ||+-------- TMR0 source = internal clock (0) TMR0CS 01183 ; |||+------- TMR0 source edge select (don't care) TMR0SE 01184 ; ||||+------ assign prescaler to TMR0 (0) PSA 01185 ; |||||+++--- prescaler set to 8X (010) PS 01186 ; |||||||| 01187 movlw b'10000010' 01188 movwf OPTION_REG 01189 01190 ; E1 - IR/Button 01191 ; C2 - Button2 01192 ; C1 - IR out 01193 ; C3/C4 - I2C 01194 ; C0,C5,C6,C7 - strobe select output 01195 BANKSEL TRISC 01196 movlw b'00011100' 01197 movwf TRISC ; C7,C6,C5,C1,C0 output 01198 clrf TRISA ; all A output 01199 clrf TRISB ; all B output 01200 movlw b'00001000' 01201 movwf TRISE ; E3 input 01202 01203 BANKSEL button 01204 clrf button 01205 01206 movlw 0x1D MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01207 movwf random 01208 01209 01210 ; enable timer0 interupt 01211 BANKSEL INTCON 01212 bsf INTCON,TMR0IE 01213 bsf INTCON,GIE 01214 01215 ; flash all Red LEDs on 01216 01217 01218 ; Set in0-inf to "0x00" green off. 01219 movlw LOW in0 01220 movwf FSR0L 01221 movlw HIGH in0 01222 movwf FSR0H 01223 01224 movlw 0x10 01225 movwf fcount1 01226 movlw 0x00 01227 loop_main3_green_off 01228 01229 MOVWI INDF0++ 01230 01231 decfsz fcount1,f 01232 goto loop_main3_green_off 01233 01234 ; Set in10-in1f to "0xFF" red on. 01235 movlw LOW in10 01236 movwf FSR0L 01237 movlw HIGH in1f 01238 movwf FSR0H 01239 01240 movlw 0x10 01241 movwf fcount1 01242 01243 movlw 0xFF 01244 loop_main3_red 01245 01246 MOVWI INDF0++ 01247 01248 decfsz fcount1,f 01249 goto loop_main3_red 01250 01251 ; display all red 01252 movlw 0xff 01253 call display_1bit 01254 movlw 0xff 01255 call display_1bit 01256 01257 loop_main3 01258 01259 ; Shift is all left MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01260 call shift_left 01261 01262 ; Load the new row of red. 01263 movlw LOW in1f 01264 movwf FSR0L 01265 movlw HIGH in1f 01266 movwf FSR0H 01267 01268 incf fred,f 01269 movfw fred 01270 ; movlw 0x00 01271 MOVWI INDF0++ 01272 01273 ; Load the new row of green. 01274 movlw LOW inf 01275 movwf FSR0L 01276 movlw HIGH inf 01277 movwf FSR0H 01278 01279 ; incf fred,f 01280 movfw fred 01281 ; movlw 0x00 01282 MOVWI INDF0++ 01283 01284 01285 movlw 0x7f 01286 call display_1bit 01287 01288 goto loop_main3 01289 01290 01291 #endif ; RGB_4x4x4 01292 01293 01294 #define DEBOUNCE 0x10 01295 01296 01297 01298 #ifdef RGB4 01299 #include 01300 #else 01301 #ifdef D10 01302 #include 01303 #else 01304 #ifdef BI6 01305 swapf w_temp,f # should not be here 01306 #include 01307 #else 01308 #ifdef GATOR 01309 #include 01310 #else 01311 #ifdef S19 01312 #include MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01313 #else 01314 #ifdef C19 01315 #include 01316 #else 01317 #ifdef M3X3 01318 #include 01319 #else 01320 #ifdef SRGB 01321 #include 01322 #else 01323 #ifdef M8X16 01324 #include 01325 #else 01326 #ifdef C12 01327 #include 01328 #else 01329 #ifdef BI6_DOGTAG 01330 #include 00001 ;-------------------------------------------------------------------------------------- 0047 00002 display_cycle0 00003 ;-------------------------------------------------------------------------------------- 00004 LedOut Cr_reg,Ax_dir,1 ;LED Dr A0-A1 ; 2B 0047 0815 M movfw TMR0 0048 022C M subwf Cr_reg,w 0049 1C03 M btfss STATUS,C 004A 14FF M bsf Ax_dir, 1 00005 LedOut Ag_reg,Ax_dir,2 ;LED Dg A0-A2 ; 3B 004B 0815 M movfw TMR0 004C 0227 M subwf Ag_reg,w 004D 1C03 M btfss STATUS,C 004E 157F M bsf Ax_dir, 2 00006 LedOut Ab_reg,Ax_dir,4 ;LED Db A0-A4 ; 5B 004F 0815 M movfw TMR0 0050 0228 M subwf Ab_reg,w 0051 1C03 M btfss STATUS,C 0052 167F M bsf Ax_dir, 4 00007 00008 0053 087F 00009 movf Ax_dir,w ;set portA direction 0054 0021 00010 BANKSEL TRISA 0055 008C 00011 movwf TRISA 00012 0056 0020 00013 BANKSEL 0 0057 3001 00014 movlw b'00000001' 0058 008C 00015 movwf PORTA 00016 0059 0BA5 00017 decfsz fcount,f 005A 2847 00018 goto display_cycle0 00019 005B 0008 00020 return 00021 00022 ;-------------------------------------------------------------------------------------- 005C 00023 display_cycle1 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00024 ;-------------------------------------------------------------------------------------- 00025 LedOut Dr_reg,Ax_dir,0 ;LED Dr A1-A0 ; 2R 005C 0815 M movfw TMR0 005D 022F M subwf Dr_reg,w 005E 1C03 M btfss STATUS,C 005F 147F M bsf Ax_dir, 0 00026 LedOut Ar_reg,Ax_dir,2 ;LED Dg A1-A2 ; 1B 0060 0815 M movfw TMR0 0061 0226 M subwf Ar_reg,w 0062 1C03 M btfss STATUS,C 0063 157F M bsf Ax_dir, 2 00027 LedOut Cg_reg,Ax_dir,4 ;LED Db A1-A4 ; 4B 0064 0815 M movfw TMR0 0065 022D M subwf Cg_reg,w 0066 1C03 M btfss STATUS,C 0067 167F M bsf Ax_dir, 4 00028 0068 087F 00029 movf Ax_dir,w ;set portA direction 0069 0021 00030 BANKSEL TRISA 006A 008C 00031 movwf TRISA 00032 006B 0020 00033 BANKSEL 0 006C 3002 00034 movlw b'00000010' 006D 008C 00035 movwf PORTA 00036 006E 0BA5 00037 decfsz fcount,f 006F 285C 00038 goto display_cycle1 00039 0070 0008 00040 return 00041 00042 ;-------------------------------------------------------------------------------------- 0071 00043 display_cycle2 00044 ;-------------------------------------------------------------------------------------- 00045 LedOut Bg_reg,Ax_dir,0 ;LED Dr A2-A0 ; 3R 0071 0815 M movfw TMR0 0072 022A M subwf Bg_reg,w 0073 1C03 M btfss STATUS,C 0074 147F M bsf Ax_dir, 0 00046 LedOut Br_reg,Ax_dir,1 ;LED Dg A2-A1 ; 1R 0075 0815 M movfw TMR0 0076 0229 M subwf Br_reg,w 0077 1C03 M btfss STATUS,C 0078 14FF M bsf Ax_dir, 1 00047 LedOut Cb_reg,Ax_dir,4 ;LED Db A2-A4 ; 6B 0079 0815 M movfw TMR0 007A 022E M subwf Cb_reg,w 007B 1C03 M btfss STATUS,C 007C 167F M bsf Ax_dir, 4 00048 007D 087F 00049 movf Ax_dir,w ;set portA direction 007E 0021 00050 BANKSEL TRISA 007F 008C 00051 movwf TRISA 00052 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00053 0080 0020 00054 BANKSEL 0 0081 3004 00055 movlw b'00000100' 0082 008C 00056 movwf PORTA 00057 0083 0BA5 00058 decfsz fcount,f 00059 #ifdef RGB2_DOGTAG 00060 ; enable pullups on portA 00061 BANKSEL OPTION_REG 00062 bcf OPTION_REG,NOT_WPUEN 00063 00064 ; input on A3 00065 BANKSEL WPUA 00066 clrf WPUA ; disable all pullups 00067 bsf WPUA,3 ; enable pullup A3 00068 #endif 0084 2871 00069 goto display_cycle2 00070 0085 0008 00071 return 00072 00073 ;-------------------------------------------------------------------------------------- 0086 00074 display_cycle3 00075 ;-------------------------------------------------------------------------------------- 00076 LedOut Bb_reg,Ax_dir,0 ;LED Dr A4-A0 ; 5R 0086 0815 M movfw TMR0 0087 022B M subwf Bb_reg,w 0088 1C03 M btfss STATUS,C 0089 147F M bsf Ax_dir, 0 00077 LedOut Db_reg,Ax_dir,2 ;LED Db A4-A2 ; 6R 008A 0815 M movfw TMR0 008B 0231 M subwf Db_reg,w 008C 1C03 M btfss STATUS,C 008D 157F M bsf Ax_dir, 2 00078 LedOut Dg_reg,Ax_dir,1 ;LED Dg A4-A1 ; 4R 008E 0815 M movfw TMR0 008F 0230 M subwf Dg_reg,w 0090 1C03 M btfss STATUS,C 0091 14FF M bsf Ax_dir, 1 00079 0092 087F 00080 movf Ax_dir,w ;set portA direction 0093 0021 00081 BANKSEL TRISA 0094 008C 00082 movwf TRISA 00083 00084 0095 0020 00085 BANKSEL PORTA 0096 3010 00086 movlw b'00010000' 0097 008C 00087 movwf PORTA 00088 0098 0BA5 00089 decfsz fcount,f 0099 2886 00090 goto display_cycle3 00091 009A 0008 00092 return 01331 #else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01332 #ifdef RGB2_DOGTAG 01333 #include 01334 #else 01335 error "unknown board strobe type" 01336 #endif ; RGB2_DOGTAG 01337 #endif ; BI6_DOGTAG 01338 #endif ; C12 01339 #endif ; M8X16 01340 #endif ; SRGB 01341 #endif ; M3X3 01342 #endif ; S19 01343 #endif ; C19 01344 #endif ; GATOR 01345 #endif ; BI6 01346 #endif ; D10 01347 #endif ; RGB4 01348 01349 01350 ;************************************************************************************** 01351 ; 01352 ; State Machine 01353 ; 01354 ;************************************************************************************** 01355 01356 var instate 00000032 M instate equ mem 00000033 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01357 var max_instate 00000033 M max_instate equ mem 00000034 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01358 var IR_in 00000034 M IR_in equ mem 00000035 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01359 var command 00000035 M command equ mem 00000036 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01360 var address 00000036 M address equ mem 00000037 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 01361 var toggle 00000037 M toggle equ mem 00000038 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01362 var IR_lhalf 00000038 M IR_lhalf equ mem 00000039 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01363 var button 00000039 M button equ mem 0000003A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01364 #ifdef M3X3 01365 var button0 01366 var button1 01367 var button2 01368 var button3 01369 var button4 01370 #endif 01371 var tx_1 0000003A M tx_1 equ mem 0000003B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01372 var pindex2 0000003B M pindex2 equ mem 0000003C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01373 var IR_in_good 0000003C M IR_in_good equ mem 0000003D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01374 var butcount 0000003D M butcount equ mem 0000003E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01375 01376 ;-------------------------------------------------------------------------------------- 009B 01377 get_state_tbl_hi_address ; 17 cycles MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01378 ;-------------------------------------------------------------------------------------- 01379 var tbl2_hi 0000003E M tbl2_hi equ mem 0000003F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01380 009B 1003 01381 bcf STATUS,0 ; clear carry flag ; 1 009C 0D32 01382 rlf instate,w ; entry = table * 2 ; 2 009D 00BB 01383 movwf pindex2 ; 3 009E 20A8 01384 call table_lookup2 ; 14 (9+2) 009F 00BE 01385 movwf tbl2_hi ; 15 00A0 0008 01386 return ; 16/17 01387 01388 ;-------------------------------------------------------------------------------------- 00A1 01389 get_state_tbl_low_address ; 18 cycles 01390 ;-------------------------------------------------------------------------------------- 01391 var tbl2_low 0000003F M tbl2_low equ mem 00000040 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01392 00A1 1003 01393 bcf STATUS,0 ; clear carry flag (just in case) ; 1 00A2 0D32 01394 rlf instate,w ; entry = table * 2 + 1 ; 2 00A3 3E01 01395 addlw 1 ; 3 00A4 00BB 01396 movwf pindex2 ; 4 00A5 20A8 01397 call table_lookup2 ; 15 (9+2) 00A6 00BF 01398 movwf tbl2_low ; 16 00A7 0008 01399 return ; 17/18 01400 01401 ;********************************************************************** 00A8 01402 table_lookup2 ; 9 cycles 01403 ;********************************************************************** 00A8 3080 01404 movlw HIGH state_jump_table ; 1 00A9 008A 01405 movwf PCLATH ; 2 00AA 083B 01406 movf pindex2,w ; 3 00AB 3EB3 01407 addlw LOW state_jump_table ; 4 00AC 1803 01408 btfsc STATUS,0 ; check carry flag ; 5 00AD 0A8A 01409 incf PCLATH,f ; 6 00AE 0082 01410 movwf PCL ; 7 + 2 01411 01412 ;********************************************************************** 00AF 01413 go_state_table ; 18 cycles 01414 ;********************************************************************** 01415 00AF 083E 01416 movf tbl2_hi,w ; 1 00B0 008A 01417 movwf PCLATH ; 2 00B1 083F 01418 movf tbl2_low,w ; 3 00B2 0082 01419 movwf PCL ; 4 01420 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01421 ;********************************************************************** 00B3 01422 state_jump_table 01423 ;********************************************************************** 01424 make_state_jump_table d'31' 0000 M local i = 0 M while i <= d'31' 00B3 3480 34F3 M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 00B5 3480 34FE M dt HIGH Lstate1, LOW Lstate1 00000002 M i += 1 00B7 3481 3406 M dt HIGH Lstate2, LOW Lstate2 00000003 M i += 1 00B9 3481 340E M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 00BB 3481 3416 M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 00BD 3481 341E M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 00BF 3481 3426 M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 00C1 3481 3432 M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 00C3 3481 3436 M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 00C5 3481 3442 M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 00C7 3481 3446 M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 00C9 3481 3452 M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 00CB 3481 3456 M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 00CD 3481 3462 M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 00CF 3481 3466 M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 00D1 3481 3472 M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 00D3 3481 3476 M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 00D5 3481 3482 M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 00D7 3481 3486 M dt HIGH Lstate18, LOW Lstate18 00000013 M i += 1 00D9 3481 3492 M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 00DB 3481 3496 M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 00DD 3481 34A2 M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 00DF 3481 34A6 M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 00E1 3481 34B2 M dt HIGH Lstate23, LOW Lstate23 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000018 M i += 1 00E3 3481 34B6 M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 00E5 3481 34C2 M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 00E7 3481 34C6 M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 00E9 3481 34D2 M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 00EB 3481 34D6 M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 00ED 3481 34E2 M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 00EF 3481 34E6 M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 00F1 3481 34F2 M dt HIGH Lstate31, LOW Lstate31 00000020 M i += 1 M endw 01425 01426 state_tbl 0, 6, 1, 0 00F3 M Lstate0 M #ifndef MULTIBUTTON M if (0 == 0) 00F3 1039 M bcf button,0 00F4 3030 M movlw 0x30 00F5 00BD M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M #endif 00F6 1834 M btfsc IR_in,0 00F7 28FB M goto Lstate0a M 00F8 3006 M movlw 6 00F9 00B2 M movwf instate M 00FA 29F4 M goto Lcontinue M 00FB M Lstate0a 00FB 3001 M movlw 1 00FC 00B2 M movwf instate M 00FD 29F4 M goto Lcontinue 01427 state_tbl 1, 0, 2, -1 00FE 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) MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE M bsf button,0 M endif M #endif 00FE 1834 M btfsc IR_in,0 00FF 2903 M goto Lstate1a M 0100 3000 M movlw 0 0101 00B2 M movwf instate M 0102 29F4 M goto Lcontinue M 0103 M Lstate1a 0103 3002 M movlw 2 0104 00B2 M movwf instate M 0105 29F4 M goto Lcontinue 01428 state_tbl 2, 0, 3, -1 0106 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 0106 1834 M btfsc IR_in,0 0107 290B M goto Lstate2a M 0108 3000 M movlw 0 0109 00B2 M movwf instate M 010A 29F4 M goto Lcontinue M 010B M Lstate2a 010B 3003 M movlw 3 010C 00B2 M movwf instate M 010D 29F4 M goto Lcontinue 01429 state_tbl 3, 4, 3, -1 010E 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 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 010E 1834 M btfsc IR_in,0 010F 2913 M goto Lstate3a M 0110 3004 M movlw 4 0111 00B2 M movwf instate M 0112 29F4 M goto Lcontinue M 0113 M Lstate3a 0113 3003 M movlw 3 0114 00B2 M movwf instate M 0115 29F4 M goto Lcontinue 01430 state_tbl 4, 0, 5, -1 0116 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 0116 1834 M btfsc IR_in,0 0117 291B M goto Lstate4a M 0118 3000 M movlw 0 0119 00B2 M movwf instate M 011A 29F4 M goto Lcontinue M 011B M Lstate4a 011B 3005 M movlw 5 011C 00B2 M movwf instate M 011D 29F4 M goto Lcontinue 01431 state_tbl 5, 7, 0, -1 011E 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 011E 1834 M btfsc IR_in,0 011F 2923 M goto Lstate5a M MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0120 3007 M movlw 7 0121 00B2 M movwf instate M 0122 29F4 M goto Lcontinue M 0123 M Lstate5a 0123 3000 M movlw 0 0124 00B2 M movwf instate M 0125 29F4 M goto Lcontinue 01432 0126 01433 Lstate6 01434 0126 1834 01435 btfsc IR_in,0 0127 2930 01436 goto Lstate6a 01437 0128 3000 01438 movlw 0 0129 073D 01439 addwf butcount,w 012A 1903 01440 btfsc STATUS,Z 012B 292E 01441 goto Lstate6b 01442 012C 0BBD 01443 decfsz butcount,f 012D 29F4 01444 goto Lcontinue 01445 012E 01446 Lstate6b 01447 01448 #ifndef MULTIBUTTON 012E 1439 01449 bsf button,0 01450 #endif 012F 29F4 01451 goto Lcontinue 01452 0130 01453 Lstate6a 0130 01B2 01454 clrf instate 0131 29F4 01455 goto Lcontinue 01456 01457 state2_tbl 7, toggle, 0 0132 M Lstate7 M ; save the 1st half of word 0132 0834 M movf IR_in,w ; save 1st half 0133 00B8 M movwf IR_lhalf 0134 0AB2 M incf instate,f M 0135 29F4 M goto Lcontinue M 0136 M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0136 0838 M movf IR_lhalf,w 0137 0634 M xorwf IR_in,w 0138 1D03 M btfss STATUS,Z 0139 293C M goto Lstate8a 013A 01B2 M clrf instate ; error state = zero M MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 013B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 013C M Lstate8a 013C 1834 M btfsc IR_in,0 013D 1037 M bcf toggle,0 013E 1C34 M btfss IR_in,0 013F 1437 M bsf toggle,0 M 0140 0AB2 M incf instate,f 0141 29F4 M goto Lcontinue 01458 state2_tbl 9, address, 4 0142 M Lstate9 M ; save the 1st half of word 0142 0834 M movf IR_in,w ; save 1st half 0143 00B8 M movwf IR_lhalf 0144 0AB2 M incf instate,f M 0145 29F4 M goto Lcontinue M 0146 M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0146 0838 M movf IR_lhalf,w 0147 0634 M xorwf IR_in,w 0148 1D03 M btfss STATUS,Z 0149 294C M goto Lstate10a 014A 01B2 M clrf instate ; error state = zero M 014B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 014C M Lstate10a 014C 1834 M btfsc IR_in,0 014D 1236 M bcf address,4 014E 1C34 M btfss IR_in,0 014F 1636 M bsf address,4 M 0150 0AB2 M incf instate,f 0151 29F4 M goto Lcontinue 01459 state2_tbl d'11', address, 3 0152 M Lstate11 M ; save the 1st half of word 0152 0834 M movf IR_in,w ; save 1st half 0153 00B8 M movwf IR_lhalf 0154 0AB2 M incf instate,f M 0155 29F4 M goto Lcontinue M 0156 M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0156 0838 M movf IR_lhalf,w MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0157 0634 M xorwf IR_in,w 0158 1D03 M btfss STATUS,Z 0159 295C M goto Lstate12a 015A 01B2 M clrf instate ; error state = zero M 015B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 015C M Lstate12a 015C 1834 M btfsc IR_in,0 015D 11B6 M bcf address,3 015E 1C34 M btfss IR_in,0 015F 15B6 M bsf address,3 M 0160 0AB2 M incf instate,f 0161 29F4 M goto Lcontinue 01460 state2_tbl d'13', address, 2 0162 M Lstate13 M ; save the 1st half of word 0162 0834 M movf IR_in,w ; save 1st half 0163 00B8 M movwf IR_lhalf 0164 0AB2 M incf instate,f M 0165 29F4 M goto Lcontinue M 0166 M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0166 0838 M movf IR_lhalf,w 0167 0634 M xorwf IR_in,w 0168 1D03 M btfss STATUS,Z 0169 296C M goto Lstate14a 016A 01B2 M clrf instate ; error state = zero M 016B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 016C M Lstate14a 016C 1834 M btfsc IR_in,0 016D 1136 M bcf address,2 016E 1C34 M btfss IR_in,0 016F 1536 M bsf address,2 M 0170 0AB2 M incf instate,f 0171 29F4 M goto Lcontinue 01461 state2_tbl d'15', address, 1 0172 M Lstate15 M ; save the 1st half of word 0172 0834 M movf IR_in,w ; save 1st half 0173 00B8 M movwf IR_lhalf 0174 0AB2 M incf instate,f M 0175 29F4 M goto Lcontinue MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0176 M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0176 0838 M movf IR_lhalf,w 0177 0634 M xorwf IR_in,w 0178 1D03 M btfss STATUS,Z 0179 297C M goto Lstate16a 017A 01B2 M clrf instate ; error state = zero M 017B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 017C M Lstate16a 017C 1834 M btfsc IR_in,0 017D 10B6 M bcf address,1 017E 1C34 M btfss IR_in,0 017F 14B6 M bsf address,1 M 0180 0AB2 M incf instate,f 0181 29F4 M goto Lcontinue 01462 state2_tbl d'17', address, 0 0182 M Lstate17 M ; save the 1st half of word 0182 0834 M movf IR_in,w ; save 1st half 0183 00B8 M movwf IR_lhalf 0184 0AB2 M incf instate,f M 0185 29F4 M goto Lcontinue M 0186 M Lstate18 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0186 0838 M movf IR_lhalf,w 0187 0634 M xorwf IR_in,w 0188 1D03 M btfss STATUS,Z 0189 298C M goto Lstate18a 018A 01B2 M clrf instate ; error state = zero M 018B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 018C M Lstate18a 018C 1834 M btfsc IR_in,0 018D 1036 M bcf address,0 018E 1C34 M btfss IR_in,0 018F 1436 M bsf address,0 M 0190 0AB2 M incf instate,f 0191 29F4 M goto Lcontinue 01463 state2_tbl d'19', command, 5 0192 M Lstate19 M ; save the 1st half of word MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0192 0834 M movf IR_in,w ; save 1st half 0193 00B8 M movwf IR_lhalf 0194 0AB2 M incf instate,f M 0195 29F4 M goto Lcontinue M 0196 M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0196 0838 M movf IR_lhalf,w 0197 0634 M xorwf IR_in,w 0198 1D03 M btfss STATUS,Z 0199 299C M goto Lstate20a 019A 01B2 M clrf instate ; error state = zero M 019B 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 019C M Lstate20a 019C 1834 M btfsc IR_in,0 019D 12B5 M bcf command,5 019E 1C34 M btfss IR_in,0 019F 16B5 M bsf command,5 M 01A0 0AB2 M incf instate,f 01A1 29F4 M goto Lcontinue 01464 state2_tbl d'21', command, 4 01A2 M Lstate21 M ; save the 1st half of word 01A2 0834 M movf IR_in,w ; save 1st half 01A3 00B8 M movwf IR_lhalf 01A4 0AB2 M incf instate,f M 01A5 29F4 M goto Lcontinue M 01A6 M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01A6 0838 M movf IR_lhalf,w 01A7 0634 M xorwf IR_in,w 01A8 1D03 M btfss STATUS,Z 01A9 29AC M goto Lstate22a 01AA 01B2 M clrf instate ; error state = zero M 01AB 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 01AC M Lstate22a 01AC 1834 M btfsc IR_in,0 01AD 1235 M bcf command,4 01AE 1C34 M btfss IR_in,0 01AF 1635 M bsf command,4 M MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01B0 0AB2 M incf instate,f 01B1 29F4 M goto Lcontinue 01465 state2_tbl d'23', command, 3 01B2 M Lstate23 M ; save the 1st half of word 01B2 0834 M movf IR_in,w ; save 1st half 01B3 00B8 M movwf IR_lhalf 01B4 0AB2 M incf instate,f M 01B5 29F4 M goto Lcontinue M 01B6 M Lstate24 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01B6 0838 M movf IR_lhalf,w 01B7 0634 M xorwf IR_in,w 01B8 1D03 M btfss STATUS,Z 01B9 29BC M goto Lstate24a 01BA 01B2 M clrf instate ; error state = zero M 01BB 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 01BC M Lstate24a 01BC 1834 M btfsc IR_in,0 01BD 11B5 M bcf command,3 01BE 1C34 M btfss IR_in,0 01BF 15B5 M bsf command,3 M 01C0 0AB2 M incf instate,f 01C1 29F4 M goto Lcontinue 01466 state2_tbl d'25', command, 2 01C2 M Lstate25 M ; save the 1st half of word 01C2 0834 M movf IR_in,w ; save 1st half 01C3 00B8 M movwf IR_lhalf 01C4 0AB2 M incf instate,f M 01C5 29F4 M goto Lcontinue M 01C6 M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01C6 0838 M movf IR_lhalf,w 01C7 0634 M xorwf IR_in,w 01C8 1D03 M btfss STATUS,Z 01C9 29CC M goto Lstate26a 01CA 01B2 M clrf instate ; error state = zero M 01CB 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 01CC M Lstate26a MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01CC 1834 M btfsc IR_in,0 01CD 1135 M bcf command,2 01CE 1C34 M btfss IR_in,0 01CF 1535 M bsf command,2 M 01D0 0AB2 M incf instate,f 01D1 29F4 M goto Lcontinue 01467 state2_tbl d'27', command, 1 01D2 M Lstate27 M ; save the 1st half of word 01D2 0834 M movf IR_in,w ; save 1st half 01D3 00B8 M movwf IR_lhalf 01D4 0AB2 M incf instate,f M 01D5 29F4 M goto Lcontinue M 01D6 M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01D6 0838 M movf IR_lhalf,w 01D7 0634 M xorwf IR_in,w 01D8 1D03 M btfss STATUS,Z 01D9 29DC M goto Lstate28a 01DA 01B2 M clrf instate ; error state = zero M 01DB 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 01DC M Lstate28a 01DC 1834 M btfsc IR_in,0 01DD 10B5 M bcf command,1 01DE 1C34 M btfss IR_in,0 01DF 14B5 M bsf command,1 M 01E0 0AB2 M incf instate,f 01E1 29F4 M goto Lcontinue 01468 state2_tbl d'29', command, 0 01E2 M Lstate29 M ; save the 1st half of word 01E2 0834 M movf IR_in,w ; save 1st half 01E3 00B8 M movwf IR_lhalf 01E4 0AB2 M incf instate,f M 01E5 29F4 M goto Lcontinue M 01E6 M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 01E6 0838 M movf IR_lhalf,w 01E7 0634 M xorwf IR_in,w 01E8 1D03 M btfss STATUS,Z 01E9 29EC M goto Lstate30a 01EA 01B2 M clrf instate ; error state = zero MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 01EB 29F4 M goto Lcontinue M M ; set the correct bit in output vars. 01EC M Lstate30a 01EC 1834 M btfsc IR_in,0 01ED 1035 M bcf command,0 01EE 1C34 M btfss IR_in,0 01EF 1435 M bsf command,0 M 01F0 0AB2 M incf instate,f 01F1 29F4 M goto Lcontinue 01469 01F2 01470 Lstate31 01F2 01B2 01471 clrf instate 01F3 143C 01472 bsf IR_in_good,0 01473 01F4 01474 Lcontinue 01F4 0008 01475 return 01476 01477 ;-------------------------------------------------------------------------------------- 01F5 01478 read_button_in ; 5 cycles 01479 ;-------------------------------------------------------------------------------------- 01480 ; Portability : hardcoded button port 01481 ; 01482 01483 #ifndef ENABLE_IR 01F5 01B9 01484 clrf button 01485 #endif 01486 01487 #ifndef SIM_DEBUG 01488 #ifdef D10 01489 btfss PORTA,3 ; 2 01490 bsf button,0 ; 3 01491 btfss PORTA,5 ; 2 01492 bsf button,1 ; 3 01493 #else 01494 #ifdef M8X16 01495 bcf button,1 ; 1 01496 btfss PORTC,2 ; 2 01497 bsf button,1 ; 3 01498 #else ; M8X16 01499 #ifndef MULTIBUTTON 01F6 1039 01500 bcf button,0 ; 1 01F7 10B9 01501 bcf button,1 ; 1 01502 #ifdef DEDICATED_BUTTON2 01503 #ifdef SRGB 01504 btfss PORTA,5 ; 2 ; stick has 2 buttons. 01505 bsf button,1 ; 3 01506 btfss PORTA,4 ; 2 01507 bsf button,0 ; 3 01508 #else ; SRGB 01509 btfss PORTC,5 ; 2 ; Dual 12C has 2 buttons. MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01510 bsf button,0 ; 3 01511 btfss PORTC,7 ; 2 01512 bsf button,1 ; 3 01513 #endif ; SRGB 01514 #else ; DEDICATED_BUTTON2 01F8 1E8C 01515 btfss PORTA,5 ; 2 01F9 1439 01516 bsf button,0 ; 3 01517 #endif ; not DEDICATED_BUTTON2 01518 #endif ; not MULTIBUTTON 01519 #endif ; not M8x16 01520 #endif ; D10 01521 #endif ; not SIM_DEBUG 01FA 0008 01522 return 01523 01524 ;-------------------------------------------------------------------------------------- 01FB 01525 read_ir_in ; 5 cycles 01526 ;-------------------------------------------------------------------------------------- 01FB 1034 01527 bcf IR_in,0 ; 1 01528 #ifndef SIM_DEBUG 01529 #ifdef C12 01530 btfsc PORTC,6 ; 2 01531 #else 01532 #ifdef M8X16 01533 btfsc PORTE,3 ; 2 01534 #else 01FC 198C 01535 btfsc PORTA,3 ; 2 01536 #endif 01537 #endif 01538 #endif 01539 01FD 1434 01540 bsf IR_in,0 ; 3 01541 01542 ; movf tx_1,w ; loopback for testing HACK!! ;1 01543 ; xorlw 0x01 ; loopback for testing HACK!! ;2 01544 ; movwf IR_in ; loopback for testing HACK!! ;3 01FE 0008 01545 return ; 4/5 01546 01547 ;-------------------------------------------------------------------------------------- 01FF 01548 set_max_state ; 5-7 cycles 01549 ;-------------------------------------------------------------------------------------- 01FF 0833 01550 movf max_instate,w 0200 0232 01551 subwf instate,w 0201 1C03 01552 btfss STATUS,C 0202 2A05 01553 goto smi_l1 0203 0832 01554 movf instate,w 0204 00B3 01555 movwf max_instate 0205 01556 smi_l1 0205 0008 01557 return 01558 01559 ;-------------------------------------------------------------------------------------- 0206 01560 get_next_tx_bit ; 11 cycles 01561 ;-------------------------------------------------------------------------------------- 01562 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0206 103A 01563 bcf tx_1,0 ;1 0207 03C9 01564 decf scount,f ;2 0208 1003 01565 bcf STATUS, C ; clear carry bit ;3 0209 0CC8 01566 rrf out3,f ;4 020A 0CC7 01567 rrf out2,f ;5 020B 0CC6 01568 rrf out1,f ;6 020C 0CC5 01569 rrf out0,f ;7 020D 1803 01570 btfsc STATUS, C ;8 020E 143A 01571 bsf tx_1,0 ;9 01572 01573 ; movf tx_1,w ; loopback for testing HACK!! 01574 ; xorlw 0x01 ; loopback for testing HACK!! 01575 ; movwf tx_1 ; loopback for testing HACK!! 01576 ; mult_nop d'6' ; for debuging 01577 020F 0008 01578 return ;10/11 01579 01580 ;********************************************************************** 0210 01581 qdelay 01582 ;********************************************************************** 01583 var qcount 00000040 M qcount equ mem 00000041 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01584 0210 00C0 01585 movwf qcount 0211 01586 delay_loop2 0211 0BC0 01587 decfsz qcount,1 0212 2A11 01588 goto delay_loop2 0213 0008 01589 return 01590 ;********************************************************************** 0214 01591 rf_command_out 01592 ;********************************************************************** 01593 01594 var out_address 00000041 M out_address equ mem 00000042 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01595 var out_command 00000042 M out_command equ mem 00000043 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01596 var out_toggle 00000043 M out_toggle equ mem 00000044 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 01597 var out_pattern 00000044 M out_pattern equ mem 00000045 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01598 var out0 00000045 M out0 equ mem 00000046 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01599 var out1 00000046 M out1 equ mem 00000047 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01600 var out2 00000047 M out2 equ mem 00000048 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01601 var out3 00000048 M out3 equ mem 00000049 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01602 var scount 00000049 M scount equ mem 0000004A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01603 0214 01C6 01604 clrf out1 0215 01C7 01605 clrf out2 0216 01C8 01606 clrf out3 01607 01608 ; start flag 0217 30A0 01609 movlw B'10100000' 0218 00C5 01610 movwf out0 01611 01612 01613 ; toggle bit 0219 09C3 01614 comf out_toggle,f ; toggle the toggle flag 021A 1C43 01615 btfss out_toggle,0 021B 1446 01616 bsf out1,0 021C 1843 01617 btfsc out_toggle,0 021D 14C6 01618 bsf out1,1 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01619 01620 ; address bits 021E 1E41 01621 btfss out_address,4 021F 1546 01622 bsf out1,2 0220 1A41 01623 btfsc out_address,4 0221 15C6 01624 bsf out1,3 01625 0222 1DC1 01626 btfss out_address,3 0223 1646 01627 bsf out1,4 0224 19C1 01628 btfsc out_address,3 0225 16C6 01629 bsf out1,5 01630 0226 1D41 01631 btfss out_address,2 0227 1746 01632 bsf out1,6 0228 1941 01633 btfsc out_address,2 0229 17C6 01634 bsf out1,7 01635 022A 1CC1 01636 btfss out_address,1 022B 1447 01637 bsf out2,0 022C 18C1 01638 btfsc out_address,1 022D 14C7 01639 bsf out2,1 01640 022E 1C41 01641 btfss out_address,0 022F 1547 01642 bsf out2,2 0230 1841 01643 btfsc out_address,0 0231 15C7 01644 bsf out2,3 01645 01646 ; command bits 0232 1EC2 01647 btfss out_command,5 0233 1647 01648 bsf out2,4 0234 1AC2 01649 btfsc out_command,5 0235 16C7 01650 bsf out2,5 01651 0236 1E42 01652 btfss out_command,4 0237 1747 01653 bsf out2,6 0238 1A42 01654 btfsc out_command,4 0239 17C7 01655 bsf out2,7 01656 023A 1DC2 01657 btfss out_command,3 023B 1448 01658 bsf out3,0 023C 19C2 01659 btfsc out_command,3 023D 14C8 01660 bsf out3,1 01661 023E 1D42 01662 btfss out_command,2 023F 1548 01663 bsf out3,2 0240 1942 01664 btfsc out_command,2 0241 15C8 01665 bsf out3,3 01666 0242 1CC2 01667 btfss out_command,1 0243 1648 01668 bsf out3,4 0244 18C2 01669 btfsc out_command,1 0245 16C8 01670 bsf out3,5 01671 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0246 1C42 01672 btfss out_command,0 0247 1748 01673 bsf out3,6 0248 1842 01674 btfsc out_command,0 0249 17C8 01675 bsf out3,7 01676 024A 3021 01677 movlw 0x21 024B 00C9 01678 movwf scount 01679 024C 0008 01680 return 01681 01682 #ifdef BIN2LED 01683 ;********************************************************************** 024D 01684 bin2led 01685 ;********************************************************************** 01686 var b2l_out_hi 0000004A M b2l_out_hi equ mem 0000004B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01687 var b2l_out_low 0000004B M b2l_out_low equ mem 0000004C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01688 var b2l_lcount 0000004C M b2l_lcount equ mem 0000004D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01689 var b2l_in_red 0000004D M b2l_in_red equ mem 0000004E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01690 var b2l_in_green 0000004E M b2l_in_green equ mem 0000004F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01691 024D 01CA 01692 clrf b2l_out_hi 024E 01CB 01693 clrf b2l_out_low 024F 3008 01694 movlw 0x08 0250 00CC 01695 movwf b2l_lcount 0251 01696 b2l_loop 0251 1003 01697 bcf STATUS, C 0252 0CCE 01698 rrf b2l_in_green,f 0253 0DCB 01699 rlf b2l_out_low,f MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0254 0DCA 01700 rlf b2l_out_hi,f 0255 0CCD 01701 rrf b2l_in_red,f 0256 0DCB 01702 rlf b2l_out_low,f 0257 0DCA 01703 rlf b2l_out_hi,f 01704 0258 0BCC 01705 decfsz b2l_lcount,f 0259 2A51 01706 goto b2l_loop 025A 0008 01707 return 01708 #endif 01709 01710 #ifdef FLIPBYTE 01711 ;********************************************************************** 01712 flipbyte 01713 ;********************************************************************** 01714 var flip_in 01715 var flip_out 01716 var flip_lcount 01717 01718 movwf flip_in 01719 clrf flip_out 01720 movlw 0x08 01721 movwf flip_lcount 01722 fbyte_loop 01723 bcf STATUS, C 01724 rrf flip_in,f 01725 rlf flip_out,f 01726 01727 decfsz flip_lcount,f 01728 goto fbyte_loop 01729 01730 movfw flip_out 01731 return 01732 #endif 01733 01734 ;********************************************************************** 025B 01735 delay 01736 ;********************************************************************** 01737 01738 var delay_count 0000004F M delay_count equ mem 00000050 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01739 01740 ; movlw 0ffh 025B 00CF 01741 movwf delay_count 025C 01742 delay_loop 025C 0000 01743 nop 025D 0BCF 01744 decfsz delay_count,1 025E 2A5C 01745 goto delay_loop 025F 0008 01746 return 01747 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01748 ;********************************************************************** 0260 01749 next_pattern 01750 ;********************************************************************** 0260 0AD6 01751 incf pattern,f 0261 0856 01752 movf pattern,w 0262 3C0F 01753 sublw NUM_TAB+1 ; max pattern? 0263 1903 01754 btfsc STATUS,2 ; z bit check 0264 01D6 01755 clrf pattern ; reset to zero 0265 0856 01756 movfw pattern 0266 00C4 01757 movwf out_pattern 0267 01FE 01758 clrf pindex 0268 01FD 01759 clrf pindex1 0269 0008 01760 return 01761 01762 ;********************************************************************** 026A 01763 past_pattern 01764 ;********************************************************************** 026A 03D6 01765 decf pattern,f 026B 0856 01766 movf pattern,w 026C 3E01 01767 addlw 1 ; max pattern? 026D 1D03 01768 btfss STATUS,2 ; z bit check 026E 2A72 01769 goto past_exit 026F 300E 01770 movlw NUM_TAB 0270 00D6 01771 movwf pattern 0271 00C4 01772 movwf out_pattern 0272 01773 past_exit 0272 01FE 01774 clrf pindex 0273 01FD 01775 clrf pindex1 0274 0008 01776 return 01777 01778 ;********************************************************************** 0275 01779 set_pattern ;set pattern from IR 01780 ;********************************************************************** 01781 ; extra logic because all the different blinkes talk to each other, but 01782 ; do not have the same number of patterns. So if blinkie "A" sents a 01783 ; pattern 22 to blinkie "B" which only has 10 patterns, Blinkie "B" 01784 ; starts to show pattern 2. (22 % 10 a mod function.) But to make 01785 ; things fair in blinkie wars, it will transmit pattern 22 to other 01786 ; blinkies. 01787 ;********************************************************************** 01788 0275 0835 01789 movfw command 0276 00D6 01790 movwf pattern 0277 00C4 01791 movwf out_pattern 0278 01792 set_loop 0278 3EF1 01793 addlw 0xff-NUM_TAB 0279 1C03 01794 btfss STATUS, C 027A 2A7F 01795 goto set_exit 01796 027B 300E 01797 movlw NUM_TAB 027C 02D6 01798 subwf pattern,f 027D 0856 01799 movfw pattern 027E 2A78 01800 goto set_loop MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01801 027F 01802 set_exit 027F 01FE 01803 clrf pindex 0280 01FD 01804 clrf pindex1 0281 0008 01805 return 01806 01807 ;********************************************************************** 0282 01808 strobe_delay 01809 ;********************************************************************** 01810 01811 var strobe_count 00000050 M strobe_count equ mem 00000051 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01812 0282 00D0 01813 movwf strobe_count 0283 01814 strobe_delay1 0283 1020 01815 bcf nextf,0 01816 0284 01817 strobe_delay2 0284 1C20 01818 btfss nextf,0 0285 2A84 01819 goto strobe_delay2 01820 0286 0BD0 01821 decfsz strobe_count,f 0287 2A83 01822 goto strobe_delay1 01823 0288 0008 01824 return 01825 01826 #ifdef M8X16 01827 #include display_pattern_id_8x16.asm 01828 #else 01829 ;********************************************************************** 0289 01830 display_pattern_id 01831 ;********************************************************************** 0289 0A56 01832 incf pattern,w ; W = pattern + 1 01833 #ifdef SRGB 01834 movwf in1 01835 clrf in0 01836 clrf in2 01837 clrf in3 01838 clrf in4 01839 clrf in5 01840 #else 01841 #ifdef C12 01842 call flipbyte 01843 movwf in0 01844 clrf in1 01845 clrf in2 01846 clrf in3 01847 clrf in4 01848 clrf in5 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01849 movlw b'01110000' 01850 btfsc demo_mode,0 01851 movwf in1 01852 #else ; everyone else 028A 00D8 01853 movwf in0 01854 #endif ; C12 01855 #endif ; SRGB 01856 01857 #ifdef GATOR 01858 call flipbyte 01859 movwf in0 01860 clrf in1 01861 clrf in2 01862 #endif ; GATOR 01863 01864 #ifdef BI6_DOGTAG 028B 00CD 01865 movwf b2l_in_red 028C 01CE 01866 clrf b2l_in_green 028D 224D 01867 call bin2led 028E 084A 01868 movf b2l_out_hi,w 028F 00D8 01869 movwf in0 0290 084B 01870 movf b2l_out_low,w 0291 00D9 01871 movwf in1 01872 0292 185D 01873 btfsc demo_mode,0 01874 #ifdef MONO 0293 1659 01875 bsf in1,4 01876 #else 01877 bsf in1,5 01878 #endif 01879 #endif 01880 01881 #ifdef RGB2_DOGTAG 01882 call flipbyte 01883 movwf in0 01884 lslf flip_out,f 01885 lslf flip_out,w 01886 movwf in1 01887 #endif 01888 01889 #ifdef S19 01890 call flipbyte 01891 movwf in0 01892 #endif ; S19 01893 01894 #ifdef BI6 01895 #ifdef MONO 01896 call flipbyte 01897 movwf in0 01898 #else 01899 #ifdef D10 01900 call flipbyte 01901 movwf in0 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01902 clrf in1 01903 #else 01904 movwf b2l_in_green 01905 clrf b2l_in_red 01906 call bin2led 01907 movf b2l_out_hi,w 01908 movwf in0 01909 movf b2l_out_low,w 01910 movwf in1 01911 #endif ; D10 01912 #endif ; Mono 01913 #endif ; BI6 01914 01915 #ifdef M3X3 01916 movwf b2l_in_green 01917 clrf b2l_in_red 01918 call bin2led 01919 movf b2l_out_hi,w 01920 movwf in0 01921 movf b2l_out_low,w 01922 movwf in1 01923 #endif ; M3X3 01924 01925 #ifdef C19 01926 ; outer ring hars the pattern number 01927 movwf b2l_in_red 01928 clrf b2l_in_green 01929 call bin2led 01930 movf b2l_out_hi,w 01931 movwf in0 01932 movf b2l_out_low,w 01933 movwf in1 01934 01935 ; center LED turned on 01936 clrf in2 01937 clrf in3 01938 movlw b'00001100' 01939 movwf in4 01940 01941 ; middle ring on if demo mode 01942 btfss demo_mode,0 01943 goto skip4 01944 01945 comf in3,f 01946 movlw b'11111100' 01947 movwf in4 01948 skip4 01949 01950 #endif ; C19 01951 01952 #ifdef GATOR 01953 clrf in2 01954 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01955 movlw b'10000000' 01956 btfsc demo_mode,0 01957 movwf in2 01958 #endif ; GATOR 01959 01960 #ifdef RGB2_DOGTAG 01961 bcf in0,2 01962 btfsc demo_mode,0 01963 bsf in0,2 01964 #endif 01965 01966 01967 #ifdef M3X3 01968 clrf in2 01969 01970 movlw b'11100000' 01971 btfsc demo_mode,0 01972 movwf in2 01973 #endif ; M3X3 01974 01975 #ifdef S19 01976 clrf in1 01977 clrf in2 01978 01979 movlw b'11100000' 01980 btfsc demo_mode,0 01981 movwf in2 01982 #else 01983 #ifdef BI6 01984 #ifdef MONO 01985 btfsc demo_mode,0 01986 bsf in0,2 01987 #else ; bicolor 01988 btfsc demo_mode,0 01989 bsf in1,4 01990 #endif ; end Mono/bicolor 01991 #endif ; end BI 01992 #endif ; end S19/BI6 01993 01994 #ifdef RGB4 01995 btfsc demo_mode,0 01996 bsf in1,7 01997 #endif ; RGB4 01998 01999 #ifdef SRGB 02000 movlw b'00111000' 02001 btfsc demo_mode,0 02002 movwf in4 02003 #endif ; SRGB 02004 0294 30FF 02005 movlw 0xFF 0295 236D 02006 call display_1bit 02007 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0296 01D8 02008 clrf in0 0297 01D9 02009 clrf in1 0298 01DA 02010 clrf in2 0299 3001 02011 movlw 0x01 029A 236D 02012 call display_1bit 029B 0008 02013 return 02014 #endif ; M8X16 02015 02016 ;********************************************************************** 029C 02017 setup_pattern_table 02018 ;********************************************************************** 02019 var tbl_hi 00000051 M tbl_hi equ mem 00000052 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02020 var tbl_low 00000052 M tbl_low equ mem 00000053 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02021 var temp_high 00000053 M temp_high equ mem 00000054 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02022 02023 02024 ; 02025 ; rewrite for new chips using indirect addressing of program flash DDF BUG!! 02026 ; set frs1 to start of table. 02027 ; 02028 02029 ;slabel1 02030 ; 02031 ; Set the pattern (table) 02032 ; 02033 02034 02035 029C 3084 02036 movlw HIGH MasterTable 029D 00D1 02037 movwf tbl_hi 029E 3090 02038 movlw LOW MasterTable 029F 00D2 02039 movwf tbl_low 02040 ; 02041 ; New code optimized for new pics DDF enhancement 02042 ; 02043 ; movlw HIGH MasterTable 02044 ; movwf FSR1H 02045 ; movlw LOW MasterTable MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02046 ; movwf FSR1L 02047 ; rlf pattern,w ; entry = table * 2 02048 ;loop 02049 ; MOVIW FSR1++ 02050 ; movwf temp_hi 02051 ; MOVIW FSR1++ 02052 ; movwf temp_low 02053 ; DECFSZ pattern,1 02054 ; goto loop 02055 ; movfw temp_low 02056 ; movwf FSR1L 02057 ; movfw temp_high 02058 ; bsf temp_high,7 ;set bit 7 high (microchip example does not have this?) 02059 ; movwf FSR1H 02060 ; return 02061 02062 ; get the high address for the pattern table 02A0 1003 02063 bcf STATUS,0 ; clear carry flag 02A1 0D56 02064 rlf pattern,w ; entry = table * 2 02A2 00FE 02065 movwf pindex 02A3 138B 02066 bcf INTCON, GIE ; disable INTs 02A4 2483 02067 call table_lookup 02A5 178B 02068 bsf INTCON, GIE ; enable INTs 02A6 00D3 02069 movwf temp_high ; can't put it in tbl_high yet 02070 02071 ; get the low address for the pattern table 02A7 1403 02072 bsf STATUS,0 ; set carry 02A8 0D56 02073 rlf pattern,w ; entry = table * 2 + 1 02A9 00FE 02074 movwf pindex 02AA 138B 02075 bcf INTCON, GIE ; disable INTs 02AB 2483 02076 call table_lookup 02AC 178B 02077 bsf INTCON, GIE ; enable INTs 02AD 00D2 02078 movwf tbl_low 02079 02AE 0853 02080 movf temp_high,w 02AF 00D1 02081 movwf tbl_hi 02082 02B0 02083 sreturn 02B0 0008 02084 return 02085 02086 ;********************************************************************** 02B1 02087 get_next_pattern_entry 02088 ;********************************************************************** 02089 var pclath_save 00000054 M pclath_save equ mem 00000055 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02090 var temp2 00000055 M temp2 equ mem 00000056 M mem = mem + 1 M if (mem >= mem2) MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' M endif 02091 02092 ; 02093 ; rewrite for new chips using indirect addressing of program flash DDF BUG!! 02094 ; 02095 02096 02097 #ifndef NOEEPROM 02098 ; if hi address is 0x21 pattern is in eeprom ; This could be F000 now DDF BUG!! 02B1 30F0 02099 movlw 0xf0 02B2 0251 02100 subwf tbl_hi,w 02B3 1D03 02101 btfss STATUS,Z 02B4 2AB9 02102 goto glabel1 02103 02104 ; table in eeprom 02B5 0852 02105 movfw tbl_low 02B6 077E 02106 addwf pindex,w 02107 02B7 22E2 02108 call read_eeprom 02109 02B8 2ACB 02110 goto greturn 02111 #endif 02112 02113 ; table in program memory 02114 02B9 02115 glabel1 02116 02117 ; 02118 ; MOVIW FSR1++ ? 02119 ; 02120 02B9 138B 02121 bcf INTCON, GIE ; disable INTs 02BA 080A 02122 movfw PCLATH 02BB 00D4 02123 movwf pclath_save 02124 02BC 0851 02125 movfw tbl_hi 02BD 077D 02126 addwf pindex1,w 02BE 00E0 02127 movwf offset_hi 02128 02BF 1003 02129 bcf STATUS,C 02C0 0852 02130 movfw tbl_low 02C1 077E 02131 addwf pindex,w 02C2 00E1 02132 movwf offset_low 02133 02C3 1803 02134 btfsc STATUS,C 02C4 0AE0 02135 incf offset_hi,f 02C5 248A 02136 call jump_address 02137 02C6 00D5 02138 movwf temp2 02C7 0854 02139 movfw pclath_save 02C8 008A 02140 movwf PCLATH 02C9 0855 02141 movfw temp2 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02CA 178B 02142 bsf INTCON, GIE ; enable INTs 02143 02CB 02144 greturn 02CB 0FFE 02145 incfsz pindex,f 02CC 2ACE 02146 goto gskip 02CD 0AFD 02147 incf pindex1,f 02CE 02148 gskip 02CE 0008 02149 return 02150 02151 02152 #ifndef NOEEPROM 02153 ;********************************************************************** 02CF 02154 write_eeprom 02155 ; expects EEPROM address and data in pindex and input 02156 ; makes sure previous write (if any) has completed before proceeding 02157 ;********************************************************************** 02CF 0023 02158 BANKSEL EECON1 02159 02D0 1895 02160 btfsc EECON1,WR ;wait for WR to clear 02D1 2AD0 02161 goto $-1 02162 02D2 138B 02163 bcf INTCON, GIE ; disable INTs 02D3 1515 02164 bsf EECON1,WREN ;enable writes 02D4 0023 02165 BANKSEL EEADR 02D5 087E 02166 movf pindex,w ;set address 02D6 0091 02167 movwf EEADR 02D7 087C 02168 movf input,w ;set data 02D8 0093 02169 movwf EEDAT 02D9 0023 02170 BANKSEL EECON1 02DA 3055 02171 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 02DB 0096 02172 movwf EECON2 02DC 30AA 02173 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 02DD 0096 02174 movwf EECON2 02DE 1495 02175 bsf EECON1,WR ;initiate a write cycle 02DF 178B 02176 bsf INTCON, GIE ; enable INT 02177 02E0 0020 02178 MOVLB 0x00 02E1 0008 02179 return 02180 02181 02182 ;********************************************************************** 02E2 02183 read_eeprom 02184 ; expects EEPROM address in W 02185 ; returns EEPROM data in W 02186 ; makes sure previous write (if any) has completed before proceeding 02187 ;********************************************************************** 02E2 138B 02188 bcf INTCON, GIE ; disable INTs 02189 02E3 0023 02190 BANKSEL EECON1 02E4 1895 02191 btfsc EECON1,WR ;wait for WR to clear 02E5 2AE4 02192 goto $-1 02193 02E6 1115 02194 bcf EECON1,WREN ;disable writes MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02E7 0023 02195 BANKSEL EEADR 02E8 0091 02196 movwf EEADR ;EEADR = W 02E9 0023 02197 BANKSEL EECON1 02EA 1395 02198 bcf EECON1,7 ;clear EEPGD 02EB 1415 02199 bsf EECON1,RD ;initiate a read cycle 02EC 0023 02200 BANKSEL EEDAT 02ED 0813 02201 movf EEDAT,w ;W = EEDAT 02202 02EE 0020 02203 BANKSEL INTCON 02EF 178B 02204 bsf INTCON, GIE ; enable INT 02F0 0008 02205 return 02206 #endif 02207 02208 ;********************************************************************** 02F1 02209 read_demo_mode 02210 ;********************************************************************** 02211 #ifndef NOEEPROM 02F1 3084 02212 movlw LOW demo_store 02F2 22E2 02213 call read_eeprom 02214 #else 02215 movlw 0x00 02216 #endif 02F3 00DD 02217 movwf demo_mode 02F4 0008 02218 return 02219 02220 ;********************************************************************** 02F5 02221 toggle_demo 02222 ;********************************************************************** 02F5 22F1 02223 call read_demo_mode 02224 #ifndef NOEEPROM 02F6 1C5D 02225 btfss demo_mode,0 ; 02F7 2AFA 02226 goto tdemo_on 02227 02228 ; toggle off 02F8 105D 02229 bcf demo_mode,0 02F9 2AFB 02230 goto tdemo_cont 02231 02FA 02232 tdemo_on 02FA 145D 02233 bsf demo_mode,0 02234 02FB 02235 tdemo_cont 02FB 3084 02236 movlw LOW demo_store 02FC 00FE 02237 movwf pindex 02FD 085D 02238 movfw demo_mode 02FE 00FC 02239 movwf input 02FF 22CF 02240 call write_eeprom 02241 0300 2289 02242 call display_pattern_id 0301 2289 02243 call display_pattern_id 02244 #endif 0302 0008 02245 return 02246 02247 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02248 ;********************************************************************** 0303 02249 pattern_driver 02250 ;********************************************************************** 02251 02252 var pattern 00000056 M pattern equ mem 00000057 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02253 var tbltype 00000057 M tbltype equ mem 00000058 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02254 var in0 00000058 M in0 equ mem 00000059 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02255 var in1 00000059 M in1 equ mem 0000005A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02256 var in2 0000005A M in2 equ mem 0000005B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02257 #ifdef C12 02258 var in3 02259 var in4 02260 var in5 02261 #endif 02262 #ifdef C19 02263 var in3 02264 var in4 02265 var in5 02266 var in6 02267 var in7 02268 var in8 02269 var in9 02270 #endif 02271 #ifdef SRGB 02272 var in3 02273 var in4 02274 var in5 02275 var in6 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02276 var in7 02277 var in8 02278 var in9 02279 var in10 02280 var in11 02281 var in12 02282 #endif 02283 #ifdef BADGE 02284 var in3 02285 #endif 02286 #ifdef M8X16 02287 var in3 02288 var in4 02289 var in5 02290 var in6 02291 var in7 02292 var in8 02293 var in9 02294 var ina 02295 var inb 02296 var inc 02297 var ind 02298 var ine 02299 var inf 02300 var in10 02301 var in11 02302 var in12 02303 var in13 02304 var in14 02305 var in15 02306 var in16 02307 var in17 02308 var in18 02309 var in19 02310 var in1a 02311 var in1b 02312 var in1c 02313 var in1d 02314 var in1e 02315 var in1f 02316 #endif 02317 var speed 0000005B M speed equ mem 0000005C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02318 var pspeed 0000005C M pspeed equ mem 0000005D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02319 var demo_mode 0000005D M demo_mode equ mem 0000005E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02320 var psize 0000005E M psize equ mem 0000005F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02321 02322 ; need to be able to access from page1 & page2 for eeprom read/write 02323 var_all_bank pindex ; pattern index 0000007E M pindex equ mem2 0000007D M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02324 var_all_bank pindex1 ; pattern index 0000007D M pindex1 equ mem2 0000007C M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02325 var_all_bank input 0000007C M input equ mem2 0000007B M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02326 0303 02327 ptop 02328 0303 229C 02329 call setup_pattern_table 02330 0304 01FE 02331 clrf pindex 0305 01FD 02332 clrf pindex1 02333 02334 ; load the table type (Currently only 1 type) 0306 22B1 02335 call get_next_pattern_entry 0307 00D7 02336 movwf tbltype 0308 13D7 02337 bcf tbltype,7 ; using top bit for demo mode. 02338 02339 ; load the speed (someday this will be a table type 1 only thing.) 0309 22B1 02340 call get_next_pattern_entry 030A 00DC 02341 movwf pspeed 030B 0ADC 02342 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 02343 02344 ; load the table size 030C 22B1 02345 call get_next_pattern_entry ;4rgb 030D 00DE 02346 movwf psize ;4rgb 02347 030E 02348 ploop0 02349 ; MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02350 ; Check for IR command in 02351 ; 030E 1C3C 02352 btfss IR_in_good,0 030F 2B2C 02353 goto button_check 02354 0310 02355 blinkie_check 0310 3007 02356 movlw 0x07 ; blinkines use address 0x07 (Experimental) 0311 0236 02357 subwf address,w 0312 1D03 02358 btfss STATUS,Z 0313 2B17 02359 goto remote_check 02360 0314 2275 02361 call set_pattern 0315 01BC 02362 clrf IR_in_good 0316 2B03 02363 goto ptop 02364 0317 02365 remote_check 0317 08B6 02366 movf address,f ; remote giving "0" for address (TV)? 0318 1D03 02367 btfss STATUS,Z 0319 2B2C 02368 goto button_check 02369 031A 3020 02370 movlw 0x20 ; remote curser right (pattern ++) 031B 0235 02371 subwf command,w 031C 1903 02372 btfsc STATUS,Z 031D 2260 02373 call next_pattern 02374 031E 3021 02375 movlw 0x21 ; remote curser left (pattern --) 031F 0235 02376 subwf command,w 0320 1903 02377 btfsc STATUS,Z 0321 226A 02378 call past_pattern 02379 0322 3000 02380 movlw 0x00 ; remote "0" key (pattern = 0) 0323 0235 02381 subwf command,w 0324 1903 02382 btfsc STATUS,Z 0325 01D6 02383 clrf pattern 02384 0326 300C 02385 movlw 0x0c ; remote on/off key (togle demo mode!) 0327 0235 02386 subwf command,w 0328 1903 02387 btfsc STATUS,Z 0329 22F5 02388 call toggle_demo 02389 032A 01BC 02390 clrf IR_in_good 032B 2B03 02391 goto ptop 02392 032C 02393 button_check 02394 ; ploop1 02395 032C 0839 02396 movfw button ; if any putton pressed show pattern id 032D 1903 02397 btfsc STATUS,Z 032E 2B3E 02398 goto ploop2 02399 032F 2289 02400 call display_pattern_id 0330 2289 02401 call display_pattern_id 02402 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0331 02403 ploop1a 02404 02405 #ifdef M3X3 02406 movlw 0x03 ; if button 3 & 4 presses 02407 subwf button,w 02408 btfsc STATUS,Z 02409 goto mode_loop 02410 02411 movlw 0x0C ; if button 1 & 2 presses 02412 subwf button,w 02413 btfsc STATUS,Z 02414 call toggle_demo 02415 02416 #endif 02417 02418 #ifdef M8X16 02419 movlw 0x03 ; if both buttons pressed 02420 subwf button,w 02421 btfsc STATUS,Z 02422 call toggle_demo 02423 #endif 02424 #ifdef C12 02425 movlw 0x03 ; if both buttons pressed 02426 subwf button,w 02427 btfsc STATUS,Z 02428 call toggle_demo 02429 #endif 02430 02431 0331 1839 02432 btfsc button,0 ; if button 3 pressed inc pattern 0332 2B36 02433 goto ploop1up 02434 0333 18B9 02435 btfsc button,1 ; if button 4 pressed dec pattern 0334 2B3A 02436 goto ploop1down 02437 0335 2B03 02438 goto ptop 02439 0336 02440 ploop1up 0336 2260 02441 call next_pattern 0337 2289 02442 call display_pattern_id 0338 2289 02443 call display_pattern_id 0339 2B31 02444 goto ploop1a 02445 033A 02446 ploop1down 033A 226A 02447 call past_pattern 033B 2289 02448 call display_pattern_id 033C 2289 02449 call display_pattern_id 033D 2B31 02450 goto ploop1a 033E 02451 ploop2 02452 02453 #ifdef PATTERN1 033E 3001 02454 movlw 0x01 ; pattern1 033F 0257 02455 subwf tbltype,w MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0340 1903 02456 btfsc STATUS,Z 0341 2354 02457 call table_type_1 02458 #endif 02459 02460 #ifdef PATTERN2 02461 movlw 0x02 ; pattern2 02462 subwf tbltype,w 02463 btfsc STATUS,Z 02464 call table_type_2 02465 #endif 02466 02467 #ifdef PATTERN3 0342 3003 02468 movlw 0x03 ; pattern3 0343 0257 02469 subwf tbltype,w 0344 1903 02470 btfsc STATUS,Z 0345 235E 02471 call table_type_3 02472 #endif 02473 02474 #ifdef PATTERN4 02475 movlw 0x04 ; pattern4 02476 subwf tbltype,w 02477 btfsc STATUS,Z 02478 call table_type_4 02479 #endif 02480 02481 #ifdef PATTERN5 02482 movlw 0x05 ; pattern5 02483 subwf tbltype,w 02484 btfsc STATUS,Z 02485 call table_type_5 02486 #endif 02487 02488 #ifdef PATTERN6 02489 movlw 0x06 ; pattern6 02490 subwf tbltype,w 02491 btfsc STATUS,Z 02492 call table_type_6 02493 #endif 02494 02495 #ifdef PATTERN7 02496 movlw 0x07 ; pattern7 02497 subwf tbltype,w 02498 btfsc STATUS,Z 02499 call table_type_7 02500 #endif 02501 02502 #ifdef PATTERN8 02503 movlw 0x08 ; pattern8 02504 subwf tbltype,w 02505 btfsc STATUS,Z 02506 call table_type_8 02507 #endif 02508 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02509 #ifdef PATTERN9 02510 movlw 0x09 ; pattern9 02511 subwf tbltype,w 02512 btfsc STATUS,Z 02513 call table_type_9 02514 #endif 02515 02516 #ifdef PATTERN10 02517 movlw 0x0A ; pattern10 02518 subwf tbltype,w 02519 btfsc STATUS,Z 02520 call table_type_10 02521 #endif 02522 02523 #ifdef PATTERN11 02524 movlw 0x0B ; pattern11 02525 subwf tbltype,w 02526 btfsc STATUS,Z 02527 call table_type_11 02528 #endif 02529 02530 #ifdef PATTERN12 02531 movlw 0x0C ; pattern12 02532 subwf tbltype,w 02533 btfsc STATUS,Z 02534 call table_type_12 02535 #endif 02536 02537 #ifdef PATTERN13 02538 movlw 0x0D ; pattern13 02539 subwf tbltype,w 02540 btfsc STATUS,Z 02541 call table_type_13 02542 #endif 02543 02544 #ifdef PATTERN14 02545 movlw 0x0E ; pattern14 02546 subwf tbltype,w 02547 btfsc STATUS,Z 02548 call table_type_14 02549 #endif 02550 02551 #ifdef PATTERN15 02552 movlw 0x0F ; pattern15 02553 subwf tbltype,w 02554 btfsc STATUS,Z 02555 call table_type_15 02556 #endif 02557 02558 #ifdef PATTERN16 02559 movlw 0x10 ; pattern16 02560 subwf tbltype,w 02561 MOVLP high table_type_16 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02562 btfsc STATUS,Z 02563 call table_type_16 02564 MOVLP high pattern_driver 02565 #endif 02566 02567 #ifdef PATTERN17 02568 movlw 0x11 ; pattern17 02569 subwf tbltype,w 02570 btfsc STATUS,Z 02571 call table_type_17 02572 #endif 02573 02574 #ifdef PATTERN18 02575 movlw 0x12 ; pattern18 02576 subwf tbltype,w 02577 MOVLP high table_type_18 02578 btfsc STATUS,Z 02579 call table_type_18 02580 MOVLP high pattern_driver 02581 #endif 02582 02583 #ifdef PATTERN19 02584 movlw 0x13 ; pattern19 02585 subwf tbltype,w 02586 MOVLP high table_type_19 02587 btfsc STATUS,Z 02588 call table_type_19 02589 MOVLP high pattern_driver 02590 #endif 02591 02592 #ifdef PATTERN20 02593 movlw 0x14 ; pattern20 02594 subwf tbltype,w 02595 MOVLP high table_type_20 02596 btfsc STATUS,Z 02597 call table_type_20 02598 MOVLP high pattern_driver 02599 #endif 02600 02601 #ifdef PATTERN21 02602 movlw 0x15 ; pattern21 02603 subwf tbltype,w 02604 MOVLP high table_type_21 02605 btfsc STATUS,Z 02606 call table_type_21 02607 MOVLP high pattern_driver 02608 #endif 02609 02610 #ifdef PATTERN22 02611 movlw 0x16 ; pattern22 02612 subwf tbltype,w 02613 PAGESEL table_type_22 02614 btfsc STATUS,Z MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02615 call table_type_22 02616 PAGESEL pattern_driver 02617 #endif 02618 02619 #ifdef PATTERN23 02620 movlw 0x17 ; pattern23 02621 subwf tbltype,w 02622 PAGESEL table_type_23 02623 btfsc STATUS,Z 02624 call table_type_23 02625 PAGESEL pattern_driver 02626 #endif 02627 02628 #ifdef PATTERN24 02629 movlw 0x18 ; pattern24 02630 subwf tbltype,w 02631 PAGESEL table_type_24 02632 btfsc STATUS,Z 02633 call table_type_24 02634 PAGESEL pattern_driver 02635 #endif 02636 02637 #ifdef PATTERN25 02638 movlw 0x19 ; pattern25 02639 subwf tbltype,w 02640 PAGESEL table_type_25 02641 btfsc STATUS,Z 02642 call table_type_25 02643 PAGESEL pattern_driver 02644 #endif 02645 02646 #ifdef PATTERN26 02647 movlw 0x1a ; pattern26 02648 subwf tbltype,w 02649 PAGESEL table_type_26 02650 btfsc STATUS,Z 02651 goto table_type_26 ; to save stack we use "goto" to pattern_return 02652 PAGESEL pattern_driver 02653 #endif 02654 02655 #ifdef PATTERN27 02656 movlw 0x1b ; pattern27 02657 subwf tbltype,w 02658 PAGESEL table_type_27 02659 btfsc STATUS,Z 02660 goto table_type_27 ; to save stack we use "goto" to pattern_return 02661 PAGESEL pattern_driver 02662 #endif 02663 02664 #ifdef PATTERN28 02665 movlw 0x1c ; pattern28 02666 subwf tbltype,w 02667 btfsc STATUS,Z MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02668 call table_type_28 02669 #endif 02670 0346 02671 pattern_return 02672 02673 ; make sure we are not sending a IR signel 0346 0849 02674 movf scount,w ; F22 0347 3E00 02675 addlw 0 ; F23 0348 1D03 02676 btfss STATUS,Z ; F24 0349 2B51 02677 goto ploop3 02678 02679 ; count down till net IR signel 034A 1CA0 02680 btfss nextf,1 034B 2B51 02681 goto ploop3 02682 034C 10A0 02683 bcf nextf,1 034D 1C5D 02684 btfss demo_mode,0 034E 2B51 02685 goto ploop2a 02686 034F 2260 02687 call next_pattern 0350 2B03 02688 goto ptop 02689 0351 02690 ploop2a 02691 ; send an IR signel 02692 #ifdef ENABLE_IR 02693 movlw 0x07 ; address 0x07 "Experimental" 02694 movwf out_address 02695 movfw out_pattern 02696 movwf out_command ; copy out_pettern 02697 02698 call rf_command_out 02699 #endif 02700 0351 02701 ploop3 0351 0BDE 02702 decfsz psize,f ;check for end of pattern (4rgb) 0352 2B0E 02703 goto ploop0 02704 0353 2B03 02705 goto ptop 02706 02707 02708 #ifdef PATTERN1 02709 #include pattern_01.asm 00001 ;********************************************************************** 00002 ; Copyright (C) 2005,2006,2007 Dwayne Forsyth 00003 ; 00004 ; This program is free software; you can redistribute it and/or 00005 ; modify it under the terms of the GNU General Public License 00006 ; as published by the Free Software Foundation; either version 2 00007 ; of the License, or (at your option) any later version. 00008 ; 00009 ; This program is distributed in the hope that it will be useful, 00010 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 0354 00024 table_type_1 00025 ;********************************************************************** 00026 ; 76543210 <-- bits 00027 ; AABBCCDD <-- LEDs 00028 ; 01010101 <-- stays on for 1 unit - b'01' 00029 ; 10101010 <-- stays on for 2 units - b'10' 00030 ; 11111111 <-- stays on for 3 units - b'11' 00031 00032 ; in0 red 00033 ; in1 green 00034 ; in2 blu 00035 0354 22B1 00036 call get_next_pattern_entry 0355 00D8 00037 movwf in0 00038 0356 22B1 00039 call get_next_pattern_entry 0357 00D9 00040 movwf in1 00041 0358 22B1 00042 call get_next_pattern_entry ;4rgb 0359 00DA 00043 movwf in2 ;4rgb 00044 035A 085C 00045 movf pspeed,w 035B 00DB 00046 movwf speed 035C 2395 00047 call display_2bit 00048 035D 0008 00049 return 00050 02710 #endif 02711 #ifdef PATTERN2 02712 #include pattern_02.asm 02713 #endif 02714 #ifdef PATTERN3 02715 #include pattern_03.asm 00001 ;********************************************************************** 00002 ; Copyright (C) 2005,2006,2007 Dwayne Forsyth 00003 ; 00004 ; This program is free software; you can redistribute it and/or 00005 ; modify it under the terms of the GNU General Public License 00006 ; as published by the Free Software Foundation; either version 2 00007 ; of the License, or (at your option) any later version. 00008 ; MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 035E 00024 table_type_3 00025 ;********************************************************************** 00026 ; 00027 ; 2 bytes 00028 ; 00029 ; RRRRGGGG BBBBCDDD 00030 ; 00031 ; RRRR = bit of red LEDs to turn on 00032 ; GGGG = bit of red LEDs to turn on 00033 ; BBBB = bit of red LEDs to turn on 00034 ; CDDD = a repeat counter. 00035 ; 00036 ; For badge blinkies 00037 ; C is 13th LED 00038 ; DDD = is repeat count 00039 00040 var p2count 0000005F M p2count equ mem 00000060 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00041 035E 22B1 00042 call get_next_pattern_entry 035F 00D8 00043 movwf in0 00044 0360 22B1 00045 call get_next_pattern_entry 0361 00D9 00046 movwf in1 00047 00048 #ifdef BADGE 00049 movlw b'00000111' 00050 #else 0362 300F 00051 movlw b'00001111' 00052 #endif 0363 0559 00053 andwf in1,w 0364 00DF 00054 movwf p2count 0365 0ADF 00055 incf p2count,f 0366 0DDF 00056 rlf p2count,f MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0367 0DDF 00057 rlf p2count,f 00058 0368 00059 p2loop 0368 085C 00060 movfw pspeed 0369 236D 00061 call display_1bit 00062 036A 0BDF 00063 decfsz p2count,f 036B 2B68 00064 goto p2loop 00065 036C 0008 00066 return 00067 00068 02716 #endif 02717 #ifdef PATTERN4 02718 #include pattern_04.asm 02719 #endif 02720 #ifdef PATTERN5 02721 #include pattern_05.asm 02722 #endif 02723 #ifdef PATTERN6 02724 #include pattern_06.asm 02725 #endif 02726 02727 #define BRIGHT1 0x40 02728 #define BRIGHT2 0xA0 02729 02730 #ifdef PATTERN7 02731 #include pattern_07.asm 02732 #endif 02733 #ifdef PATTERN19 02734 #include pattern_19.asm 02735 #endif 02736 #ifdef PATTERN8 02737 #include pattern_08.asm 02738 #endif 02739 #ifdef PATTERN9 02740 #include pattern_08.asm 02741 #endif 02742 #ifdef PATTERN10 02743 #include pattern_10.asm 02744 #endif 02745 #ifdef PATTERN11 02746 #include pattern_11.asm 02747 #endif 02748 02749 #ifdef RANDOM 02750 02751 ;********************************************************************** 02752 gen_random 02753 ;********************************************************************** 02754 02755 var random 02756 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02757 RLF random,W 02758 RLF random,W 02759 BTFSC random,4 02760 XORLW 1 02761 BTFSC random,5 02762 XORLW 1 02763 BTFSC random,3 02764 XORLW 1 02765 MOVWF random 02766 return 02767 #endif 02768 02769 #ifdef PATTERN12 02770 #include pattern_12.asm 02771 #endif 02772 #ifdef PATTERN13 02773 #include pattern_13.asm 02774 #endif 02775 #ifdef PATTERN14 02776 #include pattern_14.asm 02777 #endif 02778 #ifdef PATTERN15 02779 #include pattern_15.asm 02780 #endif 02781 #ifdef PATTERN17 02782 #include pattern_17.asm 02783 #endif 02784 #ifdef PATTERN22 02785 #include pattern_22.asm 02786 #endif 02787 #ifdef PATTERN23 02788 #include pattern_23.asm 02789 #endif 02790 02791 #ifdef M8X16 02792 ;********************************************************************** 02793 shift_left 02794 ;********************************************************************** 02795 ; 02796 ; shift the in1f->in1e->in1d->....->in1->in0 02797 ; 02798 02799 02800 movlw LOW in0 ; shift down in1f->in0 02801 movwf FSR0L 02802 movlw HIGH in0 02803 movwf FSR0H 02804 02805 movlw 0x1f 02806 movwf fcount1 02807 02808 t23_loop 02809 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02810 MOVIW INDF0++ ; inc INDFO (don't use W) 02811 MOVIW INDF0-- ; get W, dec INDF0 02812 MOVWI INDF0++ ; put W, inc INDF0 02813 02814 decfsz fcount1,f 02815 goto t23_loop 02816 02817 return 02818 #endif 02819 02820 #ifdef PATTERN24 02821 #include "pattern_24.asm" 02822 #endif 02823 #ifdef PATTERN25 02824 #include "pattern_25.asm" 02825 #endif 02826 #ifdef PATTERN26 02827 #include "pattern_26.asm" 02828 #endif 02829 #ifdef PATTERN28 02830 #include "pattern_28.asm" 02831 #endif 02832 02833 #ifdef DISPLAY_1BIT_A 02834 #include display_1bit_a.asm ; Mono 6 circle / mono badge / mono 6 dogtag 02835 #endif 02836 #ifdef DISPLAY_1BIT_B 02837 #include display_1bit_b.asm ; Bicolor 19 circle / mono 19 circle/ mono 19 circle 02838 #endif 02839 #ifdef DISPLAY_1BIT_C 02840 #include display_1bit_c.asm ; 4RGB / bicolor 6 circle / Bicolor Badge / bicolor 6 dogtag / 2RGB dogtag 00001 ;********************************************************************** 036D 00002 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 00003 ;********************************************************************** 00004 036D 00DB 00005 movwf speed ;w has the speed/delay 00006 036E 01A6 00007 clrf Ar_reg 036F 1BD8 00008 btfsc in0,7 0370 09A6 00009 comf Ar_reg,f 00010 0371 01A7 00011 clrf Ag_reg 0372 19D8 00012 btfsc in0,3 0373 09A7 00013 comf Ag_reg,f 00014 0374 01A8 00015 clrf Ab_reg 0375 1BD9 00016 btfsc in1,7 0376 09A8 00017 comf Ab_reg,f 00018 0377 01A9 00019 clrf Br_reg 0378 1B58 00020 btfsc in0,6 0379 09A9 00021 comf Br_reg,f 00022 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 037A 01AA 00023 clrf Bg_reg 037B 1958 00024 btfsc in0,2 037C 09AA 00025 comf Bg_reg,f 00026 037D 01AB 00027 clrf Bb_reg 037E 1B59 00028 btfsc in1,6 037F 09AB 00029 comf Bb_reg,f 00030 0380 01AC 00031 clrf Cr_reg 0381 1AD8 00032 btfsc in0,5 0382 09AC 00033 comf Cr_reg,f 00034 0383 01AD 00035 clrf Cg_reg 0384 18D8 00036 btfsc in0,1 0385 09AD 00037 comf Cg_reg,f 00038 0386 01AE 00039 clrf Cb_reg 0387 1AD9 00040 btfsc in1,5 0388 09AE 00041 comf Cb_reg,f 00042 0389 01AF 00043 clrf Dr_reg 038A 1A58 00044 btfsc in0,4 038B 09AF 00045 comf Dr_reg,f 00046 038C 01B0 00047 clrf Dg_reg 038D 1858 00048 btfsc in0,0 038E 09B0 00049 comf Dg_reg,f 00050 038F 01B1 00051 clrf Db_reg 0390 1A59 00052 btfsc in1,4 0391 09B1 00053 comf Db_reg,f 00054 00055 #ifdef BADGE 00056 clrf Center_reg 00057 btfsc in1,3 00058 comf Center_reg,f 00059 #endif 00060 0392 085B 00061 movf speed,w 0393 2282 00062 call strobe_delay 00063 0394 0008 00064 return 00065 02841 #endif 02842 #ifdef DISPLAY_1BIT_D 02843 #include display_1bit_d.asm ; mono 19 Stick 02844 #endif 02845 #ifdef DISPLAY_1BIT_GATOR 02846 #include display_1bit_gator.asm ; gator 02847 #endif 02848 #ifdef DISPLAY_1BIT_F 02849 #include display_1bit_f.asm ; bicolor 3x3 matrix / mono 3x3 matrix 02850 #endif MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02851 #ifdef DISPLAY_1BIT_G 02852 #include display_1bit_g.asm ; 16x8x2 matrix 02853 #endif 02854 #ifdef DISPLAY_1BIT_H 02855 #include display_1bit_h.asm ; bicolor & mono 12 LED circle / bicolor & mono 24 LED sphere 02856 #endif 02857 #ifdef DISPLAY_1BIT_I 02858 #include display_1bit_i.asm ; D10 02859 #endif 02860 02861 #ifdef DISPLAY_2BIT_A ; Mono 6 circle / mono badge / mono 6 dogtag 02862 #include display_2bit_a 02863 #endif 02864 02865 #ifdef DISPLAY_2BIT_C 02866 #include display_2bit_c ; 4RGB / D10 / bicolor 6 circle / Bicolor Badge / bicolor 6 dogtag 00001 ;********************************************************************** 0395 00002 display_2bit 00003 ;********************************************************************** 0395 085B 00004 movf speed,w ;enter here if repeat count is in speed 0396 00005 display_w_2bit ;enter here if repeat count is in W reg 00006 00007 ; 76543210 <-- bits 00008 ; AABBCCDD <-- LEDs 00009 ; 01010101 <-- stays on for 1 unit - b'01' 00010 ; 10101010 <-- stays on for 2 units - b'10' 00011 ; 11111111 <-- stays on for 3 units - b'11' 00012 00013 ; in0 red 00014 ; in1 green 00015 ; in2 blue 00016 0396 01A6 00017 clrf Ar_reg 0397 3040 00018 movlw BRIGHT1 0398 1B58 00019 btfsc in0,6 0399 07A6 00020 addwf Ar_reg,f 039A 30A0 00021 movlw BRIGHT2 039B 1BD8 00022 btfsc in0,7 039C 07A6 00023 addwf Ar_reg,f 00024 039D 01A7 00025 clrf Ag_reg 039E 3040 00026 movlw BRIGHT1 039F 1B59 00027 btfsc in1,6 03A0 07A7 00028 addwf Ag_reg,f 03A1 30A0 00029 movlw BRIGHT2 03A2 1BD9 00030 btfsc in1,7 03A3 07A7 00031 addwf Ag_reg,f 00032 03A4 01A8 00033 clrf Ab_reg 03A5 3040 00034 movlw BRIGHT1 03A6 1B5A 00035 btfsc in2,6 03A7 07A8 00036 addwf Ab_reg,f 03A8 30A0 00037 movlw BRIGHT2 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03A9 1BDA 00038 btfsc in2,7 03AA 07A8 00039 addwf Ab_reg,f 00040 03AB 01A9 00041 clrf Br_reg 03AC 3040 00042 movlw BRIGHT1 03AD 1A58 00043 btfsc in0,4 03AE 07A9 00044 addwf Br_reg,f 03AF 30A0 00045 movlw BRIGHT2 03B0 1AD8 00046 btfsc in0,5 03B1 07A9 00047 addwf Br_reg,f 00048 03B2 01AA 00049 clrf Bg_reg 03B3 3040 00050 movlw BRIGHT1 03B4 1A59 00051 btfsc in1,4 03B5 07AA 00052 addwf Bg_reg,f 03B6 30A0 00053 movlw BRIGHT2 03B7 1AD9 00054 btfsc in1,5 03B8 07AA 00055 addwf Bg_reg,f 00056 03B9 01AB 00057 clrf Bb_reg 03BA 3040 00058 movlw BRIGHT1 03BB 1A5A 00059 btfsc in2,4 03BC 07AB 00060 addwf Bb_reg,f 03BD 30A0 00061 movlw BRIGHT2 03BE 1ADA 00062 btfsc in2,5 03BF 07AB 00063 addwf Bb_reg,f 00064 03C0 01AC 00065 clrf Cr_reg 03C1 3040 00066 movlw BRIGHT1 03C2 1958 00067 btfsc in0,2 03C3 07AC 00068 addwf Cr_reg,f 03C4 30A0 00069 movlw BRIGHT2 03C5 19D8 00070 btfsc in0,3 03C6 07AC 00071 addwf Cr_reg,f 00072 03C7 01AD 00073 clrf Cg_reg 03C8 3040 00074 movlw BRIGHT1 03C9 1959 00075 btfsc in1,2 03CA 07AD 00076 addwf Cg_reg,f 03CB 30A0 00077 movlw BRIGHT2 03CC 19D9 00078 btfsc in1,3 03CD 07AD 00079 addwf Cg_reg,f 00080 03CE 01AE 00081 clrf Cb_reg 03CF 3040 00082 movlw BRIGHT1 03D0 195A 00083 btfsc in2,2 03D1 07AE 00084 addwf Cb_reg,f 03D2 30A0 00085 movlw BRIGHT2 03D3 19DA 00086 btfsc in2,3 03D4 07AE 00087 addwf Cb_reg,f 00088 03D5 01AF 00089 clrf Dr_reg 03D6 3040 00090 movlw BRIGHT1 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03D7 1858 00091 btfsc in0,0 03D8 07AF 00092 addwf Dr_reg,f 03D9 30A0 00093 movlw BRIGHT2 03DA 18D8 00094 btfsc in0,1 03DB 07AF 00095 addwf Dr_reg,f 00096 03DC 01B0 00097 clrf Dg_reg 03DD 3040 00098 movlw BRIGHT1 03DE 1859 00099 btfsc in1,0 03DF 07B0 00100 addwf Dg_reg,f 03E0 30A0 00101 movlw BRIGHT2 03E1 18D9 00102 btfsc in1,1 03E2 07B0 00103 addwf Dg_reg,f 00104 03E3 01B1 00105 clrf Db_reg 03E4 3040 00106 movlw BRIGHT1 03E5 185A 00107 btfsc in2,0 03E6 07B1 00108 addwf Db_reg,f 03E7 30A0 00109 movlw BRIGHT2 03E8 18DA 00110 btfsc in2,1 03E9 07B1 00111 addwf Db_reg,f 00112 00113 #ifdef BADGE 00114 clrf Center_reg 00115 movlw BRIGHT1 00116 btfsc in3,6 00117 addwf Center_reg,f 00118 movlw BRIGHT2 00119 btfsc in3,7 00120 addwf Center_reg,f 00121 #endif 00122 03EA 085B 00123 movf speed,w 03EB 2282 00124 call strobe_delay 03EC 085B 00125 movf speed,w 03ED 2282 00126 call strobe_delay 03EE 085B 00127 movf speed,w 03EF 2282 00128 call strobe_delay 00129 03F0 0008 00130 return 00131 02867 #endif 02868 02869 #define BRIGHT1H 0xA0 02870 #define BRIGHT2H 0x40 02871 02872 #ifdef DISPLAY_2BIT_D 02873 #include display_2bit_d ; mono 19 Stick 02874 #endif 02875 02876 #ifdef DISPLAY_2BIT_E 02877 #include display_2bit_e ; mono 19 circle 02878 #endif MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02879 02880 #ifdef DISPLAY_1BIT_E 02881 #include display_1bit_e ; RGB Stick Anode / cathode 02882 #endif 02883 02884 ;********************************************************************** 02885 ; IR Tester 02886 ;********************************************************************** 03F1 02887 IR_Tester 03F1 3000 02888 movlw b'00000000' ; Red Eye! 03F2 00D8 02889 movwf in0 03F3 3000 02890 movlw b'00000000' 03F4 00D9 02891 movwf in1 03F5 3080 02892 movlw b'10000000' 03F6 00DA 02893 movwf in2 02894 03F7 30FF 02895 movlw 0xff 03F8 236D 02896 call display_1bit 02897 03F9 3000 02898 movlw b'00000000' 03FA 00DA 02899 movwf in2 02900 03FB 30FF 02901 movlw 0xff 03FC 236D 02902 call display_1bit 02903 03FD 3080 02904 movlw b'10000000' 03FE 00DA 02905 movwf in2 02906 03FF 30FF 02907 movlw 0xff 0400 236D 02908 call display_1bit 02909 0401 3000 02910 movlw b'00000000' 0402 00DA 02911 movwf in2 02912 0403 30FF 02913 movlw 0xff 0404 236D 02914 call display_1bit 02915 0405 3080 02916 movlw b'10000000' 0406 00DA 02917 movwf in2 02918 0407 30FF 02919 movlw 0xff 0408 236D 02920 call display_1bit 02921 02922 0409 02923 itop 0409 3002 02924 movlw 0x02 040A 0232 02925 subwf instate,w 040B 1C03 02926 btfss STATUS,C 040C 0103 02927 clrw 040D 00D8 02928 movwf in0 02929 040E 3000 02930 movlw 0x00 040F 00D9 02931 movwf in1 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02932 0410 3001 02933 movlw 0x01 0411 236D 02934 call display_1bit 02935 02936 ; 02937 ; Check for push button 02938 ; 0412 02939 ibutton 0412 0839 02940 movf button,w 0413 1903 02941 btfsc STATUS,Z 0414 2C25 02942 goto iloop1 0415 01B3 02943 clrf max_instate 0416 01B2 02944 clrf instate 02945 0417 0849 02946 movf scount,w ; if sending an IR command ignore button 0418 3E00 02947 addlw 0 ; not sure if needed 0419 1D03 02948 btfss STATUS,Z 041A 2C12 02949 goto ibutton 02950 041B 0839 02951 movf button,w ; 2st 8 bits are the buttons 041C 00D9 02952 movwf in1 041D 01D8 02953 clrf in0 ; next 8 are zero 02954 ; movlw 0x80 02955 ; movwf in2 ; led 17 is on 02956 02957 #ifdef M8X16 02958 movfw button 02959 movwf in3 02960 #endif 02961 041E 3001 02962 movlw 0x01 041F 236D 02963 call display_1bit 02964 02965 ; send an IR signel 0420 01C1 02966 clrf out_address ; address 0x00 "TV remote" 02967 02968 #ifdef M3X3 02969 02970 movlw 0x03 ; if button 3 & 4 presses 02971 subwf button,w 02972 btfsc STATUS,Z 02973 goto mode_loop 02974 02975 btfsc button,0 ; if button 3 pressed 02976 goto send_chan_up 02977 02978 btfsc button,1 ; if button 4 pressed 02979 goto send_chan_down 02980 02981 btfsc button,2 ; if button 1 pressed 02982 goto send_vol_up 02983 02984 btfsc button,3 ; if button 2 pressed MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02985 goto send_vol_down 02986 02987 btfsc button,4 ; if button 5 pressed 02988 goto send_on_off 02989 02990 send_chan_up 02991 movlw 0x20 02992 movwf out_command ; code 0x0c (on/off) 02993 call rf_command_out 02994 goto ibutton 02995 02996 send_chan_down 02997 movlw 0x21 02998 movwf out_command ; code 0x0c (on/off) 02999 call rf_command_out 03000 goto ibutton 03001 03002 send_vol_up 03003 movlw 0x10 03004 movwf out_command ; code 0x0c (on/off) 03005 call rf_command_out 03006 goto ibutton 03007 03008 send_vol_down 03009 movlw 0x11 03010 movwf out_command ; code 0x0c (on/off) 03011 call rf_command_out 03012 goto ibutton 03013 03014 #endif 03015 0421 03016 send_on_off 0421 300C 03017 movlw 0x0c 0422 00C2 03018 movwf out_command ; code 0x0c (on/off) 0423 2214 03019 call rf_command_out 0424 2C12 03020 goto ibutton 03021 03022 03023 ; 03024 ; Check for IR Command 03025 ; 0425 03026 iloop1 0425 1C3C 03027 btfss IR_in_good,0 0426 2C09 03028 goto itop 0427 01BC 03029 clrf IR_in_good 03030 03031 ; flash all LEDs Red 0428 30F0 03032 movlw 0xF0 0429 00D8 03033 movwf in0 042A 01D9 03034 clrf in1 03035 042B 307F 03036 movlw 0x7f 042C 236D 03037 call display_1bit MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03038 03039 ; flash all LEDs off 042D 01D8 03040 clrf in0 042E 01D9 03041 clrf in1 03042 042F 303F 03043 movlw 0x3f 0430 236D 03044 call display_1bit 03045 03046 ; flash all LEDs Red 0431 30F0 03047 movlw 0xF0 0432 00D8 03048 movwf in0 0433 01D9 03049 clrf in1 03050 0434 307F 03051 movlw 0x7f 0435 236D 03052 call display_1bit 03053 03054 ; display command and address 0436 0835 03055 movf command,w 0437 00D8 03056 movwf in0 0438 0836 03057 movf address,w 0439 00D9 03058 movwf in1 03059 043A 30FF 03060 movlw 0xff 043B 236D 03061 call display_1bit 043C 30FF 03062 movlw 0xff 043D 236D 03063 call display_1bit 043E 01B3 03064 clrf max_instate 043F 01B2 03065 clrf instate 03066 0440 2C09 03067 goto itop 03068 03069 #ifdef M3X3 03070 #include m3x3_dice.asm 03071 #endif 03072 03073 ; 03074 ; M A I N 03075 ; 03076 ;********************************************************************** 0441 03077 main 03078 ;********************************************************************** 0441 018C 03079 clrf PORTA 0442 0195 03080 clrf TMR0 0443 01D6 03081 clrf pattern 03082 ; movlw 0x05 03083 ; movwf pattern 0444 01C9 03084 clrf scount 0445 01B7 03085 clrf toggle 0446 01B6 03086 clrf address 0447 01B5 03087 clrf command 0448 01B8 03088 clrf IR_lhalf 0449 01B2 03089 clrf instate 044A 01B3 03090 clrf max_instate MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE 044B 01BC 03091 clrf IR_in_good 044C 01A1 03092 clrf dcycle 044D 01A2 03093 clrf count1 044E 01A3 03094 clrf count2 044F 01B9 03095 clrf button 03096 #ifdef PATTERN2 03097 clrf delay1 03098 clrf fad 03099 clrf color 03100 #endif 03101 #ifndef C12 03102 #ifndef C19 03103 #ifndef M3X3 03104 #ifdef MONO 0450 01A9 03105 clrf Br_reg 0451 01AA 03106 clrf Bg_reg 0452 01AB 03107 clrf Bb_reg 0453 01AF 03108 clrf Dr_reg 0454 01B0 03109 clrf Dg_reg 0455 01B1 03110 clrf Db_reg 03111 #endif 03112 #endif 03113 #endif 03114 #endif 03115 0456 0021 03116 BANKSEL OSCCON 03117 03118 #ifdef __16F1938 03119 ; +------------- PLL enable (1) 03120 ; |++++--------- 8MHZ/32MHZ (1110) 03121 ; ||||| ++------ Internal OSC (1x) 03122 ; ||||| || 03123 movlw b'01110000' ;switch to 32 MHz clock, PLL is set on in config1, bit 7 ignored. 03124 #else 03125 #ifdef __16F1936 03126 03127 ; +------------- PPL disable (0) 03128 ; |++++--------- OSC 8MHZ (1110) 03129 ; ||||| ++------ System Clock Internal (1x) 03130 ; ||||| || 03131 movlw b'01110010' ;switch to 8 MHz clock 03132 #else 0457 3072 03133 movlw b'01110010' ;switch to 8 MHz clock 03134 #endif 03135 #endif 03136 0458 0099 03137 movwf OSCCON 03138 03139 #ifdef __12F1822 0459 0023 03140 BANKSEL ANSELA 045A 018C 03141 clrf ANSELA ;set pins to digital 03142 03143 #else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03144 #ifdef __16F1938 03145 BANKSEL ANSELA 03146 clrf ANSELA ;set pins to digital 03147 BANKSEL LATA 03148 clrf LATA 03149 03150 BANKSEL LATB 03151 clrf LATB 03152 BANKSEL ANSELB 03153 clrf ANSELB 03154 03155 BANKSEL LATC 03156 clrf LATC 03157 #else 03158 #ifdef __16F1936 03159 BANKSEL ANSELA 03160 clrf ANSELA ;set pins to digital 03161 BANKSEL LATA 03162 clrf LATA 03163 03164 BANKSEL LATB 03165 clrf LATB 03166 BANKSEL ANSELB 03167 clrf ANSELB 03168 #else 03169 BANKSEL ANSEL 03170 clrf ANSEL ;set pins to digital 03171 #endif 03172 #endif 03173 03174 #endif 03175 03176 045B 0021 03177 BANKSEL OPTION_REG 03178 03179 ; set up TMR0 & pullups 03180 ; +---------- disable pullups (1) 03181 ; |+--------- interrupt edge select (don't care) 03182 ; ||+-------- TMR0 source = internal clock (0) 03183 ; |||+------- TMR0 source edge select (don't care) 03184 ; ||||+------ assign prescaler to TMR0 (0) 03185 ; |||||+++--- prescaler set to 8X (010) 03186 ; |||||||| 045C 3082 03187 movlw b'10000010' 045D 0095 03188 movwf OPTION_REG 03189 03190 #ifdef C19 03191 ; enable pullups on portA 03192 bcf OPTION_REG,NOT_RAPU 03193 03194 ; input on A5 03195 clrf WPUA ; disable all pullups 03196 bsf WPUA,5 ; enable pullup A5 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03197 #endif 03198 03199 #ifdef RGB2_DOGTAG 03200 ; enable pullups on portA 03201 BANKSEL OPTION_REG 03202 bcf OPTION_REG,NOT_WPUEN 03203 03204 ; input on A3 03205 BANKSEL WPUA 03206 clrf WPUA ; disable all pullups 03207 bsf WPUA,3 ; enable pullup A3 03208 #endif 03209 03210 #ifdef BI6_DOGTAG 03211 ; enable pullups on portA 045E 0021 03212 BANKSEL OPTION_REG 045F 1395 03213 bcf OPTION_REG,NOT_WPUEN 03214 03215 ; input on A3 0460 0024 03216 BANKSEL WPUA 0461 018C 03217 clrf WPUA ; disable all pullups 0462 158C 03218 bsf WPUA,3 ; enable pullup A3 03219 #endif 03220 03221 #ifdef SRGB 03222 ; enable pullups on portA 03223 bcf OPTION_REG,NOT_RAPU 03224 03225 ; input on A5 03226 clrf WPUA ; disable all pullups 03227 bsf WPUA,5 ; enable pullup A5 03228 bsf WPUA,4 ; enable pullup A4 03229 #endif 03230 03231 #ifdef C12 03232 ; BANKSEL OPTION_REG 03233 ; bsf OPTION_REG, NOT_RBPU 03234 ; 03235 ; input C7,C5 buttons 03236 ; input C6 IR. 03237 BANKSEL TRISC 03238 movlw b'11100000' 03239 movwf TRISC ; C7,C6,C5 input 03240 #endif 03241 03242 #ifdef GATOR 03243 ; 03244 ; input A3 IR. 03245 BANKSEL TRISA 03246 movlw b'00001000' 03247 movwf TRISA ; A3 Input 03248 #endif 03249 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03250 #ifdef M8X16 03251 ; E1 - IR/Button 03252 ; C2 - Button2 03253 ; C1 - IR out 03254 ; C3/C4 - I2C 03255 ; C0,C5,C6,C7 - strobe select output 03256 BANKSEL TRISC 03257 movlw b'00011100' 03258 movwf TRISC ; C7,C6,C5,C1,C0 output 03259 clrf TRISA ; all A output 03260 clrf TRISB ; all B output 03261 movlw b'00001000' 03262 movwf TRISE ; E3 input 03263 #endif 03264 03265 #ifdef D10 03266 ; A0,A1,A2,A4 - LEDs 03267 ; A3,A5 Push Button 03268 BANKSEL TRISA 03269 movlw b'00101000' 03270 movwf TRISA 03271 03272 ; enable pullups on portA 03273 BANKSEL OPTION_REG 03274 bcf OPTION_REG,NOT_RAPU 03275 03276 ; input on A5 03277 BANKSEL WPUA 03278 clrf WPUA ; disable all pullups 03279 bsf WPUA,5 ; enable pullup A5 03280 bsf WPUA,3 ; enable pullup A3 03281 03282 BANKSEL CMCON0 03283 movlw 0x07 03284 movwf CMCON0 03285 03286 BANKSEL ANSEL 03287 clrf ANSEL ;set pins to digital 03288 #endif 03289 03290 0463 0020 03291 BANKSEL button 0464 01B9 03292 clrf button 03293 03294 #ifdef RANDOM 03295 movlw 0x1D 03296 movwf random 03297 #endif 03298 03299 ; enable timer0 interupt 03300 #ifdef __16F1938 03301 bsf INTCON,TMR0IE 03302 #else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03303 #ifdef __16F1936 03304 bsf INTCON,TMR0IE 03305 #else 0465 168B 03306 bsf INTCON,T0IE 03307 #endif 03308 #endif 0466 178B 03309 bsf INTCON,GIE 03310 03311 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 03312 #ifdef M8X16 03313 #ifdef __16F1938 03314 movlw LOW in0 ; shift down in1f->in0 03315 movwf FSR0L 03316 movlw HIGH in0 03317 movwf FSR0H 03318 #else 03319 movlw in0 03320 movwf FSR 03321 #endif 03322 movlw 0x20 03323 movwf fcount1 03324 03325 movlw 0xFF 03326 loop_set_on 03327 movwf INDF0 03328 incf FSR0L,f 03329 03330 decfsz fcount1,f 03331 goto loop_set_on 03332 #else 0467 30FF 03333 movlw b'11111111' 03334 ; movlw b'01000000' 03335 0468 00D8 03336 movwf in0 0469 00D9 03337 movwf in1 046A 00DA 03338 movwf in2 03339 #ifdef C19 03340 movwf in3 03341 movwf in4 03342 #endif 03343 #ifdef SRGB 03344 movwf in3 03345 movwf in4 03346 movwf in5 03347 #endif 03348 #endif 03349 03350 #ifdef C12a ; going to flash the config1 value! 03351 movfw config1 03352 movwf fcount1 ; flash 1 - mono single, 2 - mono dual 3 - bi single or 4 - bi dual 03353 incf fcount1,f 03354 03355 flash_loop MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03356 movlw b'10101010' 03357 movwf in0 03358 movwf in1 03359 movwf in2 03360 movwf in3 03361 movwf in4 03362 03363 movlw 0xff 03364 call display_1bit 03365 movlw 0xff 03366 call display_1bit 03367 03368 movlw b'01010101' 03369 movwf in0 03370 movwf in1 03371 movwf in2 03372 movwf in3 03373 movwf in4 03374 03375 movlw 0xff 03376 call display_1bit 03377 movlw 0xff 03378 call display_1bit 03379 03380 decfsz fcount1,f 03381 goto flash_loop 03382 03383 movlw b'11111111' 03384 movwf in0 03385 movwf in1 03386 movwf in2 03387 movwf in3 03388 movwf in4 03389 03390 #endif 03391 03392 046B 30FF 03393 movlw 0xff ; allways flash once 046C 236D 03394 call display_1bit 046D 30FF 03395 movlw 0xff 046E 236D 03396 call display_1bit 03397 03398 #ifdef M3X3 ; have to wait for the IR to go high, and the buttons to de-bounce on 3x3 po werup 03399 movlw 0xff 03400 call display_1bit 03401 movlw 0xff 03402 call display_1bit 03403 #endif 03404 03405 03406 ; Trun all the LEDs off 03407 #ifdef M8X16 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03408 #ifdef __16F1938 03409 movlw LOW in0 ; shift down in1f->in0 03410 movwf FSR0L 03411 movlw HIGH in0 03412 movwf FSR0H 03413 #else 03414 movlw in0 03415 movwf FSR 03416 #endif 03417 movlw 0x20 03418 movwf fcount1 03419 03420 movlw 0x00 03421 loop_set_off 03422 movwf INDF0 03423 03424 incf FSR0L,f 03425 03426 decfsz fcount1,f 03427 goto loop_set_off 03428 #else 046F 01D8 03429 clrf in0 0470 01D9 03430 clrf in1 0471 01DA 03431 clrf in2 03432 #ifdef C19 03433 clrf in3 03434 clrf in4 03435 #endif 03436 #ifdef SRGB 03437 clrf in3 03438 clrf in4 03439 clrf in5 03440 #endif 03441 #endif 0472 30FF 03442 movlw 0xff 0473 236D 03443 call display_1bit 0474 30FF 03444 movlw 0xff 0475 236D 03445 call display_1bit 0476 30FF 03446 movlw 0xff 0477 236D 03447 call display_1bit 03448 0478 22F1 03449 call read_demo_mode 03450 0479 0839 03451 movfw button 047A 00D9 03452 movwf in1 047B 30FF 03453 movlw 0xff 047C 236D 03454 call display_1bit 047D 30FF 03455 movlw 0xff 047E 236D 03456 call display_1bit 03457 03458 03459 03460 #ifndef M3X3 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 107 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03461 ; if button pressed durring powerup run IR_Tester 03462 ; else run pattern driver 03463 ; 047F 1C39 03464 btfss button,0 0480 2B03 03465 goto pattern_driver 0481 22F5 03466 call toggle_demo 03467 #ifdef ENABLE_IR 03468 goto IR_Tester 03469 #else 0482 2B03 03470 goto pattern_driver 03471 #endif 03472 #else 03473 #inclue m3x3_menu.asm 03474 #endif 03475 03476 ;********************************************************************** 0483 03477 table_lookup 03478 ;********************************************************************** 0483 0851 03479 movf tbl_hi,w 0484 008A 03480 movwf PCLATH 0485 087E 03481 movf pindex,w 0486 0752 03482 addwf tbl_low,w 0487 1803 03483 btfsc STATUS,0 ; check carry flag 0488 0A8A 03484 incf PCLATH,f 0489 0082 03485 movwf PCL 03486 03487 ;********************************************************************** 048A 03488 jump_address 03489 ;********************************************************************** 03490 ; Portability : clean 03491 ; 03492 var offset_hi 00000060 M offset_hi equ mem 00000061 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03493 var offset_low 00000061 M offset_low equ mem 00000062 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03494 048A 080A 03495 movf PCLATH,w 048B 00D4 03496 movwf pclath_save 048C 0860 03497 movf offset_hi,w 048D 008A 03498 movwf PCLATH 03499 048E 0861 03500 movf offset_low, w 048F 0082 03501 movwf PCL 03502 03503 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03504 ;********************************************************************** 0490 03505 MasterTable 03506 ;********************************************************************** 03507 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 0490 3484 34AE M dt HIGH table0, LOW table0 00000001 M i += 1 0492 3484 34C1 M dt HIGH table1, LOW table1 00000002 M i += 1 0494 3484 34CA M dt HIGH table2, LOW table2 00000003 M i += 1 0496 3485 3403 M dt HIGH table3, LOW table3 00000004 M i += 1 0498 3485 343C M dt HIGH table4, LOW table4 00000005 M i += 1 049A 3485 3475 M dt HIGH table5, LOW table5 00000006 M i += 1 049C 3485 347C M dt HIGH table6, LOW table6 00000007 M i += 1 049E 3485 348B M dt HIGH table7, LOW table7 00000008 M i += 1 04A0 3485 349A M dt HIGH table8, LOW table8 00000009 M i += 1 04A2 3485 34A9 M dt HIGH table9, LOW table9 0000000A M i += 1 04A4 3485 34C0 M dt HIGH table10, LOW table10 0000000B M i += 1 04A6 3485 34D9 M dt HIGH table11, LOW table11 0000000C M i += 1 04A8 34F0 3400 M dt HIGH table12, LOW table12 0000000D M i += 1 04AA 34F0 343F M dt HIGH table13, LOW table13 0000000E M i += 1 04AC 34F0 3454 M dt HIGH table14, LOW table14 0000000F M i += 1 M endw 03508 03509 03510 #ifdef PATTERN16 03511 #define BRIGHT1_lo 0x04 03512 #define BRIGHT2_lo 0x0A 03513 #define BRIGHT1_hi 0x40 03514 #define BRIGHT2_hi 0xA0 03515 03516 ;********************************************************************** 03517 table_type_16 03518 ;********************************************************************** 03519 ; 03520 ; 1 bytes 03521 ; 03522 ; ABBCCCCC 03523 ; MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03524 ; A = shire Right/Left 03525 ; BB = two bit intensity to shift on 03526 ; CCCCC = Number of shifts to loop 03527 ; 03528 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 03529 03530 var t7count 03531 var t17_loop 03532 03533 pageselw get_next_pattern_entry 03534 call get_next_pattern_entry 03535 movwf in0 03536 03537 call get_next_pattern_entry 03538 movwf in1 03539 pageselw table_type_16 03540 03541 movlw b'00011111' 03542 andwf in0,w 03543 movwf t7count 03544 03545 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 03546 subwf t7count,w 03547 btfss STATUS,Z 03548 goto t7_loop_red 03549 03550 clrf in0 ; quick way to clear all the LEDS. 03551 clrf in1 03552 clrf in2 03553 clrf in3 03554 clrf in4 03555 clrf in5 03556 pageselw display_1bit 03557 call display_1bit 03558 pageselw table_type_16 03559 goto t7_return 03560 03561 t7_loop_red 03562 btfsc in0,7 03563 goto t7_set19_red 03564 03565 call red_up 03566 goto t7_loop_green 03567 03568 t7_set19_red 03569 03570 call red_down 03571 03572 t7_loop_green 03573 btfsc in0,6 03574 goto t7_set19_green 03575 03576 call green_up MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03577 03578 goto t7_loop_blue 03579 ; 03580 ; set LED 19 03581 t7_set19_green 03582 03583 call green_down 03584 03585 t7_loop_blue 03586 03587 btfsc in0,5 03588 goto t7_set19_blue 03589 03590 call blue_up 03591 03592 goto t7_cont 03593 ; 03594 ; set LED 19 03595 t7_set19_blue 03596 call blue_dowm 03597 t7_cont 03598 pageselw strobe_delay 03599 movf pspeed,w 03600 call strobe_delay 03601 pageselw t7_cont 03602 ; 03603 ; This is a quick hack, because without this button presses are not seen for minutes 03604 ; This early exit might impact the pattern getting displayed. 03605 ; 03606 btfsc button,0 ; if putton pressed show pattern id 03607 goto t7_return 03608 03609 btfsc IR_in_good,0 03610 goto t7_return 03611 03612 decfsz t7count,f 03613 goto t7_loop_red 03614 03615 t7_return 03616 return 03617 03618 ;********************************************************************** 03619 red_up 03620 ;********************************************************************** 03621 03622 movlw 0x0d 03623 movwf t17_loop 03624 03625 movlw A2_C1_reg ; index = 13 R 03626 movwf FSR 03627 03628 red_up_loop 03629 movfw INDF ; load R [index] MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03630 incf FSR,f ; index ++ 03631 movwf INDF ; store R [index] 03632 03633 decf FSR,f ; index - 2 03634 decf FSR,f 03635 03636 decfsz t17_loop,f 03637 goto red_up_loop 03638 ; 03639 ; 01 Red 03640 ; 03641 incf FSR,f 03642 clrf INDF 03643 movlw BRIGHT1 03644 btfsc in1,6 03645 addwf INDF,f ;01 03646 movlw BRIGHT2 03647 btfsc in1,7 03648 addwf INDF,f ;01 03649 03650 return 03651 03652 ;********************************************************************** 03653 red_down 03654 ;********************************************************************** 03655 03656 movlw 0x0d 03657 movwf t17_loop 03658 03659 movlw C2_C3_reg ; index = 02 R 03660 movwf FSR 03661 03662 red_down_loop 03663 movfw INDF ; load R [index] 03664 decf FSR,f ; index - 1 03665 movwf INDF ; store R [index] 03666 03667 incf FSR,f ; index + 2 03668 incf FSR,f 03669 03670 decfsz t17_loop,f 03671 goto red_down_loop 03672 ; 03673 ; 14 Red 03674 ; 03675 decf FSR,f 03676 clrf INDF 03677 movlw BRIGHT1 03678 btfsc in1,6 03679 addwf INDF,f ;01 03680 movlw BRIGHT2 03681 btfsc in1,7 03682 addwf INDF,f ;01 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03683 03684 return 03685 03686 ;********************************************************************** 03687 green_up 03688 ;********************************************************************** 03689 03690 movlw 0x0d 03691 movwf t17_loop 03692 03693 movlw C4_C1_reg ; index = 13 G 03694 movwf FSR 03695 03696 green_up_loop 03697 movfw INDF ; load G [index] 03698 incf FSR,f ; index ++ 03699 movwf INDF ; store G [index] 03700 03701 decf FSR,f ; index - 2 03702 decf FSR,f 03703 03704 decfsz t17_loop,f 03705 goto green_up_loop 03706 ; 03707 ; 01 Green 03708 ; 03709 incf FSR,f 03710 clrf INDF 03711 movlw BRIGHT1 03712 btfsc in1,4 03713 addwf INDF,f ;01 03714 movlw BRIGHT2 03715 btfsc in1,5 03716 addwf INDF,f ;01 03717 03718 return 03719 03720 ;********************************************************************** 03721 green_down 03722 ;********************************************************************** 03723 03724 movlw 0x0d 03725 movwf t17_loop 03726 03727 movlw C0_C3_reg ; index = 02 Green 03728 movwf FSR 03729 03730 green_down_loop 03731 movfw INDF ; load R [index] 03732 decf FSR,f ; index - 1 03733 movwf INDF ; store R [index] 03734 03735 incf FSR,f ; index + 2 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 113 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03736 incf FSR,f 03737 03738 decfsz t17_loop,f 03739 goto green_down_loop 03740 ; 03741 ; 14 Green 03742 ; 03743 decf FSR,f 03744 clrf INDF 03745 movlw BRIGHT1 03746 btfsc in1,4 03747 addwf INDF,f ;01 03748 movlw BRIGHT2 03749 btfsc in1,5 03750 addwf INDF,f ;01 03751 03752 return 03753 03754 03755 ;********************************************************************** 03756 blue_up 03757 ;********************************************************************** 03758 03759 movlw 0x0d 03760 movwf t17_loop 03761 03762 movlw C2_C1_reg ; index = 13 G 03763 movwf FSR 03764 03765 blue_up_loop 03766 movfw INDF ; load G [index] 03767 incf FSR,f ; index ++ 03768 movwf INDF ; store G [index] 03769 03770 decf FSR,f ; index - 2 03771 decf FSR,f 03772 03773 decfsz t17_loop,f 03774 goto blue_up_loop 03775 ; 03776 ; 01 blue 03777 ; 03778 incf FSR,f 03779 clrf INDF 03780 movlw BRIGHT1 03781 btfsc in1,2 03782 addwf INDF,f ;01 03783 movlw BRIGHT2 03784 btfsc in1,3 03785 addwf INDF,f ;01 03786 03787 return 03788 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03789 03790 ;********************************************************************** 03791 blue_dowm 03792 ;********************************************************************** 03793 03794 movlw 0x0d 03795 movwf t17_loop 03796 03797 movlw C4_C3_reg ; index = 02 Blue 03798 movwf FSR 03799 03800 blue_down_loop 03801 movfw INDF ; load R [index] 03802 decf FSR,f ; index - 1 03803 movwf INDF ; store R [index] 03804 03805 incf FSR,f ; index + 2 03806 incf FSR,f 03807 03808 decfsz t17_loop,f 03809 goto blue_down_loop 03810 ; 03811 ; 14 Green 03812 ; 03813 decf FSR,f 03814 clrf INDF 03815 movlw BRIGHT1 03816 btfsc in1,2 03817 addwf INDF,f ;01 03818 movlw BRIGHT2 03819 btfsc in1,3 03820 addwf INDF,f ;01 03821 03822 return 03823 #endif 03824 03825 ; 03826 ; These are down here for memory placement 03827 ; 03828 03829 #ifdef DISPLAY_1BIT_E 03830 #include display_1bit_e_part2 ; RGB Stick Anode / cathode 03831 #endif 03832 03833 #ifdef PATTERN17 03834 #include pattern_17_part2.asm 03835 #endif 03836 03837 #ifdef PATTERN18 03838 #include pattern_18.asm 03839 #endif 03840 03841 #ifdef PATTERN20 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03842 #include pattern_20.asm 03843 #endif 03844 03845 #ifdef PATTERN21 03846 #include pattern_21.asm 03847 #endif 03848 03849 #ifdef C12 03850 ORG 0x800 03851 #endif 03852 03853 #ifdef PATTERN27 03854 #include "pattern_27.asm" 03855 #endif 03856 03857 ; 03858 ; These are the pattern tables 03859 ; 03860 03861 03862 #ifdef RGB4 03863 #include 03864 #endif 03865 03866 #ifdef SRGB 03867 #include 03868 #endif 03869 03870 #ifdef BI6 03871 #ifdef MONO 03872 #ifdef BADGE 03873 #include 03874 #else 03875 #include 03876 #endif 03877 #else 03878 #ifdef BADGE 03879 #include 03880 #else 03881 #include 03882 #endif 03883 #endif 03884 #endif 03885 03886 #ifdef M3X3 03887 #include 03888 #endif 03889 03890 #ifdef S19 03891 #include 03892 #endif 03893 03894 #ifdef GATOR MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03895 #include 03896 #endif 03897 03898 #ifdef BI6_DOGTAG 03899 #ifdef MONO 03900 #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 start_pattern 3,0x60 M 04AE M table0 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat0-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000008 M leng = (endpat0-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat0-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat0-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat0-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat0-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat0-$-3)/(9+4) ;tbltype1,speed,length M else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 117 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (3 == 0x16) || (3 == 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) 04AE 3403 3460 3408 M dt 3,0x60,(leng) M else M de 3,0x60,(leng) M endif 00024 04B1 3455 3450 00025 dt b'01010101',b'01010000' 04B3 3400 3400 00026 dt b'00000000',b'00000000' 00027 04B5 3440 3400 00028 dt b'01000000',b'00000000' 04B7 3410 3400 00029 dt b'00010000',b'00000000' 04B9 3404 3400 00030 dt b'00000100',b'00000000' 04BB 3401 3400 00031 dt b'00000001',b'00000000' 04BD 3400 3440 00032 dt b'00000000',b'01000000' 04BF 3400 3410 00033 dt b'00000000',b'00010000' 00034 end_pattern 04C1 M endpat0 00000001 M patternc = patternc + 1 00035 00036 00037 ;********************************************************************** 00038 ; DF1 - retro 00039 ;********************************************************************** 00040 00041 start_pattern 3, 0x30 M 04C1 M table1 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat1-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000003 M leng = (endpat1-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat1-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat1-$-3)/4 ;tbltype1,speed,length M else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (3 == 0x0d) M leng =(endpat1-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat1-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat1-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 0x1a) M leng = (endpat1-$-3)/0x20 ;tbltype1,speed,length M else 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) 04C1 3403 3430 3403 M dt 3,0x30,(leng) M else M de 3,0x30,(leng) M endif 04C4 3441 3400 00042 dt 0x41, 0x00 ; 1 04C6 3410 3440 00043 dt 0x10, 0x40 ; 2 04C8 3404 3410 00044 dt 0x04, 0x10 ; 3 00045 end_pattern 04CA M endpat1 00000002 M patternc = patternc + 1 00046 00047 ;********************************************************************** 00048 ; fade in/out: white, red, green, blue, yellow, cyan, violet 00049 ;********************************************************************** 00050 start_pattern 1, 0x30 M 04CA M table2 M if (1 == 1) || (1 == 6) || (1 == 0x15) || (1 == 0x1c) 00000012 M leng = (endpat2-$-3)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) || (1 == 0x10) || (1 == 0x13) || (1 == 0x14)|| (1 == 0x18) M leng = (endpat2-$-3)/2 ;tbltype1,speed,length M else M if (1 == 9) || (1 == 0x0e) M leng =(endpat2-$-3)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M leng =(endpat2-$-3)/4 ;tbltype1,speed,length M else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (1 == 0x0d) M leng =(endpat2-$-3)/(9+1) ;tbltype1,speed,length M else M if (1 == 0x0f) || (1 == 0x12)|| (1 == 0x17)||(1 == 0x1b) M leng =(endpat2-$-3)/(6) ;tbltype1,speed,length M else M if (1 == 0x11) M leng = (endpat2-$-3)/(9+4) ;tbltype1,speed,length M else M if (1 == 0x16) || (1 == 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) 04CA 3401 3430 3412 M dt 1,0x30,(leng) M else M de 1,0x30,(leng) M endif 00051 ; 00052 ; xx xx xx xx xx xx 04CD 3433 3413 3400 00053 dt b'00110011',b'00010011',b'00000000' ; red -> yellow 04D0 3432 3423 3400 00054 dt b'00110010',b'00100011',b'00000000' 04D3 3431 3433 3400 00055 dt b'00110001',b'00110011',b'00000000' 04D6 3420 3433 3400 00056 dt b'00100000',b'00110011',b'00000000' ; yellow -> green 04D9 3410 3433 3401 00057 dt b'00010000',b'00110011',b'00000001' 04DC 3400 3433 3402 00058 dt b'00000000',b'00110011',b'00000010' 04DF 3400 3433 3413 00059 dt b'00000000',b'00110011',b'00010011' ; green -> cyan 04E2 3400 3432 3423 00060 dt b'00000000',b'00110010',b'00100011' 04E5 3400 3431 3433 00061 dt b'00000000',b'00110001',b'00110011' 04E8 3400 3420 3433 00062 dt b'00000000',b'00100000',b'00110011' ; cyan -> blue 04EB 3401 3410 3433 00063 dt b'00000001',b'00010000',b'00110011' 04EE 3402 3400 3433 00064 dt b'00000010',b'00000000',b'00110011' 04F1 3413 3400 3433 00065 dt b'00010011',b'00000000',b'00110011' ; blue -> violet 04F4 3423 3400 3432 00066 dt b'00100011',b'00000000',b'00110010' 04F7 3433 3400 3431 00067 dt b'00110011',b'00000000',b'00110001' 04FA 3433 3400 3420 00068 dt b'00110011',b'00000000',b'00100000' ; violet -> red 04FD 3433 3401 3410 00069 dt b'00110011',b'00000001',b'00010000' 0500 3433 3402 3400 00070 dt b'00110011',b'00000010',b'00000000' 00071 end_pattern 0503 M endpat2 00000003 M patternc = patternc + 1 00072 00073 ;********************************************************************** 00074 ; red chase fad up, green chase fad up MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00075 ;********************************************************************** 00076 start_pattern 1, 0x30 M 0503 M table3 M if (1 == 1) || (1 == 6) || (1 == 0x15) || (1 == 0x1c) 00000012 M leng = (endpat3-$-3)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) || (1 == 0x10) || (1 == 0x13) || (1 == 0x14)|| (1 == 0x18) M leng = (endpat3-$-3)/2 ;tbltype1,speed,length M else M if (1 == 9) || (1 == 0x0e) M leng =(endpat3-$-3)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M leng =(endpat3-$-3)/4 ;tbltype1,speed,length M else M if (1 == 0x0d) M leng =(endpat3-$-3)/(9+1) ;tbltype1,speed,length M else M if (1 == 0x0f) || (1 == 0x12)|| (1 == 0x17)||(1 == 0x1b) M leng =(endpat3-$-3)/(6) ;tbltype1,speed,length M else M if (1 == 0x11) M leng = (endpat3-$-3)/(9+4) ;tbltype1,speed,length M else M if (1 == 0x16) || (1 == 0x1a) M leng = (endpat3-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat3-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0503 3401 3430 3412 M dt 1,0x30,(leng) M else M de 1,0x30,(leng) M endif 00077 ; R c B 00078 ; xx xx xx xx xx xx 0506 3410 3400 3400 00079 dt b'00010000',b'00000000',b'00000000' ; Low Green 0509 3411 3400 3400 00080 dt b'00010001',b'00000000',b'00000000' ; 050C 3411 3410 3400 00081 dt b'00010001',b'00010000',b'00000000' ; 050F 3411 3411 3400 00082 dt b'00010001',b'00010001',b'00000000' ; 0512 3411 3411 3410 00083 dt b'00010001',b'00010001',b'00010000' ; 0515 3411 3411 3411 00084 dt b'00010001',b'00010001',b'00010001' ; 0518 3421 3411 3411 00085 dt b'00100001',b'00010001',b'00010001' ; Med Green MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 051B 3422 3411 3411 00086 dt b'00100010',b'00010001',b'00010001' ; 051E 3422 3421 3411 00087 dt b'00100010',b'00100001',b'00010001' ; 0521 3422 3422 3411 00088 dt b'00100010',b'00100010',b'00010001' ; 0524 3422 3422 3421 00089 dt b'00100010',b'00100010',b'00100001' ; 0527 3422 3422 3422 00090 dt b'00100010',b'00100010',b'00100010' ; 052A 3432 3422 3422 00091 dt b'00110010',b'00100010',b'00100010' ; High Green 052D 3433 3422 3422 00092 dt b'00110011',b'00100010',b'00100010' ; 0530 3433 3432 3422 00093 dt b'00110011',b'00110010',b'00100010' ; 0533 3433 3433 3432 00094 dt b'00110011',b'00110011',b'00110010' ; 0536 3433 3433 3432 00095 dt b'00110011',b'00110011',b'00110010' ; 0539 3433 3433 3433 00096 dt b'00110011',b'00110011',b'00110011' ; 00097 00098 end_pattern 053C M endpat3 00000004 M patternc = patternc + 1 00099 00100 ;********************************************************************** 00101 ; fad up/down 00102 ;********************************************************************** 00103 start_pattern 1, 0x30 M 053C M table4 M if (1 == 1) || (1 == 6) || (1 == 0x15) || (1 == 0x1c) 00000012 M leng = (endpat4-$-3)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) || (1 == 0x10) || (1 == 0x13) || (1 == 0x14)|| (1 == 0x18) M leng = (endpat4-$-3)/2 ;tbltype1,speed,length M else M if (1 == 9) || (1 == 0x0e) M leng =(endpat4-$-3)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M leng =(endpat4-$-3)/4 ;tbltype1,speed,length M else M if (1 == 0x0d) M leng =(endpat4-$-3)/(9+1) ;tbltype1,speed,length M else M if (1 == 0x0f) || (1 == 0x12)|| (1 == 0x17)||(1 == 0x1b) M leng =(endpat4-$-3)/(6) ;tbltype1,speed,length M else M if (1 == 0x11) M leng = (endpat4-$-3)/(9+4) ;tbltype1,speed,length M else M if (1 == 0x16) || (1 == 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 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M expand M if ($ < 0x2100) 053C 3401 3430 3412 M dt 1,0x30,(leng) M else M de 1,0x30,(leng) M endif 00104 ; R c B 00105 ; xx xx xx xx xx xx 053F 3400 3400 3400 00106 dt b'00000000',b'00000000',b'00000000' ; 0542 3400 3400 3400 00107 dt b'00000000',b'00000000',b'00000000' ; 0545 3400 3400 3400 00108 dt b'00000000',b'00000000',b'00000000' ; 0548 3400 3400 3400 00109 dt b'00000000',b'00000000',b'00000000' ; 054B 3400 3400 3400 00110 dt b'00000000',b'00000000',b'00000000' ; 054E 3400 3400 3400 00111 dt b'00000000',b'00000000',b'00000000' ; 0551 3411 3411 3411 00112 dt b'00010001',b'00010001',b'00010001' ; 0554 3422 3422 3422 00113 dt b'00100010',b'00100010',b'00100010' ; 0557 3433 3433 3433 00114 dt b'00110011',b'00110011',b'00110011' ; 055A 3422 3422 3422 00115 dt b'00100010',b'00100010',b'00100010' ; 055D 3411 3411 3411 00116 dt b'00010001',b'00010001',b'00010001' ; 0560 3400 3400 3400 00117 dt b'00000000',b'00000000',b'00000000' ; 0563 3411 3411 3411 00118 dt b'00010001',b'00010001',b'00010001' ; 0566 3422 3422 3422 00119 dt b'00100010',b'00100010',b'00100010' ; 0569 3433 3433 3433 00120 dt b'00110011',b'00110011',b'00110011' ; 056C 3422 3422 3422 00121 dt b'00100010',b'00100010',b'00100010' ; 056F 3411 3411 3411 00122 dt b'00010001',b'00010001',b'00010001' ; 0572 3400 3400 3400 00123 dt b'00000000',b'00000000',b'00000000' ; 00124 end_pattern 0575 M endpat4 00000005 M patternc = patternc + 1 00125 00126 00127 00128 00129 ;********************************************************************** 00130 ;table2 ; DF2 - xmas 00131 ;********************************************************************** 00132 00133 start_pattern 3, 0x30 M 0575 M table5 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat5-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000002 M leng = (endpat5-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat5-$-3)/5 ;tbltype1,speed,length M else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (3 == 0x0a) M leng =(endpat5-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat5-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat5-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat5-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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) 0575 3403 3430 3402 M dt 3,0x30,(leng) M else M de 3,0x30,(leng) M endif 0578 3455 3450 00134 dt b'01010101',b'01010000' ; 1 057A 3400 3400 00135 dt b'00000000',b'00000000' ; 2 00136 end_pattern 057C M endpat5 00000006 M patternc = patternc + 1 00137 00138 ;********************************************************************** 00139 ;table3 ; DF3 - train 00140 ;********************************************************************** 00141 00142 start_pattern 3, 0x30 M 057C M table6 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat6-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000006 M leng = (endpat6-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat6-$-3)/5 ;tbltype1,speed,length M else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (3 == 0x0a) M leng =(endpat6-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat6-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat6-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat6-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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) 057C 3403 3430 3406 M dt 3,0x30,(leng) M else M de 3,0x30,(leng) M endif 057F 3444 3400 00143 dt b'01000100',b'00000000' ; 1 0581 3411 3400 00144 dt b'00010001',b'00000000' ; 2 0583 3404 3440 00145 dt b'00000100',b'01000000' ; 3 0585 3401 3410 00146 dt b'00000001',b'00010000' ; 4 0587 3440 3440 00147 dt b'01000000',b'01000000' ; 5 0589 3410 3410 00148 dt b'00010000',b'00010000' ; 6 00149 end_pattern 058B M endpat6 00000007 M patternc = patternc + 1 00150 00151 ;********************************************************************** 00152 ;table4 ; DF4 - half 00153 ;********************************************************************** 00154 00155 start_pattern 3, 0x30 M 058B M table7 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat7-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000006 M leng = (endpat7-$-3)/2 ;tbltype1,speed,length MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat7-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat7-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat7-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat7-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat7-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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) 058B 3403 3430 3406 M dt 3,0x30,(leng) M else M de 3,0x30,(leng) M endif 058E 3451 3410 00156 dt b'01010001',b'00010000' ; 1 0590 3445 3450 00157 dt b'01000101',b'01010000' ; 2 0592 3405 3450 00158 dt b'00000101',b'01010000' ; 3 0594 3404 3440 00159 dt b'00000100',b'01000000' ; 4 0596 3410 3400 00160 dt b'00010000',b'00000000' ; 5 0598 3450 3400 00161 dt b'01010000',b'00000000' ; 6 00162 end_pattern 059A M endpat7 00000008 M patternc = patternc + 1 00163 00164 ;********************************************************************** 00165 ;table5 ; DF5 - passing 00166 ;********************************************************************** 00167 00168 start_pattern 3, 0x10 M 059A M table8 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat8-$-3)/3 ;tbltype1,speed,length MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000006 M leng = (endpat8-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat8-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat8-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat8-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat8-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat8-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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) 059A 3403 3410 3406 M dt 3,0x10,(leng) M else M de 3,0x10,(leng) M endif 059D 3440 3400 00169 dt b'01000000',b'00000000' ; 1 059F 3410 3400 00170 dt b'00010000',b'00000000' ; 2 05A1 3404 3400 00171 dt b'00000100',b'00000000' ; 3 05A3 3401 3400 00172 dt b'00000001',b'00000000' ; 4 05A5 3400 3440 00173 dt b'00000000',b'01000000' ; 5 05A7 3400 3410 00174 dt b'00000000',b'00010000' ; 6 00175 end_pattern 05A9 M endpat8 00000009 M patternc = patternc + 1 00176 00177 ;********************************************************************** 00178 ;table6 ; DF6 - rpm 00179 ;********************************************************************** 00180 00181 start_pattern 3, 0x30 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 05A9 M table9 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat9-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 0000000A M leng = (endpat9-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat9-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat9-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat9-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat9-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat9-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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 M endif M endif M endif M expand M if ($ < 0x2100) 05A9 3403 3430 340A M dt 3,0x30,(leng) M else M de 3,0x30,(leng) M endif 05AC 3440 3400 00182 dt b'01000000',b'00000000' ; 1 05AE 3450 3400 00183 dt b'01010000',b'00000000' ; 2 05B0 3454 3400 00184 dt b'01010100',b'00000000' ; 3 05B2 3455 3400 00185 dt b'01010101',b'00000000' ; 4 05B4 3455 3440 00186 dt b'01010101',b'01000000' ; 5 05B6 3455 3450 00187 dt b'01010101',b'01010000' ; 6 05B8 3455 3450 00188 dt b'01010101',b'01010000' ; 7 05BA 3450 3400 00189 dt b'01010000',b'00000000' ; 8 05BC 3440 3400 00190 dt b'01000000',b'00000000' ; 9 05BE 3400 3404 00191 dt b'00000000',b'00000100' ; 10,11,12,13 00192 end_pattern MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05C0 M endpat9 0000000A M patternc = patternc + 1 00193 00194 ;********************************************************************** 00195 ;table7 ; DF7 - Left 00196 ;********************************************************************** 00197 00198 start_pattern 3, 0x30 M 05C0 M table10 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat10-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 0000000B M leng = (endpat10-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat10-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat10-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat10-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat10-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat10-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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) 05C0 3403 3430 340B M dt 3,0x30,(leng) M else M de 3,0x30,(leng) M endif 05C3 3400 3400 00199 dt b'00000000',b'00000000' ; 1 05C5 3400 3410 00200 dt b'00000000',b'00010000' ; 2 05C7 3400 3440 00201 dt b'00000000',b'01000000' ; 3 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05C9 3401 3400 00202 dt b'00000001',b'00000000' ; 4 05CB 3404 3410 00203 dt b'00000100',b'00010000' ; 5 05CD 3410 3440 00204 dt b'00010000',b'01000000' ; 6 05CF 3441 3400 00205 dt b'01000001',b'00000000' ; 7 05D1 3404 3400 00206 dt b'00000100',b'00000000' ; 8 05D3 3410 3400 00207 dt b'00010000',b'00000000' ; 8 05D5 3440 3400 00208 dt b'01000000',b'00000000' ; 8 05D7 3400 3403 00209 dt b'00000000',b'00000011' ; 8 00210 end_pattern 05D9 M endpat10 0000000B M patternc = patternc + 1 00211 00212 ;********************************************************************** 00213 ;table8 ; DF8 - down 00214 ;********************************************************************** 00215 00216 start_pattern 3, 0x10 M 05D9 M table11 M if (3 == 1) || (3 == 6) || (3 == 0x15) || (3 == 0x1c) M leng = (endpat11-$-3)/3 ;tbltype1,speed,length M else M if (3 == 3) || (3 == 0x0b) || (3 == 0x10) || (3 == 0x13) || (3 == 0x14)|| (3 == 0x18) 00000009 M leng = (endpat11-$-3)/2 ;tbltype1,speed,length M else M if (3 == 9) || (3 == 0x0e) M leng =(endpat11-$-3)/5 ;tbltype1,speed,length M else M if (3 == 0x0a) M leng =(endpat11-$-3)/4 ;tbltype1,speed,length M else M if (3 == 0x0d) M leng =(endpat11-$-3)/(9+1) ;tbltype1,speed,length M else M if (3 == 0x0f) || (3 == 0x12)|| (3 == 0x17)||(3 == 0x1b) M leng =(endpat11-$-3)/(6) ;tbltype1,speed,length M else M if (3 == 0x11) M leng = (endpat11-$-3)/(9+4) ;tbltype1,speed,length M else M if (3 == 0x16) || (3 == 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 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE M expand M if ($ < 0x2100) 05D9 3403 3410 3409 M dt 3,0x10,(leng) M else M de 3,0x10,(leng) M endif 05DC 3440 3400 00217 dt 0x40, 0x00 ; 1 05DE 3400 3400 00218 dt b'00000000',b'00000000' ; 1 05E0 3440 3410 00219 dt b'01000000',b'00010000' ; 2 05E2 3410 3440 00220 dt b'00010000',b'01000000' ; 3 05E4 3405 3400 00221 dt b'00000101',b'00000000' ; 4 05E6 3400 3400 00222 dt b'00000000',b'00000000' ; 5 05E8 3440 3410 00223 dt b'01000000',b'00010000' ; 6 05EA 3410 3440 00224 dt b'00010000',b'01000000' ; 7 05EC 3405 3400 00225 dt b'00000101',b'00000000' ; 8 00226 end_pattern 05EE M endpat11 0000000C M patternc = patternc + 1 00227 00228 ;********************************************************************** 00229 ; EEPROM ;test pattern for 4RGB with 2 bits of luminance per LED 00230 ;********************************************************************** 00231 #ifdef __12F1822 F000 00232 org 0xF000 00233 #else 00234 org 0x2100 ; data EEPROM locatio 00235 #endif 00236 00237 ;********************************************************************** 00238 ; fade around 00239 ;********************************************************************** 00240 start_pattern 1, 0x30 M F000 M table12 M if (1 == 1) || (1 == 6) || (1 == 0x15) || (1 == 0x1c) 00000014 M leng = (endpat12-$-3)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) || (1 == 0x10) || (1 == 0x13) || (1 == 0x14)|| (1 == 0x18) M leng = (endpat12-$-3)/2 ;tbltype1,speed,length M else M if (1 == 9) || (1 == 0x0e) M leng =(endpat12-$-3)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M leng =(endpat12-$-3)/4 ;tbltype1,speed,length M else M if (1 == 0x0d) M leng =(endpat12-$-3)/(9+1) ;tbltype1,speed,length M else M if (1 == 0x0f) || (1 == 0x12)|| (1 == 0x17)||(1 == 0x1b) M leng =(endpat12-$-3)/(6) ;tbltype1,speed,length M else MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (1 == 0x11) M leng = (endpat12-$-3)/(9+4) ;tbltype1,speed,length M else M if (1 == 0x16) || (1 == 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) M dt 1,0x30,(leng) M else F000 0001 0030 0014 M de 1,0x30,(leng) M endif 00241 ; 1R 2R 3R 4R 5R 6R 00242 ; xx xx xx xx xx xx F003 3410 3400 3402 00243 dt b'00010000',b'00000000',b'00000010' F006 3420 3400 3401 00244 dt b'00100000',b'00000000',b'00000001' F009 3430 3400 3400 00245 dt b'00110000',b'00000000',b'00000000' F00C 3421 3400 3400 00246 dt b'00100001',b'00000000',b'00000000' F00F 3412 3400 3400 00247 dt b'00010010',b'00000000',b'00000000' F012 3403 3400 3400 00248 dt b'00000011',b'00000000',b'00000000' F015 3402 3410 3400 00249 dt b'00000010',b'00010000',b'00000000' F018 3401 3420 3400 00250 dt b'00000001',b'00100000',b'00000000' F01B 3400 3430 3400 00251 dt b'00000000',b'00110000',b'00000000' F01E 3400 3421 3400 00252 dt b'00000000',b'00100001',b'00000000' F021 3400 3412 3400 00253 dt b'00000000',b'00010010',b'00000000' F024 3400 3403 3400 00254 dt b'00000000',b'00000011',b'00000000' F027 3400 3402 3410 00255 dt b'00000000',b'00000010',b'00010000' F02A 3400 3401 3420 00256 dt b'00000000',b'00000001',b'00100000' F02D 3400 3400 3430 00257 dt b'00000000',b'00000000',b'00110000' F030 3400 3400 3422 00258 dt b'00000000',b'00000000',b'00100010' F033 3400 3400 3411 00259 dt b'00000000',b'00000000',b'00010001' F036 3400 3400 3403 00260 dt b'00000000',b'00000000',b'00000011' F039 3400 3400 3402 00261 dt b'00000000',b'00000000',b'00000010' F03C 3400 3400 3401 00262 dt b'00000000',b'00000000',b'00000001' 00263 end_pattern F03F M endpat12 0000000D M patternc = patternc + 1 00264 00265 ;********************************************************************** 00266 ; fade up/down 00267 ;********************************************************************** 00268 start_pattern 0x01, 0x30 M F03F M table13 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (0x01 == 1) || (0x01 == 6) || (0x01 == 0x15) || (0x01 == 0x1c) 00000006 M leng = (endpat13-$-3)/3 ;tbltype1,speed,length M else M if (0x01 == 3) || (0x01 == 0x0b) || (0x01 == 0x10) || (0x01 == 0x13) || (0x01 == 0x14)|| (0x01 == 0x18) M leng = (endpat13-$-3)/2 ;tbltype1,speed,length M else M if (0x01 == 9) || (0x01 == 0x0e) M leng =(endpat13-$-3)/5 ;tbltype1,speed,length M else M if (0x01 == 0x0a) M leng =(endpat13-$-3)/4 ;tbltype1,speed,length M else M if (0x01 == 0x0d) M leng =(endpat13-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x01 == 0x0f) || (0x01 == 0x12)|| (0x01 == 0x17)||(0x01 == 0x1b) M leng =(endpat13-$-3)/(6) ;tbltype1,speed,length M else M if (0x01 == 0x11) M leng = (endpat13-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x01 == 0x16) || (0x01 == 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) M dt 0x01,0x30,(leng) M else F03F 0001 0030 0006 M de 0x01,0x30,(leng) M endif 00269 ; 1R 2R 3R 4R 5R 6R 00270 ; xx xx xx xx xx xx F042 3400 3400 3400 00271 dt b'00000000',b'00000000',b'00000000' F045 3411 3411 3411 00272 dt b'00010001',b'00010001',b'00010001' F048 3422 3422 3422 00273 dt b'00100010',b'00100010',b'00100010' F04B 3433 3433 3433 00274 dt b'00110011',b'00110011',b'00110011' F04E 3422 3422 3422 00275 dt b'00100010',b'00100010',b'00100010' F051 3411 3411 3411 00276 dt b'00010001',b'00010001',b'00010001' 00277 end_pattern F054 M endpat13 0000000E M patternc = patternc + 1 00278 00279 ;********************************************************************** MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00280 ; fade up/down 00281 ;********************************************************************** 00282 start_pattern 0x01, 0x30 M F054 M table14 M if (0x01 == 1) || (0x01 == 6) || (0x01 == 0x15) || (0x01 == 0x1c) 00000006 M leng = (endpat14-$-3)/3 ;tbltype1,speed,length M else M if (0x01 == 3) || (0x01 == 0x0b) || (0x01 == 0x10) || (0x01 == 0x13) || (0x01 == 0x14)|| (0x01 == 0x18) M leng = (endpat14-$-3)/2 ;tbltype1,speed,length M else M if (0x01 == 9) || (0x01 == 0x0e) M leng =(endpat14-$-3)/5 ;tbltype1,speed,length M else M if (0x01 == 0x0a) M leng =(endpat14-$-3)/4 ;tbltype1,speed,length M else M if (0x01 == 0x0d) M leng =(endpat14-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x01 == 0x0f) || (0x01 == 0x12)|| (0x01 == 0x17)||(0x01 == 0x1b) M leng =(endpat14-$-3)/(6) ;tbltype1,speed,length M else M if (0x01 == 0x11) M leng = (endpat14-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x01 == 0x16) || (0x01 == 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) M dt 0x01,0x30,(leng) M else F054 0001 0030 0006 M de 0x01,0x30,(leng) M endif 00283 ; 1R 2R 3R 4R 5R 6R F057 3433 3433 3433 00284 dt b'00110011',b'00110011',b'00110011' F05A 3422 3420 3422 00285 dt b'00100010',b'00100000',b'00100010' F05D 3411 3422 3422 00286 dt b'00010001',b'00100010',b'00100010' F060 3400 3400 3400 00287 dt b'00000000',b'00000000',b'00000000' F063 3411 3422 3422 00288 dt b'00010001',b'00100010',b'00100010' F066 3422 3420 3422 00289 dt b'00100010',b'00100000',b'00100010' 00290 end_pattern MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE F069 M endpat14 0000000F M patternc = patternc + 1 00291 00292 ;********************************************************************** 00293 ; fade around 00294 ;********************************************************************** 00295 start_pattern 1, 0x30 M F069 M table15 M if (1 == 1) || (1 == 6) || (1 == 0x15) || (1 == 0x1c) 00000008 M leng = (endpat15-$-3)/3 ;tbltype1,speed,length M else M if (1 == 3) || (1 == 0x0b) || (1 == 0x10) || (1 == 0x13) || (1 == 0x14)|| (1 == 0x18) M leng = (endpat15-$-3)/2 ;tbltype1,speed,length M else M if (1 == 9) || (1 == 0x0e) M leng =(endpat15-$-3)/5 ;tbltype1,speed,length M else M if (1 == 0x0a) M leng =(endpat15-$-3)/4 ;tbltype1,speed,length M else M if (1 == 0x0d) M leng =(endpat15-$-3)/(9+1) ;tbltype1,speed,length M else M if (1 == 0x0f) || (1 == 0x12)|| (1 == 0x17)||(1 == 0x1b) M leng =(endpat15-$-3)/(6) ;tbltype1,speed,length M else M if (1 == 0x11) M leng = (endpat15-$-3)/(9+4) ;tbltype1,speed,length M else M if (1 == 0x16) || (1 == 0x1a) M leng = (endpat15-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat15-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) M dt 1,0x30,(leng) M else F069 0001 0030 0008 M de 1,0x30,(leng) M endif 00296 ; 1R 2R 3R 4R 5R 6R 00297 ; xx xx xx xx xx xx F06C 3412 3412 3412 00298 dt b'00010010',b'00010010',b'00010010' F06F 3421 3421 3421 00299 dt b'00100001',b'00100001',b'00100001' MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE F072 3430 3430 3430 00300 dt b'00110000',b'00110000',b'00110000' F075 3430 3430 3430 00301 dt b'00110000',b'00110000',b'00110000' F078 3421 3421 3421 00302 dt b'00100001',b'00100001',b'00100001' F07B 3412 3412 3412 00303 dt b'00010010',b'00010010',b'00010010' F07E 3403 3403 3403 00304 dt b'00000011',b'00000011',b'00000011' F081 3403 3403 3403 00305 dt b'00000011',b'00000011',b'00000011' 00306 end_pattern F084 M endpat15 00000010 M patternc = patternc + 1 00307 F084 00308 demo_store F084 3400 00309 dt 0x00 03901 #else 03902 #include 03903 #endif 03904 #endif 03905 03906 #ifdef RGB2_DOGTAG 03907 #include 03908 #endif 03909 03910 #ifdef C19 03911 #ifdef MONO 03912 #include 03913 #else 03914 #include 03915 #endif 03916 #endif 03917 03918 #ifdef M8X16 03919 #include 03920 #endif 03921 03922 #ifdef C12 03923 #include 03924 #endif 03925 03926 end MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 136 SYMBOL TABLE LABEL VALUE 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 ADON 00000000 ADPREF0 00000000 ADPREF1 00000001 ADRES 0000009B ADRESH 0000009C ADRESL 0000009B AHEN 00000001 AN0 00000000 AN1 00000001 AN2 00000002 AN3 00000004 ANSA0 00000000 ANSA1 00000001 ANSA2 00000002 ANSA4 00000004 ANSELA 0000018C APFCON 0000011D APFCON0 0000011D Ab_reg 00000028 Ag_reg 00000027 Ar_reg 00000026 Ax_dir 0000007F BAUDCON 0000019F BCL1IE 00000003 BCL1IF 00000003 BF 00000000 BI6_DOGTAG BI6_DOGTAG_MONO BIN2LED BOEN 00000004 BORCON 00000116 BORRDY 00000000 BRG16 00000003 BRGH 00000002 BRIGHT1 0x40 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 137 SYMBOL TABLE LABEL VALUE BRIGHT1H 0xA0 BRIGHT2 0xA0 BRIGHT2H 0x40 BSR 00000008 BSR0 00000000 BSR1 00000001 BSR2 00000002 BSR3 00000003 BSR4 00000004 BSR_SHAD 00000FE6 Bb_reg 0000002B Bg_reg 0000002A Br_reg 00000029 C 00000000 C1HYS 00000001 C1IE 00000005 C1IF 00000005 C1IN0N 00000001 C1IN1N 00000004 C1INP 00000000 C1INTN 00000006 C1INTP 00000007 C1NCH0 00000000 C1OE 00000005 C1ON 00000007 C1OUT_CM1CON0 00000006 C1OUT_PORTA 00000002 C1PCH0 00000004 C1PCH1 00000005 C1POL 00000004 C1SP 00000002 C1SYNC 00000000 CCP1AS 00000295 CCP1AS0 00000004 CCP1AS1 00000005 CCP1AS2 00000006 CCP1ASE 00000007 CCP1CON 00000293 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1SEL 00000000 CCPR1H 00000292 CCPR1L 00000291 CDAFVR0 00000002 CDAFVR1 00000003 CFGS 00000006 CHS0 00000002 CHS1 00000003 CHS2 00000004 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 138 SYMBOL TABLE LABEL VALUE CHS3 00000005 CHS4 00000006 CKE 00000006 CKP 00000004 CLKIN 00000005 CLKOUT 00000004 CLKR 00000004 CLKRCON 0000039A CLKRDC0 00000003 CLKRDC1 00000004 CLKRDIV0 00000000 CLKRDIV1 00000001 CLKRDIV2 00000002 CLKREN 00000007 CLKROE 00000006 CLKRSLR 00000005 CM1CON0 00000111 CM1CON1 00000112 CMOUT 00000115 CPS0 00000000 CPS1 00000001 CPS2 00000002 CPS3 00000004 CPSCH0 00000000 CPSCH1 00000001 CPSCON0 0000001E CPSCON1 0000001F CPSON 00000007 CPSOUT 00000001 CPSRM 00000006 CPSRNG0 00000002 CPSRNG1 00000003 CREN 00000004 CSRC 00000007 C_SHAD 00000000 Cb_reg 0000002E Cg_reg 0000002D Cr_reg 0000002C DACCON0 00000118 DACCON1 00000119 DACEN 00000007 DACLPS 00000006 DACOE 00000005 DACOUT 00000000 DACPSS0 00000002 DACPSS1 00000003 DACR0 00000000 DACR1 00000001 DACR2 00000002 DACR3 00000003 DACR4 00000004 DC 00000001 DC1B0 00000004 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 139 SYMBOL TABLE LABEL VALUE DC1B1 00000005 DC_SHAD 00000001 DEBOUNCE 0x10 DELAYTIMER 0000003A DHEN 00000000 DISPLAY_1BIT_C DISPLAY_2BIT_C D_NOT_A 00000005 Db_reg 00000031 Dg_reg 00000030 Dr_reg 0000002F ECCP1AS 00000295 EEADR 00000191 EEADRH 00000192 EEADRL 00000191 EECON1 00000195 EECON2 00000196 EEDAT 00000193 EEDATH 00000194 EEDATL 00000193 EEIE 00000004 EEIF 00000004 EEPGD 00000007 F 00000001 FERR 00000002 FLT0 00000002 FREE 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 00000001 GO_NOT_DONE 00000001 HFIOFL 00000003 HFIOFR 00000004 HFIOFS 00000000 INDF0 00000000 INDF1 00000001 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 140 SYMBOL TABLE LABEL VALUE IOCAF 00000393 IOCAF0 00000000 IOCAF1 00000001 IOCAF2 00000002 IOCAF3 00000003 IOCAF4 00000004 IOCAF5 00000005 IOCAN 00000392 IOCAN0 00000000 IOCAN1 00000001 IOCAN2 00000002 IOCAN3 00000003 IOCAN4 00000004 IOCAN5 00000005 IOCAP 00000391 IOCAP0 00000000 IOCAP1 00000001 IOCAP2 00000002 IOCAP3 00000003 IOCAP4 00000004 IOCAP5 00000005 IOCIE 00000003 IOCIF 00000000 IRBIT 4 IRCF0 00000003 IRCF1 00000004 IRCF2 00000005 IRCF3 00000006 IRPORT PORTA IR_Tester 000003F1 IR_in 00000034 IR_in_good 0000003C IR_lhalf 00000038 LATA 0000010C LATA0 00000000 LATA1 00000001 LATA2 00000002 LATA4 00000004 LATA5 00000005 LFIOFR 00000001 LWLO 00000005 Lcontinue 000001F4 LedOut LedOutH LedOutInd LedOutIndP LedOutL Lstate0 000000F3 Lstate0a 000000FB Lstate1 000000FE Lstate10 00000146 Lstate10a 0000014C Lstate11 00000152 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 141 SYMBOL TABLE LABEL VALUE Lstate12 00000156 Lstate12a 0000015C Lstate13 00000162 Lstate14 00000166 Lstate14a 0000016C Lstate15 00000172 Lstate16 00000176 Lstate16a 0000017C Lstate17 00000182 Lstate18 00000186 Lstate18a 0000018C Lstate19 00000192 Lstate1a 00000103 Lstate2 00000106 Lstate20 00000196 Lstate20a 0000019C Lstate21 000001A2 Lstate22 000001A6 Lstate22a 000001AC Lstate23 000001B2 Lstate24 000001B6 Lstate24a 000001BC Lstate25 000001C2 Lstate26 000001C6 Lstate26a 000001CC Lstate27 000001D2 Lstate28 000001D6 Lstate28a 000001DC Lstate29 000001E2 Lstate2a 0000010B Lstate3 0000010E Lstate30 000001E6 Lstate30a 000001EC Lstate31 000001F2 Lstate3a 00000113 Lstate4 00000116 Lstate4a 0000011B Lstate5 0000011E Lstate5a 00000123 Lstate6 00000126 Lstate6a 00000130 Lstate6b 0000012E Lstate7 00000132 Lstate8 00000136 Lstate8a 0000013C Lstate9 00000142 MC1OUT 00000000 MDBIT 00000000 MDCARH 0000039F MDCARL 0000039E MDCH0 00000000 MDCH1 00000001 MDCH2 00000002 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 142 SYMBOL TABLE LABEL VALUE MDCH3 00000003 MDCHODIS 00000007 MDCHPOL 00000006 MDCHSYNC 00000005 MDCIN1 00000002 MDCIN2 00000004 MDCL0 00000000 MDCL1 00000001 MDCL2 00000002 MDCL3 00000003 MDCLODIS 00000007 MDCLPOL 00000006 MDCLSYNC 00000005 MDCON 0000039C MDEN 00000007 MDMIN 00000001 MDMS0 00000000 MDMS1 00000001 MDMS2 00000002 MDMS3 00000003 MDMSODIS 00000007 MDOE 00000006 MDOPOL 00000004 MDOUT_MDCON 00000003 MDOUT_PORTA 00000000 MDSLR 00000005 MDSRC 0000039D MFIOFR 00000002 MONO MasterTable 00000490 NOT_BOR 00000000 NOT_DONE 00000001 NOT_MCLR 00000003 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 OSC1 00000005 OSC2 00000004 OSCCON 00000099 OSCSTAT 0000009A OSCTUNE 00000098 OSFIE 00000007 OSFIF 00000007 OSTS 00000005 P 00000004 P1BSEL 00000001 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 143 SYMBOL TABLE LABEL VALUE P1DC0 00000000 P1DC1 00000001 P1DC2 00000002 P1DC3 00000003 P1DC4 00000004 P1DC5 00000005 P1DC6 00000006 P1M0 00000006 P1M1 00000007 P1RSEN 00000007 PATTERN1 PATTERN3 PCIE 00000006 PCL 00000002 PCLATH 0000000A PCLATH_SHAD 00000FE7 PCON 00000096 PEIE 00000006 PEN 00000002 PIE1 00000091 PIE2 00000092 PIR1 00000011 PIR2 00000012 PLLR 00000006 PORTA 0000000C PR2 0000001B PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PSS1AC0 00000002 PSS1AC1 00000003 PSS1BD0 00000000 PSS1BD1 00000001 PSTR1CON 00000296 PWM1CON 00000294 RA0 00000000 RA1 00000001 RA2 00000002 RA3 00000003 RA4 00000004 RA5 00000005 RCEN 00000003 RCIDL 00000006 RCIE 00000005 RCIF 00000005 RCREG 00000199 RCSTA 0000019D RD 00000000 RSEN 00000001 RX9 00000006 RX9D 00000000 RXDTSEL 00000007 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 144 SYMBOL TABLE LABEL VALUE R_NOT_W 00000002 S 00000003 SBCDE 00000002 SBOREN 00000007 SCIE 00000005 SCK 00000001 SCKP 00000004 SCL 00000001 SCS0 00000000 SCS1 00000001 SDA 00000002 SDAHT 00000003 SDI 00000002 SDO1SEL 00000006 SDOSEL 00000006 SEN 00000000 SENDB 00000003 SMP 00000007 SPBRG 0000019B SPBRGH 0000019C SPBRGL 0000019B SPEN 00000007 SPLLEN 00000007 SRCLK0 00000004 SRCLK1 00000005 SRCLK2 00000006 SRCON0 0000011A SRCON1 0000011B SREN 00000005 SRI 00000001 SRLEN 00000007 SRNQ 00000005 SRNQEN 00000002 SRPR 00000000 SRPS 00000001 SRQ 00000002 SRQEN 00000003 SRRC1E 00000000 SRRCKE 00000002 SRRPE 00000003 SRSC1E 00000004 SRSCKE 00000006 SRSPE 00000007 SS1SEL 00000005 SSP1ADD 00000212 SSP1BUF 00000211 SSP1CON1 00000215 SSP1CON2 00000216 SSP1CON3 00000217 SSP1IE 00000003 SSP1IF 00000003 SSP1MSK 00000213 SSP1STAT 00000214 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 145 SYMBOL TABLE LABEL VALUE SSPADD 00000212 SSPBUF 00000211 SSPCON 00000215 SSPCON1 00000215 SSPCON2 00000216 SSPCON3 00000217 SSPEN 00000005 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPMSK 00000213 SSPOV 00000006 SSPSTAT 00000214 SSSEL 00000005 STATUS 00000003 STATUS_SHAD 00000FE4 STKOVF 00000007 STKPTR 00000FED STKUNF 00000006 STR1A 00000000 STR1B 00000001 STR1C 00000002 STR1D 00000003 STR1SYNC 00000004 STROBE_LINES 00000004 SWDTEN 00000000 SYNC 00000004 T0CKI 00000002 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T0XCS 00000000 T1CKI 00000005 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000018 T1GCON 00000019 T1GGO 00000003 T1GGO_NOT_DONE 00000003 T1GPOL 00000006 T1GSEL 00000003 T1GSPM 00000004 T1GSS0 00000000 T1GSS1 00000001 T1GTM 00000005 T1GVAL 00000002 T1OSCEN 00000003 T1OSCR 00000007 T1OSI 00000005 T1OSO 00000004 T2CKPS0 00000000 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 146 SYMBOL TABLE LABEL VALUE T2CKPS1 00000001 T2CON 0000001C T2OUTPS0 00000003 T2OUTPS1 00000004 T2OUTPS2 00000005 T2OUTPS3 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 TOSH 00000FEF TOSL 00000FEE TRISA 0000008C TRISA0 00000000 TRISA1 00000001 TRISA2 00000002 TRISA3 00000003 TRISA4 00000004 TRISA5 00000005 TRMT 00000001 TUN0 00000000 TUN1 00000001 TUN2 00000002 TUN3 00000003 TUN4 00000004 TUN5 00000005 TX9 00000006 TX9D 00000000 TXCKSEL 00000002 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 0000019A TXSTA 0000019E UA 00000001 W 00000000 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 147 SYMBOL TABLE LABEL VALUE WCOL 00000007 WDTCON 00000097 WDTPS0 00000001 WDTPS1 00000002 WDTPS2 00000003 WDTPS3 00000004 WDTPS4 00000005 WPUA 0000020C WPUA0 00000000 WPUA1 00000001 WPUA2 00000002 WPUA3 00000003 WPUA4 00000004 WPUA5 00000005 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 _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 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 148 SYMBOL TABLE LABEL VALUE _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 _WDTE_NSLEEP 0000FFF7 _WDTE_OFF 0000FFE7 _WDTE_ON 0000FFFF _WDTE_SWDTEN 0000FFEF _WRT_ALL 0000FFFC _WRT_BOOT 0000FFFE _WRT_HALF 0000FFFD _WRT_OFF 0000FFFF __12F1822 00000001 address 00000036 b2l_in_green 0000004E b2l_in_red 0000004D b2l_lcount 0000004C b2l_loop 00000251 b2l_out_hi 0000004A b2l_out_low 0000004B bin2led 0000024D blinkie_check 00000310 butcount 0000003D button 00000039 button_check 0000032C command 00000035 count1 00000022 count2 00000023 dcycle 00000021 delay 0000025B delay_count 0000004F delay_loop 0000025C delay_loop2 00000211 demo_mode 0000005D demo_store 0000F084 display_1bit 0000036D display_2bit 00000395 display_cycle0 00000047 display_cycle1 0000005C display_cycle2 00000071 display_cycle3 00000086 display_pattern_id 00000289 display_w_2bit 00000396 drive_main_leds 0000002D dupvar end_pattern endpat0 000004C1 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 149 SYMBOL TABLE LABEL VALUE endpat1 000004CA endpat10 000005D9 endpat11 000005EE endpat12 0000F03F endpat13 0000F054 endpat14 0000F069 endpat15 0000F084 endpat2 00000503 endpat3 0000053C endpat4 00000575 endpat5 0000057C endpat6 0000058B endpat7 0000059A endpat8 000005A9 endpat9 000005C0 entry exit_int 00000046 exit_tx 00000044 fcount 00000025 get_next_pattern_entry 000002B1 get_next_tx_bit 00000206 get_state_tbl_hi_address 0000009B get_state_tbl_low_address 000000A1 glabel1 000002B9 go_state_table 000000AF greturn 000002CB gskip 000002CE here 00000004 ibutton 00000412 iloop1 00000425 in0 00000058 in1 00000059 in2 0000005A input 0000007C instate 00000032 itop 00000409 jump_address 0000048A leng 00000008 main 00000441 make_mtab make_state_jump_table max_instate 00000033 mem 00000062 mem2 0000007B mem3 000000A0 mult_nop next_pattern 00000260 nextf 00000020 offset_hi 00000060 offset_low 00000061 out0 00000045 out1 00000046 out2 00000047 MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 150 SYMBOL TABLE LABEL VALUE out3 00000048 out_address 00000041 out_command 00000042 out_pattern 00000044 out_toggle 00000043 p2count 0000005F p2loop 00000368 past_exit 00000272 past_pattern 0000026A pattern 00000056 pattern_driver 00000303 pattern_return 00000346 patternc 00000010 pclath_save 00000054 pindex 0000007E pindex1 0000007D pindex2 0000003B ploop0 0000030E ploop1a 00000331 ploop1down 0000033A ploop1up 00000336 ploop2 0000033E ploop2a 00000351 ploop3 00000351 psize 0000005E pspeed 0000005C ptop 00000303 qcount 00000040 qdelay 00000210 read_button_in 000001F5 read_demo_mode 000002F1 read_eeprom 000002E2 read_ir_in 000001FB remote_check 00000317 repeat 00000024 repeat_loop 00000020 rf_command_out 00000214 scount 00000049 send_nothing 0000002C send_on_off 00000421 send_one 00000018 send_zero 0000002A set_exit 0000027F set_loop 00000278 set_max_state 000001FF set_pattern 00000275 setup_pattern_table 0000029C skip1 00000012 smi_l1 00000205 speed 0000005B sreturn 000002B0 start_pattern state2_tbl MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 151 SYMBOL TABLE LABEL VALUE state_jump_table 000000B3 state_tbl storedata strobe_count 00000050 strobe_delay 00000282 strobe_delay1 00000283 strobe_delay2 00000284 table0 000004AE table1 000004C1 table10 000005C0 table11 000005D9 table12 0000F000 table13 0000F03F table14 0000F054 table15 0000F069 table2 000004CA table3 00000503 table4 0000053C table5 00000575 table6 0000057C table7 0000058B table8 0000059A table9 000005A9 table_lookup 00000483 table_lookup2 000000A8 table_type_1 00000354 table_type_3 0000035E tbl2_hi 0000003E tbl2_low 0000003F tbl_hi 00000051 tbl_low 00000052 tbltype 00000057 tbltype1 tdemo_cont 000002FB tdemo_on 000002FA temp2 00000055 temp_high 00000053 toggle 00000037 toggle_demo 000002F5 tx_1 0000003A var var_all_bank var_bank2 write_eeprom 000002CF MPASM 5.41 GENERIC_2011.ASM 8-4-2011 22:01:51 PAGE 152 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- 8000 : -------XX------- ---------------- ---------------- ---------------- F000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX F040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX F080 : XXXXX----------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 1517 Program Memory Words Free: 531 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 23 suppressed