cach 2 Đây là chương trình dùng ngắt Timer0 định thì 1s.
#include <16F877A.h>
#fuses NOWDT, PUT, XT, NOPROTECT
#use delay(clock=4000000)
#define INITIAL_VALUE 6
byte count;
byte led;
void change_led(void);
#int_timer0
void interrupt_timer0() {
set_timer0(INITIAL_VALUE);
count++;
if (count == 2000) {
count = 0;
change_led();
}
}
void main() {
set_tris_b(0);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2); // set mod
set_timer0(INITIAL_VALUE); // set initial value
count = 0;
led = 1;
while (true)
output_b(led);
}
void change_led() {
led = led << 1;
if (led == 0)
led = 1;
}
Bạn đang đọc truyện trên: AzTruyen.Top