3.3.1. Mục đích, yêu cầu
Giúp sinh viên làm quen với thao tác kiểm tra nút nhấn đơn trong các ứng dụng nhập dữ liệu, hiệu chỉnh thông số,cài đặt …
3.3.2. Chương trình tham khảo
Chương trình kiểm tra lần lượt ba nút UP, MODE, DOWN, nếu một trong ba nút được nhấn thì điều khiển phát âm “beep” để thông báo phím đã được nhấn,đồng điều khiển tắt hoặc mở LED tương ứng.
#include <p89v51rx2.h>
//khai bao cac chan dieu khien
#define BTN_UP P2_2
#define BTN_DOWN P2_0
#define BTN_MODE P2_1
#define LED0 P1_0
// khai bao prototype
void delay (unsigned char time); void beep (void);
//chuong trinh chinh
void main (void)
{
while (1)
{
if (BTN_UP == 0)
{
delay (200); //delay chong doi if (BTN_UP == 0)
{
beep();
while (BTN_UP == 0); //cho nha nut
UP LED0 = ~LED0; } } if (!BTN_DOWN) {
delay (200); //delay chong doi
if (!BTN_DOWN)
{
beep();
while (!BTN_DOWN); //cho nha nut
DOWN LED1 = ~LED1; } } if (!BTN_MODE) {
delay (200); //delay chong doi
if (!BTN_MODE)
{
beep();
while (!BTN_MODE); //cho nha nut
MODE
LED2 = ~LED2; }
} }
//cac chuong trinh con
void beep (void)
{ unsigned char i; for (i = 0; i < 20; i ++) { BUZZER = 0; delay (1); BUZZER = 1; delay (1); } }
void delay(unsigned char time)
{
while (time--)
{
TMOD = 0x01; //timer0 che do 16 bit TH0 = 0xFF; //nap gia tri cho timer TL0 = 0xBA;
TR0 = 1; //khoi dong bo dinh thoi
while(!TF0); //cho co TF = 1
TF0 = 0 ; //xoa co TF
TR0 = 0; //dung bo dinh thoi }
}
3.3.3. Bài tập mở rộng
Viết chương trình điều khiển sao cho nếu nút Up nhấn 8 LED đơn sẽ dịch từ trái sang phải, nút Down nhấn dịch từ phải sang trái, nút Mode nhấn thì nhấp nháy cả 8 LED, mỗi kiểu sáng lập lại 5 lần. Sau đó chương trình trở lại kiểm tra 3 nút như ban đầu.