02-05-2010, 02:22 PM
|
#6
|
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
:
|
Trích:
Nguyên văn bởi hammecuala
mình viết code như sau, muc đích là khi mình nhấn công tắc rồi thì dãy đèn led nó mới bắt đầu chạy, nhưng nó mình làm thì nó lại chạy ngay cả khi mình chưa nhấn nút
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#byte PORTB = 0x06
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(6);
++count;
if(count == 2000) // 2000*500us = 500000us = 1s
{
count=0;
rotate_left(&a,1);
}
}
//Chuong trinh chinh
void main(void)
{
set_tris_b(0);
set_tris_a(0xff);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
enable_interrupts(global);
if(input(pin_A0)==0)
{
delay_ms(10);
set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
a = 0x01;
}
while(true)
{
PORTB = a;
}
}
|
************************************************** ***
Trích:
Nguyên văn bởi hammecuala
mình viết code như sau, muc đích là khi mình nhấn công tắc rồi thì dãy đèn led nó mới bắt đầu chạy, nhưng nó mình làm thì nó lại chạy ngay cả khi mình chưa nhấn nút
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#byte PORTB = 0x06
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(6);
++count;
if(count == 2000) // 2000*500us = 500000us = 1s
{
count=0;
rotate_left(&a,1);
}
}
//Chuong trinh chinh
void main(void)
{
set_tris_b(0);
adcon1=0x06;//them lenh nay de port A la che do I/O
set_tris_a(0xff);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
enable_interrupts(global);
if(input(pin_A0)==0)
{
delay_ms(10);
set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
a = 0x01;
}
while(true)
{
PORTB = a;
}
}
|
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
|
|
|