Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
hello I am using pic18f4550 and i am trying to use portA as digital input on pins RA0,RA1,RA2,RA3
i have disabled the analog input
i have set the pins as output
i am getting digital input only on RA0 and RA1 but not on RA2 andRA3
what could be the problem
//#include <p18f4450.h>
#include <p18cxxx.h>
//#pragma config WDT = OFF, LVP = OFF, FOSC = INTOSC_HS //internal oscillator
#pragma config WDT=OFF,LVP=OFF,FOSC=HSPLL_HS,PLLDIV=5,CPUDIV=OSC2_PLL3 //run with external oscillator
void main (void);
void InterruptHandlerLow (void);
#define LCD_DATA PORTD
#define LCD_EN PORTCbits.RC2
#define LCD_RW PORTCbits.RC1
#define LCD_RS PORTCbits.RC0
#define A PORTAbits.RA0
#define B PORTAbits.RA1
#define C PORTAbits.RA2
#define D PORTAbits.RA3
unsigned char data[]="123456789 90";
unsigned char dd[]="DDDDDDDDDDDDD123";
unsigned char aa[]="AAAAAAAAAAAAA123";
unsigned char bb[]="BBBBBBBBBBBBB123";
unsigned char cc[]="CCCCCCCCCCCCC123";
unsigned char xx[]="xxxxxxxxxxxxxxxx";
void delay(int);
void WRT_COMM(void);
void WRT_DATA(void);
unsigned char *varr , var;
void LCD_sendstring(unsigned char *varr);
void LCD_dt();
void LCD_senddata(unsigned char var );
void initilizeLCD(void);
void lcd_clear(void);
void main ()
{
char DATA;
varr=&data[0];
ADCON1 = 0xFF; // turn all of port a to digital I/O
TRISCbits.TRISC6=1;
TRISAbits.TRISA3=1;
TRISAbits.TRISA2=1;
TRISAbits.TRISA1=1;
TRISAbits.TRISA0=1;
TRISAbits.TRISA0=1;
TRISAbits.TRISA1=1;
TRISAbits.TRISA2=1;
TRISAbits.TRISA3=1;
CMCON = 0x07; // CM0, CM1 and CM2 set to 1
initilizeLCD();
lcd_clear();
LCD_dt();
while(1)
{
if(A==1 && B==0 && C==0 && D==0)
{
varr=&aa[0];
LCD_dt();
}
else if(A==1 && B==1 && C==0 && D==0)
{
varr=&bb[0];
LCD_dt();
}
else
if(A==1 && B==0 && C==1 && D==0)
{
varr=&cc[0];
LCD_dt();
}
else if(A==1 && B==0 && C==0 && D==1)
{
varr=&dd[0];
LCD_dt();
}
else
varr=&xx[0];
LCD_dt();
}
}
TRISAbits.TRISA3=1;
TRISAbits.TRISA2=1;
TRISAbits.TRISA1=1;
TRISAbits.TRISA0=1;
TRISAbits.TRISA0=1;
TRISAbits.TRISA1=1;
TRISAbits.TRISA2=1;
TRISAbits.TRISA3=1;
ADCON1 = 0xFF; // turn all of port a to digital I/
//#include <p18f4450.h> // not sure why this include does not work
#include <p18cxxx.h>
void main ()
{
unsigned char DATA;
ADCON1 = 0x0F; // *** turn all of port a to digital I/O
CMCON = 0x07; // CM0, CM1 and CM2 set to 1
TRISA=0xFF;
DATA = PORTA; // Works
Nop();
Nop();
while(1);
}