Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include <16F628.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=20000000)
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA_PORT 6
#define LCD_TYPE 2
#define LCD_TRIS_LOCATION set_tris_b(x)
#include <lcd.c>
#use fast_io (a)
#use fast_io (b)
void main()
{
port_b_pullups(False);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
lcd_putc("\fReady...");
delay_ms(500);
output_a(0x00);
set_tris_a(0x00);
while(1)
{
output_high(PIN_A2);
lcd_putc("\fOff");
delay_ms(500);
output_low(PIN_A2);
lcd_putc("\fOn");
delay_ms(500);
}
}
Estoy loco con este programa para mostrar por el LCD esto tan sencillo en proteus me funciona bien pero al momento de probarlo realmente no hace nada, el programa trata de mostrar un mensaje en el lcd para decir q esta listo luego cuando el led prenda y apague el lcd indica el estado del led, el lcd no inicia ni tampoco pasa a la funcion de prender y apagar el led del pin_a2. Espero me puedas ayudar con esto. el lcd que uso al momento de probarlo es el LM071L de la hitachi. te adjunto la conexion en proteus para ver si me puedes indicar que esta malo.
Código:#include <16F628.h> #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NOBROWNOUT //No brownout reset #FUSES MCLR //Master Clear pin enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #use delay(clock=20000000) #define LCD_ENABLE_PIN PIN_B0 #define LCD_RS_PIN PIN_B1 #define LCD_RW_PIN PIN_B2 #define LCD_DATA_PORT 6 #define LCD_TYPE 2 #define LCD_TRIS_LOCATION set_tris_b(x) #include <lcd.c> #use fast_io (a) #use fast_io (b) void main() { port_b_pullups(False); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); lcd_init(); lcd_putc("\fReady..."); delay_ms(500); output_a(0x00); set_tris_a(0x00); while(1) { output_high(PIN_A2); lcd_putc("\fOff"); delay_ms(500); output_low(PIN_A2); lcd_putc("\fOn"); delay_ms(500); } }
Perdon amigo por lo anterior mi duda es como crear los puertos seriales?
hola oye otra pregunta el pic que yo tengo es el PIC16F883 crees que actue igual?
#include <16F628.h>
#use delay(clock=4000000)
#fuses XT,WDT,NOMCLR,NOPROTECT
/*PUERTOS*/
#byte PORTA = 0x05
#byte TRISA = 0x85
#byte PORTB = 0x06
#byte TRISB = 0x86
#byte PR2 = 0x92
/*VARIABLES*/
INT estado= 0
//********************INTERRUPCIONES*********************
#int_TIMER0 //INTERRUPCION DEL TIMER0
VOID TIMER0(VOID){
IF(estado==0){
PR2= 1; //VALOR PARA PERÍODO
setup_ccp1(CCP_PWM); //MODULO CCP EN MODO PWM
set_timer0 (242); //CUENTA DEL TIMER0
estado= 1;
}
ELSE{
setup_ccp1(CCP_OFF);
estado= 0;
PORTB= 0;
}
}
/*************************PROGRAMA PRINCIPAL*********************************/
VOID main(){
/*PUERTOS*/
TRISB= 0;
TRISA= 0;
PORTA, PORTB= 0;
/*PWM*/
setup_timer_2(T2_DIV_BY_1,1,1); //CONFIGURACIÓN DEL TIMER2 PARA EL PERIODO DE 2uS --- Valor 1 --- Divisor 1
set_pwm1_duty(4); //PARA UN DUTY CICLE DEL 50% --- 4/4*(1+1))
setup_ccp1(CCP_OFF);
/*CONFIGURACION DEL TIMER0*/
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1); //GENERO UNA INTERRUPCIÓN CADA 14uS
set_timer0 (242);
enable_interrupts(int_timer0);
enable_interrupts(global);
WHILE(1){}
}
/*SI ESTADO ES 1 ESTA DANDO LOS PULSOS
SI ESTADO ES 0 ESTA EN LA SEGUNDA PARTE EN DONDE ES 0*/
El error está antes --> Te faltó el ; para terminar la linea " INT estado= 0 "me dice que falta un "," o un ";" en la línea 14 que vendría a ser donde esta la interrupción del TIMER0 donde dice #int_TIMER0. No se porque me dice eso es lo único que me impide compilar.
Hola Amigos
Ustedes que lo saben y lo pueden todo, necesito tomar una cantidad n de muestras del
conversor adc del pic 873; sumarlas y luego dividir este resultado para sacar un promedio
de las muestras. como puedo hacer esto en ccs.Un ejemplo me vendria bien
Gracias por su ayuda
Hola Amigos
Ustedes que lo saben y lo pueden todo, necesito tomar una cantidad n de muestras del
conversor adc del pic 873; sumarlas y luego dividir este resultado para sacar un promedio
de las muestras. como puedo hacer esto en ccs.Un ejemplo me vendria bien
Gracias por su ayuda
for(sensores=0;sensores<=numero_sensores a manajer;sensores++){
set_adc_channel(sensores);
delay_us(50);
channels(sensores)=read_adc();
}
for(sensores=0;sensores<=numero_sensores a manajer;sensores++){
resultado+=channels(sensores);
}