You are on page 1of 8

Nút nhấn

Trần Thị Thiêm


Thiết lập nút nhấn

1. Đối với nút nhấn được gắn ở Port B


2. Đối với nút nhấn được gắn ở các Port khác (A, C, D, E)
1. Đối với nút nhấn được gắn ở Port B

Port B của 16F887 có chức năng Pull-


ups (kéo lên)  Gắn nút nhấn trực tiếp
vào các chân Port B mà không cần đến
trở kéo lên.

* Phải gọi chức năng Pull-ups lúc viết


chương trình
2. Đối với nút nhấn được gắn ở các Port khác (A,
C, D, E)

Nút nhấn gắn ở các Port khác PHẢI CÓ


trở kéo lên.
Lập trình nút nhấn

B1: Thiết lập ngõ vào của Port sử dụng.


VD: set_tris_b(0xff);
Nếu nút nhấn được gắn ở Port B, thêm lệnh pullups
port_b_pullups(0xff);
B2: Xác định nhiệm vụ của nút nhấn. (Nút nhấn 1 nhiệm vụ, Nút nhấn
nhiều nhiệm vụ)
- Đối với 1 nhiệm vụ, trực tiếp nhận giá trị Input: input(PIN_B0);
- Đối với nhiều nhiệm vụ, thực hiện chống dội cho nút nhấn.
Chống dội cho nút nhấn

Dạng 1: Nút nhấn trạng thái (ON/OFF, START/PAUSE)


Dạng 2: Nút nhấn đếm
Dạng 1: State Dạng 2: Counter

VD: Nút nhấn ON/OFF gắn ở chân RB0 VD: Nút nhấn Counter RA7 thực hiện đếm 0-9
điều khiển Led RD1 sáng/tắt và hiển thị số nhị phân tương ứng ở Port D.
Int1 State; Unsigned int8 Count;

Void CheckBtn() Void CheckBtn()


{ {
if(!input(PIN_B0)) if(!input(PIN_B0))
{ {
delay_us(20); delay_us(20);
if(!input(PIN_B0)) if(!input(PIN_B0))
{ {
State=~State; Count++;
while(!input(PIN_B0)); if(Count>9) Count=0;
} while(!input(PIN_B0));
} }
} }
}
BT

1. Hãy vẽ mạch nguyên lý và viết chương trình cho nút nhấn gắn ở
B1 điều khiển 8 Led (D0 – D7) luân phiên các yêu cầu sau: sáng
hết, tắt hết, nhấp nháy liên tục (sáng 300 ms, tắt 200 ms)
2. Hãy vẽ mạch nguyên lý và viết chương trình cho nút nhấn gắn ở
E2 điều khiển 8 Led (D0 – D7) luân phiên các yêu cầu sau: sáng
dần từ RD7  RD0 (rồi tắt hết), sáng dần từ RD0  RD7 (rồi tắt
hết)

You might also like