wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Lâp trình C bản phao 5

Total questions: 31

Worksheet time: 16mins

Name
Class
Date
1.

Một LED đơn được kết nối với chân RD0 theo kiểu cathode chung (chân âm của LED được nối đất). Nút nhấn RB0 được treo pull-up. Cho đoạn mã sau:
if (!input(PIN_B0)) {
    output_high(PIN_D0);
} else {
    output_low(PIN_D0);
}

a)

LED sáng khi nhấn nút và tắt khi thả nút.

b)

LED tắt khi nhấn nút và sáng khi thả nút.

c)

LED sáng liên tục, không thay đổi trạng thái khi nhấn nút.

d)

LED tắt liên tục, không thay đổi trạng thái khi nhấn nút.

2.

Một LED 7 thanh được kết nối với Port C theo kiểu cathode chung (các chân âm của LED 7 thanh được nối đất). Cho đoạn mã sau để hiển thị các số từ 0 đến 9:
int segments[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 0; i < 10; i++) {
    output_c(segments[i]);
    delay_ms(500);
}
Đoạn mã trên sẽ làm gì?

a)

Các số từ 9 đến 0 theo thứ tự giảm dần.

b)

Các số từ 0 đến 9 theo thứ tự tăng dần.

c)

Các số từ 9 đến 0 nhưng bỏ qua số 0.

d)

LED 7 thanh không hiển thị đúng do lỗi trong đoạn mã.

3.

Một LED 7 thanh được kết nối với Port D theo kiểu cathode chung (các chân âm của LED 7 thanh được nối đất). Cho đoạn mã sau:
int segments[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 1; i < 10; i += 2) {
    output_d(segments[i]);
    delay_ms(500);
}

Không hiển thị đúng do lỗi trong vòng lặp.

a)

Hiển thị các số lẻ từ 1 đến 9 theo thứ tự tăng dần.

b)

Hiển thị các sHiển thị các số chẵn từ 0 đến 8 theo thứ tự tăng dần.ố từ 3 đến 0 theo thứ tự giảm dần.

c)

Hiển thị số 3 liên tục trên LED Hiển thị các số từ 9 đến 1 theo thứ tự giảm dần. thanh.

d)

LED 7 thanh không hiển thị do lỗi trong vòng lặp.Không hiển thị đúng do lỗi trong vòng lặp.

4.

Một LED 7 thanh được kết nối với Port B theo kiểu cathode chung. Cho đoạn mã sau:
signed int i;
int segments[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D};

for (i = 5; i >= 0; i--) {
    output_b(segments[i]);
    delay_ms(500);
}

Đoạn mã trên sẽ làm gì khi nhấn nút RB1?

a)

Các số từ 5 đến 0 theo thứ tự giảm dần.

b)

Các số từ 0 đến 5 theo thứ tự tăng dần.

c)

Các số từ 5 đến 0 nhưng bỏ qua số 0.


d)

LED 7 thanh không hiển thị đúng do lỗi trong đoạn mã.


5.

Một LED 7 thanh được kết nối với Port D theo kiểu cathode chung. Nút nhấn RB0 được treo pull-up. Cho đoạn mã sau:
int segments[] = {0x3F, 0x06, 0x5B, 0x4F};
int i = 0;

while (1) {
    if (!input(PIN_B0)) {
        delay_ms(20);
        if (!input(PIN_B0)) {
            output_d(segments[i]);
            i = (i + 1) % 4;
            while (!input(PIN_B0));
        }
    }
}

Đoạn mã trên sẽ làm gì khi nhấn nút RB0?

a)

Hiển thị các số từ 0 đến 3 trên LED 7 thanh theo thứ tự tăng dần, mỗi lần nhấn nút hiển thị một số.

b)

Hiển thị các số từ 3 đến 0 theo thứ tự giảm dần.

c)

Hiển thị số 3 liên tục trên LED 7 thanh.

d)

LED 7 thanh không hiển thị do lỗi trong vòng lặp.

6.

Một LED 7 thanh được kết nối với Port C theo kiểu anode chung. Nút nhấn RB1 được treo pull-down. Cho đoạn mã sau:
int segments[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66};
int i = 4;
while (1) {
    if (input(PIN_B1)) {
        delay_ms(20);
        if (input(PIN_B1)) {
            output_c(~segments[i]);
            i = (i - 1 + 5) % 5;
            while (input(PIN_B1));
        }
    }
}
Đoạn mã trên sẽ làm gì khi nhấn nút RB1?*

a)

Hiển thị các số từ 4 đến 0 trên LED 7 thanh theo thứ tự giảm dần, mỗi lần nhấn nút hiển thị một số.

b)

Hiển thị các số từ 0 đến 4 theo thứ tự tăng dần.

c)

Hiển thị số 4 liên tục trên LED 7 thanh.

d)

LED 7 thanh không hiển thị do lỗi trong phép toán i - 1.

7.

Một dãy 8 LED được kết nối với Port D theo kiểu cathode chung. Cho đoạn mã sau:
int state = 0x00;

while (1) {
    state = (state << 1) | 0x01;
    output_d(state);
    delay_ms(200);
    if (state == 0xFF) {
        break;
    }
}
Đoạn mã trên sẽ tạo hiệu ứng gì trên dãy LED?*

a)

A. Tất cả LED bật sáng cùng lúc.

b)

B. LED sáng từ RD0 đến RD7, từng LED sáng thêm một trong mỗi bước.

c)

C. LED sáng từ RD7 đến RD0, từng LED sáng thêm một trong mỗi bước.

d)

D. Tất cả LED sáng dần rồi tắt ngay lập tức.

8.

Một dãy 8 LED được kết nối với Port B theo kiểu cathode chung. Cho đoạn mã sau:
int state = 0xFF;

while (1) {
    state = state >> 1;
    output_b(state);
    delay_ms(200);
    if (state == 0x00) {
        break;
    }
}
Đoạn mã trên sẽ tạo hiệu ứng gì trên dãy LED?

a)

LED sáng lần lượt từ RB7 đến RB0, mỗi lần chỉ có một LED sáng.

b)

LED sáng dần từ RB0 đến RB7, từng LED sáng thêm một trong mỗi bước.

c)

LED tắt từ RB0 đến RB7, từng LED tắt một trong mỗi bước.

d)

tất cả LED tắt ngay lập tức sau khi sáng đầy đủ.

9.

Một dãy 8 LED được kết nối với Port D theo kiểu cathode chung. Cho đoạn mã sau:
int state = 0x01;

while (1) {
    output_d(state);
    delay_ms(200);
    state = state << 1;
    if (state == 0x00) {
        break;
    }
}
Đoạn mã trên sẽ tạo hiệu ứng gì trên dãy LED?*

a)

LED sáng dần từ RD0 đến RD7, từng LED sáng thêm một trong mỗi bước.

b)

LED sáng lần lượt từ RD0 đến RD7, mỗi lần chỉ có một LED sáng.

c)

LED sáng từ RD7 đến RD0, mỗi lần chỉ có một LED sáng.

d)

Tất cả LED sáng cùng lúc rồi tắt dần từ RD7 đến RD0.

10.

Một dãy 8 LED được kết nối với Port B theo kiểu cathode chung. Cho đoạn mã sau:
int state = 0x80;

while (1) {
    output_b(state);
    delay_ms(200);
    state = state >> 1;
    if (state == 0x00) {
        break;
    }
}
Đoạn mã trên sẽ tạo hiệu ứng gì trên dãy LED?

a)

A. LED sáng lần lượt từ RB7 đến RB0, mỗi lần chỉ có một LED sáng.

b)

B. LED sáng dần từ RB0 đến RB7, từng LED sáng thêm một trong mỗi bước.

c)

C. LED sáng từ RB0 đến RB7, mỗi lần chỉ có một LED sáng.

d)

D. Tất cả LED sáng rồi tắt ngay lập tức.

11.

Một dãy 8 LED được kết nối với Port D theo kiểu cathode chung. Cho đoạn mã sau:
int state = 0x18;

while (1) {
    output_d(state);
    delay_ms(200);
    state = (state << 1) | (state >> 1);
    if (state == 0xFF) {
        break;
    }
}
Đoạn mã trên sẽ tạo hiệu ứng gì trên dãy LED?*

a)

A. LED sáng lần lượt từ RD0 đến RD7, mỗi lần chỉ có một LED sáng.

b)

B. LED sáng từ giữa ra ngoài, từng LED sáng thêm ở hai bên trong mỗi bước.

c)

C. LED sáng từ RD7 đến RD0, từng LED sáng thêm ở hai bên trong mỗi bước.

d)

D. Tất cả LED sáng ngay lập tức.

12.

Một LED đơn được kết nối với PIN_D0. Nút nhấn RB0 được treo trở lên dương (pull-up). Đoạn mã sau được sử dụng để điều khiển LED:
if (temperature > 35) {
    output_toggle(PIN_D0);
    delay_ms(500);
} else if (temperature < 25) {
    output_low(PIN_D0);
} else {
    output_high(PIN_D0);
}

a)

A. LED tắt khi nhiệt độ < 25°C, sáng liên tục khi nhiệt độ từ 25°C đến 35°C, và nhấp nháy khi nhiệt độ > 35°C.

b)

B. LED sáng liên tục khi nhiệt độ < 25°C, tắt khi nhiệt độ từ 25°C đến 35°C, và nhấp nháy khi nhiệt độ > 35°C.

c)

C. LED nhấp nháy khi nhiệt độ < 25°C, sáng liên tục khi nhiệt độ > 35°C, và tắt khi nhiệt độ từ 25°C đến 35°C.

d)

D. LED luôn sáng do điều kiện kiểm tra nhiệt độ không hợp lệ.

13.

Một LED đơn được kết nối với PIN_B0 theo kiểu cathode chung. Nút nhấn RB1 treo trở lên dương (pull-up). Đoạn mã sau được dùng:
if (input(PIN_B1)) {
    output_high(PIN_B0);
} else {
    output_low(PIN_B0);
}
LED không sáng khi nhấn nút. Nguyên nhân nào đúng?*

a)

A. Sai trạng thái kiểm tra nút nhấn.

b)

B. LED không được cấp nguồn đúng.

c)

C. Nút nhấn bị hỏng.

d)

D. Thiếu cấu hình chân I/O.

14.

Một LED 7 thanh kết nối với Port D theo kiểu cathode chung. Chương trình hiển thị số 0–9 lần lượt. Đoạn mã sau được dùng: int led[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; for (int i = 0; i <= 10; i++) { output_d(led[i]); delay_ms(500); } LED 7 thanh không hiển thị đúng các số. Nguyên nhân nào đúng?

a)

A. Sai giá trị mã LED trong mảng led[].

b)

B. Điều kiện vòng lặp i <= 10 dẫn đến lỗi truy cập ngoài mảng.

c)

C. LED 7 thanh không hỗ trợ mã đầu vào dạng HEX.

d)

D. Thời gian trễ giữa các lần hiển thị không đủ.

15.

Một động cơ bước 4 pha kết nối với Port B. Chương trình điều khiển động cơ quay thuận. Đoạn mã sau được sử dụng: int step[] = {0x01, 0x02, 0x04, 0x06}; for (int i = 0; i < 4; i++) { output_b(step[i]); delay_ms(100); } Động cơ không quay mà chỉ rung tại chỗ. Nguyên nhân nào đúng?

a)

A. Sai thứ tự pha trong mảng step[].

b)

B. Độ trễ giữa các bước quá ngắn.

c)

C. Lệnh output_b() không hỗ trợ điều khiển động cơ bước.

d)

D. Điều kiện vòng lặp i < 4 không phù hợp.

16.

Một cảm biến ánh sáng được kết nối với chân AN0 để đo độ sáng trong khoảng 0–100%. Đoạn mã sau được sử dụng để đọc giá trị ánh sáng:
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
delay_us(20);
int value = read_adc();
float brightness = value * 100 / 1024.0;Giá trị ánh sáng thu được không chính xác. Nguyên nhân nào đúng?

a)

A. Thời gian chờ sau khi chọn kênh ADC không đủ lớn.

b)

B. Giá trị 1024.0 trong công thức tính toán không đúng với độ phân giải ADC.

c)

C. Thanh ghi ADC chưa được cấu hình đúng.

d)

D. Lệnh setup_adc_ports() không phù hợp với kênh AN0.

17.

Một cảm biến nhiệt độ được kết nối với AN0. Nhiệt độ trong khoảng 0–50°C tương ứng với giá trị ADC từ 0–1023. Đoạn mã sau được dùng để tính nhiệt độ:
int adc_value = read_adc();
float temperature = (adc_value / 1023) * 50;

Kết quả tính toán nhiệt độ sai. Nguyên nhân nào đúng?

a)

A. Giá trị 50 cần chuyển thành số thực (50.0).

b)

B. Phép chia adc_value / 1023 thực hiện phép chia số nguyên.

c)

C. Giá trị trả về của hàm read_adc() không chính xác.

d)

D. Giá trị adc_value vượt quá phạm vi cho phép của kiểu int.

18.

Đoạn mã sau được dùng để đọc giá trị ADC và tính điện áp:
int adc_value = read_adc();
float voltage = adc_value * 5 / 1023;

Kết quả tính điện áp sai. Nguyên nhân nào đúng?

a)

A. Biến adc_value cần chuyển thành số thực trước khi thực hiện phép toán.

b)

B. Biến voltage không được khai báo là double.

c)

C. Phép toán adc_value * 5 không thể thực hiện được với kiểu dữ liệu int.

d)

D. Giá trị 5 / 1023 là sai vì cả hai là số nguyên.

19.

Hoàn thiện đoạn mã để LED đơn trên chân PIN_D0 nhấp nháy với chu kỳ 1 giây khi nút RB0 được nhấn.
if (____________________) { // Dòng 1
    output_toggle(PIN_D0);
    ____________________; // Dòng 2
}

a)

input(PIN_B0) == 0 delay_ms(1000);

b)

input(PIN_B0) == 1 delay_ms(500);

c)

!input(PIN_B0) delay_ms(1000);

d)

input(PIN_B0) delay_ms(1000);

20.

Một LED đơn được kết nối với PIN_D0 theo kiểu cathode chung. Nút nhấn RB1 được treo trở lên dương (pull-up). Hoàn thiện đoạn mã để bật LED khi nút được nhấn:
if (____________________) { // Dòng 1
    output_high(PIN_D0);
} else {
    output_low(PIN_D0);
}*

1 điểm

a)

A. input(PIN_B1) == 0

b)

B. input(PIN_D0) == 1

c)

C. input(PIN_B1) & 1

d)

D. PIN_B1 == 0

21.

Một LED đơn được kết nối với PIN_D0 theo kiểu cathode chung. Nút nhấn RB1 được treo trở lên dương (pull-up). Hoàn thiện đoạn mã để tắt LED sau khi nút được nhấn 5 lần, bỏ qua các lần giữ nút:
int count = 0;
int prev_input = 1;
if (____________________) { // Dòng 1
    count++;
    ____________________; // Dòng 2
}
prev_input = input(PIN_B1); // Cập nhật trạng thái nút nhấn*

a)

input(PIN_B1) == 0 && prev_input == 1 if (count == 5) output_low(PIN_D0);

b)

!input(PIN_B1) && prev_input == 1 if (count >= 5) output_low(PIN_D0);

c)

input(PIN_B1) == 0 if (count == 5) output_toggle(PIN_D0);

d)

input(PIN_B1) && prev_input == 0 if (count == 5) output_low(PIN_D0);

22.

Một LED 7 thanh kết nối với Port D theo kiểu cathode chung. Hoàn thiện đoạn mã để LED chỉ hiển thị các số lẻ từ 1–9:
int led[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 1; ____________________) { // Dòng 1
    if (____________________) { // Dòng 2
        output_d(led[i]);
        delay_ms(500);
    }
}*

a)

i <= 9; i += 2 i % 2 == 1

b)

i <= 10; i++ i % 2 == 0

c)

i <= 9; i++ i % 2 == 1

d)

i <= 9; i += 2 i % 2 == 0

23.

Một LED 7 thanh được kết nối với Port D theo kiểu cathode chung. Hoàn thiện đoạn mã để LED chỉ hiển thị các số chẵn từ 0–8:
int led[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 0; ____________________) { // Dòng 1
    if (____________________) { // Dòng 2
        output_d(led[i]);
        delay_ms(500);
    }
}

a)

i <= 8; i += 2 i % 2 == 0

b)

i <= 9; i++ i % 2 == 1

c)

i <= 8; i++ i % 2 == 0

d)

i <= 9; i += 2 i % 2 == 0

24.

Một LED 7 thanh kết nối với Port D theo kiểu cathode chung. Hoàn thiện đoạn mã để LED chỉ hiển thị các số lẻ từ 9–1 theo thứ tự giảm dần:
int led[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 9; ____________________) { // Dòng 1
    if (____________________) { // Dòng 2
        output_d(led[i]);
        delay_ms(500);
    }
}

*

a)

i >= 1; i -= 2 i % 2 == 1

b)

i >= 0; i -= 1 i % 2 == 0

c)

i >= 1; i-- i % 2 == 1

d)

i >= 0; i -= 2 i % 2 == 1

25.

Một LED 7 thanh kết nối với Port D theo kiểu cathode chung. Hoàn thiện đoạn mã để LED chỉ hiển thị các số chẵn từ 8–0 theo thứ tự giảm dần:
int led[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 8; ____________________) { // Dòng 1
    if (____________________) { // Dòng 2
        output_d(led[i]);
        delay_ms(500);
    }
}

a)

i >= 0; i -= 2 i % 2 == 0

b)

i >= 1; i -= 2 i % 2 == 1

c)

i >= 0; i-- i % 2 == 0

d)

i >= 0; i -= 2 i % 2 == 1

26.

Một LED 7 thanh kết nối với Port D theo kiểu cathode chung. Hoàn thiện đoạn mã để LED hiển thị các số lẻ từ 1–9 theo thứ tự tăng dần, sau đó giảm dần về 1:
int led[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

for (int i = 1; i <= 9; i += 2) {
    output_d(led[i]);
    delay_ms(500);
}
for (int i = ____________________) { // Dòng 1
    if (____________________) { // Dòng 2
        output_d(led[i]);
        delay_ms(500);
    }
}

a)

9; i >= 1; i -= 2 i % 2 == 1

b)

7; i >= 1; i -= 2 i % 2 == 0

c)

9; i >= 1; i -= 2 i % 2 == 0

d)

8; i >= 0; i -= 2 i % 2 == 1

27.

Một cảm biến nhiệt độ được kết nối với chân AN0. Nhiệt độ trong khoảng 0–50°C tương ứng với điện áp 0–5V. Hoàn thiện đoạn mã để chuyển đổi giá trị ADC thành nhiệt độ:
set_adc_channel(0);
delay_us(20);
int adc_value = read_adc();
float temperature = ____________________; // Dòng 1

a)

A. (adc_value * 50) / 1023.0

b)

B. (adc_value * 5) / 1023.0

c)

C. (adc_value / 1023.0) * 50

d)

D. (adc_value * 1023) / 50.0

28.

Một cảm biến ánh sáng được kết nối với chân AN1. Giá trị ADC trong khoảng 0–1023 tương ứng với độ sáng 0–100%. Hoàn thiện đoạn mã để tính giá trị độ sáng:
set_adc_channel(1);
delay_us(20);
int adc_value = read_adc();
float brightness = ____________________; // Dòng 1

a)

A. (adc_value / 1023.0) * 100

b)

B. (adc_value * 100) / 1023.0

c)

C. (adc_value / 100) * 1023

d)

D. (adc_value * 5) / 1023.0

29.

Một động cơ bước 4 pha sử dụng mã điều khiển sau:
int step_sequence[4] = {0x08, 0x04, 0x02, 0x01};

for (int i = 0; i < 4; i++) {
    output_b(step_sequence[i]);
    delay_ms(delay_time); // Điều chỉnh tốc độ ở đây
}
Nếu delay_time ban đầu là 10ms, giá trị nào sau đây làm động cơ quay chậm hơn?*

a)

A. delay_time = 5

b)

B. delay_time = 15

c)

C. delay_time = 8

d)

D. delay_time = 1

30.

Chọn đoạn mã điều khiển động cơ như bên dưới:
int step_sequence[4] = {0x08, 0x04, 0x02, 0x01};
// Quay thuận
for (int i = 0; i < 4; i++) {
    output_b(step_sequence[i]);
    delay_ms(10);
}
// Quay ngược
for (____________________) {
    output_b(step_sequence[i]);
    delay_ms(10);
}
Hãy hoàn thiện phần thiếu để động cơ quay ngược lại.*

a)

A. signed int i = 3; i >= 0; i--

b)

B. int i = 3; i >=0; i--

c)

C. int i = 3; i < 4; i++

d)

D. int i = 0; i < 4; i++

31.

Một động cơ bước có mỗi bước tương ứng với góc quay 1.8°. Hoàn thiện đoạn mã sau để tính số bước cần thiết để quay động cơ một góc 90° và thực hiện điều khiển quay:
int step_sequence[4] =  {0x08, 0x04, 0x02, 0x01};
int steps = ____________________; // Dòng 1

for (int i = 0; i < steps; i++) {
    output_b(step_sequence[i % 4]);
    delay_ms(10);
}

a)

A. 90 / 1.8

b)

B. 90 * 1.8

c)

C. 180 / 1.8

d)

D. 180 * 1.8