Professional Documents
Culture Documents
Gui ví dụ và BT phần ngắt
Gui ví dụ và BT phần ngắt
Ví dụ 1: Dựa vào sơ đồ, viết chương trình điều khiển như sau:
- LED D5 sáng/tắt liên tục với thời gian thay đổi trạng thái là 2s.
1
- LED D4 chỉ thay đổi trạng thái (sáng/tắt) sau mỗi lần nhấn-nhả SW4. Sử dụng phương pháp
Polling để xác định trạng thái SW4.
Sơ đồ nguyên lý
Ví dụ 2: Dựa vào sơ đồ, viết chương trình điều khiển như sau:
- LED D5 sáng/tắt liên tục với thời gian thay đổi trạng thái là 2s.
2
- LED D4 chỉ thay đổi trạng thái (sáng/tắt) sau mỗi lần nhấn-nhả SW4. Phải sử dụng tính năng ngắt
ngoài để xác định trạng thái SW4.
Sơ đồ nguyên lý
Hướng dẫn
Nguyên lý hoạt động: sử dụng
ngắt ngoài (INT) trên chân RB0 để kiểm soát nút nhấn SW4
Các thanh ghi:
Lưu đồ giải thuật có hai Chương trình (XC8):
Chương trình chính và CTcon cho ngắt void main (void)
{
ANSEL = ANSELH = 0x00;
TRISE1 = TRISE2 = 0;
TRISB0 = 1;
nRBPU = 0; WPUB0 = 1;
INTEDG = 1;
INTF = 0;
GIE = 1; INTE = 1;
while (1)
{
RE2 = 1; __ delay_ms (2000);
RE2 = 0;
__delay_ms (2000);
}
}
void interrupt ISR (void) // đặt trước chương trình main
{
INTF = 0;
RE1 = ! RE1;
}
Ví dụ 3: Dựa vào sơ đồ, viết chương trình điều khiển như sau:
-LED D5 sáng/tắt liên tục với thời gian thay đổi trạng thái là 2s.
-LED D4 chỉ thay đổi trạng thái (sáng/tắt) sau mỗi lần nhấn-nhả SW4. Phải sử dụng tính năng
ngắt Port B để xác định trạng thái SW4.
Hướng dẫn
3
Nguyên lý hoạt động: sử dụng ngắt PORTB (RB) trên chân RB0 để kiểm soát nút nhấn SW4
Các thanh ghi:
Lưu đồ giải thuật có hai Chương trình (XC8):
Chương trình chính và CTcon cho ngắt portB void main (void)
{
ANSEL = ANSELH = 0x00;
TRISE1 = TRISE2 = 0;
TRISB0 = 1;
nRBPU = 0; WPUB0 = 1;
RBIF = 0;
GIE = 1; RBIE = 1;
OCWB0=1;
PORTB;
while (1)
{
RE2 = 1;
__ delay_ms (2000);
RE2 = 0; __delay_ms (2000);
}
}
void interrupt ISR (void) // đặt trước chương trình main
{
PORTB;
RBIF = 0;
If(RB0==1) RE1 = ! RE1;
}
4
BÀI TẬP ỨNG DỤNG NGĂT
Bài tập 1: Dựa vào sơ đồ mô phỏng, vẽ lưu đồ giải thuật và viết chương trình điều khiển
8 LED sau mỗi lần nhấn – nhả của nút nhấn bằng cách sử dụng tính năng ngắt như sau:
- Ban đầu: LED tắt hết
- SW ON: LED sáng đuổi từ D1 – D8 liên tục với tDELAY = 0,5s
- SW OFF: LED sáng tắt liên tục với tDELAY = 0,1s
Bài tập 2: Dựa vào sơ đồ mô phỏng, vẽ lưu đồ giải thuật và viết chương trình điều khiển
LED sau mỗi lần nhấn – nhả của nút nhấn bằng cách sử dụng tính năng ngắt như sau:
- Ban đầu: LED hiển thị số 0
- SW UP: LED tăng (+1) số đếm (giới hạn số đếm: 0 – 9)
- SW DOWN: LED giãm (-1) số đếm (giới hạn số đếm: 0 – 9)
Bài tập 3: Dựa vào sơ đồ mô phỏng, vẽ lưu đồ giải thuật và viết chương trình điều khiển
LED sau mỗi lần nhấn – nhả của nút nhấn bằng cách sử dụng tính năng ngắt như sau:
- Ban đầu: LED hiển thị số 00
- SW UP: LED tăng dần (+1) liên tục số đếm hiện tại (giới hạn số đếm: 0 – 23)
- SW DOWN: LED giãm dần (-1) liên tục số đếm hiện tại (giới hạn số đếm: 0 – 23)