Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Getting confuse with interrupts and lcd with MPLAB

Status
Not open for further replies.

baby_1

Advanced Member level 1
Joined
Dec 3, 2010
Messages
415
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,298
Activity points
4,277
Hello
here is my program

Code:
#include <p18f452.h>
#include <stdio.h>
#include <stdlib.h>
#include "LCD.h"
#include "delays.h"

void sendusart(unsigned char datas[17]);
void sendchar(unsigned char data);
void cls(void);
void xcl();
unsigned int meter(unsigned int me,unsigned char states);
unsigned int zav(unsigned int me,unsigned char states);

#pragma config OSC=HSPLL
#pragma config DEBUG=OFF
#pragma config WDT=OFF
#pragma config BOR=OFF
#pragma config LVP=OFF
#pragma config PWRT=ON

#pragma interrupt SerialR
void SerialR(void)
{
    if(PIR1bits.RCIF==1)
    {
        xcl();
    }
  }

#pragma code Mans=0x0008
void Mans(void)
{
    _asm
    GOTO SerialR
    _endasm
}
#pragma code

//////////////////////////Define

#define in1 PORTAbits.RA0
#define in2 PORTAbits.RA1
#define in3 PORTAbits.RA2

#define d1 PORTAbits.RA3
#define d2 PORTAbits.RA5
#define d3 PORTEbits.RE0
#define d4 PORTEbits.RE1
#define d5 PORTEbits.RE2
#define d6 PORTCbits.RC3

//////////////////////////Variable

unsigned char xs;
unsigned char i1[17];

/////////////////////////////




void main(void)
{
unsigned int i;
    ADCON1=6;
 /////timers
   TRISAbits.RA0=1;
   TRISAbits.RA1=1;
   TRISAbits.RA2=1;
   TRISAbits.RA3=1;
   TRISAbits.RA4=1;
   TRISCbits.RC0=1;
 /////  Outputs
    TRISB=0;
    TRISAbits.RA3=0;
    TRISAbits.RA5=0;
    TRISEbits.RE0=0;
    TRISEbits.RE1=0;
    TRISEbits.RE2=0;
    TRISCbits.RC3=0;

 ////////////////////
 ////////////////////
 ////////////////////

    TXSTA=0x20;
    SPBRG=25;
    TXSTAbits.TXEN=1;

    RCSTA=0x90;

    INTCONbits.GIE=1;
    INTCONbits.PEIE=1;

    PIE1bits.RCIE=1;

   // flags=0;


////////////////////
////////////////////
////////////////////


d1=0;
d2=0;
d3=0;
d4=0;
d5=0;
d6=0;
lcdinit();
i=0;
xs=0;
      cls();
      sprintf(i1,"%S","      IDLES");
      lcdprint(i1);
//////////////////////////

    while(1)
    {
        i=i+1;
      cls();
      sprintf(i1,"%d",i);
      lcdprint(i1);
      d1=~d1;
      Delay10KTCYx(1000);
    
}
}

when no data received it works fine and do counting.but when a data receive it send back ~ character but doesn't show anything on the lcds.(it seems it disable lcds when a interrupts occur)

i remove
i=i+1;
cls();
sprintf(i1,"%d",i);
lcdprint(i1);
but it always show me the IDLE while data is receiving......instead of "Connected to PC"

what is my fault?
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top