![]() |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Sep 2010
Bài gửi: 16
: |
sửa dùm em đoạn chương trình đếm với gấp lắm ạ
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) { } } |
![]() |
![]() |
|
|