Chào mọi người ! Mình dùng timer/counter 1 để thử thực hiện bài toán đếm người đi vào 1 căn phòng ! theo lí thuyết TCNT1 tăng từ 0 đến 1 giá trị của OCRA1A thì sẽ thực hiện một (compare match-ngắt so sánh) xảy ra Sau khi set bit và cài đặt cho các thanh ghi và tham khảo hàm ngắt của codevioson 1 cách đầy đủ thì mình mô phỏng lại bằng protues ! Nhưng khi nhấn công tắc 5 lần (nói với chân T1 - lấy xung ngoài ngắt sườn âm) thì led 7 thanh vẫn chưa nhảy lên 1 ! Hy vọng được các sư huynh chỉ giáo ! đây là code của mình ! Mã: #include <mega8.h> #include <delay.h> unsigned char val=0; interrupt [TIM1_COMPA] void timer1_compa_isr(void) { val++; if(val==10)val=0;//gioi han bien val tu 0 den 9 TCNT1=0; PORTB=val; //xuat gia tri ra PORTB } void main (void) { DDRB=0xff;//PORTB la output portb PORTB=0x00; TCNT1=0; TCCR1B=(1<<WGM12)|(1<<CS12)|(1<<CS11); //xung nhip tu chan T1 canh xuong OCR1A=4; //gan gia tri can so sanh TIMSK=(1<OCIE1A);//cho phep ngat khi dem gia tri =4 #asm ("sei") //set bit nay de ngat toan cuc while(1) { //do nothing } }
Em đang đọc đến phần T/C1 thì có giới thiệu bài viết đếm sự kiện với T/C1(giả sử lắp với cảm biến cứ 5 người đi qua sẽ báo1 lần ) nên em lắp thay cảm biến bằng nút button ! ^^ ! Chủ yếu em muốn tìm hiểu kĩ về ngắt với Timer/counter ! Thanks anh