Tình hình là em mới tập tành về PIC. Em muốn hiển thị từ 00-99 trên LED 7 đọan tăng dần. Cứ cách 1s tăng 1 số. Code đây ạ:
#include <16f877a.h>
#use delay(clock=20000000)
unsigned int8 so[10]={0b11000000,0b11111001,0b10100100,0b10110000,0b10 011001,0b10010010,0b10000010,0b11111000,0b10000000 ,0b10010000};
void bat_led1()
{
output_c(0b00000001);
}
void bat_led2()
{
output_c(0b000000010);
}
void hienthi(unsigned int16 x)
{
unsigned int8 chuc=x/10;
unsigned int8 donvi=x%10;
bat_led1();
output_b(so[chuc]);
delay_ms(5);
bat_led2();
output_b(so[donvi]);
delay_ms(5);
}
void main()
{
while(true)
{
unsigned int16 i;
for(i=00;i<100;i++)
{
hienthi(i);
delay_ms(1000);
}
}
}
Khổ là nếu giữ nguyên code như vậy thì mạch mô phỏng vẫn chạy, nhưng LED1 chỉ nhấp nháy(theo code là 5ms) và LED2 thì sáng đến tận 1s.
. Cứ như vậy. Em đã cho vòng lặp while() ở trong phần hienthi() nhưng nếu như vậy thì mạch mô phỏng chỉ hiện lên số 00.
. Vậy có cách nào khắc phục không ạ? Anh nào chỉ em với
#include <16f877a.h>
#use delay(clock=20000000)
unsigned int8 so[10]={0b11000000,0b11111001,0b10100100,0b10110000,0b10 011001,0b10010010,0b10000010,0b11111000,0b10000000 ,0b10010000};
void bat_led1()
{
output_c(0b00000001);
}
void bat_led2()
{
output_c(0b000000010);
}
void hienthi(unsigned int16 x)
{
unsigned int8 chuc=x/10;
unsigned int8 donvi=x%10;
bat_led1();
output_b(so[chuc]);
delay_ms(5);
bat_led2();
output_b(so[donvi]);
delay_ms(5);
}
void main()
{
while(true)
{
unsigned int16 i;
for(i=00;i<100;i++)
{
hienthi(i);
delay_ms(1000);
}
}
}
Khổ là nếu giữ nguyên code như vậy thì mạch mô phỏng vẫn chạy, nhưng LED1 chỉ nhấp nháy(theo code là 5ms) và LED2 thì sáng đến tận 1s.



Comment