Tải bản đầy đủ (.doc) (7 trang)

Đề thi lập trình nhúng giữa kì 2011

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (190.38 KB, 7 trang )

ĐỀ KIỂM TRA GIỮA KỲ
MÔN LẬP TRÌNH NHÚNG
HK 1 – 2011/2012
Thời gian: 45 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 (2đ):
Những đoạn chương trình nào sẽ bị báo lỗi khi biên dịch? Nếu có lỗi, giải thích ngắn gọn.
a)





b)




c)










Họ và tên:…………………………………. MSSV:………………… Trang - 1 -


Không báo lỗi
Báo lỗi
Không báo lỗi
Báo lỗi
Không báo lỗi
Báo lỗi
d)




Câu 2 (2đ):
Cho đoạn chương trình sau:
1 char x;
2 char *pchar;
3 int *pint = 0x2000;
int *pint1 = pint + 1;
4 *pint = 0x1234;
5 *pint1 = 0x5678;
6 pchar = (char *)pint + 1;
7 x = *pchar;
a) (1đ) Đoạn chương trình trên sẽ ảnh hưởng đến các ô nhớ nào? Điền địa chỉ và giá
trị của chúng vào bảng sau và giải thích ngắn gọn.
Địa chỉ (theo số hex) Giá trị (theo số hex)





b) (1đ) Điền giá trị của các con trỏ và biến x vào bảng sau. Giải thích ngắn gọn

Giá trị (theo số hex)
pint
pint1
pchar
x
Họ và tên:…………………………………. MSSV:………………… Trang - 2 -
Không báo lỗi
Báo lỗi





Câu 3 (6đ):
Cho sơ đồ như hình vẽ sau:
(Sinh viên xem chú thích ở cuối trang 6)
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
ALE
A8
A9
A10
A11
A12

A13
A14
A15
/WE
/RD
A13
A14
A15
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
LATCH_LED1
LATCH_LED2
LATCH_LED2LATCH_LED1
/WE
XTAL2
18

XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2

P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28

P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
PACKAGE=DIL40
VCC
X1
CRYSTAL
C1
33p
C2
33p
VCC
VCC
A
1
B
2

C
3
E1
6
E2
4
E3
5
Y0
15
Y1
14
Y2
13
Y3
12
Y4
11
Y5
10
Y6
9
Y7
7
U7
74LS138
SW0
SW1
SW2
SW3

D0
3
Q0
2
D1
4
Q1
5
D2
7
Q2
6
D3
8
Q3
9
D4
13
Q4
12
D5
14
Q5
15
D6
17
Q6
16
D7
18

Q7
19
OE
1
LE
11
U4
74LS373
D0
3
Q0
2
D1
4
Q1
5
D2
7
Q2
6
D3
8
Q3
9
D4
13
Q4
12
D5
14

Q5
15
D6
17
Q6
16
D7
18
Q7
19
OE
1
LE
11
U8
74LS373
VCC
VCC
2
3
1
U9:A
7402
5
6
4
U9:B
7402
LED1 LED2
Họ và tên:…………………………………. MSSV:………………… Trang - 3 -

a) (1đ) Tìm địa chỉ của LED1 và LED2
Địa chỉ của LED1 là:

Địa chỉ của LED2 là:

Giải thích:








b) (2đ) Hoàn chỉnh module switch (switch.h và switch.c) chứa các hàm initSW và
readSwitch
File switch.h:
#ifndef

#define

#include <reg51.h>
// Khởi tạo chân port để đọc bằng cách ghi 1 vào các bộ chốt của các
chân //port có giao tiếp switch
void initSwitch(void);
// Đọc giá trị của 4 Switch, Switch 0 có trọng số nhỏ nhất. Giá trị đọc được
có //tầm từ 0-15
char readSwitch(void);
#endif
File switch.c:

#include

void initSwitch(void){




}
char readSwitch(void){
Họ và tên:…………………………………. MSSV:………………… Trang - 4 -



}
c) (2đ) Hoàn chỉnh module LED (led.h và led.c)
File led.h:
#ifndef

#define

#include <reg51.h>
//Định nghĩa 2 macro mô tả 2 con trỏ chỉ đến địa chỉ của LED1 và LED2
#define LED1

#define LED2

// Hàm displayLED nhận tham số là 1 số từ 0-15, hiển thị giá trị tham số ra
2 //LED 7 đoạn. LED1 hiển thị hang chục, LED2 hiển thị hang đơn vị.

void displayLED(char number);

#endif

File led.c:
#include
//Khai báo mảng chứa bảng mã 7 đoạn (trong bộ nhớ code)
unsigned char ………… Led7SegCode[ ] =




// Định nghĩa hàm displayLED
void displayLED(char number){




Họ và tên:…………………………………. MSSV:………………… Trang - 5 -








}
d) (1đ) Viết module main.c đọc giá trị từ 4 Switch và hiển thị giá trị ra 2 LED.
Trong module main.c có sử dụng 2 module led và switch đã viết ở trên
File main.c:
#include


#include

void main (void)
{











}
Chú thích:
Ngõ ra Q0 của 74373 nối vào thanh a của LED

Ngõ ra Q6 của 74373 nối vào thanh g của LED
Digit Led 7 Seg Code
0 0xC0
1 0xF9
2 0xA4
3 0xB0
4 0x99
Họ và tên:…………………………………. MSSV:………………… Trang - 6 -
5 0x92
6 0x82

7 0xF8
8 0x80
9 0x90
Cán bộ ra đề
Họ và tên:…………………………………. MSSV:………………… Trang - 7 -

×