Trang chủ Chưa phân loạiAVR Sử Dụng Timer Đếm Thời Gian Hiển Thị LED 7 Thanh

AVR Sử Dụng Timer Đếm Thời Gian Hiển Thị LED 7 Thanh

bởi Admin
14 lượt xem 1 Phút đọc

AVR Sử Dụng Timer Đếm Thời Gian Hiển Thị LED 7 Thanh

Sơ đồ

Code

#include <mega16.h>
#include <delay.h>
volatile unsigned long dem;
unsigned char flash Maled[10] = {0xc0,0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8 , 0x80, 0x90};
unsigned char i;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    TCNT0 = 130; // luu gia tri dem
    dem++;
}

void hienthi(unsigned int num)
{
     unsigned int ch , dv;
     //tach num luu vao bien ch va dv
     dv= num%10;  //ex: 15%10=5
     ch = num/10; //ex: 15/10=1

     //hien thi led so 1
     PORTD.3 = 0;
     PORTD.2 = 1;
     PORTC = Maled[ch];
     delay_ms(1); 

     //hien thi led so 2 
     PORTD.2 = 0;
     PORTD.3 = 1;
     PORTC = Maled[dv];
     delay_ms(1); 
}
void main(void)
{
    DDRC = 0xff; // output
    PORTC = 0x00; // Low level

    DDRD = (1<<DDD2)|(1<<DDD3); // output
    PORTD = (0<<PORTD2)|(0<<PORTD3); // Low level

    TCCR0 = (1<<CS01)|(1<<CS00); //prescaler = 64
    TCNT0 = 130; // x= 0.001 * 8000000 / 64 = 125
                 // TCNT0  = 255 - 125 = 130 
    TIMSK |= (1<<TOIE0); // mode Normal, cho phép ngat

    #asm ("sei")
    i=55;
    while (1)
      {
            hienthi(i); 
            if(dem>=1000)
            {
                dem=0;
                i++;
                if(i>59)i=0;
                hienthi(i);               
            }        
      }
}

Demo

Để lại bình luận

Focus Mode

Đã phát hiện trình chặn quảng cáo

Vui lòng hỗ trợ chúng tôi bằng cách tắt tiện ích chặn quảng cáo (AdBlocker) trên trình duyệt của bạn khi truy cập trang web của chúng tôi.