hola a todos alguien me podria ayudar con este programa que no me esta funcionando lo quiero hacer funcionar en un 18f4550 lo raro es que en un 16f877 si me funciona espero me puedan ayudar gracias.
#include <18F4550.h>
#device adc=10
#fuses NOMCLR INTRC_IO, NOWDT, NOPROTECT, NOLVP, NOCPD, NOBROWNOUT, NOPUT, NODEBUG, HS, PBADEN
//#FUSES WDT
#use delay(clock=8000000)
//* VARIABLES *
//*****************
#BYTE TRISA = 0xF92 // Dirección de los TRIS A, B, C, D y E.
#BYTE TRISB = 0xF93
#BYTE TRISC = 0xF94
#BYTE TRISD = 0xF95
#BYTE TRISE = 0xF96
#BYTE INTCON = 0xFF2 // Dirección del registro de interrupciones.
#Byte PortA = 0xF80 // Dirección del puerto A para la familia 18Fxx5x.
#Byte PortB = 0xF81 // Dirección del puerto B para la familia 18Fxx5x.
#Byte PortC = 0xF82 // Dirección del puerto C para la familia 18Fxx5x.
#Byte PortD = 0xF83 // Dirección del puerto D para la familia 18Fxx5x (Sólo 40/44 pines).
#Byte PortE = 0xF84 // Dirección del puerto E para la familia 18Fxx5x.
#define enter PIN_b5
#define up PIN_b6
#define down PIN_b7
#define esc PIN_b4
#include <stdio.h>
#include <string.h> // for strcmp()
#include <math.h>
#include <lcd20x4.c>
//Variables generales a utilizar
int16 value,variable,fwdmax,A,fwdd,NBASE,f3,nval,duty1,variable2,variable3,variable4,variable1;
UNSIGNED int8 conta,i,j,tempmax,swrmax,flag,flag2,jj,k,h,x;
int8 tempmax1;
unsigned int8 ntemp,setup,num;
int1 alarm1_status, alarm2_status,bandera;
int8 second, minute, hour, day, date, month, year,
alarm1_minute, alarm1_hour, alarm2_minute, alarm2_hour,
status_reg,B1;
//int8 porcentaje1,porcentaje2;
float fecf2,porcentaje1,porcentaje2,T1,T2;
int16 ii,l;
long read_int16_eeprom(int8 address);
void write_int16_eeprom(int address,int16 val);
void alarm();
void beep();
void setfwd();
void setswr();
void settemp();
void beep2();
void beep3();
void bloqueo();
VOID RUM_FUNC(INT);
VOID setALARM();
int password();
VOID settemp1();
void main(){
setup_oscillator(OSC_8MHZ);
port_b_pullups(true);
//setup_adc(ADC_CLOCK_INTERNAL); //
// setup_wdt(WDT_ON|WDT_2S);
setup_adc(ADC_CLOCK_DIV_8);
setup_adc_ports(AN0_TO_AN7); // Configure RA0 (AN0) as analog
Set_Tris_A(0b101111); // Puerto A todo entradas, en este caso no usamos el Puerto A.
Set_Tris_B(0b11110111); // Puerto B todo entradas, sólo usamos las entradas RB0 y RB1.
Set_Tris_C(0b00000000); // Puerto C todo entradas, en este caso no usamos el Puerto C.
Set_Tris_D(0b00000000); // Puerto D todo salidas (8 bits que irán a los LEDs).
Set_Tris_E(0b1111); // Puerto E todo entradas, en este caso no usamos el Puerto E.
// Enable global interrupts
//Configuracion del conversor AD (RA0-->Analogico)
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
// configuracion timer0
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);
//enable_interrupts(GLOBAL);// Initialize LCD module
// enable_interrupts(INT_RTCC);
// EXT_INT_EDGE(l_TO_h); //----- Cambio de estado de alto a bajo
// enable_interrupts(INT_RB);
lcd_init();
char num[10]={'0','1','2','3','4','5','6','7','8','9'};//tabla de variables definidas
char clave[5]={0};
char ctrsna[5]={'4','3','2','1',0};//codigo+1
INT jj;
i=0;
j=1;
lcd_gotoxy(1,2);
printf(lcd_putc," ");
lcd_gotoxy(1,3);
printf(lcd_putc," ");
retorno:
FOR (Jj = 16; Jj >= 1; --jJ)
{
lcd_gotoxy (Jj, 1);
printf (LCD_PUTC, "INTRODUZCA CLAVE ");
delay_ms (30);
}
lcd_gotoxy(1,2);
printf(lcd_putc,"0000 ");
write_clave:
delay_ms(200);
lcd_gotoxy(j,2);//Segunda linea "Escritura de clave"
clave[j-1]=num;
lcd_putc(num);
//if(bit_test(IND,0)==1) {bit_clear(IND,0);goto inicio;}
if(bit_test(PORTB,7)==0)
{
while(!input(PIN_B7));
i=i+1;
if(i==10) {i=0;}
}
if(bit_test(PORTB,6)==0)
{
while(!input(PIN_B6));
i=i-1;
if(i==255) {i=9;}
}
if(bit_test(PORTB,4)==0)
{
//while(!input(PIN_B4));
lcd_gotoxy(j,2);
lcd_putc('0');
if(j==1) {goto write_clave;}
i=0;
j=j-1;
}
if(bit_test(PORTB,5)==0)
{
while(!input(PIN_B5));
i=0;
j=j+1;
if(j==5) {goto comprueba;}//numero de clave mas 1
lcd_gotoxy(j,2);
lcd_putc(' ');
}
goto write_clave;
comprueba:
if(strncmp(clave,ctrsna,4)==0)//numero de clave
{
printf(lcd_putc,"\f clave correcta");
delay_ms(2000);
}
}