PDA

View Full Version : sửa dùm em đoạn chương trình đếm với gấp lắm ạ


hamster.khin
10-06-2011, 08:40 PM
các bác giúp em sao mà nó không đếm lên được hàng nghìn, mà làm thế nào khi nhấn nút không thả thì số vẫn tăng hoặc giảm, các bác xem giúp em với

#include <16f877a.h>
#include <def_877a.h>
#fuses hs,nowdt,nolvp
#use delay(clock=20M)
#include <lcd_lib_4bit.c>

int16 sovong;
int1 chay,dao;
int8 donvi,chuc,tram;
void convert_bcd(int16 tocdo) // chuong trinh chuyen doi so sang ma ASCII hien thi LCD
{
donvi=sovong%10; // chia lay phan du, so hang don vi
donvi=donvi+0x30;
chuc=sovong%100; // chia lay hang chuc
chuc=chuc/10;
chuc=chuc+0x30;
tram=sovong/100; //chia lay hang tram
tram=tram+0x30;
}
#int_rb // ngat RB
void rb()
{
if(!rb4) // START / STOP
{
chay=!chay;
if(chay==0)
{
LCD_toado(1,0); lcd_putchar(" DUNG DONG CO ");
LCD_toado(2,0); lcd_putchar("");
sovong=0;
}
else
{
if(chay==1)
LCD_toado(1,0); lcd_putchar(" DANG CHAY ");

}
}
if(!rb5) // THUAN / NGHICH
{
dao=!dao;

if(dao)
{
LCD_toado(1,0); lcd_putchar(" QUAY THUAN ");
}
else
{
LCD_toado(1,0); lcd_putchar(" QUAY NGUOC ");
}

LCD_toado(2,0); lcd_putchar("SO VONG:");
convert_bcd((int8) sovong);
lcd_putchar(tram);lcd_putchar(chuc);lcd_putchar(do nvi);lcd_putchar(" VONG");
}
if(!rb6) // TANG
{
if(sovong==9999) return;
sovong=sovong+100;
convert_bcd((int8) sovong);
LCD_toado(2,9);
lcd_putchar(tram);lcd_putchar(chuc);lcd_putchar(do nvi);lcd_putchar("");
}

if(!rb7) // GIAM
{
if(sovong==0) return;
{
sovong=sovong-10;
convert_bcd((int8) sovong);
LCD_toado(2,9);
lcd_putchar(tram);lcd_putchar(chuc);lcd_putchar(do nvi);lcd_putchar("");
}
}
}

void main()
{
trisb=0xf0;
enable_interrupts(int_rb);
enable_interrupts(global);

lcd_init();
lcd_putchar(" CHUONG TRINH ");
LCD_toado(2,0);
lcd_putchar(" SAN SANG ");
delay_ms(2);
LCD_toado(1,0);
lcd_putchar(" HAY CHON ");
LCD_toado(2,0);
lcd_putchar(" CHE DO ");
chay=0;
sovong=0;
dao=1;
while(true)
{
}
}