Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

16/05/2011 #1


contador TMR1. Ayuda con el codigo
No encuentro el error en un programa tan sencillo como el que esta a continuacion:

#include <htc.h>
#include <pic.h>
#include "lcd.h"
#include "delay.h"
#include "stdio.h"
#include "stdlib.h"

__CONFIG(XT & WDTDIS & PWRTDIS & LVPDIS & DEBUGDIS & UNPROTECT );

void mostrar_int(int val);
void retardo(int n);

bit banderasssTMR1=0;
int aux=0;

void main(){
GIE=1;
T1CON=0;
TMR1H=0;
TMR1L=0;
TMR1ON=1;
TMR1IE=1;
TMR1IF=1;

lcd_init();
lcd_goto(0x00);

while(1){
if(banderasssTMR1==1){
banderasssTMR1=0;
lcd_goto(0x00);
mostrar_int(45);
}
//lcd_goto(0x00);
//mostrar_int(TMR1H);
}
}

void retardo(int n){
for(int i=0;i<=n;i++){
DelayMs(100);
}
}

void mostrar_int(int val){
int n=5;
if(val<10)n=1;
else if(val<100)n=2;
else if(val<1000)n=3;
else if(val<10000)n=4;
else if(val<100000)n=5;

char buf[10];
int base=10;
itoa(buf,val,base);
for(int i=0; i<n;i++){
lcd_putch(buf[i]);
}
}

void interrupt ISR(void){
if(TMR1IF==1){
TMR1IF=0;
banderasssTMR1=1;
}
}





simplemente corro el programa y no hace nada :(
17/05/2011 #2


Hola, que compilador estas usando, pero mas alla de eso en esta parte

if(val<10)n=1;
else if(val<100)n=2;
else if(val<1000)n=3;
else if(val<10000)n=4;
else if(val<100000)n=5;

si por ejemplo val=50 siempre va a ser menor que 100, 1000, 10000 etc, cual eligue el programa
18/05/2011 #3


ricber gracias por el interes en ayudarme, pero ya encontre el error del programa, simplemente me faltaba colocar PEIE=1 que es un bit del registro INTCON del pic 16f877a para habilitar las interrupciones de los perifericos.

Por otro lado atendiendo su pregunta el programa elegira n=2 para ingresar esto en el for de manera que cuando se utilize la funcion puts de la libreria lcd.c no salgan simbolos raros como me ocurrio una vez.

se me olvido decirle que el compilador que estoy utilizando es HI-TECH en mplab
19/05/2011 #4


Un valor de tipo int no da mas de +-23768.
Asi que no sale la parte de <100000 al menos que sea un micro de 32 bits.
Y el codigo hay error en la sintaxis de C.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.