A Different Approach (317 Words ... without most of Darrel's amazing methods, which means there is room for more codesavings)
[disclaimer] untested [/disclaimer]Code:;@__config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF CMCON=%00000111 DEFINE DEBUG_BAUD 2400 'Debug baud rate DEFINE DEBUGIN_REG PORTB 'Debugin pin port DEFINE DEBUGIN_BIT 0 'Debugin pin bit DEFINE DEBUGIN_MODE 1 'Debugin mode: 0 = True, 1 = Inverted ;DEFINE OSC 4 xB0 var byte ; SERIAL IN IS A BYTE SO MAKE IT A BYTE ;inputData var word ' variable to receive data into ' START OF MAIN PROGRAM ' CMCON = 7 ' RA0-RA3 are digital I/O TRISA = 0 ' PORT A is output TRISB = 1 ' RB0 is Input others output MAIN: DEBUGin [xB0] ;B0 = 100 * B0 ; why do these two lines? B0 is already a Byte so work with Bytes ;Uin = B0 / 207 ; LCDOUT $FE, 1 If xB0 < 21 then LCDOUT "TOO LOW" GOTO OUT ENDIF IF xB0 < 34 then BARGRAPH1 IF xB0 < 42 then BARGRAPH2 IF xB0 < 52 then BARGRAPH3 IF xB0 < 63 then BARGRAPH4 IF xB0 < 73 then BARGRAPH5 IF xB0 < 92 then BARGRAPH6 IF xB0 < 112 then BARGRAPH7 IF xB0 < 131 then BARGRAPH8 LCDOUt $FE, $C0 IF xB0 < 152 then BARGRAPH9 IF xB0 < 170 then BARGRAPH10 IF xB0 < 181 then BARGRAPH11 IF xB0 < 191 then BARGRAPH12 IF xB0 < 201 then BARGRAPH13 IF xB0 < 210 then BARGRAPH14 IF xB0 < 220 then BARGRAPH15 IF xB0 < 230 then BARGRAPH16 LCDOUT $FE,$C0,"TOO RICH" goto OUT BARGRAPH16: gosub p255 BARGRAPH15: gosub p255 BARGRAPH14: gosub p255 BARGRAPH13: gosub p255 BARGRAPH12: gosub p255 BARGRAPH11: gosub p255 BARGRAPH10: gosub p255 BARGRAPH9: gosub p255 LCDOUT $FE, $80 ; line 1 BARGRAPH8: gosub p255 BARGRAPH7: gosub p255 BARGRAPH6: gosub p255 BARGRAPH5: gosub p255 BARGRAPH4: gosub p255 BARGRAPH3: gosub p255 BARGRAPH2: gosub p255 BARGRAPH1: gosub p255 OUT: Pause 5 goto MAIN p255: lcdout 255 return END ' End of program




Bookmarks