cutoi
24-02-2012, 04:05 AM
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á
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á