How to read from single LOOKUP table into different variables?


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1
    Join Date
    May 2013
    Location
    australia
    Posts
    2,631


    Did you find this post helpful? Yes | No

    Default Re: How to read from single LOOKUP table into different variables?

    I want to get two consecutive bytes from one "Hello!" string. How more clear I can say this in other way?


    I'll try once again. I need output of this kind from Hello!
    A=H
    B=e
    A=l
    B=l
    A=o
    B=!
    easy as

    Code:
    ;----[16F886 Hardware Configuration]--------------------------------------------#CONFIG
    cfg1 = _INTRC_OSC_NOCLKOUT    ; INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
    cfg1&= _WDT_ON                ; WDT enabled
    cfg1&= _PWRTE_OFF             ; PWRT disabled
    cfg1&= _MCLRE_OFF             ; RE3/MCLR pin function is digital input, MCLR internally tied to VDD
    cfg1&= _CP_OFF                ; Program memory code protection is disabled
    cfg1&= _CPD_OFF               ; Data memory code protection is disabled
    cfg1&= _BOR_OFF               ; BOR disabled
    cfg1&= _IESO_ON               ; Internal/External Switchover mode is enabled
    cfg1&= _FCMEN_ON              ; Fail-Safe Clock Monitor is enabled
    cfg1&= _LVP_OFF               ; RB3 pin has digital I/O, HV on MCLR must be used for programming
    cfg1&= _DEBUG_OFF             ; In-Circuit Debugger disabled, RB6/ICSPCLK and RB7/ICSPDAT are general purpose I/O pins
      __CONFIG _CONFIG1, cfg1
    
    
    
    
    cfg2 = _BOR40V                ; Brown-out Reset set to 4.0V
    cfg2&= _WRT_OFF               ; Write protection off
      __CONFIG _CONFIG2, cfg2
    
    
    
    
    #ENDCONFIG
    
    
    
    
    'chip configs
    TRISA=%00000000  'SET A TO OUTPUT   1=input
    TRISC=%00001101   'set half C for in/out
    TRISB=%00011000   'set PortB to output
    ANSELH=%00000000   ' ADC OFF B
    ANSEL=%000000000 'configure PortA as digital except first 2
    ADCON1=%10000000  'adc justify
    OSCCON=%01110101  'SET FREQUENCY TO 8MHZ
    WPUB=%00000000    'turn off Pullups
    CM1CON0=0         'DISABLE COMPARATORS
    CM2CON0=0         'SAME HERE
    'CCP1CON=%01000000 ' configure pwm
    'PSTRCON=%00010110 'disable C pwm
    
    
    
    
    DEFINE OSC 8   
    DEFINE ADC_BITS 10
    DEFINE ADC_CLOCK 3
    DEFINE ADC_SAMPLEUS 50
    'lcd config
    pause 1000 
    ' Set LCD Data port 
    DEFINE LCD_DREG PORTC  
    DEFINE LCD_DBIT 4  
    DEFINE LCD_RSREG PORTB  
    DEFINE LCD_RSBIT 0  
    DEFINE LCD_EREG PORTB  
    DEFINE LCD_EBIT 1  
    DEFINE LCD_BITS 4  
    DEFINE LCD_LINES 2  
    DEFINE LCD_COMMANDUS 2000  
    DEFINE LCD_DATAUS 44
    lcdout $fe, $1,  "ready "
    pause 1000
    
    
    DPIN Var PORTA.2       ' I2C data pin
    CPIN Var PORTA.1       ' I2C clock pin
    B   Var word
    B0   Var byte
    B1   Var byte
    lcdwbuf var word[10]
    @lcdBuf = _lcdwbuf
    lcdBuf    Var byte ext
    
    
    
    
    
    
     arraywrite lcdBuf ,["Hello World",0 ]
     
     lcdout $fe, $1,  str  lcdBuf
     
     b0 = lcdwbuf[0]
     b1 = lcdwbuf[0] >> 8
      lcdout $fe, $c0,b0," : ", b1
      b0= lcdwbuf[3]
     b1= lcdwbuf[3]  >> 8
     pause 1000
       lcdout $fe, $c0,b0," : ", b1
    Warning I'm not a teacher

  2. #2
    Join Date
    Feb 2013
    Posts
    1,122


    Did you find this post helpful? Yes | No

    Default Re: How to read from single LOOKUP table into different variables?

    Currently I'm doing this in the following way:

    Code:
    FOR X=0 TO 17 step 2	'READ ARRAY INTO VARIABLE, ARRAY MEMBER CHAR=EEPROM OFFSET	
    Y=topline[x]
    Z=topline[x+1] 'READ  INTO VARIABLE AS TWINS
    FOR I=0 TO 7	'HELPER LOOP FOR CHARACTER READING
    READ Y+I,A 'READ EEPROM BYTES INTO VAR
    READ Z+I,B
    LCDOUT $FE,$80+i+c 'UPDATE Y POSITION
    LCDOUT $FE,$80+x/2 'UPDATE X POSITION
    if y=255 then a=0
    if z=255 then b=0 'blanker for space display
    LCDOUT a
    LCDOUT b 'WRITE TO SCREEN
    NEXT I
    NEXT X
    C=number of line*8 where text had to be displayed.

    Name:  greatdisplay.jpg
Views: 474
Size:  406.3 KB

  3. #3
    Join Date
    Feb 2013
    Posts
    1,122


    Did you find this post helpful? Yes | No

    Default Re: How to read from single LOOKUP table into different variables?

    Oh and I'll ask here. Is it possible to do bitwise shift between array members?
    I'm adding some smooth scroll options to that display, and vertical scrolling is easy, since 1 byte = 1 vertical line of pixels. But for horizontal scrolling, 1 byte = 8 horizontal pixels, so scrolling is not that smooth. I remember, I was doing this on ZX Spectrum In Assembler, but forgot how

Similar Threads

  1. How do you create a lookup table?
    By AlexanderWinnig in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 12th November 2010, 14:37
  2. Lookup table syntax.....
    By TerdRatchett in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 19th May 2009, 04:45
  3. Lookup table or Math?
    By ronjodu in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 2nd May 2008, 17:55
  4. Lookup Table
    By yasser hassani in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 11th March 2008, 10:38
  5. PIC 18F452 Table Pointer/ Table Read
    By sougata in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 14th March 2006, 03:07

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts