Chế độ SLEEP của PIC dùng để tiết kiệm năng lượng, khi này, dòng tiêu thụ của nó rất thấp. Sau khi đi vào chế độ Sleep  ,bộ dao động hệ thống dừng hoạt động..., chương trình bị dừng ngay sau lệnh sleep().

Chỉ khi gặp một số trường hợp:
- Một số ngắt ngoại vi như : Onchange, INT...
- Reset, watchdog timer.. nó mới thoát khỏi chế độ này.

Trong bài tập này các bạn sẽ thực hành cho MCU - PIC đi vào chế độ ngủ (Sleep) để tiết kiệm năng lượng. Ứng dụng này thực sự có ích khi thiết kế của bạn sử dụng PIN làm nguồn nuôi chính lúc này khi không hoạt động cho PIC vào chế độ ngủ để tiết kiệm PIN. Muốn MCU-PIC thức dậy (Wakeup) các bạn sẽ phải reset, hoặc làm một nút bấm ngay chân RB0 (ngắt ngoài của vi điều khiển) hoặc làm Watchdog timer. Mở Proteus và vẽ mạch như hình :

sleepandwakeup

 Trong ví dụ này lệnh Sleep(); Đưa MCU vào chế độ ngủ và ngừng mọi hoạt động của chương trình, Khi chương trình hoạt động chỉ đơn giản là nhấp nháy LED tại chân RB1. Sau 30s thì cho PIC vào chế độ Sleep. Để Đánh thức (Wakeup) PIC các bạn nhấn push button tại chân RB0 ( ngắt ngoài của vi điều khiển). Các bạn có thể tham khảo bài Nút bấm - push button

#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=12000000)
int1 sleep_mode=0;
int8 n=0;
#INT_EXT
void ext_isr() {
   sleep_mode=0;
   n=0;
}
void main()   {
   output_low(PIN_B1);
   ext_int_edge(H_TO_L);      // init interrupt triggering for button press
   enable_interrupts(INT_EXT);// turn on interrupts
   enable_interrupts(GLOBAL);
   while(TRUE)
   {
      n++;
      if (n>15) {
      sleep_mode=1;
      }
      if(sleep_mode)          // if sleep flag set
         sleep();             // make processor sleep   
      else {
         // LED nhap nhay trong vòng 30s
         output_high(PIN_B1);
         delay_ms(1000);
         output_low(PIN_B1);
         delay_ms(1000);
      }
   }
}

Các bạn có thể download bài học tại đây : Sleep mode and Wakeup vi điều khiển PIC

Xem vi deo mô phỏng bài học :

Nếu bạn thấy hay hãy đăng ký , chia sẻ giúp tôi nhé chúng tôi sẽ thường xuyên cập nhật kiến thức mới về vi điều khiển PIC tại đây