; values in CAPS, self defined pointers and labels not, ; optimize for size rather than speed radix dec processor pic16f627 list n=0,st=off,mm=on #include "p16f627.inc" ; initialize some preprocessor symbols CONFIG_WORD = 0x3fff OPTION_REG_CONFIG = 0 ; set config word CONFIG_WORD &= _CP_OFF & _DATA_CP_OFF ; turn all code protection off CONFIG_WORD &= _LVP_OFF ; disable Low Voltage Programming CONFIG_WORD &= _BODEN_ON ; enable Brown-out Detect Reset CONFIG_WORD &= _MCLRE_ON ; enable reset pin CONFIG_WORD &= _PWRTE_ON ; enable power on timer CONFIG_WORD &= _WDT_OFF ; disable Watchdog Timer CONFIG_WORD &= _INTRC_OSC_NOCLKOUT ; enable internal oscillator __config CONFIG_WORD ; some useful definitions RA0 equ 0 ; RA0 is bit zero in PORTA ; file registers in bank 0,1,2,3 columns equ 0x70 ; amount of columns in eeprom buffer_hi equ 0x71 ; the actual buffer (high bits) buffer_lo equ 0x72 ; the actual buffer (low bits) count0 equ 0x73 ; useful counter for bit unpacking loop outer_delay equ 0x7e ; delay routine inner_delay equ 0x7f ; counters for primitive ; font bitmaps in EEPROM, variable width org 0x2100 start_text ; 0 de b'00111111' de b'01100110' de b'11111100' ; 1 de b'11000000' de b'10001111' de b'11111100' ; 2 de b'00000000' de b'11111000' de b'10000011' ; 3 de b'11000000' de b'00001011' de b'01111100' ; 4 de b'11010000' de b'00000011' de b'00111101' ; 5 de b'11000000' de b'00000111' de b'00111101' ; 6 de b'11010000' de b'00000011' de b'00111000' ; 7 de b'01010101' de b'10000101' de b'00000000' ; 8 de b'00011111' de b'00000010' de b'01000001' ; 9 de b'01000000' de b'01010010' de b'01010101' ; A de b'00011110' de b'11110000' de b'00000010' ; B de b'01001001' de b'01010101' de b'01111001' ; C de b'10000000' de b'01010100' de b'01010101' ; D de b'00001111' de b'11110000' de b'01000001' ; E de b'11010000' de b'00000011' de b'00100000' ; F de b'01011110' de b'00010010' de b'00000000' end_text org 0x0000 reset_vector ; the chip starts executing our code here movlw 1<