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