PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Nháy led RB0 Timer1 (http://www.picvietnam.com/forum/showthread.php?t=13352)

cutoi 24-02-2012 04:05 AM

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á

cyber-life 24-02-2012 12:37 PM

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

Aducbkfet 25-02-2012 06:07 AM

Timer1
 
Trích:

Nguyên văn bởi cyber-life (Post 54464)
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

Sao lại là T = 2*(256 - 6)*1us = 500us nhỉ?
Timer1 là timer 16 bit mà mình nghĩ nó phải là 65535 chứ?

cutoi 26-02-2012 11:23 AM

Trích:

Nguyên văn bởi Aducbkfet (Post 54489)
Sao lại là T = 2*(256 - 6)*1us = 500us nhỉ?
Timer1 là timer 16 bit mà mình nghĩ nó phải là 65535 chứ?

Tên nick nghe quen quen nhể :D

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