Nháy led RB0 Timer1
E viết đoạn code, nhưng nó không chạy theo ý mình được.
Giờ e muốn cho delay =1s thì làm sao ạ? CODE: #include <16F877A.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #byte PORTB = 0x00 int16 count; int1 led; //Chuong trinh ngat TMR0 #int_timer1 void interrupt_timer1() { set_timer1(3035); ++count; if(count == 3500) // { count=0; led=~led; if (led==1)output_high(pin_B0); if (led==0)output_low(pin_B0); } } //Chuong trinh chinh void main(void) { set_tris_b(0); set_timer1(3035); setup_timer_1(T1_INTERNAL&T1_DIV_BY_8); enable_interrupts(int_timer1); enable_interrupts(global); led=1; while (true){ interrupt_timer1(); } } E mới học nên cũng chẳng hiểu là con PIC nó sẽ đọc lệnh theo thứ tự nào, bác nào chỉ rõ giúp e mới được không ạ. Một điều nữa là: e thay đổi set_timer1 để căn 1s mà ko thấy tốc độ nháy thay đổi gì, nếu muốn thay đổi tốc độ đèn thì lại phải thay đổi biến count ????? Cảm ơn mấy bác nhiều, ngồi cả ngày mà ko xong... Oải quá |
Bạn có thể làm như sau:
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); set_timer1(6);// T = 2*(256 - 6)*1us = 500us count == 2000 // 2000*500us = 1s |
Timer1
Trích:
Timer1 là timer 16 bit mà mình nghĩ nó phải là 65535 chứ? |
Trích:
Mình làm được rồi, hôm trước đọc được cái kỹ năng tạo vòng lặp sử dụng lệnh DECFSZ và GOTO xếp xen kẽ. |
Múi giờ GMT. Hiện tại là 03:02 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam