Bài 2:PIC Blink led
Bài 2:PIC Blink led
Bài 2:PIC Blink led
Bài 2:PIC Blink led
Bài 2:PIC Blink led
Bài 2:PIC Blink led
Tài liệu
Bài 2:PIC Blink led
Yêu cầu: Nhấp nháy 2 led với chu kì khác nhau
Thiết bí sử dụng
- PIC 16F887
- 2 led
- 2 điện trở 220
Mạch đi dây

Chương trình điều khiển
#define led PIN_B0
#define led1 PIN_B1
unsigned int8 giay ,bdn, bdn1 ;
#int_timer1
void interrupt_timer1()
{
bdn++;
bdn1++;
set_timer1(3060);
}
void main()
{
setup_timer_1 (t1_internal|t1_div_by_8); //khai báo timer1 giao động nội với tỉ lệ 1:8
set_tris_b(0x00);
set_timer1(3036);
enable_interrupts(global);
enable_interrupts(int_timer1);
giay =0;
bdn=0;
bdn1 = 0;
output_high(led1);
while(TRUE)
{
if (bdn<=10) output_low(led); //blink led 1s
if (bdn>10) output_high(led);
if (bdn>20) bdn=bdn-20;
if (bdn1<=3) output_low(led1); // blink led1 300ms
if (bdn1>3) output_high(led1);
if (bdn1>6) bdn1=bdn1-6;
}
}
Ở đây mình sử dụng timer nội của PIC. Khởi tạo timer1 với xung nội có tần số 20MHz qua bộ chia 4 còn 5MHz.Sử dụng bộ chia là 8 nên xung vào bộ nhớ đếm với tần số còn lại là 5MHz/8 = 0.625MHz hay 625000Hz.
Tần số 625000Hz có nghĩa là 1s sẽ có 625000 xung hay đếm 625000 xung sẽ tương dương 1s
Sử dụng timer1 để đếm nhưng timer 1 chỉ có 16bit với giới hạn lớn nhất 65536 xung sẽ tràn, vậy ta sẽ thiết lập timer đếm 62500 thì tràn và đếm 10 lần sẽ được 625000 xung. Mỗi lần tràn sẽ tăng biến đếm ngắt (bdn), khi đủ 10 lần sẽ được 1s và reset bdn.
Để thiết lập timer1 đếm đến 62500 tràn thì ta sẽ đặt giá trị ban đầu của nó là 3036 (65536-62500) .







