Đọc Trạng Thái Button PIC dùng Mlap
Yêu cầu bài toán:
* Chân C0 Nối với Led 1 : nhấp nháy liên tục delay 100 ms.
* Chân C1 Nối với Led 2: Sáng khi Button nối với B0 Nhấn.
Sơ đồ shematic như hình.
Code chương trình
#include <xc.h> #define _XTAL_FREQ 20000000 //define crystal frequency to 20MHz void main(void) { TRISC0=0; //set RC0 pin as a digital output pin TRISC1=0; //set RC0 pin as a digital output pin TRISB0=1; //set RC0 pin as a digital output pin RC0=0; RC1=0; while(1) { RC0 = 1; // set RC0 pin to logic High & turn on __delay_ms(100); //add delay of 1 second RC0 = 0; // set RC0 pin to logic low & turn off __delay_ms(100); //add delay of 1 second if(RB0==1) { RC1=1; } else { RC1=0; } } return; }
GIẢI THÍCH CODE:
* Cấu hình Thạch anh 20 MHZ.
#define _XTAL_FREQ 20000000 //define crystal frequency to 20MHz
Bạn có thể cấu hình theo yêu cầu dư án của bạn 8Mhz hay 12 Mhz ...
* CẤU HÌNH OUTPUTS.
TRISC0=0; //set RC0 pin as a digital output pin TRISC1=0; //set RC0 pin as a digital output pin
TRISC0 =0 ; // Chân C0 dùng làm xuất dữ liệu.
TRISC1 =0 ; // Chân C1 dùng làm xuất dữ liệu.
* CẤU HÌNH INPUTS.
TRISB0=1; //set RC0 pin as a digital output pin
TRISB0 =1; // Chân B0 làm INPUT đọc dữ liệu từ Button.
* LED 1 NỐI RC0, LED 2 NỐI RC1.
CẤU HÌNH 2 LED LÚC ĐẦU TẮT.
RC0=0; RC1=0;
* CHƯƠNG TRÌNH BLYNK LED RC0 - LED 1.
RC0 = 1; // set RC0 pin to logic High & turn on __delay_ms(100); //add delay of 1 second RC0 = 0; // set RC0 pin to logic low & turn off __delay_ms(100); //add delay of 1 second
* CHƯƠNG TRÌNH ĐỌC NÚT NHẤN RB0.
if(RB0==1) { RC1=1; // LED 2 BẬT } else { RC1=0; // LED 2 TẮT }