This is the program code. the hserin2 is only used. I'm using a 20Mhz OSC.
the tx_enable is connected to TG0 (pin5)
the rx2 is connected to RG2 (pin7)
the tx2 is connected to RG1 (pin6)
Code:'PIC18F85J11 mainboard grafisch display DEFINE HSER_TXSTA 24H DEFINE HSER_RCSTA 90H DEFINE HSER_SPBRG 4 DEFINE HSER_CLROERR 1 DEFINE HSER2_TXSTA 24H DEFINE HSER2_RCSTA 90H DEFINE HSER2_SPBRG 4 DEFINE HSER2_CLROERR 1 'DEFINE ADC_BITS 8 'DEFINE ADC_CLOCK 3 'DEFINE ADC_SAMPLEUS 50 DEFINE OSC 20 DEFINE LCD_DREG PORTE DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTF DEFINE LCD_RSBIT 4 DEFINE LCD_EREG PORTG DEFINE LCD_EBIT 4 DEFINE LCD_BITS 8 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 ADCON1 = 15 ADCON0 = 0 CMCON = 7 T0CON = %11000011 INTCON = %10100000 INTCON2 = %00000100 TRISA = %10111111 TRISB = %00000001 TRISC = %10000000 TRISD = %01000000 TRISE = %00000000 TRISF = %00000110 TRISG = %00000000 TRISH = %10110100 TRISJ = %00000001 INP_OUTP21 VAR PORTA.0 INP_OUTP22 VAR PORTA.1 INP_OUTP23 VAR PORTA.2 INP_OUTP24 VAR PORTA.3 INP_OUTP25 VAR PORTA.4 INP_OUTP26 VAR PORTA.5 XTAL_0 VAR PORTA.6 XTAL_1 VAR PORTA.7 INP_OUTP27 VAR PORTB.0 IR_DATA VAR PORTB.1 INP_OUTP28 VAR PORTB.2 INP_OUTP29 VAR PORTB.3 INP_OUTP30 VAR PORTB.4 INP_OUTP31 VAR PORTB.5 PRG_CLK VAR PORTB.6 PRG_DTA VAR PORTB.7 INP_OUTP32 VAR PORTC.0 RES_01 VAR PORTC.1 RES_02 VAR PORTC.2 SCL_ROM VAR PORTC.3 SDA_ROM VAR PORTC.4 RES_03 VAR PORTC.5 RF_TX VAR PORTC.6 RF_RX VAR PORTC.7 RES_04 VAR PORTD.0 RES_05 VAR PORTD.1 RES_06 VAR PORTD.2 RES_07 VAR PORTD.3 INP_OUTP01 VAR PORTD.4 INP_OUTP02 VAR PORTD.5 INP_OUTP03 VAR PORTD.6 INP_OUTP04 VAR PORTD.7 D0_DISPLAY VAR PORTE.0 D1_DISPLAY VAR PORTE.1 D2_DISPLAY VAR PORTE.2 D3_DISPLAY VAR PORTE.3 D4_DISPLAY VAR PORTE.4 D5_DISPLAY VAR PORTE.5 D6_DISPLAY VAR PORTE.6 D7_DISPLAY VAR PORTE.7 DISPL_EN1 VAR PORTF.1 DISPL_EN2 VAR PORTF.2 RES_08 VAR PORTF.3 DISPL_RS VAR PORTF.4 RES_09 VAR PORTF.5 RES_10 VAR PORTF.6 RES_11 VAR PORTF.7 TX_ENABLE VAR PORTG.0 TX_RS485 VAR PORTG.1 RX_RS485 VAR PORTG.2 RES_12 VAR PORTG.3 DISPL_EN VAR PORTG.4 INP_OUTP05 VAR PORTH.0 INP_OUTP06 VAR PORTH.1 INP_OUTP07 VAR PORTH.2 INP_OUTP08 VAR PORTH.3 INP_OUTP09 VAR PORTH.4 INP_OUTP10 VAR PORTH.5 INP_OUTP11 VAR PORTH.6 INP_OUTP12 VAR PORTH.7 INP_OUTP13 VAR PORTJ.0 INP_OUTP14 VAR PORTJ.1 INP_OUTP15 VAR PORTJ.2 INP_OUTP16 VAR PORTJ.3 INP_OUTP17 VAR PORTJ.4 INP_OUTP18 VAR PORTJ.5 INP_OUTP19 VAR PORTJ.6 INP_OUTP20 VAR PORTJ.7 I VAR BYTE K VAR BYTE TELLER VAR BYTE ADRESS VAR BYTE AANTAL VAR BYTE LCDBUFI VAR BYTE [6] LCDBUFO VAR BYTE [6] BUFFERI VAR BYTE [6] BUFFERO VAR BYTE [6] STARTCHAR VAR BYTE DATO VAR BYTE DATI VAR BYTE BUFF VAR BYTE OK VAR BIT Pause 500 Clear FLAGS = 0 LCDOut $FE,$1, "DISPLAY" LCDOut $FE,$C0, "TEST" Pause 500 TX_ENABLE = 1 STARTCHAR = "$" BEGIN: For K = 240 TO 240 teller = teller + 1 ADRESS = K AANTAL = 1 buffero(K) = teller GoSub WEGSCHRIJVEN PauseUs 200 ADRESS = K AANTAL = 1 GoSub OPHALEN IF OK = 1 Then lcdbufO(K) = bufferi(K) LCDBUFI(K) = BUFFERO(K) GoSub LCD OK = 0 GoTo HIER1 EndIF LCDBUFO(K) = 0 LCDBUFI(K) = 0 GoSub LCD HIER1: Next GoTo BEGIN 'SUBROUTINES WEGSCHRIJVEN: DATO = STARTCHAR : GoSub CHAROUT DATO = ADRESS : GoSub CHAROUT DATO = "W" : GoSub CHAROUT For I = 1 TO AANTAL DATO = BUFFERO(I) : GoSub CHAROUT Next Return OPHALEN: OK = 0 DATO = STARTCHAR : GoSub CHAROUT DATO = ADRESS : GoSub CHAROUT DATO = "R" : GoSub CHAROUT PauseUs 100 TX_ENABLE = 0 HSerin2 1,GO,[WAIT("$"),BUFF] IF BUFF = ADRESS Then OK = 1 For I = 1 TO AANTAL HSerin2 [DATI] BUFFERi(I) = DATI Next EndIF GO: PauseUs 50 TX_ENABLE = 1 Return CHAROUT: TX_ENABLE = 1 HSerout2 [DATO] Return LCD: GoSub USE_LCD1 LCDOut $FE,$80, "ADRES 1 2" LCDOut $FE,$94, " 3 4 5" LCDOut $FE,$C0, "DATA ",HEX LCDBUFO(1)," ",HEX LCDBUFO(2) LCDOut $FE,$D4, HEX LCDBUFO(3)," ",LCDBUFO(4)," ",LCDBUFO(5) GoSub USE_LCD2 LCDOut $FE,$80, "DATA ",HEX LCDBUFI(1)," ",HEX LCDBUFI(2) LCDOut $FE,$94, HEX LCDBUFI(3)," ",LCDBUFI(4)," ",LCDBUFI(5) Return USE_LCD1: Input DISPL_EN1 Low DISPL_EN2 Return USE_LCD2: Low DISPL_EN1 Input DISPL_EN2 Return USE_BothLCD: Input DISPL_EN1 Input DISPL_EN2 Return End




Bookmarks