schematic:

source code:
#include <htc.h>
#include <stdio.h>
#include "lcd.h"
#define _XTAL_FREQ 4000000
__CONFIG(XT & WDTDIS & PWRTDIS & UNPROTECT);
unsigned int num = 0;
unsigned char s[1];
void lcd_display_num(void)
{
lcd_clear();
lcd_puts("number");
lcd_puts(num);
sprintf(s,"%d",num);
lcd_puts(s);
}
void init_PORTS(void)
{
TRISB &= ~0x0F;
PORTB &= ~0x0F;
TRISB |= 0xF0;
PORTB |= 0xF0;
TRISA &= ~0x03;
PORTA &= ~0x03;
}
void main()
{
init_PORTS();
lcd_init();
lcd_clear();
lcd_puts("**COUNTER**");
__delay_ms(50);
lcd_clear();
lcd_puts("You can start counting!");
while(1)
{
if (RB7 == 0)
{
lcd_clear();
__delay_ms(30);
num++;
lcd_display_num();
}
}
}
sirs,
may mga problem ako regarding dito..
simple counter lang naman po siya.. kaso iba ung output na nangyayari sa expected ko..
dun sa schematic above..
1st press ng button: eto ang output <number 1> // no space dapat
2nd press: <number2> // tama ung output
3rd press: <number 3> // may space na naman
4th press: <number4> // tama ulit ung output
5th press: <numerd5> // may d na lumabas between r and 5
6th press: <number6> // tama ulit ung output
7th press: <number...> // lumalabas na ung initial display ko
8th press and so on.. // nagshishift po ung initial display ko gada press nung button.. ung number lang po ung maayos na display.. ung mga sunod.. nagshishift na lang..
tapos everytime na magbubuild ako.. may warning na ganito..
illegal conversion of integer to pointerpakiramdam ko.. sa lcd_display_num() function nagmumula ang problem.. hmm..
thanks in advance po..