ĐỀ KIỂM TRA HỌC KỲ
MÔN LẬP TRÌNH NHÚNG
HK 1 – 2011/2012
Thời gian: 65 phút
(SV được sử dụng tài liệu, làm bài ngay trên đề)
(Đề thi có 6 trang)
Câu 1: (3 đ)
Cho sơ đồ sau:
R 2
R
D 4
L E D
R 1
R
D 1
L E D
V C C
R 2
R
D 3
L E D
V C C
S W 1
1 2
U 1
A T 8 9 C 5 1
9
1 8
1 9
2 9
3 0
3 1
1
2
3
4
5
6
7
8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
P S E N
A L E / P R O G
E A / V P P
P 1 . 0
P 1 . 1
P 1 . 2
P 1 . 3
P 1 . 4
P 1 . 5
P 1 . 6
P 1 . 7
P 2 . 0 / A 8
P 2 . 1 / A 9
P 2 . 2 / A 1 0
P 2 . 3 / A 1 1
P 2 . 4 / A 1 2
P 2 . 5 / A 1 3
P 2 . 6 / A 1 4
P 2 . 7 / A 1 5
P 3 . 0 / R X D
P 3 . 1 / T X D
P 3 . 2 / I N T 0
P 3 . 3 / I N T 1
P 3 . 4 / T 0
P 3 . 5 / T 1
P 3 . 6 / W R
P 3 . 7 / R D
P 0 . 0 / A D 0
P 0 . 1 / A D 1
P 0 . 2 / A D 2
P 0 . 3 / A D 3
P 0 . 4 / A D 4
P 0 . 5 / A D 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
D 2
L E D
R 2
R
R 2
R
a) Vẽ máy trạng thái thực hiện công việc sau:
Khi reset, LED D1 sáng, các LED còn lại tắt.
Các LED lần lượt sáng theo thứ tự D1-D2-D3-D4-D1 … mỗi khi nhấn SW
(không chống rung).
LED chuyển trạng thái ngay khi SW nhấn xuống
Họ và tên:…………………………………. MSSV:………………… Trang - 1 -
Họ và tên:…………………………………. MSSV:………………… Trang - 2 -
b) Viết chương trình C cho 8051 dựa trên máy trạng thái vừa thiết lập.
Họ và tên:…………………………………. MSSV:………………… Trang - 3 -
Câu 2: (3đ)
Trong chương trình cho ARM cortex M3, gọi hàm process như sau:
#include <stdio.h>
extern int process(int a, int b, int c);
int main()
{
int a, b, c, d;
a = 1;
b = 2;
c = 3;
d = process (a, b, c);
return (0);
}
Hãy thực thi hàm process bằng assembly để tính phép tính: a + b – c .
AREA asm_func, CODE, READONLY
THUMB
EXPORT process
Họ và tên:…………………………………. MSSV:………………… Trang - 4 -
Câu 3: (1đ)
a) Nêu sự khác nhau cơ bản giữa pre-emptive kernel và non-preemptive kernel
Câu 4: (1 đ)Trả lời các câu hỏi về FreeRTOS bằng cách chọn 1 câu trả lời đúng
nhất
Họ và tên:…………………………………. MSSV:………………… Trang - 5 -
a) Số lượng queue nhỏ nhất được dùng trong chương trình:
0 1
b) Số lượng queue lớn nhất nhất được dùng trong chương trình
0 1 lớn hơn 1 nhưng bị giới hạn không giới hạn
c) Số lượng tác vụ nhỏ nhất được dùng trong chương trình (kể cả idle):
0 1 2
d) Số lượng tác vụ lớn nhất nhất được dùng trong chương trình (kể cả idle)
1 lớn hơn 1 nhưng bị giới hạn không giới hạn
Câu 5: (2đ) Giả sử có 3 tác vụ T1 với mức ưu tiên thấp, T2 và T3 có cùng mức ưu
tiên cao hơn. Trả lời các câu hỏi sau bằng cách chọn câu trả lời đúng (có thể có nhiều
hơn 1)
a) Không có tác vụ nào bị block. Tác vụ nào sẽ được thực thi
T0 T1 T2
b) Tác vụ idle có đuợc chạy không?
Có Không
c) Task T2 truy cập một queue rỗng (empty queue). Tác vụ nào sẽ đuợc thực thi
T0 T1 T2
d) Những trường hợp nào có thể xảy ra với task T2? Khoanh tròn tất cả các trường
hợp có thể có.
Bị block mãi mãi
Unblock sau 1 thời gian tối đa
Block cho đến khi 1 tác vụ khác ghi vào queue
Block cho đến khi task T2 ghi vào queue
BM Điện Tử Cán bộ ra đề
Họ và tên:…………………………………. MSSV:………………… Trang - 6 -