Đếm từ 0 đến 9999 sử dụng timer 1 để quét led with CCS

8:03:00 PM
Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn cách dùng timer 1 để quét led. Phần timer 1 thì có nhiều trên mạng nên các bạn có thể lên mạng tìm hiểu thêm hoặc quay lại các bài đăng trước của mình để xem lại.

Ảnh mô phỏng protues.



Đây là code chương trình.

#include <16f877a.h>
#include <def_877a.h>
#fuses HS,NOLVP,NOWDT,PUT,XT
#use delay(clock=4000000)
int maled[10]={0X03,0X9F,0X25,0X0D,0X99,0X49,0X41,0X1F,0X01,0X09};
int16 giatri;
int16 chuc,donvi,tram,nghin,i;
#bit led1 =portc.4
#bit led2 =portc.3
#bit led3 =portc.2
#bit led4 =portc.1
void hienthi(int16 giatri)
{
nghin = giatri/1000;
tram = (giatri - nghin*1000)/100;
chuc = (giatri - nghin*1000 - tram*100)/10;
donvi = giatri - nghin*1000 - tram*100 - chuc*10;

portb=maled[nghin];
led4=0;
delay_ms(5);
led4=1;

portb=maled[tram];
led3=0;
delay_ms(5);
led3=1;

portb=maled[chuc];
led2=0;
delay_ms(5);
led2=1;

portb=maled[donvi];
led1=0;
delay_ms(5);
led1=1;
}
void main()
{
giatri = 0;
i = 0;
TMR1IF=0;
setup_timer_1(T1_INTERNAL | T1_DIV_BY_2);
set_timer1(24280);
trisc=0x00;
trisb=0x00;
portc=0xff;
while(true)
{
while(TMR1IF==0)
{
hienthi(giatri);
}
i++;
TMR1IF=0;
set_timer1(24280); // 65535 - 24280 = 41255
if(i==2) // 41255*2 = 82510us = 82ms
{
i=0;
giatri++;
if(giatri==9999) // thay đổi số cần đếm ở đây.
{
giatri=0;
}
}
}
}

Link download project.
http://adf.ly/11512871/0-9999-timer1

Share this

Related Posts

Previous
Next Post »