Your Knowledge Your Future
Tiếng Việt English
Hotline: 0902561426

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) .

Tin khác

Thông báo mới

Fanpage facebook

Liên kết website