Đề thi lập trình nhúng giữa kì có đáp án

4 2.3K 41
Đề thi lập trình nhúng giữa kì có đáp án

Đang tải... (xem toàn văn)

Thông tin tài liệu

Đề thi lập trình nhúng giữa kì có đáp án

ĐH Quốc Gia Tp.HCM ĐH Bách Khoa Khoa Điện-Điện tử Bộ môn Điện tử o0o ĐỀ THI GIỮA HỌC KỲ 2, 2011-2012 Lớp CQ DD08 Môn thi: Lập trình nhúng - Thời gian: 50 phút (Sinh viên được phép tham khảo tài liệu; Sinh viên không được phép sử dụng máy vi tính, laptop) Bài 1: (3 điểm) Cho 2 đoạn code C sau: (a) (b) char func (void) { static char sum1 = 0; char sum2 = 0; sum1 = sum1 + 1; sum2 = sum2 + 2; return (sum1 + sum2); } void main(void) { char i; char S=0; for(i=0;i<3;i++) S = S+func(); } int inc(int a, int *b ) { a = a*2; (*b) ++; return a + (*b); } void main(void) { int i; int n1 = 2; int n2 = 3; int T=0; for(i=0;i<3;i++) T += inc (n1, &n2 ); } a) Sau khi thực hiện chương trình (a), kết quả biến S là bao nhiêu? Giải thích. b) Sau khi thực hiện chương trình (b), giá trị của biến T là bao nhiêu? Giải thích. Trả lời: Chú ý: bi ế n static lưu giá tr ị cũ sau khi thoát khỏi hàm Vòng lặp i=0 sum1 = 0 + 1 = 1 sum2 = 0 + 2 = 2 S = 0+3 = 3 Vòng lặp i=1 sum1 = 1 + 1 = 2 sum2 = 0 + 2 = 2 S = 3+4 = 7 Vòng lặp i=2 sum1 = 2 + 1 = 3 sum2 = 0 + 2 = 2 S = 7+5=12 => Đáp án là S = 12 Chú ý: đ ố i s ố ki ể u con tr ỏ s ẽ lưu giá tr ị cũ sau khi thoát khỏi hàm, đối số kiểu truyền giá trị sẽ không thay đổi giá trị sau khi thoát khỏi hàm Vòng lặp i=0 n1 = 2 n2 = 3 + 1 = 4 T = 8 Vòng lặp i=1 n1 = 2 n2 = 4 + 1 = 5 T = 8 + 9 = 17 Vòng lặp i=2 n1 = 2 n2 = 5 + 1 = 6 T = 17 + 10 = 27 => đáp án là T = 27 Bài 2: (3 điểm) Hãy viết chương trình C cho vi điều khiển 8051 theo yêu cầu sau: • Vi điều khiển đọc giá trị nhị phân 8-bit không dấu tại Port 0 và Port1 • Nếu giá trị tại Port 0 > giá trị tại Port 1 thì ngõ ra P3.0 bằng 1 • Nếu giá trị tại Port 0 < giá trị tại Port 1 thì ngõ ra P3.1 bằng 1 • Nếu giá trị tại Port 0 = giá trị tại Port 1 thì ngõ ra P3.2 bằng 1 • Những trường hợp khác P3.0, P3.1, P3.2 bằng 0. Hãy viết chương trình C theo cấu trúc 2 files: • main.h: mô tả định nghĩa các Port vào và ra • main.c: thực hiện tạo ngõ ra theo giải thuật đề ra Trả lời: /* main.h */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P3 = 0xB0; sbit GT = P3^0; sbit LT = P3^1; sbit EQ = P3^2; /* main.c */ #include "main.h" void main() { char A, B; while(1){ A = P0; B = P1; if (A>B) { GT = 1; LT = 0; EQ = 0; } else if (A<B) { GT = 0; LT = 1; EQ = 0; } else { GT = 0; LT = 0; EQ = 1; } } } Bài 3: (4 điểm) Cho một hệ thống nhúng sử dụng 8051 thực hiện 2 tác vụ sau: • Tác vụ 1: Hiển thị 8 LED đuổi bắt tại Port 1, mỗi chu kỳ 1 LED sáng trong 1 giây, tích cực mức 0. • Tác vụ 2: Hiển thị 8 LED chớp tắt luân phiên chẵn lẻ tại Port3, ví dụ: trong chu kỳ 1, LED 0, 2, 4, 6 sáng; trong chu kỳ 2, LED 1, 3, 5, 7 sáng, LED tích cực mức 0. Chu kỳ chớp tắt là 0.5 giây. a) (1 điểm) Hãy vẽ sơ đồ máy trạng thái cho hệ thống trên b) (3 điểm) Hãy viết chương trình C để thực hiện chức năng điều khiển hệ thống trên. Trả lời: a) Sơ đồ máy trạng thái P1=7F P1=BF P1=DF P1=EF P1=FB P1=F7 P1=FD P1=FE P3=AA P3=55 b) Chương trình C /* main.h */ sfr P1 = 0x90; sfr P3 = 0xB0; /* main.c */ #include "main.h" void delay500ms() { int i; for(i=0;i<250;i++); // phụ thuộc vào clock sử dụng } void update_led_chasing() { static char state; switch(state) { case 0: P1 = 0x7F; state = 1; break; case 1: P1 = 0xBF; state = 2; break; case 2: P1 = 0xDF; state = 3; break; case 3: P1 = 0xEF; state = 4; break; case 4: P1 = 0xF7; state = 5; break; case 5: P1 = 0xFB; state = 6; break; case 6: P1 = 0xFD; state = 7; break; case 7: P1 = 0xFE; state = 0; break; default: state = 0; P1 = 0xFF; break; } } void update_led_blinking() { static char state; switch(state) { case 0: P3 = 0xAA; state = 1; break; case 1: P3 = 0x55; state = 0; break; default: state = 0; P3 = 0xFF; break; } } void main() { while(1) { update_led_chasing(); update_led_blinking(); delay500ms(); update_led_blinking(); delay500ms(); } } Chủ nhiệm bộ môn duyệt Người ra đề TS. Trương Quang Vinh . Tp.HCM ĐH Bách Khoa Khoa Điện-Điện tử Bộ môn Điện tử o0o ĐỀ THI GIỮA HỌC KỲ 2, 2011-2012 Lớp CQ DD08 Môn thi: Lập trình nhúng - Thời gian: 50 phút (Sinh viên được phép tham khảo tài. 17 Vòng lặp i=2 n1 = 2 n2 = 5 + 1 = 6 T = 17 + 10 = 27 => đáp án là T = 27 Bài 2: (3 điểm) Hãy viết chương trình C cho vi điều khiển 8051 theo yêu cầu sau: • Vi điều khiển đọc. 4, 6 sáng; trong chu kỳ 2, LED 1, 3, 5, 7 sáng, LED tích cực mức 0. Chu kỳ chớp tắt là 0.5 giây. a) (1 điểm) Hãy vẽ sơ đồ máy trạng thái cho hệ thống trên b) (3 điểm) Hãy viết chương trình

Ngày đăng: 11/05/2014, 16:02

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan