MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; 00002 ; lcd_video7.asm: JSK 09/12/08 jeff@mightyohm.com http://mightyohm.com 00003 ; 00004 ; Generates an RGB Video Signal (noninterlaced) using PIC16F628 @ 20MHz 00005 ; CSYNC->RA0, RED->RB0, GREEN->RB1, BLUE->RB2 00006 ; External resistors needed to drop RGB voltages to 0.7Vpp 00007 ; horizontal sync is 4us for every 64us line 00008 ; vertical sync is 1 full line out of every 262 lines (once per field) 00009 ; CSYNC is composite sync, carries both sync signals (inverse TTL logic) 00010 ; 00011 ; 00012 ; v1 - display one row (12 pixels) broken implementation of image table 00013 ; v2 - image table fixed, code needs to be optimized 00014 ; v3 - added multiple rows of pixels 00015 ; v4 - added 2nd image and routine to alternate between them every FIELDSPERIMG fi elds 00016 ; v5 - added more images and routine to rotate between them 00017 ; v6 - changed image selection routine to alternate between two images every FIELD SPERIMG 00018 ; fields, and change images every IMGREPEAT cycles 00019 ; v7 - cleaned up code, added more comments and better variable names 00020 ; 00021 ; Note: PC clock is xtal/4 so for 20MHz clock that gives 5 instr/us (or 0.2us/inst r) 00022 ; 00023 00024 ; Includes 00025 LIST R=DEC 00026 ifdef __16F628 00027 INCLUDE "p16f628.inc" 00001 LIST 00002 ; P16F628.INC Standard Header File, Version 1.01 Microchip Technology, Inc. 00261 LIST 00028 endif 00029 00030 ; Special Function Registers 00031 ifdef __16F628 2007 3F62 00032 __CONFIG _CP_OFF & _DATA_CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON & _LVP_OFF & _MCLRE_ON & _BODEN _ON 00033 endif 00034 00035 ; Variables 00036 CBLOCK 0x070 ; start of general purpose registers (16 bytes) 00037 ; 0x070 is special because it can be accessed from any bank 00000070 00038 i, linecount, blankcnt, Dlay, pxline_cnt, imageoffset, tableindex:2, array_offset, fieldctr, imagecnt, a lienstate, flag 00039 ENDC 00040 00000020 00041 Image EQU 0x020 ; Here is where we store the currently displayed image 00042 ; 80 bytes of data memory in bank 0 00043 00044 ; Macros MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00045 wait1us MACRO ; wait 1us (5 instructions at 20MHz) 00046 goto $+1 ; 0.4us (2 instr) 00047 goto $+1 ; 0.4us (2 instr) 00048 nop ; 0.2us (1 instr) 00049 ENDM 00050 00051 dnop MACRO ; equivalent of two nop's 00052 goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00053 ENDM 00054 00055 blankline MACRO ; Blank line, has HSYNC but no video data 00056 bcf PORTA, CSYNC ; Start of sync pulse 00057 dnop 00058 dnop ; delay=1us 00059 wait1us ; 2us 00060 wait1us ; 3us 00061 wait1us ; 4us 00062 bsf PORTA, CSYNC ; sync pulse end, now wait 60us (295 instr) 00063 movlw 0x3B ; load delay into w 00064 call Delay ; 00065 ENDM 00066 00067 ; Definess 00068 #define CSYNC 0 ; PORTA bit 0 00069 #define RED 0 ; PORTB bit 0 00070 #define GREEN 1 ; PORTB bit 1 00071 #define BLUE 2 ; PORTB bit 2 00072 00073 #define VISLINES 0xF3-3 ; Visible lines (243 - 3) throw away 3 lines so 240/8 is an integer 00074 #define BLANKLINES 0x11 ; Blanking interval (17 lines) 00075 #define PIXELS 0x0C ; Pixels per line (8) 00076 #define PXLINES 0x1E ; Lines per pixel (30) 00077 00078 #define FIELDSPERIMG 0x1F ; Fields per image, controls speed of animation 00079 #define IMGREPEAT 0x09 ; Number of times to repeat an image before moving to th e next one 00080 #define STATES 0x03 ; Number of states for the alien selection state machine 00081 00082 ; Set program origin at base of program memory 0000 00083 org 0x00 00084 0000 00085 Init ; Set up hardware and initialize variables, etc. 0000 0185 00086 clrf PORTA ; Clear PORTA (set all outputs low) 0001 0186 00087 clrf PORTB ; Clear PORTB 0002 3007 00088 movlw 0x07 ; CM[2:0] = 111 (disabled) 0003 009F 00089 movwf CMCON ; Disable comparator so we can use RA0 as an out put 00090 00091 ; While in bank1, (REGISTER^0x80) gets rid of annoying warning message about banks in MPLAB 0004 1683 00092 bsf STATUS, RP0 ; Change to bank 1 0005 1381 00093 bcf (OPTION_REG^0x80), 7 ; Enable PORTB pullups 0006 1005 00094 bcf (TRISA^0x80), CSYNC ; Set CSYNC to output MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0007 30F8 00095 movlw 0xF8 ; Set RB0-RB2 to output (RGB) 0008 0086 00096 movwf (TRISB^0x80) 0009 1283 00097 bcf STATUS, RP0 ; Back to bank 0 00098 00099 ; Initialize variables 000A 30F0 00100 movlw VISLINES 000B 00F1 00101 movwf linecount ; start linecounter at top of visible image 00102 000C 3006 00103 movlw PIXELS/2 ; Pixels are read two at a time (one nibble per pixel) 000D 00F0 00104 movwf i ; Counter for reading image table into m emory 00105 000E 301E 00106 movlw PXLINES ; # of lines each pixel lasts for 000F 00F4 00107 movwf pxline_cnt ; counter to keep track of those lines 00108 0010 01F5 00109 clrf imageoffset ; imageoffset allows us to select which image to load into memory 00110 ; and is relative to the base ad dress of the first image lookup table 00111 ; Only 8 bits - limits how far w e can jump in the LUT 00112 0011 301F 00113 movlw FIELDSPERIMG 0012 00F9 00114 movwf fieldctr ; Set field counter, determines interval between images 00115 0013 3009 00116 movlw IMGREPEAT 0014 00FA 00117 movwf imagecnt ; Set image counter, how many frames should each alien be displayed 00118 0015 01FC 00119 clrf flag ; Flag to display frame 1 or 2 of each alien ani mation 0016 01FB 00120 clrf alienstate ; Number of alien to display, 0-2 00121 00122 ; Begin main program loop 00123 ; Starting here, every instruction matters if we expect to maintain video timings across field 0017 00124 vsync ; Vertical Sync - Hold CSYNC low for a full line (64us) 0017 1005 00125 bcf PORTA, CSYNC 0018 303D 00126 movlw 0x3D ; 62us delay + 2us at end for instructions = 64u s 0019 210A 00127 call Delay ; Delay takes value in 'w' and delays 5*(w-1)-10 instructions 00128 00129 ; Get ready to load image to display into memory 001A 3020 00130 movlw Image ; load address of image array 001B 0084 00131 movwf FSR ; set pointer to image array 00132 001C 0875 00133 movf imageoffset, w ; Preload table offset for desired image 001D 00F6 00134 movwf tableindex 001E 01F7 00135 clrf tableindex + 1 ; At present imageoffset is only 1 byte wide 00136 001F 01F8 00137 clrf array_offset ; offset into image array in data memory MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00138 0020 3011 00139 movlw BLANKLINES ; initialize blanking interval counter 0021 00F2 00140 movwf blankcnt 00141 dnop 0022 2823 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00142 0023 00143 blankint ; Blanking interval (17 lines), has HSYNC but no video data 0023 1005 00144 bcf PORTA, CSYNC ; Start of sync pulse 00145 dnop 0024 2825 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00146 dnop ; delay=1us 0025 2826 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00147 wait1us ; 2us 0026 2827 M goto $+1 ; 0.4us (2 instr) 0027 2828 M goto $+1 ; 0.4us (2 instr) 0028 0000 M nop ; 0.2us (1 instr) 00148 wait1us ; 3us 0029 282A M goto $+1 ; 0.4us (2 instr) 002A 282B M goto $+1 ; 0.4us (2 instr) 002B 0000 M nop ; 0.2us (1 instr) 00149 wait1us ; 4us 002C 282D M goto $+1 ; 0.4us (2 instr) 002D 282E M goto $+1 ; 0.4us (2 instr) 002E 0000 M nop ; 0.2us (1 instr) 002F 1405 00150 bsf PORTA, CSYNC ; end of HSYNC 00151 0030 301B 00152 movlw 0x1B ; any unused instruction cycles get taken care o f here 0031 210A 00153 call Delay 00154 dnop 0032 2833 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00155 dnop 0033 2834 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 0034 0000 00156 nop 0035 00157 tableread ; Reads a line from ImageTable, stores into memory starting at addr 'Image' 0035 3006 00158 movlw PIXELS/2 ; we read 2 pixels at a time from the table 0036 00F0 00159 movwf i ; counter for table read 0037 00160 tableloop 0037 2400 00161 call ImageTable ; table lookup routine 0038 0080 00162 movwf INDF ; store result in data memory so we can access i t quickly later 0039 0A84 00163 incf FSR, f ; move to next location in data memory 003A 0AF6 00164 incf tableindex, f ; move to next location in table 003B 1903 00165 btfsc STATUS, Z ; if tableindex=0 after incf we need to incremen t the high byte 003C 0AF7 00166 incf tableindex + 1, f 003D 3AFF 00167 xorlw 0xFF ; xor=0 only if table returned 0xFF (signals end of image) 003E 1903 00168 btfsc STATUS, Z 003F 2905 00169 goto table_exit ; we're done, stop (scroll way down to see the c ode for this) 0040 0000 00170 nop 0041 0BF0 00171 decfsz i, f ; when i=0 we have read a full line of pixels MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0042 2837 00172 goto tableloop 0043 0000 00173 nop 00174 0044 00175 blanking_reentry ; if table read 0xFF we jump away to kill time and come back here 0044 0BF2 00176 decfsz blankcnt, f 0045 2823 00177 goto blankint ; write another blank line 0046 018A 00178 clrf PCLATH ; 1 spare instruction on loop exit 00179 0047 00180 hsync_loop 0047 1005 00181 bcf PORTA, CSYNC ; Start of sync pulse 00182 dnop 0048 2849 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00183 dnop ; delay=1us 0049 284A M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00184 wait1us ; 2us 004A 284B M goto $+1 ; 0.4us (2 instr) 004B 284C M goto $+1 ; 0.4us (2 instr) 004C 0000 M nop ; 0.2us (1 instr) 00185 wait1us ; 3us 004D 284E M goto $+1 ; 0.4us (2 instr) 004E 284F M goto $+1 ; 0.4us (2 instr) 004F 0000 M nop ; 0.2us (1 instr) 00186 wait1us ; 4us 0050 2851 M goto $+1 ; 0.4us (2 instr) 0051 2852 M goto $+1 ; 0.4us (2 instr) 0052 0000 M nop ; 0.2us (1 instr) 0053 1405 00187 bsf PORTA, CSYNC ; sync pulse end, we have 8us to do stuff before visible part of line 0054 3005 00188 movlw 0x05 ; chew up any leftover instruction cycles here 0055 210A 00189 call Delay 00190 0056 3006 00191 movlw PIXELS/2 ; each byte contains two pixels 0057 00F0 00192 movwf i ; counter for pixel pairs on each line 00193 dnop 0058 2859 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00194 dnop 0059 285A M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00195 005A 3020 00196 movlw Image ; starting address of image data 005B 0778 00197 addwf array_offset, w ; offset into array for desired line 005C 0084 00198 movwf FSR ; set pointer to image 005D 0E00 00199 swapf INDF, w ; swap nibbles so we display high nibble first 00200 005E 00201 visible 005E 0086 00202 movwf PORTB ; BEGIN VISIBLE LINE 005F 0800 00203 movf INDF, w ; move unswapped byte to w so we can show other pixel 0060 0A84 00204 incf FSR, f ; get ready for next pair of pixels 00205 dnop 0061 2862 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00206 wait1us ; if we wanted higher resolution we'd ge t rid of these waits 0062 2863 M goto $+1 ; 0.4us (2 instr) MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0063 2864 M goto $+1 ; 0.4us (2 instr) 0064 0000 M nop ; 0.2us (1 instr) 00207 wait1us ; but then we'd run out of data memory p retty fast 0065 2866 M goto $+1 ; 0.4us (2 instr) 0066 2867 M goto $+1 ; 0.4us (2 instr) 0067 0000 M nop ; 0.2us (1 instr) 00208 wait1us 0068 2869 M goto $+1 ; 0.4us (2 instr) 0069 286A M goto $+1 ; 0.4us (2 instr) 006A 0000 M nop ; 0.2us (1 instr) 006B 0086 00209 movwf PORTB ; display other pixel in the pair (low nibble) 00210 wait1us 006C 286D M goto $+1 ; 0.4us (2 instr) 006D 286E M goto $+1 ; 0.4us (2 instr) 006E 0000 M nop ; 0.2us (1 instr) 00211 wait1us 006F 2870 M goto $+1 ; 0.4us (2 instr) 0070 2871 M goto $+1 ; 0.4us (2 instr) 0071 0000 M nop ; 0.2us (1 instr) 00212 wait1us 0072 2873 M goto $+1 ; 0.4us (2 instr) 0073 2874 M goto $+1 ; 0.4us (2 instr) 0074 0000 M nop ; 0.2us (1 instr) 0075 0E00 00213 swapf INDF, w ; get ready for first pixel on next line 0076 0BF0 00214 decfsz i, f 0077 285E 00215 goto visible 00216 wait1us 0078 2879 M goto $+1 ; 0.4us (2 instr) 0079 287A M goto $+1 ; 0.4us (2 instr) 007A 0000 M nop ; 0.2us (1 instr) 00217 dnop 007B 287C M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00218 00219 ; The next 16 lines have to do with the fact that we need a pixel to last more than 1 line in th e picture 00220 ; there is probably a better way to do this with fewer instructions. 007C 3006 00221 movlw PIXELS/2 ; preload array offset 007D 0BF4 00222 decfsz pxline_cnt, f ; if counter=0 it's time to increment array offset for n ext line 007E 2880 00223 goto $+2 007F 07F8 00224 addwf array_offset, f 00225 0080 0186 00226 clrf PORTB ; END VISIBLE LINE 00227 ; We have 2us from here to begin ning of scanline 00228 dnop 0081 2882 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 0082 301E 00229 movlw PXLINES ; if the pxline counter hits zero we need to res et it 0083 08F4 00230 movf pxline_cnt, f ; wish I could find a way to do this in less instruction s 0084 1903 00231 btfsc STATUS, Z MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0085 00F4 00232 movwf pxline_cnt ; if counter=0, reset it 00233 0086 0BF1 00234 decfsz linecount, f ; check if we have more visible lines to display 0087 2847 00235 goto hsync_loop ; we're not done with the field, go back and do another line 0088 0000 00236 nop 00237 00238 blankline ; 243/8 has remainder 3, so we need 3 blank lines here + final blank before VSYN C 0089 1005 M bcf PORTA, CSYNC ; Start of sync pulse M dnop 008A 288B M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles M dnop ; delay=1us 008B 288C M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles M wait1us ; 2us 008C 288D M goto $+1 ; 0.4us (2 instr) 008D 288E M goto $+1 ; 0.4us (2 instr) 008E 0000 M nop ; 0.2us (1 instr) M wait1us ; 3us 008F 2890 M goto $+1 ; 0.4us (2 instr) 0090 2891 M goto $+1 ; 0.4us (2 instr) 0091 0000 M nop ; 0.2us (1 instr) M wait1us ; 4us 0092 2893 M goto $+1 ; 0.4us (2 instr) 0093 2894 M goto $+1 ; 0.4us (2 instr) 0094 0000 M nop ; 0.2us (1 instr) 0095 1405 M bsf PORTA, CSYNC ; sync pulse end, now wait 60us (295 instr) 0096 303B M movlw 0x3B ; load delay into w 0097 210A M call Delay ; 00239 blankline 0098 1005 M bcf PORTA, CSYNC ; Start of sync pulse M dnop 0099 289A M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles M dnop ; delay=1us 009A 289B M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles M wait1us ; 2us 009B 289C M goto $+1 ; 0.4us (2 instr) 009C 289D M goto $+1 ; 0.4us (2 instr) 009D 0000 M nop ; 0.2us (1 instr) M wait1us ; 3us 009E 289F M goto $+1 ; 0.4us (2 instr) 009F 28A0 M goto $+1 ; 0.4us (2 instr) 00A0 0000 M nop ; 0.2us (1 instr) M wait1us ; 4us 00A1 28A2 M goto $+1 ; 0.4us (2 instr) 00A2 28A3 M goto $+1 ; 0.4us (2 instr) 00A3 0000 M nop ; 0.2us (1 instr) 00A4 1405 M bsf PORTA, CSYNC ; sync pulse end, now wait 60us (295 instr) 00A5 303B M movlw 0x3B ; load delay into w 00A6 210A M call Delay ; 00240 blankline 00A7 1005 M bcf PORTA, CSYNC ; Start of sync pulse M dnop MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00A8 28A9 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles M dnop ; delay=1us 00A9 28AA M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles M wait1us ; 2us 00AA 28AB M goto $+1 ; 0.4us (2 instr) 00AB 28AC M goto $+1 ; 0.4us (2 instr) 00AC 0000 M nop ; 0.2us (1 instr) M wait1us ; 3us 00AD 28AE M goto $+1 ; 0.4us (2 instr) 00AE 28AF M goto $+1 ; 0.4us (2 instr) 00AF 0000 M nop ; 0.2us (1 instr) M wait1us ; 4us 00B0 28B1 M goto $+1 ; 0.4us (2 instr) 00B1 28B2 M goto $+1 ; 0.4us (2 instr) 00B2 0000 M nop ; 0.2us (1 instr) 00B3 1405 M bsf PORTA, CSYNC ; sync pulse end, now wait 60us (295 instr) 00B4 303B M movlw 0x3B ; load delay into w 00B5 210A M call Delay ; 00241 00242 ; Blank line, has HSYNC but no video data, a little short to allow time for loop return 00B6 1005 00243 bcf PORTA, CSYNC ; Start of sync pulse 00244 dnop 00B7 28B8 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00245 dnop ; delay=1us 00B8 28B9 M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00246 wait1us ; 2us 00B9 28BA M goto $+1 ; 0.4us (2 instr) 00BA 28BB M goto $+1 ; 0.4us (2 instr) 00BB 0000 M nop ; 0.2us (1 instr) 00247 wait1us ; 3us 00BC 28BD M goto $+1 ; 0.4us (2 instr) 00BD 28BE M goto $+1 ; 0.4us (2 instr) 00BE 0000 M nop ; 0.2us (1 instr) 00248 wait1us ; 4us 00BF 28C0 M goto $+1 ; 0.4us (2 instr) 00C0 28C1 M goto $+1 ; 0.4us (2 instr) 00C1 0000 M nop ; 0.2us (1 instr) 00C2 1405 00249 bsf PORTA, CSYNC ; HSYNC pulse end 00C3 3034 00250 movlw 0x34 ; load delay into w 00C4 210A 00251 call Delay 00C5 30F0 00252 movlw VISLINES 00C6 00F1 00253 movwf linecount 00C7 0000 00254 nop 00255 00C8 0BF9 00256 decfsz fieldctr, f ; test is fieldctr=0, if so it's time to change images 00C9 28CB 00257 goto $+2 00CA 28DC 00258 goto chooseimage 00259 00260 wait1us ; We didn't choose a new image so we hav e a bunch of leftover instructions to kill 00CB 28CC M goto $+1 ; 0.4us (2 instr) 00CC 28CD M goto $+1 ; 0.4us (2 instr) 00CD 0000 M nop ; 0.2us (1 instr) MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00261 wait1us 00CE 28CF M goto $+1 ; 0.4us (2 instr) 00CF 28D0 M goto $+1 ; 0.4us (2 instr) 00D0 0000 M nop ; 0.2us (1 instr) 00262 wait1us 00D1 28D2 M goto $+1 ; 0.4us (2 instr) 00D2 28D3 M goto $+1 ; 0.4us (2 instr) 00D3 0000 M nop ; 0.2us (1 instr) 00263 wait1us 00D4 28D5 M goto $+1 ; 0.4us (2 instr) 00D5 28D6 M goto $+1 ; 0.4us (2 instr) 00D6 0000 M nop ; 0.2us (1 instr) 00264 wait1us 00D7 28D8 M goto $+1 ; 0.4us (2 instr) 00D8 28D9 M goto $+1 ; 0.4us (2 instr) 00D9 0000 M nop ; 0.2us (1 instr) 00265 dnop 00DA 28DB M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00266 00DB 2817 00267 goto vsync ; END OF FIELD, time to vsync and start over aga in 00268 00269 ; END OF MAIN PROGRAM 00270 00271 ; Subroutines 00DC 00272 chooseimage ; State machine and some counters determine what should be displayed in a given field 00273 ; This code only gets executed every FIELDSPERIMG fields (slowly compared to the main program loop) 00274 00DC 0BFA 00275 decfsz imagecnt, f ; We change the displayed alien when imagecnt hi ts zero 00DD 28DF 00276 goto $+2 00DE 0AFB 00277 incf alienstate, f 00278 00DF 3003 00279 movlw STATES ; If present state is higher than number of vali d states then reset it 00E0 067B 00280 xorwf alienstate, w ; if this returns zero it's time for a reset 00E1 1903 00281 btfsc STATUS, Z 00E2 01FB 00282 clrf alienstate 00283 00E3 3009 00284 movlw IMGREPEAT ; The image counter keeps track of how long a pa rticular alien should be displayed 00E4 08FA 00285 movf imagecnt, f 00E5 1903 00286 btfsc STATUS, Z ; if it's zero, reset it 00E6 00FA 00287 movwf imagecnt 00288 00289 ; movlw FIELDSPERIMG 00290 ; movf fieldctr, f 00291 ; btfsc STATUS, Z 00292 ; movwf fieldctr ; if fieldctr=0, reset it 00293 00E7 301F 00294 movlw FIELDSPERIMG ; we got here, so it must be time to reset the field cou nter MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00E8 00F9 00295 movwf fieldctr 00296 dnop 00E9 28EA M goto $+1 ; only one instruction, does nothing, takes 2 instr cycles 00EA 0000 00297 nop 00298 00EB 087B 00299 movf alienstate, w ; alien selection state machine 00EC 0782 00300 addwf PCL, f 00ED 28F0 00301 goto Alien1 00EE 28F7 00302 goto Alien2 00EF 28FE 00303 goto Alien3 00304 00F0 00305 Alien1 00F0 3000 00306 movlw Image1-Image1 ; compute table offset for 1st image 00F1 00F5 00307 movwf imageoffset ; preload imageoffset with first image 00F2 3031 00308 movlw Image2-Image1 ; computer table offset for 2nd image 00F3 187C 00309 btfsc flag, 0 ; if we showed image 1 last time 00F4 00F5 00310 movwf imageoffset ; load image 2 offset instead 00F5 09FC 00311 comf flag, f ; invert the flag so next time we show the oppos ite image 00312 00F6 2817 00313 goto vsync ; we're done with the field, start the n ext field with a new image 00314 00F7 00315 Alien2 00F7 3062 00316 movlw Image3-Image1 ; see Alien1 for comments 00F8 00F5 00317 movwf imageoffset 00F9 3093 00318 movlw Image4-Image1 00FA 187C 00319 btfsc flag, 0 00FB 00F5 00320 movwf imageoffset 00FC 09FC 00321 comf flag, f 00322 00FD 2817 00323 goto vsync 00324 00FE 00325 Alien3 00FE 30C4 00326 movlw Image5-Image1 ; see Alien1 for comments 00FF 00F5 00327 movwf imageoffset 0100 30F5 00328 movlw Image6-Image1 0101 187C 00329 btfsc flag, 0 0102 00F5 00330 movwf imageoffset 0103 09FC 00331 comf flag, f 00332 0104 2817 00333 goto vsync 00334 0105 00335 table_exit ; exit routine for table if 0xFF was read (signals table end) 0105 0384 00336 decf FSR, f ; this keeps us from overwriting extra memory 0106 03F6 00337 decf tableindex, f 00338 0107 3018 00339 movlw 0x18 ; kill some cycles so each blank line always tak es the same time 0108 210A 00340 call Delay 0109 2844 00341 goto blanking_reentry ; go back to finish blanking interval 00342 010A 00343 Delay ; Delays 5*(w-1)+10 cycles including prev inst, function call, and movlw in main loop MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 010A 00F3 00344 movwf Dlay ; (1) 010B 0000 00345 nop 010C 00346 Back 010C 0BF3 00347 decfsz Dlay, f ; (1 or 2) normal loop takes 5 clocks to get back here 010D 290F 00348 goto Bounce ; (2) 010E 0008 00349 return ; (2) END OF FUNCTION 010F 00350 Bounce 010F 290C 00351 goto Back ; (2) we kill 4 clocks by jumping and returning 00352 00353 00354 ; IMAGE DATA 00355 ; Store image to display at base of 2nd block of program memory 0400 00356 org 0x0400 00357 0400 00358 ImageTable ;Image stored as two pixels per byte, in reverse order (low nibble of each byte comes fi rst) 0400 3004 00359 movlw HIGH Image1 0401 0777 00360 addwf tableindex + 1, w 0402 008A 00361 movwf PCLATH 0403 3008 00362 movlw Image1 & 0x0FF 0404 0776 00363 addwf tableindex, w 0405 1803 00364 btfsc STATUS, C 0406 0A8A 00365 incf PCLATH, f 0407 0082 00366 movwf PCL ; this modifies PCL so takes 2 instructions!! 00367 0408 00368 Image1 00369 ; Begin Alien1 Closed Image 0408 3400 00370 retlw 0x00 0409 3400 00371 retlw 0x00 040A 3411 00372 retlw 0x11 040B 3411 00373 retlw 0x11 040C 3400 00374 retlw 0x00 040D 3400 00375 retlw 0x00 00376 040E 3401 00377 retlw 0x01 040F 3411 00378 retlw 0x11 0410 3411 00379 retlw 0x11 0411 3411 00380 retlw 0x11 0412 3411 00381 retlw 0x11 0413 3410 00382 retlw 0x10 00383 0414 3411 00384 retlw 0x11 0415 3411 00385 retlw 0x11 0416 3411 00386 retlw 0x11 0417 3411 00387 retlw 0x11 0418 3411 00388 retlw 0x11 0419 3411 00389 retlw 0x11 00390 041A 3411 00391 retlw 0x11 041B 3410 00392 retlw 0x10 041C 3401 00393 retlw 0x01 041D 3410 00394 retlw 0x10 041E 3401 00395 retlw 0x01 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 041F 3411 00396 retlw 0x11 00397 0420 3411 00398 retlw 0x11 0421 3411 00399 retlw 0x11 0422 3411 00400 retlw 0x11 0423 3411 00401 retlw 0x11 0424 3411 00402 retlw 0x11 0425 3411 00403 retlw 0x11 00404 0426 3400 00405 retlw 0x00 0427 3411 00406 retlw 0x11 0428 3410 00407 retlw 0x10 0429 3401 00408 retlw 0x01 042A 3411 00409 retlw 0x11 042B 3400 00410 retlw 0x00 00411 042C 3401 00412 retlw 0x01 042D 3410 00413 retlw 0x10 042E 3401 00414 retlw 0x01 042F 3410 00415 retlw 0x10 0430 3401 00416 retlw 0x01 0431 3410 00417 retlw 0x10 00418 0432 3400 00419 retlw 0x00 0433 3411 00420 retlw 0x11 0434 3400 00421 retlw 0x00 0435 3400 00422 retlw 0x00 0436 3411 00423 retlw 0x11 0437 3400 00424 retlw 0x00 0438 34FF 00425 retlw 0xFF ; end of image 0439 00426 Image2 00427 ; Begin Alien1 Open Image 0439 3400 00428 retlw 0x00 043A 3400 00429 retlw 0x00 043B 3411 00430 retlw 0x11 043C 3411 00431 retlw 0x11 043D 3400 00432 retlw 0x00 043E 3400 00433 retlw 0x00 00434 043F 3401 00435 retlw 0x01 0440 3411 00436 retlw 0x11 0441 3411 00437 retlw 0x11 0442 3411 00438 retlw 0x11 0443 3411 00439 retlw 0x11 0444 3410 00440 retlw 0x10 00441 0445 3411 00442 retlw 0x11 0446 3411 00443 retlw 0x11 0447 3411 00444 retlw 0x11 0448 3411 00445 retlw 0x11 0449 3411 00446 retlw 0x11 044A 3411 00447 retlw 0x11 00448 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 044B 3411 00449 retlw 0x11 044C 3410 00450 retlw 0x10 044D 3401 00451 retlw 0x01 044E 3410 00452 retlw 0x10 044F 3401 00453 retlw 0x01 0450 3411 00454 retlw 0x11 00455 0451 3411 00456 retlw 0x11 0452 3411 00457 retlw 0x11 0453 3411 00458 retlw 0x11 0454 3411 00459 retlw 0x11 0455 3411 00460 retlw 0x11 0456 3411 00461 retlw 0x11 00462 0457 3400 00463 retlw 0x00 0458 3401 00464 retlw 0x01 0459 3410 00465 retlw 0x10 045A 3401 00466 retlw 0x01 045B 3410 00467 retlw 0x10 045C 3400 00468 retlw 0x00 00469 045D 3400 00470 retlw 0x00 045E 3411 00471 retlw 0x11 045F 3401 00472 retlw 0x01 0460 3410 00473 retlw 0x10 0461 3411 00474 retlw 0x11 0462 3400 00475 retlw 0x00 00476 0463 3411 00477 retlw 0x11 0464 3400 00478 retlw 0x00 0465 3400 00479 retlw 0x00 0466 3400 00480 retlw 0x00 0467 3400 00481 retlw 0x00 0468 3411 00482 retlw 0x11 0469 34FF 00483 retlw 0xFF ; Signals end of image 046A 00484 Image3 00485 ; Begin Alien2 Closed Image 046A 3400 00486 retlw 0x00 046B 3420 00487 retlw 0x20 046C 3400 00488 retlw 0x00 046D 3400 00489 retlw 0x00 046E 3420 00490 retlw 0x20 046F 3400 00491 retlw 0x00 00492 0470 3400 00493 retlw 0x00 0471 3402 00494 retlw 0x02 0472 3400 00495 retlw 0x00 0473 3402 00496 retlw 0x02 0474 3400 00497 retlw 0x00 0475 3400 00498 retlw 0x00 00499 0476 3400 00500 retlw 0x00 0477 3422 00501 retlw 0x22 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0478 3422 00502 retlw 0x22 0479 3422 00503 retlw 0x22 047A 3420 00504 retlw 0x20 047B 3400 00505 retlw 0x00 00506 047C 3402 00507 retlw 0x02 047D 3420 00508 retlw 0x20 047E 3422 00509 retlw 0x22 047F 3420 00510 retlw 0x20 0480 3422 00511 retlw 0x22 0481 3400 00512 retlw 0x00 00513 0482 3422 00514 retlw 0x22 0483 3422 00515 retlw 0x22 0484 3422 00516 retlw 0x22 0485 3422 00517 retlw 0x22 0486 3422 00518 retlw 0x22 0487 3420 00519 retlw 0x20 00520 0488 3420 00521 retlw 0x20 0489 3422 00522 retlw 0x22 048A 3422 00523 retlw 0x22 048B 3422 00524 retlw 0x22 048C 3420 00525 retlw 0x20 048D 3420 00526 retlw 0x20 00527 048E 3420 00528 retlw 0x20 048F 3420 00529 retlw 0x20 0490 3400 00530 retlw 0x00 0491 3400 00531 retlw 0x00 0492 3420 00532 retlw 0x20 0493 3420 00533 retlw 0x20 00534 0494 3400 00535 retlw 0x00 0495 3402 00536 retlw 0x02 0496 3420 00537 retlw 0x20 0497 3422 00538 retlw 0x22 0498 3400 00539 retlw 0x00 0499 3400 00540 retlw 0x00 049A 34FF 00541 retlw 0xFF ; Signals end of image 049B 00542 Image4 00543 ; Begin Alien2 Open Image 049B 3400 00544 retlw 0x00 049C 3420 00545 retlw 0x20 049D 3400 00546 retlw 0x00 049E 3400 00547 retlw 0x00 049F 3420 00548 retlw 0x20 04A0 3400 00549 retlw 0x00 00550 04A1 3420 00551 retlw 0x20 04A2 3402 00552 retlw 0x02 04A3 3400 00553 retlw 0x00 04A4 3402 00554 retlw 0x02 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04A5 3400 00555 retlw 0x00 04A6 3420 00556 retlw 0x20 00557 04A7 3420 00558 retlw 0x20 04A8 3422 00559 retlw 0x22 04A9 3422 00560 retlw 0x22 04AA 3422 00561 retlw 0x22 04AB 3420 00562 retlw 0x20 04AC 3420 00563 retlw 0x20 00564 04AD 3422 00565 retlw 0x22 04AE 3420 00566 retlw 0x20 04AF 3422 00567 retlw 0x22 04B0 3420 00568 retlw 0x20 04B1 3422 00569 retlw 0x22 04B2 3420 00570 retlw 0x20 00571 04B3 3422 00572 retlw 0x22 04B4 3422 00573 retlw 0x22 04B5 3422 00574 retlw 0x22 04B6 3422 00575 retlw 0x22 04B7 3422 00576 retlw 0x22 04B8 3420 00577 retlw 0x20 00578 04B9 3402 00579 retlw 0x02 04BA 3422 00580 retlw 0x22 04BB 3422 00581 retlw 0x22 04BC 3422 00582 retlw 0x22 04BD 3420 00583 retlw 0x20 04BE 3400 00584 retlw 0x00 00585 04BF 3400 00586 retlw 0x00 04C0 3420 00587 retlw 0x20 04C1 3400 00588 retlw 0x00 04C2 3400 00589 retlw 0x00 04C3 3420 00590 retlw 0x20 04C4 3400 00591 retlw 0x00 00592 04C5 3402 00593 retlw 0x02 04C6 3400 00594 retlw 0x00 04C7 3400 00595 retlw 0x00 04C8 3400 00596 retlw 0x00 04C9 3402 00597 retlw 0x02 04CA 3400 00598 retlw 0x00 04CB 34FF 00599 retlw 0xFF ; Signals end of image 04CC 00600 Image5 00601 ; Begin Alien3 Closed Image 04CC 3400 00602 retlw 0x00 04CD 3400 00603 retlw 0x00 04CE 3404 00604 retlw 0x04 04CF 3440 00605 retlw 0x40 04D0 3400 00606 retlw 0x00 04D1 3400 00607 retlw 0x00 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00608 04D2 3400 00609 retlw 0x00 04D3 3400 00610 retlw 0x00 04D4 3444 00611 retlw 0x44 04D5 3444 00612 retlw 0x44 04D6 3400 00613 retlw 0x00 04D7 3400 00614 retlw 0x00 00615 04D8 3400 00616 retlw 0x00 04D9 3404 00617 retlw 0x04 04DA 3444 00618 retlw 0x44 04DB 3444 00619 retlw 0x44 04DC 3440 00620 retlw 0x40 04DD 3400 00621 retlw 0x00 00622 04DE 3400 00623 retlw 0x00 04DF 3444 00624 retlw 0x44 04E0 3404 00625 retlw 0x04 04E1 3440 00626 retlw 0x40 04E2 3444 00627 retlw 0x44 04E3 3400 00628 retlw 0x00 00629 04E4 3400 00630 retlw 0x00 04E5 3444 00631 retlw 0x44 04E6 3444 00632 retlw 0x44 04E7 3444 00633 retlw 0x44 04E8 3444 00634 retlw 0x44 04E9 3400 00635 retlw 0x00 00636 04EA 3400 00637 retlw 0x00 04EB 3400 00638 retlw 0x00 04EC 3440 00639 retlw 0x40 04ED 3404 00640 retlw 0x04 04EE 3400 00641 retlw 0x00 04EF 3400 00642 retlw 0x00 00643 04F0 3400 00644 retlw 0x00 04F1 3404 00645 retlw 0x04 04F2 3404 00646 retlw 0x04 04F3 3440 00647 retlw 0x40 04F4 3440 00648 retlw 0x40 04F5 3400 00649 retlw 0x00 00650 04F6 3400 00651 retlw 0x00 04F7 3440 00652 retlw 0x40 04F8 3440 00653 retlw 0x40 04F9 3404 00654 retlw 0x04 04FA 3404 00655 retlw 0x04 04FB 3400 00656 retlw 0x00 04FC 34FF 00657 retlw 0xFF ; Signals end of image 04FD 00658 Image6 00659 ; Begin Alien3 Open Image 04FD 3400 00660 retlw 0x00 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04FE 3400 00661 retlw 0x00 04FF 3404 00662 retlw 0x04 0500 3440 00663 retlw 0x40 0501 3400 00664 retlw 0x00 0502 3400 00665 retlw 0x00 00666 0503 3400 00667 retlw 0x00 0504 3400 00668 retlw 0x00 0505 3444 00669 retlw 0x44 0506 3444 00670 retlw 0x44 0507 3400 00671 retlw 0x00 0508 3400 00672 retlw 0x00 00673 0509 3400 00674 retlw 0x00 050A 3404 00675 retlw 0x04 050B 3444 00676 retlw 0x44 050C 3444 00677 retlw 0x44 050D 3440 00678 retlw 0x40 050E 3400 00679 retlw 0x00 00680 050F 3400 00681 retlw 0x00 0510 3444 00682 retlw 0x44 0511 3404 00683 retlw 0x04 0512 3440 00684 retlw 0x40 0513 3444 00685 retlw 0x44 0514 3400 00686 retlw 0x00 00687 0515 3400 00688 retlw 0x00 0516 3444 00689 retlw 0x44 0517 3444 00690 retlw 0x44 0518 3444 00691 retlw 0x44 0519 3444 00692 retlw 0x44 051A 3400 00693 retlw 0x00 00694 051B 3400 00695 retlw 0x00 051C 3404 00696 retlw 0x04 051D 3404 00697 retlw 0x04 051E 3440 00698 retlw 0x40 051F 3440 00699 retlw 0x40 0520 3400 00700 retlw 0x00 00701 0521 3400 00702 retlw 0x00 0522 3440 00703 retlw 0x40 0523 3400 00704 retlw 0x00 0524 3400 00705 retlw 0x00 0525 3404 00706 retlw 0x04 0526 3400 00707 retlw 0x00 00708 0527 3400 00709 retlw 0x00 0528 3404 00710 retlw 0x04 0529 3400 00711 retlw 0x00 052A 3400 00712 retlw 0x00 052B 3440 00713 retlw 0x40 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 052C 3400 00714 retlw 0x00 052D 34FF 00715 retlw 0xFF ; Signals end of image 00716 00717 end MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 19 SYMBOL TABLE LABEL VALUE ADEN 00000003 Alien1 000000F0 Alien2 000000F7 Alien3 000000FE BLANKLINES 0x11 BLUE 2 BRGH 00000002 Back 0000010C Bounce 0000010F C 00000000 C1INV 00000004 C1OUT 00000006 C2INV 00000005 C2OUT 00000007 CCP1CON 00000017 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCPR1H 00000016 CCPR1L 00000015 CIS 00000003 CM0 00000000 CM1 00000001 CM2 00000002 CMCON 0000001F CMIE 00000006 CMIF 00000006 CREN 00000004 CSRC 00000007 CSYNC 0 DC 00000001 Delay 0000010A Dlay 00000073 EEADR 0000009B EECON1 0000009C EECON2 0000009D EEDATA 0000009A EEIE 00000007 EEIF 00000007 F 00000001 FERR 00000002 FIELDSPERIMG 0x1F FSR 00000004 GIE 00000007 GREEN 1 IMGREPEAT 0x09 INDF 00000000 INTCON 0000000B MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 20 SYMBOL TABLE LABEL VALUE INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 Image 00000020 Image1 00000408 Image2 00000439 Image3 0000046A Image4 0000049B Image5 000004CC Image6 000004FD ImageTable 00000400 Init 00000000 NOT_BO 00000000 NOT_BOD 00000000 NOT_BOR 00000000 NOT_PD 00000003 NOT_POR 00000001 NOT_RBPU 00000007 NOT_T1SYNC 00000002 NOT_TO 00000004 OERR 00000001 OPTION_REG 00000081 OSCF 00000003 PCL 00000002 PCLATH 0000000A PCON 0000008E PEIE 00000006 PIE1 0000008C PIR1 0000000C PIXELS 0x0C PORTA 00000005 PORTB 00000006 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PXLINES 0x1E RBIE 00000003 RBIF 00000000 RCIE 00000005 RCIF 00000005 RCREG 0000001A RCSTA 00000018 RD 00000000 RED 0 RP0 00000005 RP1 00000006 RX9 00000006 RX9D 00000000 SPBRG 00000099 SPEN 00000007 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 21 SYMBOL TABLE LABEL VALUE SREN 00000005 STATES 0x03 STATUS 00000003 SYNC 00000004 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1OSCEN 00000003 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 TMR0 00000001 TMR1CS 00000001 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISB 00000086 TRMT 00000001 TX9 00000006 TX9D 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 00000019 TXSTA 00000098 VISLINES 0xF3-3 VR0 00000000 VR1 00000001 VR2 00000002 VR3 00000003 VRCON 0000009F VREN 00000007 VROE 00000006 VRR 00000005 W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 22 SYMBOL TABLE LABEL VALUE Z 00000002 _BODEN_OFF 00003FBF _BODEN_ON 00003FFF _CP_50 00002BFF _CP_75 000017FF _CP_ALL 000003FF _CP_OFF 00003FFF _DATA_CP_OFF 00003FFF _DATA_CP_ON 00003EFF _ER_OSC_CLKOUT 00003FFF _ER_OSC_NOCLKOUT 00003FFE _EXTCLK_OSC 00003FEF _HS_OSC 00003FEE _INTRC_OSC_CLKOUT 00003FFD _INTRC_OSC_NOCLKOUT 00003FFC _LP_OSC 00003FEC _LVP_OFF 00003F7F _LVP_ON 00003FFF _MCLRE_OFF 00003FDF _MCLRE_ON 00003FFF _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FED __16F628 00000001 __DEBUG 1 alienstate 0000007B array_offset 00000078 blankcnt 00000072 blanking_reentry 00000044 blankint 00000023 blankline chooseimage 000000DC dnop fieldctr 00000079 flag 0000007C hsync_loop 00000047 i 00000070 imagecnt 0000007A imageoffset 00000075 linecount 00000071 pxline_cnt 00000074 table_exit 00000105 tableindex 00000076 tableloop 00000037 tableread 00000035 visible 0000005E vsync 00000017 wait1us MPASM 5.20 LCD_VIDEO7.ASM 9-12-2008 15:05:00 PAGE 23 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX ---------------- ---------------- ---------------- 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 574 Program Memory Words Free: 1474 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 0 suppressed