Thông báo

Collapse
No announcement yet.

Cần giúp về Timer/Counter ATMEGA8.

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần giúp về Timer/Counter ATMEGA8.

    Mình cần sử dụng 2 timer 8 bit là timer0 và timer2 trong atmega8 để thực hiện băm xung. Với at89 thì có 1 đoạn code rất hay dùng 2 timer:
    Code:
    #include <regx51.h>
     
    unsigned int code mang_t0[]={0,2000,4000,6000,8000,10000,12000,14000,16000,18000,20000};
     
    unsigned int code mang_t1[]={20000,18000,16000,14000,12000,10000,8000,6000,4000,2000,0};
     
     
    unsigned char count_s;
    unsigned char count;
    void T0_ISR();
    void T1_ISR();
    void init();
     
    void main() {
        init();
        while(1);
    }
     
    void init() {
        count=0;//10 cap do
        count_s=0;
        TMOD=0x11;//timer 0, 1 che do 1 16 bit
        P1=0xff;
        TR0=1;
        TF0=1;//ngat luon
        EA=1;
        ET0=1;
        ET1=1;
    }
     
    void T0_ISR() interrupt TF0_VECTOR {
        TR0=0;
        TH1=(0xffff-mang_t1[count])>>8;
        TL1=(0xffff-mang_t1[count])&0xff;
        //P1=mp[count];
        P1=0xff;
        TR1=1;
    }
     
    void T1_ISR() interrupt TF1_VECTOR {
        TR1=0;
        TH0=(0xffff-mang_t0[count])>>8;
        TL0=(0xffff-mang_t0[count])&0xff;
        ++count_s;
        if(count_s==5) {
            count_s=0;
            ++count;
            if(count==11) {
                count=0;
            }
        }
        P1=0x00;
        TR0=1;
    }
    ..
    Tức là 1 timer cho xuất mức logic 0, timer kia xuất mức 1. Khi ngắt tràn timer này chính là lúc bắt đầu khởi tạo timer kia...cứ thế sẽ điều được xung để xuất ra. Cái này dùng cho led sáng dần, mờ dần rất hay.
    _ Tuy nhiên khi mình áp dụng với ATMEGA8 thì chưa biết cách biến đổi như thế nào.
    Đây là code mình định làm cho con led mờ mờ (thời gian xuất 1 =1/3 thời gian xuất 0)

    Code:
    #include <mega8.h>
    
    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {   TCCR2 = 0x05;
        TCNT2 = 0X10;
        PORTD = 0Xff;
          }
    
    // Timer2 overflow interrupt service routine
    interrupt [TIM2_OVF] void timer2_ovf_isr(void)
    {  TCNT0 = 0XAA;
       PORTD = 0X00;
        }
    
    // Declare your global variables here
    
    void main(void)
    {
    
    PORTB=0x00;
    DDRB=0xFF;
    
    PORTC=0x00;
    DDRC=0xFF;
    
    PORTD=0x00;
    DDRD=0xFF;
    
    TCCR0=0x05; // thực hiện chia tần cho 1024
    TCNT0=0x01;
              // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x41; // cho phép ngắt trên timer0 và timer2
    
    
    // Global enable interrupts
    #asm("sei")
    
    while (1)
          {
          // Place your code here
    
          }
    }
    ......
    Khi building thì không có lỗi nhưng lắp mạch thì không thực hiện được.
    Mọi người xem giúp mình nhé.
    p/s: Mục đích là muốn điều xung trên tất cả các PORT dùng 2 timer0 và timer2

Về tác giả

Collapse

cdmxtbhk Tìm hiểu thêm về cdmxtbhk

Bài viết mới nhất

Collapse

  • bqviet
    Trả lời cho Đấu tắt điện cho máy tính bảng
    bởi bqviet
    Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
    06-12-2025, 17:17
  • nguyendinhvan
    Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
    bởi nguyendinhvan
    Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
    05-12-2025, 19:59
  • afrendly
    Trả lời cho Đấu tắt điện cho máy tính bảng
    bởi afrendly
    Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
    04-12-2025, 01:27
  • nick22
    Trả lời cho Máy điện châm ?
    bởi nick22
    Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
    01-12-2025, 13:23
Đang tải...
X