ravindrareddy2131
Newbie level 4
hi everyone,
i had to interface two sensors to p18f4550 microcontroller,temperature sensor to AN0 channel and humidity sensor to AN1 channel. i wrote program in MPLAB IDE using interrupts. i am getting humidity value on hyperterminal but temperature value is missing.could any one who is familier please help me..
#include<p18f4550.h>
#include<usart.h>
#include<delays.h>
#pragma config FOSC=HS
#pragma config BOR=OFF
#pragma config PWRT=OFF
#pragma config WDT=OFF, DEBUG=OFF
#pragma config LVP=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config ICPRT=OFF
void sertx(unsigned int);
void MSDelay (unsigned int);
void chk_ISR(void);
void INT0_ISR(void);
#pragma interrupt chk_ISR
void chk_ISR(void)
{
if(INTCONbits.INT0IF==1)
INT0_ISR();
}
#pragma myhipri_int=0x08;
void myhipri_int(void)
{
_asm
goto chk_ISR
_endasm
}
#pragma code
void main(void)
{
unsigned char LB,HB,BT,T1,T2;
TRISC=0;
TRISD=0;
ADCON0=0x09;
ADCON1=0x45;
TRISBbits.TRISB0=1;
TRISCbits.TRISC6=0;
TXSTA=0x20;
SPBRG=31;
TXSTAbits.TXEN=1;
RCSTAbits.SPEN=1;
INTCONbits.INT0IF=0;
INTCONbits.INT0IE=1;
INTCONbits.GIE=1;
while(1)
{
ADCON0bits.GO=1;
while(ADCON0bits.DONE==1)
LB=ADRESL;
HB=ADRESH;
BT=HB;
H1=(BT/10)+48;
H2=(BT%10)+48;
sertx('H');
sertx('M');
sertx('D');
sertx('T');
sertx('Y');
sertx(H1);
sertx(H2);
MSDelay(250);
}
}
void INT0_ISR(void)
{
unsigned char LB,HB,HD,H1,H2;
ADCON0=0x01;
ADCON1=0x45;
while(1)
{
ADCON0bits.GO=1;
while(ADCON0bits.DONE==1)
LB=ADRESL;
HB=ADRESH;
HD=HB;
T1=(HD/10)+48;
T2=(HD%10)+48;
sertx('T');
sertx('E');
sertx('M');
sertx('p');
sertx(T1);
sertx(T2);
INTCONbits.INT0IF=0;
}
}
void sertx(unsigned int C)
{
while(PIR1bits.TXIF==0);
TXREG=C;
}
void MSDelay (unsigned int itime)
{
unsigned int i;
unsigned int j;
for(i=0;i<itime;i++)
for(j=0;j<135;j++);
}
i had to interface two sensors to p18f4550 microcontroller,temperature sensor to AN0 channel and humidity sensor to AN1 channel. i wrote program in MPLAB IDE using interrupts. i am getting humidity value on hyperterminal but temperature value is missing.could any one who is familier please help me..
#include<p18f4550.h>
#include<usart.h>
#include<delays.h>
#pragma config FOSC=HS
#pragma config BOR=OFF
#pragma config PWRT=OFF
#pragma config WDT=OFF, DEBUG=OFF
#pragma config LVP=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config ICPRT=OFF
void sertx(unsigned int);
void MSDelay (unsigned int);
void chk_ISR(void);
void INT0_ISR(void);
#pragma interrupt chk_ISR
void chk_ISR(void)
{
if(INTCONbits.INT0IF==1)
INT0_ISR();
}
#pragma myhipri_int=0x08;
void myhipri_int(void)
{
_asm
goto chk_ISR
_endasm
}
#pragma code
void main(void)
{
unsigned char LB,HB,BT,T1,T2;
TRISC=0;
TRISD=0;
ADCON0=0x09;
ADCON1=0x45;
TRISBbits.TRISB0=1;
TRISCbits.TRISC6=0;
TXSTA=0x20;
SPBRG=31;
TXSTAbits.TXEN=1;
RCSTAbits.SPEN=1;
INTCONbits.INT0IF=0;
INTCONbits.INT0IE=1;
INTCONbits.GIE=1;
while(1)
{
ADCON0bits.GO=1;
while(ADCON0bits.DONE==1)
LB=ADRESL;
HB=ADRESH;
BT=HB;
H1=(BT/10)+48;
H2=(BT%10)+48;
sertx('H');
sertx('M');
sertx('D');
sertx('T');
sertx('Y');
sertx(H1);
sertx(H2);
MSDelay(250);
}
}
void INT0_ISR(void)
{
unsigned char LB,HB,HD,H1,H2;
ADCON0=0x01;
ADCON1=0x45;
while(1)
{
ADCON0bits.GO=1;
while(ADCON0bits.DONE==1)
LB=ADRESL;
HB=ADRESH;
HD=HB;
T1=(HD/10)+48;
T2=(HD%10)+48;
sertx('T');
sertx('E');
sertx('M');
sertx('p');
sertx(T1);
sertx(T2);
INTCONbits.INT0IF=0;
}
}
void sertx(unsigned int C)
{
while(PIR1bits.TXIF==0);
TXREG=C;
}
void MSDelay (unsigned int itime)
{
unsigned int i;
unsigned int j;
for(i=0;i<itime;i++)
for(j=0;j<135;j++);
}