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

Tags: