Hola gente buenas a todos, esperando que me puedan ayudar con un problema que tengo. Quiero hacer un contador con el TMR0 de mi pic 16f84a y visualizar este conteo en un lcd 16x2 pero quiero contar como 50,000 pulsos entonces diseñe un programa el cual separo en diferentes variables como miles,decenes,centena,unidades despues las juntos para poder manejar dicha cantidad pero solo me llega a 256 los 8bites(bytes)
aqui el codigo me podria decir si lo que quiero es posible y si lo que hago es correcto.
gracias de antemano.
aqui el codigo me podria decir si lo que quiero es posible y si lo que hago es correcto.
Código:
unsigned int unid,dec,centenas,miles,cantidad,cnt[4],conteo[4];
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
void main() {
OPTION_REG=0X38;
T0IF_BIT=0;
TMR0=0;
trisa=0;
TRISB=0X00;
PORTB=0X00;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);
centenas=0;
miles=0;
while(1){
while(TMR0<=99)
{
dec=tmr0/10;
unid=tmr0-(dec*10);
cantidad=(miles*1000)+(centenas*100)+(dec*10)+unid;
bytetostr(tmr0,cnt);
bytetostr(cantidad, conteo);
Lcd_Out(1,1,"inicio");
Lcd_out(1,10,conteo);
lcd_out(2, 2,cnt);
}
TMR0=0;
unid=0;
dec=0;
if(centenas<9)
{
centenas=centenas+1;
}
else
{
centenas=0;
miles=miles+1;
}
}
}