You are on page 1of 78

CÂU HỎI THI TRẮC NGHIỆM

Tên học phần: Kỹ Thuật Vi Xử Lý Mã học phần: ELE1317


Số tín chỉ: 03

Thứ Đáp Phương án trả lời Điểm


tự án
Nội dung câu hỏi
câu A B C D
hỏi
Chức năng chính của Gửi dữ liệu qua
1 Lưu trữ dữ liệu Hiển thị dữ liệu Xử lý dữ liệu 1
CPU là gì? mạng
Khối nào của CPU chịu
ALU
trách nhiệm thực hiện các RAM (Random ROM (Read-Only CU (Control
2 (Arithmetic 1
phép tính cơ bản như Access Memory) Memory) Unit)
Logic Unit)
cộng, trừ, nhân, chia?
Thành phần nào trong
CPU chịu trách nhiệm ALU
RAM (Random ROM (Read-Only CU (Control
3 điều khiển hoạt động của (Arithmetic 1
Access Memory) Memory) Unit)
máy tính và lấy dữ liệu từ Logic Unit)
bộ nhớ?
Trong kiến trúc CISC, Kiểm soát luồng
một lệnh có thể thực hiện Các phép tính chương trình Cả ba câu kia
4 Truy cập bộ nhớ 1
nhiều tác vụ khác nhau toán (Chuyển tới địa đều đúng
bao gồm: chỉ khác)
Kiến trúc RISC tập trung Tối ưu hóa hiệu Giảm độ phức tạp Điều khiển bộ
5 Tăng đa nhiệm 1
vào điều gì? suất xử lý của lệnh nhớ
6 ROM và RAM đều là ROM lưu trữ dữ ROM lưu trữ dữ ROM lưu trữ dữ ROM lưu trữ dữ 1
loại bộ nhớ trong máy liệu dùng cho liệu dùng cho liệu mà người liệu lưu trữ tạm
tính. Tuy nhiên, điểm việc khởi động các chương trình dùng nhập vào, thời, trong khi
khác biệt quan trọng nhất máy tính, trong ứng dụng, trong trong khi RAM RAM lưu trữ dữ
khi RAM lưu trữ
dữ liệu làm việc khi RAM lưu trữ liệu dùng cho
lưu trữ dữ liệu hệ
giữa chúng là gì? trong quá trình dữ liệu hệ điều việc khởi động
thống
hoạt động của hành máy tính
máy tính
Lưu các chương
Trong một hệ thống vi xử Lưu các hằng trình khởi động Lưu các chương
Lưu các dữ liệu
7 lý bộ nhớ ROM thường biến của chương hệ thống và quản trình ứng dụng 1
cần truy cập nhanh
được sử dụng để: trình lý các thiết bị nạp từ ổ cứng
ngoại vi
Lưu các chương
Trong một hệ thống vi xử Lưu các hằng và trình khởi động Lưu các chương
Lưu các dữ liệu
8 lý bộ nhớ RAM thường các biến của hệ thống và quản trình ứng dụng 1
cần truy cập nhanh
được sử dụng để: chương trình lý các thiết bị nạp từ ổ cứng
ngoại vi
BUS địa chỉ (Address Truyền dữ liệu
Điều khiển các Định vị ví trí sẽ
Bus) trong hệ thống vi xử giữa CPU với bộ Cả ba câu kia
9 chế độ hoạt động truyền dữ liệu với 1
lý được sử dụng để làm nhớ và cổng vào đều đúng
của hệ thống CPU
gì? ra
Trong một hệ thống vi xử Có tín hiệu chỉ
10 lý BUS địa chỉ là các tín Ngõ vào Ngõ ra Hai chiều vào, chỉ ra, hai 1
hiệu: chiều
Trong một hệ thống vi xử Có tín hiệu chỉ
11 lý BUS dữ liệu là các tín Ngõ vào Ngõ ra Hai chiều vào, chỉ ra, hai 1
hiệu: chiều
Có tín hiệu chỉ
Trong một hệ thống vi xử
vào, tín hiệu chỉ
12 lý BUS điều khiển là các Ngõ vào Ngõ ra Hai chiều 1
ra, và tín hiệu hai
tín hiệu:
chiều
13 BUS điều khiển (Control Truyền dữ liệu Điều khiển các Định vị ví trí sẽ Cả ba câu kia 2
Bus) trong hệ thống vi xử giữa CPU với bộ chế độ hoạt động truyền dữ liệu với đều đúng
lý được sử dụng để làm nhớ và cổng vào của hệ thống CPU
gì? ra
Vi xử lý không
Hệ thống vi xử thể hoạt động
lý thường sử một mình, nó cần Vi xử lý không
dụng cho các kết nối với bộ tích hợp các chức
ứng dụng lớn nhớ và vào ra để năng ngoại vi, như
Khác nhau cơ bản giữa vi hoặc đa năng. tạo thành hệ GPIO, UART, Cả ba câu kia
14 2
xử lý và vi điều khiển là: Còn vi điều thống vi xử lý. SPI, v.v. Còn vi đều đúng
khiển thưởng sử Còn vi điều điều khiển thường
dụng cho các khiển là một hệ tích hợp các thành
ứng dụng thống vi xử lý phần trên
chuyên dụng tích hợp trong
một IC
ALU thường thực hiện
Các phép so Các phép tính số Các phép tính Cả ba câu kia đề
15 các phép xử lý dữ liệu 2
sánh học logic đúng
nào?
Tín hiệu chọn một phép
16 tính thực hiện trong ALU Thanh ghi PC CU Vào ra Bộ nhớ 2
được cung cấp từ:
Khi CPU cấp
Khi vào ra nhận
Khi nào thì cổng vào ra đúng địa chỉ của Khi thiết bị
được dữ liệu cấp Cả ba câu kia
17 được mở để CPU truyền cổng vào ra và ngoại vi tác động 2
tới từ thiết bị ngoại đều đúng
dữ liệu tới một ngoại vi? tín hiệu điều mở cổng vào ra
vi
khiển tích cực
CPU có 16 đường địa chỉ
18 thì sẽ quản lý được bao 65536 16384 8192 32768 2
nhiêu vị trí bộ nhớ?
Dung lượng bộ nhớ mà
CPU quản lý sẽ là bao
19 nhiêu nếu nó có 20 2MB 1MB 4MB 8MB 2
đường địa chỉ và 8 đường
dữ liệu?
CPU sẽ tự động CPU sẽ thực hiện
Điều gì xảy ra khi thanh Người lập trình
điều chỉnh giá trị các lệnh mà
ghi bộ đếm chương trình sẽ được thông
20 của PC để quay Sẽ xảy ra ngoại lệ người lập trình 2
PC trỏ vào vùng nhớ dữ báo bằng một cơ
về vùng nhớ không kiểm soát
liệu? chế đặc biệt
chứa mã lệnh được
Nếu CPU sử dụng 8 bit
địa chỉ thì nó có thể quản
21 256 128 64 32 2
lý được bao nhiêu vị trí
vào ra?
Biến đổi tín hiệu
Biến đổi tín hiệu
tương tự từ CPU
tương tự từ ngoại
thành tín hiệu số
vi thành tín hiệu số
cung cấp cho
Giao tiếp tín hiệu cung cấp cho
Các bộ ADC và DAC ngoại vi, và
tương tự giữa các CPU, và ngược lại Cả ba câu kia
22 trong hệ thống vi xử lý ngược lại biến 2
ngoại vi của hệ biến đổi tín hiệu số đều đúng
thực hiện chức năng gì? đổi tín hiệu
thống với nhau từ CPU thành tín
tương tự từ CPU
hiệu tương tự cung
thành tín hiệu số
cấp ra bên ngoài
cung cấp ra bên
ngoại vi
ngoài ngoại vi
PWM thường được sử
dụng trong các ứng dụng Tăng tốc độ Giảm tốc độ Đảo chiều quay Câu ##A và ##B
23 2
điều khiển động cơ để động cơ động cơ của động cơ đều đúng
làm gì?
Programmed
Pulse Width Power Width Pulse Waveform
24 PWM là viết tắt của gì? Wave 2
Modulation Modulation Manipulation
Manipulation
PWM có thể được tạo ra
trên một vi điều khiển
25 hoặc hệ thống vi xử lý Điện áp đầu vào Điện áp nguồn Timer/Counter Điều khiển từ xa 2
bằng cách sử dụng khối
chức năng nào?
Thanh ghi chưa
Thanh ghi được Thanh ghi sử dụng
các dữ liệu trung
Khi có các thanh ghi sử dụng làm nơi làm nơi chứa các
gian của chương Cả ba câu kia
26 chương trình sẽ thực hiện chứa các kết quả giá trị biến cung 2
trình, giảm bớt đều đúng
nhanh hơn do: cuối cùng của cấp từ các thiết bị
các chu kỳ đọc
chương trình vào
ghi bộ nhớ
CPU sử dụng tín hiệu của
BUS nào để thông báo Cả ba câu kia
27 Địa chỉ Dữ liệu Điều khiển 2
cho vào ra biết cần cấp đều đúng
hay nhận dữ liệu?
Các cách mà một
Các cách mà lệnh hoặc một Là các vị trí của
Các chế độ địa chỉ Cả ba câu kia
28 một lệnh xử lý hướng dẫn lấy dữ liệu và mã lệnh 2
“Addressing mode” là: đều đúng
các dữ liệu địa chỉ hoặc dữ trong bộ nhớ
liệu
CISC thường hỗ
trợ nhiều chức
năng phức tạp
CISC tích hợp
trong lệnh, điều
CISC hỗ trợ các nhiều chức năng
này giúp đơn
Các CPU CISC sẽ có các kiểu dữ liệu đơn phức tạp trong một
giản hóa quá Cả ba câu kia
29 lợi điểm gì so với các giản nên dễ dàng lệnh nên quá trình 2
trình lập trình đều đúng
CPU RISC? trong việc lập thực hiện chương
cho các ứng
trình hơn trình sẽ nhanh
dụng phức tạp
chóng hơn
như hệ điều hành
và phần mềm
ứng dụng
30 Cấu trúc đường ống Là việc thực Là việc thực hiện Là việc thực hiện Cả ba câu kia 2
(Pipeline) là gì? hiện đồng thời tuần tự từng các lệnh một cấu đều đúng
nhiều lệnh tại lệnh, lệnh này trúc ống trong vi
một thời điểm, thực hiện xong xử lý
mỗi lệnh thực mới tới lệnh kế
hiện một công
tiếp
đoạn khác nhau
Là tập hợp các
lệnh sắp xếp
Là tập hợp các
theo một thuật
Là tập lệnh của lệnh được người
Chương trình trong các toán nhất định Cả ba câu kia
31 vi xử lý do nhà sử dụng sắp xếp 2
hệ thống vi xử lý là gì? để xử lý một đều đúng
sản xuất công bố một cách ngẫu
công việc hay
nhiên
một bài toán
nhất định
Các chương trình chứa
Các chương Các chương trình Các chương trình Các chương trình
trong bộ nhớ để CPU
32 trình bằng ngôn ngôn ngữ cấp mã máy (Machine hợp ngữ 2
thực hiện là các chương
ngữ bất kỳ cao language) (Assembly)
trình dưới dạng:
CPU nhận địa
CPU cấp địa chỉ, CPU cấp địa chỉ,
chỉ từ bộ nhớ, CPU cấp địa chỉ,
cấp tín hiệu điều cấp tín hiệu điều
cấp tín hiệu điều cấp tín hiệu điều
khiển chọn bộ khiển chọn bộ
Để đọc dữ liệu từ bộ nhớ, khiển chọn bộ khiển chọn bộ nhớ,
nhớ, cấp tín hiệu nhớ, nhận tín
33 CPU cần thực hiện các nhớ, cấp tín hiệu cấp tín hiệu yêu 3
yêu cầu đọc bộ hiệu cho phép
công việc nào? yêu cầu đọc bộ cầu đọc bộ nhớ và
nhớ và nhận dữ đọc bộ nhớ và
nhớ và nhận dữ cấp dữ liệu ra data
liệu từ data bus nhận dữ liệu từ
liệu từ data bus bus vào
vào data bus vào
vào
CPU nhận địa
CPU cấp địa chỉ, CPU cấp địa chỉ,
chỉ từ bộ nhớ, CPU cấp địa chỉ,
cấp tín hiệu điều cấp tín hiệu điều
cấp tín hiệu điều cấp tín hiệu điều
khiển chọn bộ khiển chọn bộ
Để ghi dữ liệu ra bộ nhớ, khiển chọn bộ khiển chọn bộ nhớ,
nhớ, cấp tín hiệu nhớ, nhận tín
34 CPU cần thực hiện các nhớ, cấp tín hiệu cấp tín hiệu yêu 3
yêu cầu ghi bộ hiệu cho phép
công việc nào? yêu cầu ghi bộ cầu ghi bộ nhớ và
nhớ và nhận dữ ghi bộ nhớ và
nhớ và nhận dữ cấp dữ liệu ra data
liệu từ data bus cấp dữ liệu ra
liệu từ data bus bus
vào data bus
vào
CPU nhận địa CPU cấp địa chỉ, CPU cấp địa chỉ,
CPU cấp địa chỉ,
chỉ từ vào ra, cấp cấp tín hiệu điều cấp tín hiệu điều
cấp tín hiệu điều
tín hiệu điều khiển chọn vào ra, khiển chọn vào
khiển chọn vào
Để đọc dữ liệu từ vào ra, khiển chọn vào nhận tín hiệu cho ra, cấp tín hiệu
ra, cấp tín hiệu
35 CPU cần thực hiện các ra, cấp tín hiệu phép đọc từ vào ra yêu cầu đọc vào 3
yêu cầu đọc vào
công việc nào? yêu cầu đọc vào và nhận dữ liệu từ ra và cấp dữ liệu
ra và nhận dữ
ra và nhận dữ data bus vào ra data bus
liệu từ data bus
liệu từ data bus
vào
vào
CPU cấp địa chỉ, CPU nhận địa CPU cấp địa chỉ, CPU cấp địa chỉ,
cấp tín hiệu điều chỉ từ vào ra, cấp cấp tín hiệu điều cấp tín hiệu điều
khiển chọn vào tín hiệu điều khiển chọn vào ra, khiển chọn vào
Để ghi dữ liệu ra vào ra,
ra, cấp tín hiệu khiển chọn vào cấp tín hiệu yêu ra, nhận tín hiệu
36 CPU cần thực hiện các 3
yêu cầu ghi vào ra, cấp tín hiệu cầu phép ghi vào cho phép ghi từ
công việc nào?
ra và nhận dữ yêu cầu phép ghi ra và cấp dữ liệu ra vào ra và cấp dữ
liệu từ data bus vào ra và cấp dữ data bus liệu ra data bus
vào liệu ra data bus
CPU nhận địa CPU cấp địa chỉ
CPU cấp địa chỉ từ
chỉ vào PC, cấp từ PC, cấp tín
PC, cấp tín hiệu
tín hiệu chọn bộ hiệu chọn bộ
Để đọc lệnh, CPU cần thực chọn bộ nhớ, nhận Cả ba câu kia
37 nhớ, cấp tín hiệu nhớ, cấp tín hiệu 3
hiện các công việc nào? tín hiệu đọc từ bộ đều đúng
đọc bộ nhớ và đọc bộ nhớ và
nhớ và lấy mã lệnh
lấy mã lệnh từ lấy mã lệnh từ
từ data bus
data bus data bus
Khi thực hiện các lệnh
với dữ liệu nằm trên các Mang các mức
Là các đường trở
38 thanh ghi bên trong CPU, Là các ngõ vào Là các ngõ ra logic không xác 3
kháng cao
data bus của CPU sẽ ở định
trạng thái
39 Thực hiện thiết kế các hệ Mạch phần cứng Việc lập trình Các công cụ lập Cả ba câu kia 3
thống điều khiển bằng đơn giản đơn giản hơn trình và biên dịch đều đúng
MCU sẽ đơn giản và mất phần mềm tiện
ít thời gian hơn thực hiện
thiết kế bằng hệ thống vi dụng hơn
xử lý là do:
Để xác định đã hết thời
Chờ điều kiện Chờ điều kiện so Chờ giá trị bộ đếm
gian trễ hoặc đủ số sự Cả ba câu kia
40 tràn khi đếm sánh bằng giá trị bằng 0 khi đếm 3
kiện, Timer/Counter có đều đúng
tăng định trước xuống
thể:
Trong cấu trúc một CPU
truyền thống thanh ghi
Chứa kết quả Giữ một toán Chứa các toán
chứa (Acc) thường có Chứa trạng thái
41 của các phép hạng và kết quả hạng của phép 1
chức năng gì khi ALU của các phép tính
tính của phép tính tính
thực hiện các phép tính
số học và logic?
ALU thực hiện các phép Tùy thuộc vào
42 tính nhiều nhất có bao 1 2 3 loại cấu trúc 1
nhiêu toán hạng? ALU khác nhau
Các toán hạng mà ALU
thực hiện có thể nằm ở Trong các thanh Trong vùng nhớ Trong vùng nhớ Cả ba câu kia
43 1
đâu trong hệ thống vi xử ghi dữ liệu chương trình đều đúng
lý?
Quản lý giao
tiếp giữa CPU
Chức năng chính của Thực hiện phép Điều khiển hoạt Thực hiện phép
44 với các thành 1
BIU là gì? tính số học động của CPU tính logic
phần bên ngoài
hệ thống vi xử lý
Chức năng nào sau đây là
Đếm số lệnh mà Giữ địa chỉ bộ Đếm số dữ liệu Giữ mã lệnh
đúng cho thanh ghi bộ
45 CPU đã thực nhớ để lấy các của chương trình cung cấp cho CU 1
đếm chương trình (PC)
hiện lệnh vào CPU mà CPU thực hiện giải mã thực hiện
của CPU:
46 Hàng đợi lệnh Chứa các mã Điều khiển việc Chứa các địa chỉ Cả ba câu kia 1
(Instruction Queue) có lệnh lấy vào tự chờ để lấy các lấy lệnh của các đều đúng
chức năng: bộ nhớ lệnh từ bộ nhớ lệnh tiếp theo
trong chương trình
Các thanh ghi địa chỉ bộ Chứa địa chỉ của Chứa địa chỉ để Chứa địa chỉ của
Chứa địa chỉ của
47 nhớ (MAR) có chức lệnh sẽ được truy cập tới các ô các thanh ghi 1
đỉnh ngăn xếp
năng: thực hiện nhớ và vào ra khác
Cung cấp địa chỉ
để đọc ghi ngăn
Trỏ tới vị trí của Cung cấp địa chỉ
xếp, thay đổi giá
Thanh ghi con trỏ ngăn ngăn xếp nằm để đọc ghi ngăn
trị sau các lệnh Cả ba câu kia
48 xếp (SP) có các chức ngoài thiết bị xếp, thay đổi dữ 1
truy cập ngăn đều đúng
năng: ngoại vi lưu trữ liệu lấy được từ
xếp để sử dụng
dữ liệu ngăn xếp
cho lần truy cập
tiếp theo
Giữ độ dời để trỏ
Giữ giá trị độ Giữ địa chỉ cơ sở Giữ dữ liệu truy
tới lệnh kế tiếp
dời địa chỉ trong trong các lệnh cập từ bộ nhớ
Thanh ghi chỉ số (Index trong các lệnh
49 các lệnh truy cập truy cập bộ nhớ trong các lệnh truy 1
Register) có chức năng: truy cập bộ nhớ
bộ nhớ theo chế theo chế độ chỉ cập bộ nhớ theo
theo chế độ chỉ
độ chỉ số số chế độ chỉ số
số
Các bit thông Các bit thông
Thông thường các bit Các bit điều khiển
báo trạng thái báo trạng thái Cả ba câu kia
50 trong thanh ghi cờ bao các chế độ hoạt 1
các phép tính mà các chế độ hoạt đều đúng
gồm: động của CPU
ALU thực hiện động của CPU
Điều khiển chương trình
sẽ thay đổi không tuân Lệnh chương Cả ba câu kia
51 Lệnh rẽ nhánh Phục vụ ngắt 1
theo cơ chế tuần tự trong trình con đều đúng
các cơ chế:
Giá trị hiện tại
Trong lệnh rẽ nhánh
của PC cộng Là một giá trị
tương đối, địa chỉ của Được lấy từ đỉnh Là giá trị của
52 hoặc trừ một số được mã hóa trong 1
lệnh tiếp theo thực hiện ngăn xếp thanh ghi cờ
độ dời mã hóa lệnh
là:
trong lệnh
53 Trạng thái ARM của 8 16 32 64 1
ARM7TDMI các lệnh
thực hiện với dữ liệu bao
nhiêu bit?
Advanced Advanced Advanced
Reduced Random Advanced RISC Complex
54 ARM là viết tắt của gì? 1
Instruction Set Information Machine Instruction Set
Computer System Core Computer
Điểm mạnh chính của vi Tiêu thụ năng Số lượng lệnh Tương thích đa
55 Hiệu suất cao 1
xử lý ARM là gì? lượng thấp phong phú nền tảng
ARM7TDMI có báo
56 5 6 7 8 1
nhiêu chế độ hoạt động?
Thanh ghi PC (Program Lưu trữ địa chỉ của
Lưu trữ dữ liệu Đếm số lần thực Lưu trữ địa chỉ
57 Counter) trong ARM7 lệnh tiếp theo cần 1
chương trình hiện lệnh của bộ nhớ RAM
được sử dụng để làm gì? thực hiện
Thanh ghi CPSR
Lưu trạng thái
(Current Program Status Lưu trữ dữ liệu Lưu trữ dữ liệu Lưu trữ địa chỉ
58 hiện tại của 1
Register) trong ARM7 người dùng tạm thời của bộ nhớ ROM
chương trình
được sử dụng để làm gì?
ARM7TDMI có bao
59 nhiêu tập lệnh khác 2 4 6 8 1
nhau?
Trong kiến trúc ARM7, Lưu trữ địa chỉ của
Lưu trạng thái
thanh ghi LR (Link Lưu trữ dữ liệu lệnh quay lại sau Lưu trữ địa chỉ
60 hiện tại của 1
Register) được sử dụng người dùng một lệnh nhảy của bộ nhớ RAM
chương trình
để làm gì? (branch)
Trong kiến trúc ARM7,
Lưu trạng thái Quản lý ngăn xếp
thanh ghi SP (Stack Lưu trữ dữ liệu Lưu trữ địa chỉ
61 hiện tại của (stack) của chương 1
Pointer) được sử dụng để người dùng của bộ nhớ ROM
chương trình trình
làm gì?
ARM7TDMI có bao
62 35 36 37 38 1
nhiêu thanh ghi?
Bit T trong thanh ghi Thay đổi chế độ Là bit bẫy (Trap) Là bit báo trạng
Cả ba câu kia
63 CPSR của ARM7TDMI hoạt động (User, khi thực hiện thái hoạt động của 1
đều đúng
sử dụng để: FIQ, IRQ, …) chương trình CPU
Các chế độ (Mode) hoạt User, System, Cả ba câu kia
64 FIQ, IRQ, reset Abort, Undefine 1
động của ARM là Supervisor đều đúng
Vị trí ghi các bit
Khối mạch phần
Khi giải mã một lệnh mà trạng thái của
cứng thực hiện
ALU thực hiện, tín hiệu phép toán thực Vị trí lấy lệnh tiếp Cả ##A và ##B
65 phép toán; Vị trí 2
CU cung cấp để xác định hiện; Vị trí chứa theo đều đúng
cung cấp dữ liệu
những gì? kết quả phép
cho phép toán
toán
Mã lệnh số học
logic sẽ ngắn do
Khi sử dụng thanh ghi Giảm việc đọc ghi
Chứa được nhiều không phải mã Cả ba câu kia
66 chứa (Acc) sẽ có lợi ích bộ nhớ để truy cập 2
dữ liệu hơn hóa một toán đều đúng
gì? các toán hạng
hạng và nơi chứa
kết quả của lệnh
Các cờ điều
Các cờ điều Các cờ thông báo
khiển các chế độ
ALU cung cấp các cờ khiển các chế độ trạng thái kết quả Cả ba câu kia
67 xử lý dữ liệu 2
nào tới thanh ghi cờ? giao tiếp với bên của các phép tính đều đúng
khác nhau của
ngoài của CPU mà ALU thực hiện
CPU
Giữ nguyên giá Cộng trừ đi một
Sau khi thực hiện xong Nạp một giá trị
trị hiện tại đang giá trị lưu trong
một lệnh giá trị của thanh mới lưu trong mã Cả ba câu kia
68 trỏ tới lệnh viết mã lệnh để trỏ 2
ghi PC sẽ thay đổi như lệnh để trỏ tới một đều đúng
kế tiếp trong tới một vị trí lấy
thế nào? vị trí lấy lệnh mới
chương trình lệnh mới
Hàng đợi lệnh là một cấu
69 trúc bộ nhớ hoạt động FIFO FILO LIFO FOLI 2
theo nguyên tắc:
70 Bằng nguyên tắc nào mà Do thanh ghi SP Do mỗi lần cất Do khi cất dữ liệu Cả ba câu kia 2
trong ngăn xếp dữ liệu có cơ chế chứa vào ngăn xếp dữ vào ngăn xếp đều đúng
trước hết SP sẽ
liệu sẽ được tự giảm và dữ liệu sẽ
động đẩy xuống được cất vào địa
địa chỉ thấp, và chỉ SP giữ, và khi
khi lấy một dữ lấy ra từ ngăn xếp
nào cất vào sau cùng sẽ được nhiều dữ
liệu ra khỏi ngăn dữ liệu sẽ lấy từ
được lấy ra trước tiên liệu một cách
xếp dữ liệu trong địa chỉ SP (là dữ
(LIFO)? tuần tự
ngăn xếp sẽ tự liệu cất vào sau
động được đẩy cùng), sau đó SP
lên địa chỉ cao mới tự động tăng
hơn để trỏ tới dữ liệu
cất vào trước đó
Lưu các cờ và
các trạng thái Lưu trữ các dữ liệu
Lưu địa chỉ quay
hoạt động hiện trung gian còn sử
về khi CPU thực
hành của CPU dụng trong các
Ngăn xếp có các chức Cả ba câu kia hiện các chương
71 khi CPU thực thanh ghi để có thể 2
năng gì? đều đúng trình con hoặc
hiện các chương sử dụng các thanh
các chương trình
trình con hoặc ghi cho các dữ liệu
phục vụ ngắt
các chương trình khác
phục vụ ngắt
Cho biết sự khác nhau Sau khi truy cập
Sau khi truy cập Sau khi truy cập Sau khi truy cập
khi truy cập bộ nhớ bằng bộ nhớ bằng
bộ nhớ thanh ghi bộ nhớ thanh ghi bộ nhớ bằng MAR
các lệnh di chuyển dữ MAR dữ liệu
MAR sẽ tự động MAR có giá trị dữ liệu trong bộ
liệu sử dụng thanh ghi trong bộ nhớ
72 thay đổi giá trị, không đổi còn nhớ không đổi còn 2
MAR cấp đại chỉ, và thay đổi còn
còn thanh ghi SP thanh ghi SP sẽ thanh ghi SP dữ
bằng các lệnh ngăn xếp thanh ghi SP dữ
có giá trị không tự động thay đổi liệu trong bộ nhớ
sử dụng thanh ghi SP cấp liệu trong bộ nhớ
đổi giá trị sẽ tự động thay đổi
địa chỉ? không đổi
73 Chương trình con phục Cả ba câu kia Cờ cho phép Khi che ngắt và có Cờ cho phép 2
vụ ngắt INT được thực đều đúng ngắt được xóa và tín hiệu yêu cầu ngắt được lập và
hiện khi: có tín hiệu yêu ngắt cấp tới CPU có tín hiệu yêu
cầu ngắt cấp tới cầu ngắt cấp tới
CPU CPU
Các lệnh rẽ nhánh có Các bit trạng Các bit điều
Toàn bộ các bit Các bit chứa
74 điều kiện sẽ sử dụng điều thái của thanh khiển chế độ của 2
của thanh ghi cờ trong mã lệnh
kiện chứa tại: ghi cờ thanh ghi cờ
Lệnh rẽ nhánh Lệnh gọi chương
Cơ chế chuyển điều Lệnh rẽ nhánh Lệnh gọi chương
không lưu địa chỉ trình con không
khiển chương trình bằng chuyển điều trình con chuyển
quay về và các lưu địa chỉ quay về
75 lệnh rẽ nhánh và lệnh gọi khiển chương điều khiển 2
trạng thái hoạt và các trạng thái
chương trình con có gì trình đi nhiều vị chương trình đi
động hiện tại của hoạt động hiện tại
khác nhau? trí nhiều vị trí
CPU của CPU
Chuyển điều
Chuyển điều khiển
Chuyển điều khiển bằng ngắt
Chuyển điều bằng ngắt cứng
khiển bằng cứng được tác
Cho biết sự khác nhau khiển bằng ngắt được thực hiện
chương trình con động bằng tín
giữa cơ chế chuyển điều cứng không lưu bằng lệnh còn
không lưu địa hiệu điện phần
76 khiển chương trình bằng địa chỉ quay về chuyển điều khiển 2
chỉ quay về và cứng còn chuyển
ngắt cứng và bằng và các trạng thái bằng chương trình
các trạng thái điều khiển bằng
chương trình con hoạt động hiện con tác được động
hoạt động hiện chương trình con
tại của CPU bằng tín hiệu điện
tại của CPU được thực hiện
phần cứng
bằng lệnh
Số lượng lệnh;
Các yếu tố khác nhau
Thời gian thực Cả ba câu kia
77 giữa các CPU RISC và Địa chỉ lệnh Số lượng thanh ghi 2
hiện các loại đều đúng
CISC là:
lệnh
Các lệnh của các bộ vi xử Cấu trúc giải mã
Dễ dàng phân Tối ưu hóa việc
lý RISC thường có độ dài lệnh đơn giản; Cả ba câu kia
78 đoạn trong cấu sử dụng bộ đệm 2
bằng nhau nhằm mục Giảm độ phức tạp đều đúng
trúc đường ống lệnh (Cache)
đích gì? của việc xử lý lệnh
79 Các loại bộ nhớ thường Vùng nhớ ROM Vùng nhớ Vùng nhớ ROM Cả ba câu kia 2
có trong một vi điều chứa chương SRAM sử dụng Flash sử dụng cho đều đúng
khiển (MCU) bao gồm: trình cho các hằng và các dữ liệu không
biến mất khi mất nguồn
Khi kết quả phép tính
80 CF =1 ZF = 1 NF =1 VF = 1 2
bằng không thì:
Các vi điều khiển thường Cả ba câu kia
81 UART GPIO SPI, I2C 2
có các loại vào ra gì? đều đúng
Các vi xử lý ARM được
sử dụng trong hầu hết các Hiệu suất hoạt Tiêu thụ nguồn Thực hiện được
82 Cấu trúc nhỏ gọn 2
thiết bị điện tử di động động cao thấp các lệnh phức tạp
do đặc tính gì?
Các chế độ tiết kiệm
Cả ba câu kia
83 năng lượng của một vi Sleep Idle Power down 2
đều đúng
điều khiển bao gồm:
Quản lý tất cả
MMU có chức năng gì Quản lý bộ nhớ Quản lý bộ nhớ Quản lý bộ nhớ
84 các loại bộ nhớ 2
trong hệ thống vi xử lý? ảo dữ liệu chương trình
trong hệ thống
Bit I trong thanh ghi Thực hiện các Thực hiện các thao
Cả ba câu kia
85 CPSR của ARM7TDMI lệnh với số Cho phép ngắt tác dữ liệu bên 2
đều đúng
sử dụng để: nguyên (Integer) trong CPU
Các ngoại lệ SWI và
Reset sẽ làm ARM
86 User Supervisor System Abort 2
chuyển qua hoạt động ở
chế độ:
Khi chuyển qua
Có tín hiệu phần
Thực hiện các chế độ hoạt động
IRQ và FIQ là các ngắt cứng cấp tới các Cả ba câu kia
87 lệnh phần mềm bằng cách thay đổi 2
xảy ra khi: chân yêu cầu đều đúng
tương ứng các bit M trong
ngắt tương ứng
CPSR
88 Các bit cờ điều kiện Làm điều kiện rẽ Thông báo trạng Thông báo trạng Cả ba câu kia 2
trong thanh ghi trạng thái nhánh chương thái các lệnh số thái các lệnh di đều đúng
chương trình CPSR trình, hoặc làm học và logic chuyển dữ liệu
(Current Program Status điều kiện để thực
Register) sử dụng để: hiện lệnh
Bit N trong thanh ghi
Kết quả nhỏ hơn Thực hiện lệnh Khi không thực Cả ba câu kia
89 CPSR của ARM7TDMI 2
không NOT hiện lệnh tính toán đều đúng
sẽ được lập khi:
Bit C trong thanh ghi Kết quả lệnh Khi kết quả lệnh
Khi kết quả lệnh Cả ba câu kia
90 CPSR của ARM7TDMI cộng tràn khỏi nhân cần mở rộng 2
trừ có mượn đều đúng
sẽ được lập khi: thanh ghi khỏi thanh ghi
Kết quả các phép
Bit V trong thanh ghi Kết quả lệnh Khi kết quả lệnh
tính có dấu đổi Cả ba câu kia
91 CPSR của ARM7TDMI cộng tràn khỏi nhân cần mở rộng 2
dấu không mong đều đúng
sẽ được lập khi: thanh ghi khỏi thanh ghi
muốn
Chạy chương
Trong chế độ giám sát Truy cập dữ liệu Truy cập dữ liệu Cả ba câu kia
92 trình thiết lập hệ 2
(SVC) của ARM7 có thể: của hệ thống của người sử dụng đều đúng
thống
Chế độ nào của ARM
93 không truy cập được bộ User Supervisor System Abort 2
nhớ và vào ra
Chế độ User của ARM
Chế độ
94 cần bắt đầu hoạt động Chế độ System Chế độ IRQ Chế độ FIQ 2
Supervisor
sau:
Khi cần hiệu chỉnh các
tham số của hệ thống có
95 User IRQ System Abort 2
thể sử dụng chế độ nào
của ARM?
Chép nhanh các Không lưu các
Chế độ FIQ của ARM
thanh ghi trạng thái và Không thực hiện Cả ba câu kia
96 thực hiện nhanh các ISR 2
chương trình thanh ghi chương các ISR đều đúng
do:
chính trình chính
Thực hiện các Thực hiện một Xảy ra các lỗi
Chế độ Undefined sẽ xảy Xảy ra ngắt
97 chu kỳ không lệnh không có truy cập bộ nhớ 2
ra khi: không định nghĩa
được định nghĩa trong tập lệnh vào ra
Truy cập các ứng
Truy cập dữ liệu
Chế độ Abort sẽ xảy ra Truy cập vị trí dụng của hệ thống Cả ba câu kia
98 hệ thống không 2
khi: bộ nhớ bị lỗi không được cho đều đúng
được cho phép
phép
Tại các vị trí cố
Khi xảy ra các ngoại lệ Tại các vị trí Tại các vị trí
định xác định Không có vị trí
99 (Exception) ARM sẽ thực cung cấp bởi bộ không được xác 2
trước trong bộ xác định
hiện các lệnh: điều khiển ngắt định trước
nhớ
Khi xảy ra ngoại lệ địa Ở các vị trí cố
Ở thanh ghi đa Các thanh ghi LR
100 chỉ quay về sẽ được lưu Ở đỉnh ngăn xếp định trong bộ 2
năng tương ứng
trữ: nhớ
Công việc CPU ARM Đổi chế độ hoạt
Lưu địa chỉ quay Lưu thanh ghi Cả ba câu kia
101 thực hiện khi xảy ra động, lập cờ cấm 2
về CPSR vào SPSR đều đúng
ngoại lệ: ngắt
Công việc CPU ARM Dùng giá trị của Phục hồi giá trị
Xóa các cờ cấm Cả ba câu kia
102 thực hiện khi kết thúc LR để phục hồi của CPSR từ 2
ngắt đều đúng
một ngoại lệ: giá trị của PC SPSR
Khi đang thực hiện một Chương trình Làm điều kiện để
Chuyển qua một
ISR ngoại lệ, cơ cấm ISR không dừng kết thúc ISR khi Cả ba câu kia
103 ISR khác khi có 2
ngắt của ARM được lập để chuyển qua nó thực hiện đều đúng
yêu cầu
để: một ISR khác xong
Khi quay về từ một ISR
Tính toán từ giá
của một ngoại lệ, giá trị Lấy giá trị của Lấy giá trị từ đỉnh Lấy giá trị từ
104 trị hiện tại của 2
thanh ghi PC của ARM thanh ghi LR ngăn xếp thanh ghi SPSR
PC và LR
được phục hồi bằng cách:
105 Nếu ALU có các khối 8 3 4 7 3
mạch thực hiện các phép
tính số học và logic bao
gồm: Cộng, trừ, nhân,
chia, AND, OR, XOR,
NOT thì nó cần nhận
được ít nhất bao nhiêu tín
hiệu điều khiển từ CU?
Mạch định thời
Các khối chức năng số có Đệm hai chiều Đệm một chiều Cả ba câu kia
106 cho các tín hiệu 3
thể có trong một BIU là: cho bus dữ liệu cho bus địa chỉ đều đúng
điều khiển
Các khối chức năng số có Mạch giải mã, Mạch nhân,
Bộ đếm, mạch Mạch cộng,
107 thể có trong một 3
so sánh Mạch mã hóa Mạch chia Mạch trừ
Timer/Counter là:
Do CU không
Tại sao khi sử dụng thanh Do không phải
phải tính toán để Do dữ liệu sẽ được
ghi địa chỉ bộ nhớ, độ dài mã hóa địa chỉ Cả ba câu kia
108 tạo ra địa chỉ của truyền vào thanh 3
mã lệnh truy cập bộ nhớ của bộ nhớ trong đều đúng
ô nhớ cần truy ghi địa chỉ
sẽ ngắn hơn? mã lệnh
cập
CPU có thể thực
Khi có hàng đợi lệnh CPU có thể đồng
hiện hai tác vụ CPU sẽ sắp hàng
(Instruction Queue) tốc thời thực hiện
lấy lệnh và thực các lệnh của Cả ba câu kia
109 độ thực hiện chương nhiều lệnh tại 3
hiện lệnh tại chương trình theo đều đúng
trình của CPU sẽ tăng lên cùng một thời
cùng một thời trình tự lập trình
do: điểm
điểm
Khi truy cập một chuỗi
Không cần thay Có thể truy cập Không cần cung
dữ liệu trong bộ nhớ việc Không cần truy
đổi địa chỉ để nhiều dữ liệu cấp địa chỉ bộ
110 sử dụng các lệnh ngăn cập dữ liệu một 3
truy cập tới các trong chuỗi một nhớ để truy cập
xếp sẽ có các lợi điểm cách tuần tự
dữ liệu kế tiếp cách đồng thời dữ liệu
gì?
Có thể truy cập tới
Khi truy cập một chuỗi các phần tử khác
Không cần thay Có thể truy cập Không cần cung
dữ liệu trong bộ nhớ việc nhau của chuỗi
đổi địa chỉ để nhiều dữ liệu cấp địa chỉ bộ
111 sử dụng các lệnh với chế theo chỉ số trong 3
truy cập tới các trong chuỗi một nhớ để truy cập
độ chỉ số có các lợi điểm lệnh, mà không
dữ liệu kế tiếp cách đồng thời dữ liệu
gì? cần theo địa chỉ cụ
thể của nó
112 Tại sao cần giải mã lệnh? Để với mã lệnh Để bảo mật các Để thực hiện các Cả ba câu kia 3
ngắn có thể cung mã lệnh trong lệnh nhanh hơn đều đúng
cấp nhiều tín
hiệu cho phép
các khối mạch chương trình
trong CPU thực
hiện lệnh
Mã điều kiện PL xảy ra
113 NF =0 ZF = 1 NF =1 VF = 1 3
khi:
Mã điều kiện HI xảy ra
114 CF=1 và ZF=1 CF=1 và ZF=0 CF=0 và ZF=0 CF=0 và ZF=1 3
khi:
Mã điều kiện LS xảy ra CF=1 hoặc
115 CF=1 hoặc ZF=0 CF=0 hoặc ZF=0 CF=0 hoặc ZF=1 3
khi: ZF=1
Mã điều kiện GE xảy ra
116 NF=VF NF≠VF ZF=VF ZF≠VF 3
khi:
Mã điều kiện LT xảy ra
117 NF=VF NF≠VF ZF=VF ZF≠VF 3
khi:
Mã điều kiện LE xảy ra ZF=1 hoặc
118 ZF=1 và NF≠VF CF=1 và NF≠VF CF=1 và NF≠VF 3
khi: NF≠VF
Mã điều kiện LE xảy ra ZF=0 hoặc ZF=1 hoặc ZF=1 hoặc ZF=0 hoặc
119 3
khi: NF=VF NF≠VF NF=VF NF≠VF
Mã điều kiện GT xảy ra
120 ZF=1 và NF=VF ZF=1 và NF≠VF ZF=0 và NF=VF ZF=0 và NF≠VF 3
khi:
Cấp tín hiệu
Cấp tín hiệu Cấp tín hiệu Cấp tín hiệu chọn
chọn chip nhớ;
chọn chip nhớ; chọn chip nhớ; chip nhớ; Cấp địa
Cấp địa chỉ để
Cấp địa chỉ để Chờ bộ nhớ cấp chỉ để xác định ô
Để điều khiển đọc một xác định ô nhớ
xác định ô nhớ địa chỉ ô nhớ cần nhớ cần đọc; Chờ
121 chip nhớ trong hệ thống cần đọc; Chờ tín 1
cần đọc; Cấp tín đọc; Cấp tín hiệu tín hiệu cho phép
vi xử lý cần: hiệu cho phép
hiệu cho phép cho phép đọc; đọc từ bộ nhớ;
đọc từ bộ nhớ;
đọc; Nhận dữ Nhận dữ liệu ở Nhận dữ liệu ở
Cấp dữ liệu ra
liệu ở data BUS data BUS data BUS
data BUS
122 Để điều khiển ghi một Cấp tín hiệu Cấp tín hiệu Cấp tín hiệu chọn Cấp tín hiệu 1
chọn chip nhớ;
chọn chip nhớ; chọn chip nhớ;
Cấp địa chỉ để chip nhớ; Chờ bộ
Cấp địa chỉ để Cấp địa chỉ để
xác định ô nhớ nhớ cấp địa chỉ ô
xác định ô nhớ xác định ô nhớ
chip nhớ trong hệ thống cần ghi; Cấp dữ nhớ cần ghi; Cấp
cần ghi; Cấp dữ cần ghi; Cấp tín
vi xử lý cần: liệu vào data dữ liệu vào data
liệu vào data hiệu điều khiển
bus; Chờ bộ nhớ bus; Cấp tín hiệu
bus; Cấp tín hiệu ghi; Nhận dữ liệu
cấp tín hiệu xác điều khiển ghi
điều khiển ghi từ data bus
nhận đã ghi
Tại sao các hệ thống vi
xử lý yêu cầu dung lượng
Tốc độ truy cập Không cần chu kỳ Tiêu thụ ít năng
123 bộ nhớ lớn thường sử Có giá thành rẻ 1
nhanh làm tươi lượng
dụng DRAM làm bộ nhớ
chính?
Bộ nhớ đệm giữa
SRAM có tốc độ DRAM có tốc độ Flash có tốc độ
124 Cache là loại bộ nhớ: thiết bị ngoại vi và 1
truy cập nhanh truy cập nhanh truy cập nhanh
hệ thống vi xử lý
Các đặc tính khác nhau
Cấu tạo của tế Độ ổn định của dữ Cả ba câu kia
125 giữa DRAM và SRAM Tốc độ truy cập 1
bào nhớ liệu đều đúng
bao gồm:
Người sử dụng Người sử dụng Người sử dụng
Người sử dụng có
có thể ghi xóa có thể ghi xóa dữ có thể ghi xóa dữ
Flash ROM là loại bộ thể ghi xóa dữ liệu
126 dữ liệu nhiều lần liệu nhiều lần liệu nhiều lần 1
nhớ: nhiều lần bằng
bằng điện cả bằng điện từng bằng điện từng
điện từng ô nhớ
chip nhớ bit nhớ khối dữ liệu
Người sử dụng
Người sử dụng có
Dữ liệu được ghi Người sử dụng có thể ghi dữ liệu
thể ghi xóa dữ liệu
127 EEPROM là loại bộ nhớ: vào trong khi có thể ghi dữ liệu vào bằng điện và 1
nhiều lần bằng
sản xuất ra nó vào một lần xóa bằng tia cực
điện từng ô nhớ
tím
Loại bộ nhớ nào sau đây
Cả ba câu kia
128 thường được sử dụng làm HDD Flash disk SD card 1
đều đúng
bộ nhớ ngoài?
CPU dừng tiến
Vào ra dừng CPU CPU tự động
Trong phương thức điều trình hiện tại để CPU dừng hoạt
để tự thực hiện quá dừng hoạt động
129 khiển vào ra theo ngắt chạy tiến trình động sau khi 1
trình truyền dữ vào ra khi cần
(Interrupt): phục vụ vào ra phục vụ vào ra
liệu với bộ nhớ thiết
khi có yêu cầu
CPU tuần tự
CPU tuần tự CPU tuần tự
Trong phương thức điều kiểm tra và thực CPU tuần tự chờ
thực hiện các truyền dữ liệu giữa
130 khiển vào ra theo quét hiện các tiến các vào ra hoạt 1
lệnh để phục vụ các vào ra và bộ
vòng (Polling) là: trình phục vụ các động
vào ra nhớ
vào ra
Trong phương thức điều CPU dừng truy Bộ điều khiển
CPU truyền dữ Vào ra trực tiếp
khiển vào ra theo truy cập BUS để bộ DMA trực tiếp
liệu với vào ra điều khiển việc
131 cập bộ nhớ trực tiếp nhớ và vào ra điều khiển hoạt 1
một cách trực truyền dữ liệu
(DMA – Direct Memory truyền dữ liệu trực động truyền dữ
tiếp với CPU
Access): tiếp với nhau liệu với CPU
Trong các chế độ truyền
Tín hiệu điều
dữ liệu nối tiếp đồng bộ, Thay đổi trạng Tín hiệu điều
khiển động bộ
132 hai bên truyền nhận có thái đường Xung clock khiển động bộ 1
cung cấp từ bộ
thể đồng bộ với nhau truyền cung cấp từ CPU
nhớ
bằng:
Có cấu trúc
Khi sử dụng cấu trúc Tập lệnh đơn CPU có thể lấy đường ống cho
Harvard tốc độ thực hiện giản giảm thời lệnh và lấy dữ Cấu trúc phần phép thực hiện
133 2
các chương trình tăng lên gian giải mã liệu tại cùng một cứng đơn giản nhiều lệnh tại
do: lệnh thời điểm cùng một thời
điểm
134 Ngõ ra cấp tín Là tín hiệu hai Ngõ vào nhận tín Là tín hiệu hai 2
hiệu cho phép đọc chiều do CPU hiệu đọc dữ liệu từ chiều do SRAM
dữ liệu chuyển tới tác động khi đọc CPU tác động khi đọc
CPU dữ liệu dữ liệu
Trong định thời bộ nhớ
SRAM ở trên, tín hiệu
OE là:

Bus địa chỉ và Bus địa chỉ tích Bus dữ liệu tích
Bus địa chỉ và
bus dữ liệu của cực và bus dữ cực và bus địa chỉ
bus dữ liệu của
135 ROM sẽ ở trạng liệu của ROM sẽ của ROM sẽ ở 2
ROM sẽ ở trạng
thái trở kháng ở trạng thái trở trạng thái trở
thái tích cực
cao kháng cao kháng cao
Trong định thời bộ nhớ
ROM ở trên, khi CE ở
mức cao:
Cấp DT/R=1; Cấp DT/R=0; Cấp DT/R=0;
Cấp DT/R=0; cấp
cấp địa chỉ và cấp địa chỉ và cấp địa chỉ và
địa chỉ và chốt
chốt bằng tín chốt bằng tín chốt bằng tín
bằng tín hiệu
hiệu ALE=1; cấp hiệu ALE=1; cấp hiệu ALE=1; cấp
ALE=0; cấp IO/M
IO/M để xác IO/M để xác IO/M để xác
để xác định đọc bộ
định đọc bộ nhớ định đọc bộ nhớ định đọc bộ nhớ
nhớ hay vào ra;
hay vào ra; cấp hay vào ra; cấp hay vào ra; cấp
136 cấp RD=0 tác 2
RD=0 tác động RD=0 tác động RD=1 tác động
động đọc bộ nhớ;
đọc bộ nhớ; cấp đọc bộ nhớ; cấp đọc bộ nhớ; cấp
cấp DEN=0 cho
DEN=0 cho DEN=0 cho phép DEN=0 cho phép
Trong định thời (Timing phép bộ đệm bus
phép bộ đệm bus bộ đệm bus dữ bộ đệm bus dữ
diagram) ở trên, để thực dữ liệu và lấy dữ
dữ liệu và lấy dữ liệu và lấy dữ liệu và lấy dữ
hiện chu kỳ đọc dữ liệu liệu từ Data Bus
liệu từ Data Bus liệu từ Data Bus liệu từ Data Bus
cần: vào CPU
vào CPU vào CPU vào CPU
Cấp DT/R=1; Cấp DT/R=0; Cấp DT/R=0;
Cấp DT/R=0; cấp
cấp địa chỉ và cấp địa chỉ và cấp địa chỉ và
địa chỉ và chốt
chốt bằng tín chốt bằng tín chốt bằng tín
bằng tín hiệu
hiệu ALE=1; cấp hiệu ALE=1; cấp hiệu ALE=1; cấp
ALE=0; cấp IO/M
IO/M để xác IO/M để xác IO/M để xác
để xác định đọc bộ
định đọc bộ nhớ định đọc bộ nhớ định đọc bộ nhớ
nhớ hay vào ra;
hay vào ra; cấp hay vào ra; cấp hay vào ra; cấp
137 cấp RD=0 tác 2
RD=0 tác động RD=0 tác động RD=1 tác động
động đọc bộ nhớ;
đọc bộ nhớ; cấp đọc bộ nhớ; cấp đọc bộ nhớ; cấp
cấp DEN=0 cho
DEN=0 cho DEN=0 cho phép DEN=0 cho phép
Trong định thời (Timing phép bộ đệm bus
phép bộ đệm bus bộ đệm bus dữ bộ đệm bus dữ
diagram) ở trên, để thực dữ liệu và lấy dữ
dữ liệu và lấy dữ liệu và lấy dữ liệu và lấy dữ
hiện chu kỳ ghi dữ liệu liệu từ Data Bus
liệu từ Data Bus liệu từ Data Bus liệu từ Data Bus
cần: vào CPU
vào CPU vào CPU vào CPU

Chốt BUS điều Chốt BUS địa Chốt BUS dữ liệu Điều khiển cấp
138 khiển kết nối tới chỉ kết nối tới bộ kết nối tới bộ nhớ nguồn cho hệ 2
Trong sơ đồ kết nối hệ bộ nhớ và vào ra nhớ và vào ra và vào ra thống vi xử lý
thống vi xử lý 8086 trên
tín hiệu ALE và các bộ
chốt (Latch) được sử
dụng để:
139 Khi CPU đọc bộ Khi CPU truy Khi CPU ghi bộ Khi CPU truy 2
nhớ cập bộ nhớ nhớ cập vào ra
Trong sơ đồ kết nối hệ
thống vi xử lý hình vẽ
trên, tín hiệu IO/M sẽ có
mức logic 0:

CS1=0; CS1=0; CS1=0;


Cả ba câu kia
140 Theo bảng trạng thái của CS2=1;WE=0; CS2=1;WE=1; CS2=1;WE=1; 2
đều đúng
bộ nhớ SRAM ở trên, dữ OE=0 OE=1 OE=0
liệu sẽ được lưu vào
SRAM khi:

T1 T2 T3

CLOCK
___
IOR
____
IOW
_____
MEMR
______
MEMW MEMR mức 0
141 Logic 0 Logic 1 High Z 2
Address
Bus
port address MEMW mức 1
data
Data Bus in

Trong định thời đọc cổng


vào ra hình trên, trong
chu kỳ đọc vào ra các tín
hiệu MEMR và MEMW
sẽ ở trạng thái:
T1 T2 T3

CLOCK
___
IOR
____
IOW
_____
MEMR
______
MEMW MEMR mức 0
142 Logic 0 Logic 1 High Z 2
Address
Bus
port address MEMW mức 1
Data Bus data out

Trong định thời đọc cổng


vào ra hình trên, trong
chu kỳ ghi vào ra các tín
hiệu MEMR và MEMW
sẽ ở trạng thái:

143 Đọc bộ nhớ Ghi bộ nhớ Đọc vào ra Ghi vào ra 2

Giản đồ thời gian hình vẽ


trên là giản đồ của chu
kỳ:
MEMR mức 0
144 Logic 0 Logic 1 High Z 2
MEMW mức 1

Trong định thời hình


trên, trong chu kỳ ghi vào
ra các tín hiệu IOR và
IOW sẽ ở trạng thái:

MEMR mức 0
145 Logic 0 Logic 1 High Z 2
MEMW mức 1

Trong định thời hình


trên, trong chu kỳ ghi vào
ra các tín hiệu IOR và
IOW sẽ ở trạng thái:
146 Ngõ vào E Ngõ vào P Ngõ vào G Ngõ vào Vpp 2
Trong định thời ở trên,
dữ liệu được ghi vào bộ
nhớ EPROM khi cấp
xung lập trình vào:

Ngõ vào cung Ngõ vào cung Ngõ vào cung


Ngõ vào cung cấp
cấp tín hiệu đọc cấp tín hiệu ghi cấp tín hiệu cấm
147 tín hiệu cho phép 2
dữ liệu từ dữ liệu vào EPROM hoạt
EPROM hoạt động
Trong định thời ở trên, tín EPROM EPROM động
hiệu G là:

Cung cấp tín


148 Giải mã địa chỉ Chốt địa chỉ Truyền dữ liệu hiệu điều khiển 2
vào ra
Trong sơ đồ kết nối IO
hình vẽ trên, vi mạch
16L8 thực hiện chức
năng:

Cách ly quang Cho phép điều Tăng công suất


Cả ba câu kia
149 giữa ngõ ra và khiển tải xoay điều khiển cho ngõ 2
đều đúng
Thiết bị điện tử hình trên tải chiều ra
có chức năng:
Cho phép điều
khiển tải có dòng
Thay đổi mức
Cấp dòng điện điện lớn bằng tín Cả ba câu kia
150 logic điều khiển 2
đủ lớn cho tải hiệu điều khiển có đều đúng
tải
dòng điện nhỏ
cung cấp từ ngõ ra
Trong sơ đồ trên,
MOSFET có chức năng:

Cho phép điều Cho phép điều Cách ly giữa mạch


Cả ba câu kia
151 khiển tải xoay khiển tải một công suất và mạch 2
đều đúng
chiều chiều điều khiển
Mạch giao tiếp relay hình
vẽ trên có chức năng:

Xả dòng trên
cuộn dây relay Dẫn dòng điện
khi transistor khi ngõ ra điều Tăng dòng điện Cả ba câu kia
152 2
ngưng dẫn tránh khiển cung cấp cung cấp cho tải đều đúng
hư hỏng mức logic 1
Trong sơ đồ hình vẽ trên transistor
diode D1 có chức năng:
153 A0H A1H A4 A2 3

Trong sơ đồ trên, PORT1


sẽ có địa chỉ:

154 A0H A1H A4H A3H 3

Trong sơ đồ trên, PORT1


sẽ có địa chỉ:
155 00B 01B 10B 11B 3

Trong sơ đồ trên để truy


cập tới các cổng vào ra
cho phép từ bộ giải mã
địa chỉ A7A6 phải có giá
trị là:

FF800H- FF000H – FF700H – FF900H-


156 3
FFFFFH FF7FFH FFFFFH FFFFFH

Trong sơ đồ hình vẽ trên


bộ nhớ 2716 có vùng địa
chỉ:

157 8 bit 16 bit 32 bit 64 bit 3

Trong sơ đồ trên BUS dữ


liệu của CPU là:
158 00000H- C0000H- 80000H-BFFFFH 40000H-7FFFFH 3
A17
:
A0
D7
256KB
:
D0
RD
WR
#4
3FFFFH FFFFFH
A19
CS
A18
A17 A17
: :
A0 A0
D7 D7
: :
256KB
D0 D0 #3
MEMR RD
MEMW WR

8088 CS
Minimum
A17
Mode :
A0
D7
:
256KB
D0 #2
RD
WR
CS

A17
:
A0
D7
:
256KB
D0 #1
RD
WR
CS
Trong sơ đồ kết nối bộ
nhớ hình vẽ trên bộ nhớ
#2 có vùng địa chỉ:
A17
:
A0
D7
:
256KB
D0 #4
RD
WR
A19 I1
O3 CS
A18 I0
A17 A17
: :
A0 A0
D7 D7
: :
256KB
D0 D0 #3
MEMR RD
MEMW WR

8088 O2 CS
Minimum
A17
Mode :
A0
D7
256KB
00000H- C0000H-
159 80000H-BFFFFH 40000H-7FFFFH 3
:
D0 #2

3FFFFH FFFFFH
RD
WR
O1 CS

A17
:
A0
D7
:
256KB
D0 #1
RD
WR
O0 CS

Trong sơ đồ kết nối bộ


nhớ hình vẽ trên bộ nhớ
#3 có vùng địa chỉ:

160 56 128 256 512 3

Trong sơ đồ kết nối bộ


nhớ hình vẽ trên sẽ có
bao nhiêu bộ nhớ 8KB?
GPIO (General Purpose
Input/Output) là khối Giao tiếp vào ra
161 Biến đổi ADC Xử lý ngắt Đa chức năng 1
chức năng gì trong vi số
điều khiển?
Trong thư viện HAL
Khởi động cấu
(Hardware Abstraction
Khởi động các Cấu hình xung hình các cấu trúc Cả ba câu kia
162 Layer) cho STM32 1
phần cứng nhịp dữ liệu bên trong đều đúng
HAL_Init() được sử
thư viện
dụng để:
Trong thư viện HAL
Cấu trúc dữ liệu Trường thông tin
(Hardware Abstraction Hàm để khởi Cả ba câu kia
163 để khởi động để khởi động 1
Layer) cho STM32 động GPIO đều đúng
GPIO GPIO
GPIO_InitTypeDef là:
Trong thư viện HAL cho
STM32
GPIO_InitStruct.Pin, Cấu trúc dữ liệu Trường thông tin
GPIO_InitStruct.Mode, Hàm để khởi Cả ba câu kia
164 để khởi động để khởi động 1
động GPIO đều đúng
GPIO_InitStruct.Pull, GPIO GPIO
GPIO_InitStruct.Speed
là:
Trong thư viện HAL cho
Nhận giá trị từ Cấu hình GPIO Thay đổi giá trị Tạo chế độ vào
165 STM32 giá trị 1
chân GPIO làm chân vào ngõ vào của GPIO cho tất cả GPIO
GPIO_Mode_IN để:
Trong thư viện HAL cho
Cấp giá trị cho Cấu hình GPIO Thay đổi giá trị Tạo chế độ ra
166 STM32 giá trị 1
chân GPIO làm chân ra ngõ ra của GPIO cho tất cả GPIO
GPIO_Mode_OUT để:
Cấu hình cho phép
Cấu hình GPIO chân GPIO sử Cấu hình cho
Trong thư viện HAL cho Thay đổi giá trị
thay đổi chức dụng cho các chức chân GPIO là
167 STM32 giá trị cung cấp cho 1
năng giữa vào và năng khác như đường vào ra
GPIO_Mode_AF để: chân GPIO
ra USART, SPI, I2C, tương tự

Cấu hình cho phép
Trong thư viện HAL cho
Cung cấp tín Nhận tín hiệu chân GPIO làm
STM32 giá trị Cả ba câu kia
168 hiệu tương tự ra tương tự từ chân chân nhận hoặc 1
GPIO_Mode_ANALOG đều đúng
chân GPIO GPIO cấp tín hiệu tương
để:
tự
Cấu hình cho
Cấu hình cho Cấu hình cho Cấu hình cho phép
Trong thư viện HAL cho phép chân GPIO
phép chân GPIO phép chân GPIO chân GPIO làm
169 STM32 giá trị làm chân nhận 1
làm chân vào trở làm chân truyền chân nhận thông
GPIO_Mode_IT để: tín hiệu yêu cầu
kháng cao thông tin tin
ngắt
Xác định cách Xác định cách
Trong thư viện HAL cho Xác định cách
kết nối chân Xác định cách kết kết nối chân
STM32 biến kết nối chân
170 GPIO với điện nối chân GPIO với GPIO không có 1
GPIO_InitStruct.Pull GPIO với điện
trở kéo lên hoặc điện trở kéo xuống điện trở kéo lên
để: trở kéo lên
kéo xuống hoặc kéo xuống
Trong thư viện HAL cho
Xác định chân Xác định chân
STM32 biến Xác định chân Xác định chân
171 GPIO sẽ được GPIO là trở 1
GPIO_InitStruct.Pin GPIO là ngõ ra GPIO là ngõ vào
cấu hình kháng cao
để:
Biến xác định Biến xác định Biến xác định các
Trong thư viện HAL cho chân cần khởi cổng cần khởi chân cần khởi
STM32 hàm động; Biến xác động; Biến xác động; Biến xác Cả ba câu kia
172 1
HAL_GPIO_Init() cần định cấu hình định cấu hình định cấu hình các đều sai
truyền biến gì: chân cần khởi các chân cần chân cần khởi
động khởi động động
Cấu hình điện trở
Các bit CNF trong thanh Cấu hình tốc độ Cấu hình chế độ
Lập xóa bit các kéo lên kéo
173 ghi CRL của STM32 sử của các chân vào ra của các 1
chân GPIO xuống của các
dụng để: GPIO chân GPIO
chân GPIO
174 Các bit MODE trong Lập xóa bit các Cấu hình tốc độ Cấu hình chế độ Cấu hình điện trở 1
thanh ghi CRL của chân GPIO của các chân vào ra của các kéo lên kéo
STM32 sử dụng để: GPIO chân GPIO xuống của các
chân GPIO
Là thanh ghi sử Là thanh ghi sử
Là thanh ghi sử Là thanh ghi sử
Thanh ghi GPIOB->ORD dụng 16 bit thấp dụng 16 bit cao
175 dụng 32 cung cấp dụng 32 nhận dữ 1
của STM32: cung cấp dữ liệu cung cấp dữ liệu
dữ liệu ra PORTB liệu PORTB
ra PORTB ra PORTB
Dùng 16 bit thấp Dùng 16 bit cao
để reset các bit để reset các bit Là thanh ghi để Là thanh ghi để
Thanh ghi GPIOA-
176 Port A về 0; 16 Port A về 0; 16 reset các bit Port A set các bit Port A 1
>BSRR của STM32:
bit cao set các bit thấp set các về 0 lên 1
bit Port A lên 1 bit Port A lên 1
Sử dụng 32 bit Sử dụng 32 bit Sử dụng 16 bit
Sử dụng 16 bit cao
cao để chứa dữ thấp để chứa dữ thấp để chứa dữ
Thanh ghi GPIOB->IDR để chứa dữ liệu
177 liệu nhận được liệu nhận được liệu nhận được 1
của STM32: nhận được từ các
từ các chân vào từ các chân vào từ các chân vào
chân vào PORTB
PORTB PORTB PORTB
HAL_GPIO_WritePin,
Có các giá trị
(GPIOx,GPIO_Pin,PinState) Có các giá trị Có các giá trị
GPIO_PIN_HI Cả ba câu kia
178 Tham số GPIO_PIN GPIO_PIN_0 và GPIO_PIN_RESET 1
và đều đúng
PinState trong hàm HAL GPIO_PIN_1 và GPIO_PIN_SET
GPIO_PIN_LO
STM32 trên:
Trong hàm
HAL_GPIO_ReadPin() Cổng và cấu
Cổng và cấu Cổng và chân GPIO Cả ba câu kia
179 thư viện HAL cho hình của chân 1
hình của cổng của cổng đều đúng
STM32 sẽ có các tham số GPIO
chỉ thị:
Chọn thanh ghi
Chọn thanh ghi Chọn thanh ghi Chọn thanh ghi
trạng thái hoặc
Tín hiệu RS của text dữ liệu hoặc điều dữ liệu hoặc điều trạng thái hoặc
180 điều khiển khi 1
LCD sử dụng để: khiển khi ghi dữ khiển khi đọc dữ điều khiển khi ghi
đọc dữ liệu từ
liệu vào LCD liệu từ LCD dữ liệu vào LCD
LCD
181 Trước khi gửi dữ liệu 0x38; 0x0E 0x06;0xC0 0x10; 0x14 0x18; 0x1C 1
hiển thị lên LCD có thể
khởi động bằng các lệnh
nào?
ADC_CR1,2 ADC_DR (Data ADC_ISR (Status
(Control Register); Register) và
Các thanh ghi cho ADC Register 1,2) ; Cả ba câu kia
182 ADC_CCR ADC_IER 1
của STM32 là: ADC_SMPR đều đúng
(Common (Interrupt Enable
(Sample Time
Control Register) Register)
Register)
I2C_CR1; I2C_CR1; I2C_CR1; I2C_CR1;
I2C_CR2; I2C_CR2; I2C_CR2; I2C_OAR1;
I2C_OAR1; I2C_OAR; I2C_OAR1; I2C_OAR2;
I2C_OAR2; I2C_DR1; I2C_OAR2; I2C_OAR3;
Các thanh ghi sử dụng I2C_DR; I2C_DR2; I2C_DR; I2C_DR;
183 cho I2C của STM32 bao 1
I2C_SR1; I2C_SR1; I2C_SR1; I2C_SR1;
gồm:
I2C_SR2; I2C_SR2; I2C_CCR1; I2C_SR2;
I2C_CCR; I2C_CCR; I2C_CCR2; I2C_CCR;
I2C_TRISE; I2C_TRISE; I2C_TRISE; I2C_TRISE;
I2C_FLTR I2C_FLTR I2C_FLTR I2C_FLTR
USART_CR1; USART_CR1; USART_CR1; USART_CR1;
USART_CR2; USART_CR2; USART_CR2; USART_CR2;
Các thanh ghi sử dụng USART_BRR; USART_BRR1; USART_CR3; USART_BRR;
184 cho USART của STM32 1
bao gồm: USART_DR; USART_BRR2; USART_BRR; USART_DR1;
USART_SR1; USART_DR; USART_DR; USART_DR2;
USART_SR2 USART_SR USART_SR USART_SR
Khởi động là Khởi động Pull Khởi động các
Các tham số khởi động
ngõ vào hoặc Up, Pull Down, chức năng: Ngắt, Cả ba câu kia
185 (Initialization) cho một 2
ngõ ra, giá trị Open, Floating, vào ra ADC, tạo đều đúng
GPIO
ban đầu … xung, …
Các chức năng thường Thông báo hệ Thông báo trạng Thông báo chế độ
Cả ba câu kia
186 thấy của LED trong các thống đã được hoạt động: mở, hoạt động: chạy, 2
đều đúng
hệ thống nhúng: cấp nguồn đóng, … dừng, lỗi, …
Các chức năng thường Thực hiện tác vụ
Nhập tham số, Thiết lập cấu hình: Cả ba câu kia
187 thấy của nút nhấn trong điều khiển, xác 2
dữ liệu hoạt động chế độ, tần số, … đều đúng
các hệ thống nhúng: nhận hành động
Hiển thị các con
số cho: đồng hồ,
Hiển thự ký tự
Các chức năng thường dữ liệu đo lường, Hiển thị các băn
thông báo: trạng
thấy của LED 7 đoạn kết quả phép bản cho: Tên sản Cả ba câu kia
188 thái hệ thống, 2
trong các hệ thống tính, giá trị tham phẩm, thông báo, đều đúng
chế độ hoạt
nhúng: số hệ thống, số …
động, …
lượng sản phẩm

So sánh ưu nhược điểm Hiển thị văn bản
của LCD so với LED 7 đồ họa ít phong Tiêu thụ công Đáp ứng nhanh Góc nhìn rộng
189 2
đoạn trong các hệ thống phú, ít màu sắc cao hơn hơn hơn
nhúng: hơn
Cấu hình các
Cấu hình các Cấu hình các Cấu hình các chân
GPIOB->CRL=(3<<0)| chân PB0; PB4;
chân PB0; PB1; chân PB0; PB4; PB0; PB1; PB2;
(3<<4)|(3<<8)|(3<<12) PB8; PB12 của
PB2; PB3 của PB8; PB12 của PB3 của STM32 ở
190 Dòng lệnh lập trình thanh STM32 ở chế độ 2
STM32 ở chế độ STM32 ở chế độ chế độ output open
ghi CRL của STM32 ở output open
output push pull output push pull drain max speed
trên thực hiện: drain max speed
max speed 50Hz max speed 50Hz 50Hz
50Hz
GPIOA->CRL=(8<<0)|
(8<<4)|(8<<8) Cấu hình chân Cấu hình chân Cấu hình chân
Cả ba câu kia
191 Dòng lệnh lập trình thanh PA0,PA1,PA2 PA0,PA1,PA2 PA0,PA1,PA2 2
đều đúng
ghi CRL của STM32 ở input pull down input pull up input floating
trên thực hiện:
GPIOC->ODR=(1<<7)|
Cấu hình các
(1<<8)|(1<<9) Cung cấp bit 0 ra Cung cấp bit 1 ra Cấu hình các chân
chân 7, 8, 9
192 Dòng lệnh lập trình thanh các chân 7, 8, 9 các chân 7, 8, 9 7, 8, 9 PORTC là 2
PORTC là ngõ
ghi ODR của STM32 ở của PORTC của PORTC ngõ ra
vào
trên thực hiện:
GPIOC->BSRR
=(1<<23)| (8<<24)|
Để đưa chân 7, Để đưa chân 23, Để đưa chân 23, Để đưa chân 7,
(8<<25)
193 8, 9 PORTC lên 24, 25 PORTC 24, 25 PORTC về 8, 9 PORTC về 2
Dòng lệnh lập trình thanh mức cao lên mức cao mức thấp mức thấp
ghi BSRR của STM32 ở
trên thực hiện:
Một LED gắn vào cổng
ra vi điều khiển nối tiếp
với 1 điện trở, biết điện
áp mức cao ngõ ra là 5V,
194 điện áp rơi trên LED khi 100Ω 150Ω 200Ω 250Ω 2
sáng là 3V, dòng qua
LED là 20mA, điện trở
cần có giá trị bằng bao
nhiêu?

Để chia dòng với Cung cấp mức


Cấp nguồn cho
điện trở kéo lên logic 1 cho Để nạp điện cho
195 nút nhấn hoạt 2
bên trong STM32 khi nút tụ
động
Trong hình kết nối nút STM32 không nhấn
nhấn vào STM32 hình vẽ
trên, điện trở kéo lên
(Pull up) có chức năng
gì?
196 01101001B 10010110B 11001001B 01100110B 2
Trong sơ đồ kết nối LED 7
đoạn với vi điều khiển ở trên,
muốn sáng số 5 trên LED 7
đoạn Anode chung cần cấp ra
cổng điều khiển dữ liệu bao
nhiêu?

197 01101001B 10010110B 11001001B 01100110B 2


Trong sơ đồ kết nối LED 7
đoạn với vi điều khiển ở
trên, muốn sáng số 5 trên
LED 7 đoạn Kathode chung
cần cấp ra cổng điều khiển
dữ liệu bao nhiêu?
198 1 2 3 4 2
Trong sơ đồ kết nối LED 7
đoạn với vi điều khiển ở
trên, tại một thời điểm vi
điều khiển cung cấp dữ liệu
cho mấy LED 7 đoạn?

Cạnh lên của tín Cạnh xuống của Cạnh xuống của Cạnh xuống của
199 2
hiệu E tín hiệu E tín hiệu RS tín hiệu RW
Trong giản đồ thời gian
của Text LCD hình trên,
dữ liệu sẽ được ghi vào
LCD ở:

R4R3R2R1= R4R3R2R1= R4R3R2R1= R4R3R2R1=


200 Trong một bàn phím ma 2
0000B 1111B 0001B 1000B
trận hình trên. Nếu kéo
điện trở Pull Up ở tất cả
các cột và cấp mức 0 ra
các cột. Nếu không có
phím nhấn dữ liệu đọc từ
các hàng sẽ bằng:
Trong một bàn phím ma R4R3R2R1= R4R3R2R1= R4R3R2R1= R4R3R2R1=
201 2
trận hình trên. Nếu kéo 0000B 1111B 0001B 1000B
điện trở Pull Up ở tất cả
các cột và cấp mức 0 ra
các cột. Nếu nhấn phím
trên cùng bên trái
(khoanh tròn) dữ liệu đọc
từ các hàng sẽ bằng:
Tự động chuyển
kênh (Auto Chế độ DMA Tần số lấy mẫu
Injected Mode); (DMA Mode); (Sampling
Ngưỡng chuyển Chế độ ngắt Frequency); Độ
Các tham số thường khởi Cả ba câu kia
202 đổi ngõ vào (Interrupt phân giải 2
động cho ADC là: đều đúng
(Trigger Mode); Chế độ (Resolution); Định
Threshold); quét (Scan dạng dữ liệu đầu
Nguồn đầu vào Mode) ra (Data Format)
(Input Source)
Trong thư viện HAL của Cân chỉnh nơi
Chọn khối ADC; chứa dữ liệu trên Chọn chế độ biến
STM32 hàm
đổi; Chọn số Cả ba câu kia
203 HAL_ADC_Init() sử Chọn Clock; thanh ghi dữ 2
lượng kênh ADC đều đúng
dụng khởi động các tham Chọn độ phân giải liệu; Chọn chế
sử dụng
số: độ quét
204 Để sử dụng ADC của HAL_ADC_Init(); HAL_ADC_Start; HAL_ADC_Init(); HAL_ADC_Init(); 2
STM32 theo chế độ HAL_ADC_ConfigCh HAL_ADC_Init(); HAL_ADC_ConfigC HAL_ADC_ConfigCha
Polling có thể sử dụng annel; HAL_ADC_ConfigCha hannel; nnel;
các hàm HAL theo trình HAL_ADC_Start; nnel; HAL_ADC_Start; HAL_ADC_PollForCon
HAL_ADC_GetValue; HAL_ADC_PollForCo HAL_ADC_PollForC version;
HAL_ADC_PollForCo nversion; onversion; HAL_ADC_Start;
tự: nversion; HAL_ADC_GetValue; HAL_ADC_GetValue; HAL_ADC_GetValue;
HAL_ADC_Stop HAL_ADC_Stop HAL_ADC_Stop HAL_ADC_Stop
SPI_CR1; SPI_CT1; SPI_CR1; SPI_CR1;
Các thanh ghi thường sử SPI_CR2; SPI_CT2; SPI_CR2; SPI_CR2;
205 dụng của khối SPI của 2
SPI_SS; SPI_SR; SPI_SR; SPI_ST;
STM32 bao gồm:
SPI_DR SPI_DR SPI_DR SPI_DR
Chọn số lượng
Chọn cổng SPI; Chọn cổng SPI; Chọn cổng SPI;
cổng SPI; Chọn
Chọn chế độ Chọn chế độ Chọn chế độ
chế độ Master
Master/Slaver; Số Master/Slaver; Số Master/Slaver;
/Slaver; Số dây
dây truyền; Kích dây truyền; Số Số dây truyền;
truyền; Kích
thước dữ liệu lượng dữ liệu Kích thước dữ
thước dữ liệu
Các thông số khởi động truyền; Pha và truyền; Pha và cực liệu truyền; Pha
truyền; Pha và
206 cho cổng SPI của STM32 cực của clock; của clock; Tần số và cực của clock; 2
cực của clock;
bao gồm: Tần số Clock; Clock; Chọn Tần số Clock;
Tần số Clock;
Chọn số Slaver Slaver bằng phần Chọn Slaver
Chọn Slaver
truyền dữ liệu với cứng hay phần bằng phần cứng
bằng phần cứng
Master; Truyền mềm; Truyền hay phần mềm;
hay phần mềm;
MSB hay LSB MSB hay LSB Truyền MSB hay
Truyền MSB hay
trước trước LSB trước
LSB trước
HAL_SPI_Init; HAL_SPI_Init; HAL_SPI_Init;
HAL_SPI_Init;
HAL_SPI_DeInit; HAL_SPI_Config; HAL_SPI_Start;
HAL_SPI_DeInit;
HAL_SPI_Transmit; HAL_SPI_Transmit; HAL_SPI_Transmit;
Các hàm trong thư viện HAL_SPI_Transmit;
HAL_SPI_Receive HAL_SPI_Receive HAL_SPI_Receive
207 HAL cho cổng SPI của HAL_SPI_Receive 2
HAL_SPI_Transmit HAL_SPI_Transmit HAL_SPI_Transmit
STM32: Receive Receive
HAL_SPI_Transceive
Receive
HAL_SPI_GetState
HAL_SPI_GetStat HAL_SPI_GetState HAL_SPI_GetState
HAL_SPI_GetError HAL_SPI_GetError
HAL_SPI_GetError HAL_SPI_GetError
Slave có địa chỉ
Được tất cả các Được Slaver Được Slaver nhận
đúng với địa chỉ
208 Slaver nhận và xử nhận được tín được tín hiệu 2
Master cung cấp
lý hiệu SS=0 nhận SS=1 nhận
nhận
Trong sơ đồ kết nối, dữ
liệu từ Master cung cấp
tới chân MOSI sẽ:
Theo chuẩn SPI dữ liệu Đơn công chỉ từ
Đơn công chỉ từ Cả ba câu kia
209 có thể được truyền theo Master tới Song công 2
Slaver tới Master đều đúng
chế độ: Slaver
Nhận dữ liệu ở
Khi nhận dữ liệu truyền
cạnh lên hoặc Đồng bộ bằng
tới từ Master, Slaver Kiểm tra trạng
xuống của tín Bắt đầu nhận dữ cách so sánh từ
210 trong truyền nhận SPI thay đổi logic 2
hiệu Clock mà liệu khi SS=0 đồng bộ tới từ
đồng bộ với Master bằng của đường MOSI
nó nhận từ Master
cách nào?
Master
Truyền dữ liệu ở
Khi truyền dữ liệu tới
cạnh lên hoặc Đồng bộ bằng
Master, Slaver trong Kiểm tra trạng
xuống của tín Bắt đầu nhận dữ cách so sánh từ
211 truyền nhận SPI đồng bộ thay đổi logic 2
hiệu Clock mà liệu khi SS=0 đồng bộ tới từ
với Master bằng cách của đường MOSI
nó nhận từ Master
nào?
Master
212 Các tham số khởi động Tốc độ, chu kỳ Tốc độ, chu kỳ Tốc độ, chu kỳ Tốc độ, pha của 2
cho I2C của STM32 là: nhiệm vụ của nhiệm vụ của nhiệm vụ của clock; Chế độ
clock; Chế độ clock; Chế độ clock; Chế độ địa địa chỉ; Địa chỉ
địa chỉ; Địa chỉ địa chỉ; Địa chỉ chỉ; Địa chỉ Slaver; Chống
Master; Chống Slaver; Chống Slaver; Chống nhiễu; Gọi tổng
nhiễu; Gọi tổng nhiễu; Gọi riêng; nhiễu; Gọi tổng quát; Thời gian
quát; Thời gian Thời gian tăng quát; Thời gian tăng trên SDA;
tăng trên SDA; trên SDA; Chế tăng trên SDA;
Chế độ nhanh;
Chế độ nhanh; độ nhanh; Gửi Chế độ nhanh; Gửi
Gửi bit ACK
Gửi bit ACK bit ACK bit ACK
Lệnh I2C1->OAR1 = Khối I2C1 là Khối I2C1 là Khối I2C1 là Khối I2C1 là
213 (0x50 << 1) viết cho Slaver có địa chỉ Slaver có địa chỉ Master có địa chỉ Master có địa chỉ 2
STM32 sẽ khởi động: là 80 là 50 là 80 là 50
HAL_I2C_Init; HAL_I2C_Init;
HAL_I2C_DeInit HAL_I2C_DeInit HAL_I2C_Init;
HAL_I2C_Master HAL_I2C_Master HAL_I2C_Init;
HAL_I2C_DeInit
_Trans; _Transmit; HAL_I2C_DeInit
HAL_I2C_Master
Các hàm trong thư viện HAL_I2C_Master HAL_I2C_Master HAL_I2C_MOSI
_Transeive;
214 HAL cho cổng I2C của _Rece; _Receive; HAL_I2C_MISO; 2
HAL_I2C_Slave_
STM32: HAL_I2C_Slave_ HAL_I2C_Slave_ HAL_I2C_SOMI; Transceive;
Trans; Transmit; HAL_I2C_SIMO; HAL_I2C_Stop()
HAL_I2C_Slave HAL_I2C_Slave_ HAL_I2C_Stop()
_Rece; Receive;
HAL_I2C_Stop() HAL_I2C_Stop()
Nhận dữ liệu ở
Khi nhận dữ liệu truyền
cạnh lên hoặc Đồng bộ bằng
tới từ Master, Slaver Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
215 trong truyền nhận I2C thay đổi logic liệu khi tín hiệu 2
hiệu Clock mà đồng bộ tới từ
đồng bộ với Master bằng của đường SDA đồng bộ tích cực
nó nhận từ Master
cách nào?
Master
Truyền dữ liệu ở
Khi truyền dữ liệu tới
cạnh lên hoặc Đồng bộ bằng
Master, Slaver trong Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
216 truyền nhận I2C đồng bộ thay đổi logic liệu khi tín hiệu 2
hiệu Clock mà đồng bộ tới từ
với Master bằng cách của đường SDA đồng bộ tích cực
nó nhận từ Master
nào?
Master
Slave có địa chỉ
Được tất cả các Được Slaver mà Được Slaver có
đúng với địa chỉ
217 Slaver nhận và Master chỉ định địa chỉ bằng 1 2
Master cung cấp
Trong sơ đồ kết nối trên, xử lý trước nhận nhận
nhận
dữ liệu từ Master cung
cấp tới chân SDA sẽ:
Theo chuẩn I2C dữ liệu Đơn công chỉ từ Bán song công
Đơn công chỉ từ
218 có thể được truyền theo Master tới Song công giữa Master và 2
Slaver tới Master
chế độ: Slaver Slaver
Baud Rate; RE; Baud Rate; RE; Baud Rate; RE;
Baud Rate; RE;
TE; Word TE; Word TE; Word Length;
TE; Word
Length; Length; Parity; Stop bits; Length;
Parity; Start bits; Parity; Stop bits; Oversampling;
Parity; Stop bits;
Các tham số cần khởi Oversampling; Oversampling; Buffer
Oversampling;
219 động cho USART của Buffer Size; Buffer Size; Enable/Disable; 2
Buffer Size;
STM32 là: Error Checking; Error Checking; Error Checking;
Error Checking;
Flow Control; Flow Control; Flow Control;
Flow Control;
GPIO GPIO GPIO
GPIO In/Out;
Configuration; Configuration; Configuration;
DMA; Syn/Asyn
DMA; Syn/Asyn DMA; Syn/Asyn DMA; Syn/Asyn
Mode
Mode Mode Mode
220 Các hàm trong thư viện HAL_UART_Init; HAL_UART_Init; HAL_UART_Init; HAL_UART_Init; 2
HAL cho cổng USART HAL_UART_DeInit; HAL_UART_DeInit; HAL_UART_Syn; HAL_UART_Asyn;
HAL_UART_Transmit; HAL_UART_Transmit; HAL_UART_Transmit; HAL_UART_Transmit;
của STM32:
HAL_UART_Receive HAL_UART_Receive; HAL_UART_Receive; HAL_UART_Receive;
HAL_UART_Transmit_ HAL_UART_Transmit_I HAL_UART_Transmit_IT; HAL_UART_Transmit_I
INT; T; HAL_UART_Receive_IT; T;
HAL_UART_Receive_I HAL_UART_Receive_I HAL_UART_Transmit_D HAL_UART_Receive_I
NT; T; MA; T;
HAL_UART_Transmit_ HAL_UART_Transmit_ HAL_UART_Receive_DM HAL_UART_Transmit_
DMA; DMA; A; DMA;
HAL_UART_Receive_ HAL_UART_Receive_D HAL_UART_IRQHandl HAL_UART_Receive_D
DMA; MA; er; MA;
HAL_UART_IRQHand HAL_UART_IRQHandl HAL_UART_IRQHa
ler; er; ndler;
Nhận dữ liệu ở
Khi nhận dữ liệu trong
cạnh lên hoặc Đồng bộ bằng
truyền nhận USART chế Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
221 độ Asynchronous, bên thay đổi logic liệu khi tín hiệu 2
hiệu SCK mà nó đồng bộ tới từ
nhận đồng bộ với bên của đường TX đồng bộ tích cực
nhận từ bên bên truyền
truyền bằng cách nào?
truyền
Nhận dữ liệu ở
Khi nhận dữ liệu trong
cạnh lên hoặc Đồng bộ bằng
truyền nhận USART chế Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
222 độ Synchronous, bên thay đổi logic liệu khi tín hiệu 2
hiệu SCK mà nó đồng bộ tới từ
nhận đồng bộ với bên của đường TX đồng bộ tích cực
nhận từ bên bên truyền
truyền bằng cách nào?
truyền
Cho phép bạn
truyền và nhận Đảm bảo rằng dữ
Dữ liệu được
dữ liệu liên tục liệu được truyền
Các lợi điểm khi sử dụng truyền và nhận
mà không cần và nhận đúng lúc Cả ba câu kia
223 truyền USART ở chế độ mà không cần 2
phải cài đặt từng mà không bị ngắt đều đúng
DMA là: can thiệp của
byte hoặc từng gián đoạn bởi xử
CPU
khung dữ liệu lý CPU
một
CPU có thể thực
hiện các công CPU sẽ nhận CPU không cần
Các lợi điểm khi sử dụng Tốc độ truyền dữ
224 việc khác khi được dữ liệu điều khiển việc 2
ngắt nhận USART là: liệu cao hơn
không có dữ liệu nhanh hơn nhận dữ liệu
truyền tới
225 #include Nhấp nháy 3 led Nhấp nháy 3 led Nhấp nháy led Nhấp nháy led 3
"Device/Include/stm32f1 chân nối Anode chân nối chân nối Anode chân nối
0x.h" vào các chân Kathode vào các vào chân PB1 Kathode vào
void gpio_init(void) PB7, PB8, PB9 chân PB7, PB8, chân PB1
{ PB9
RCC->APB2ENR= (1<<3)
GPIOB->CRL= (3<<28);
GPIOB->CRH=(3<<0)|(3<<4);
}
void delay(volatile uint32_t a )
{ a=a*4000;
while(a--); }
int main(void)
{ gpio_init();
while(1)
{
GPIOB->ODR= (1<<7)|(1<<8)|
(1<<9);
delay(500);
GPIOB->ODR&= ~((1<<7)|
(1<<8)|(1<<9));
delay(500);
}}
Chương trình viết dưới
lớp thanh ghi của STM32
thực hiện:
226 #include Điều khiển các Điều khiển các Điều khiển các Điều khiển các 3
"Device/Include/stm32f10x.h
LED nối LED nối Anode LED nối Anode LED nối
void gpio_init(void)
{
Kathode vào vào cổng B tắt vào cổng B sáng Kathode vào
RCC->APB2ENR= (1<<3); cổng B tắt dần dần dần cổng B sáng dần
GPIOB->CRL= (3<<20)|(3<<24)|
(3<<28);
GPIOB->CRH= (3<<0)|(3<<4)|
(3<<8)|(3<<12);
}
void delay(volatile uint32_t a )
{ a=a*4000;
while(a--); }
int main(void)
{ gpio_init();
while(1)
{ uint8_t i=0;
for(i=5;i<=12;i++)
{
GPIOB->ODR= (1<<i);
delay(500);
GPIOB->ODR&= ~(1<<i);
delay(500);
}}
Chương trình viết dưới
lớp thanh ghi của STM32
thực hiện:
Vùng nhớ Flash của
STM32 Cortex có địa chỉ
227 từ 0x08000000 tới 16KB 32KB 64KB 128KB 3
0x0801FFFF sẽ có dung
lượng là:
228 #include "stm32f4xx_hal.h" Điến khiển LED Chuyển trạng Điến khiển LED Điều khiển LED 3
#define LED_PIN GPIO_PIN_13 sáng khi nhấn thái sáng tắt của sáng khi không chớp tắt khi nhấn
#define LED_PORT GPIOC
nút LED khi nút nhấn nút nút
#define BUTTON_PIN
GPIO_PIN_0 nhấn tác động
#define BUTTON_PORT GPIOA
int main(void) {
HAL_Init();
--
HAL_RCC_GPIOC_CLK_ENABL
E();
--
HAL_RCC_GPIOA_CLK_ENABL
E();
GPIO_InitTypeDef
LED_InitStruct;
LED_InitStruct.Pin = LED_PIN;
LED_InitStruct.Mode =
GPIO_MODE_OUTPUT_PP;
LED_InitStruct.Speed =
GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_PORT,
&LED_InitStruct);
GPIO_InitTypeDef
BUTTON_InitStruct;
BUTTON_InitStruct.Pin =
BUTTON_PIN;
BUTTON_InitStruct.Mode =
GPIO_MODE_INPUT;
BUTTON_InitStruct.Pull =
GPIO_PULLUP;
HAL_GPIO_Init(BUTTON_PORT,
&BUTTON_InitStruct);
while (1) {
GPIO_PinState buttonState =
HAL_GPIO_ReadPin(BUTTON_P
ORT, BUTTON_PIN);
if (buttonState ==
GPIO_PIN_RESET)
{ HAL_GPIO_TogglePin(LE
D_PORT, LED_PIN);
HAL_Delay(100);
}}}
Chương trình viết dưới
lớp thư viện HAL cho
STM32 thực hiện:
229 #include "stm32f4xx_hal.h" Sáng các số từ 0 Sáng lần lượt các Sáng lần lượt các Sáng lần lượt các 3
#define SEGMENT_PORT GPIOA
#define DIGIT_PORT GPIOB đến 9 lên 1 LED số từ 0 đến 9 lên số từ 0 đến 9 lên 4 số từ 0 đến 3 lên
const uint8_t digitValues[10] = { 7 đoạn nối vào 4 LED 7 đoạn LED 7 đoạn các 4 LED 7 đoạn
0x3F,0x06, 0x5C,0x4F,0x66, GPIOA các đoạn nối vào đoạn nối vào các đoạn nối vào
,0x6D,0x7D,0x07, 0x7F,0x6F GPIOA, các tín GPIOB, các tín GPIOA, các tín
};
void displayDigit(uint8_t digit) hiệu chọn LED hiệu chọn LED nối hiệu chọn LED
{ HAL_GPIO_WritePin(DIGIT_PO nối vào GPIOB vào GPIOA nối vào GPIOB
RT, DIGIT_1_PIN DIGIT_2_PIN|
DIGIT_3_PIN|DIGIT_4_PIN,
GPIO_PIN_RESET);
switch (digit) {
case 1:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_1_PIN, GPIO_PIN_SET);
break;
case 2:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_2_PIN, GPIO_PIN_SET);
break;
case 3:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_3_PIN, GPIO_PIN_SET);
break;
case 4:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_4_PIN, GPIO_PIN_SET);
break;
}}
int main(void) {
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENAB
LE();
__HAL_RCC_GPIOB_CLK_ENAB
LE();
GPIO_InitTypeDef
GPIO_InitStruct
GPIO_InitStruct.Pin =
SEGMENT_A_PIN|
SEGMENT_B_PIN|
SEGMENT_C_PIN|
SEGMENT_D_PIN|
SEGMENT_E_PIN|
SEGMENT_F_PIN|
SEGMENT_G_PIN|DIGIT_1_PIN|
DIGIT_2_PIN|DIGIT_3_PIN|
DIGIT_4_PIN;
GPIO_InitStruct.Mode =
GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed =
GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(SEGMENT_PO
RT, &GPIO_InitStruct);
while (1) {
for (uint8_t digit = 1; digit <= 4;
digit++) {
for (uint8_t number = 0; number <
10; number++)
{ HAL_GPIO_WritePin(
SEGMENT_PORT,SEGMENT_A
_PIN|SEGMENT_B_PIN|
SEGMENT_C_PIN|
SEGMENT_D_PIN |
SEGMENT_E_PIN|
SEGMENT_F_PIN|
SEGMENT_G_PIN,
digitValues[number]);
displayDigit(digit);
HAL_Delay(1000);
} }}}
Chương trình viết dưới lớp
thư viện HAL cho STM32
thực hiện:
void LCD_W(uint8_t data)
{ HAL_GPIO_WritePin(RS_PORT,
RS_PIN, GPIO_PIN_SET);
LCD_Send4Bit(data >> 4);
HAL_GPIO_WritePin(EN_PORT,EN
_PIN, GPIO_PIN_SET);
delay(1);
HAL_GPIO_WritePin(EN_PORT, Ghi dữ liệu 8 bit Ghi dữ liệu 8 bit
EN_PIN, GPIO_PIN_RESET); tới LCD bằng tới LCD bằng hai Ghi dữ liệu 8 bit
LCD_Send4Bit(data & 0x0F); Cả ba câu kia
230 hai lần 4 bit, 4 lần 4 bit, 4 bit tới LCD bằng một 3
HAL_GPIO_WritePin(EN_PORT, đều đúng
EN_PIN, GPIO_PIN_SET); bit cao trước, 4 thấp trước, 4 bit lần ghi
delay(1); bit thấp sau cao sau
HAL_GPIO_WritePin(EN_PORT,
EN_PIN, GPIO_PIN_RESET);
delay(2);
Hàm LCD_W cho STM32
dưới lớp thư viện HAL ở
trên thực hiện:
231 void scanKeyboard(void) { ROWS và COLS ROWS và COLS ROWS và COLS ROWS và COLS 3
for (int i = 0; i < ROWS; i++) có giá trị từ 1 có 1 trong các có giá trị từ 0 đến có 1 trong các
{
HAL_GPIO_WritePin(row_ports
[i], row_pins[i],
GPIO_PIN_RESET);
for (int j = 0; j < COLS; j++) {
if HAL_GPIO_ReadPin
(col_ports[j], col_pins[j]) ==
GPIO_PIN_RESET) { giá trị nhị phân
}} giá trị nhị phân
từ 0001B;
HAL_GPIO_WritePin(row_ports đến 4 từ 0000B đến 3
[i], row_pins[i], 0010B; 0100B;
1111B
GPIO_PIN_SET); 1000B
}}
Sau khi gọi hàm quét bàn
phím ma trận viết dưới
lớp thư viện HAL cho
STM32 ở trên sẽ được:
ADC_HandleTypeDef hadc1;
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler =
ADC_CLOCK_SYNC_PCLK_D
IV4;
hadc1.Init.Resolution =
ADC_RESOLUTION_12B; Khởi động khối Khởi động khối Khởi động khối
Khởi động khối
hadc1.Init.DataAlign = ADC1; chạy 1 ADC1; chạy 16 ADC1; chạy 1
ADC1; chạy 1
ADC_DATAALIGN_RIGHT; kênh biến đổi; kênh biến đổi; kênh biến đổi;
kênh biến đổi; Chế
hadc1.Init.ScanConvMode = Chế độ biến đổi Chế độ biến đổi Chế độ biến đổi
DISABLE; độ biến đổi liên
single mode; Độ single mode; Độ single mode; Độ
232 hadc1.Init.EOCSelection = tục; Độ phân giải 3
ADC_EOC_SINGLE_CONV; phân giải 12 bit; phân giải 12 bit; phân giải 16 bit;
12 bit; Dữ liệu
hadc1.Init.ContinuousConvMode Dữ liệu được Dữ liệu được Dữ liệu được
được chỉnh về bên
= DISABLE; chỉnh về bên chỉnh về bên chỉnh về bên
phải của thanh ghi
hadc1.Init.NbrOfConversion = 1; phải của thanh phải của thanh phải của thanh
if (HAL_ADC_Init(&hadc1) != dữ liệu
ghi dữ liệu ghi dữ liệu ghi dữ liệu
HAL_OK)
{ Error_Handler(); }
Đoạn chương trình
STM32 dưới lớp thư viện
HAL trên thực hiện:
#include <stdio.h>
#define NUM_ROWS 4
#define NUM_COLS 4
keypad[NUM_ROWS]
[NUM_COLS] = {
{1, 2, 3, 'A'},
{4, 5, 6, 'B'},
{7, 8, 9, 'C'},
{'*', 0, '#', 'D'}
};
char readKeypad(int col, int row)
{
233 4 1 Ký tự A 0x0A 3
return keypad[row][col];
}
int main() {
int col = 4;
int row = 1;
char key = readKeypad(col,
row);
}
Sau đoạn chương trình
trên sẽ được biến “key”
bằng
#include <stdio.h>
int main() {
int num = 1642;
char str[10];
snprintf(str, sizeof(str), "%d",
num); Str={0x01,0x06, Str={0x21,0x26, Str={0x31,0x36,0 Str={0x41,0x46,
234 printf("Result: %s\n", str); 3
0x04,0x02} 0x24,0x22} x34,0x32} 0x44,0x42}
return 0;
}
Sau khi thực hiện chương
trình C trên biến str có
giá trị là:
235 Một ADC 10 bit có điện 24.748 °C 34.748 °C 44.748 °C 54.748 °C 3
áp đầy thang là 3.3V đọc
điện áp từ một cảm biến
nhiệt độ có độ nhạy
10mV/oC, điện áp tại 0oC
là 0.5V. Giá trị độc được
là 123 sẽ tương ứng với
nhiệt độ là:
236 #include "stm32f4xx_hal.h" Thay đổi trạng Thay đổi trạng Thay đổi trạng thái Thay đổi trạng 3
void Timer_Config(void) thái chân 5 thái chân 5 chân 5 GPIOA sau thái chân 5
{ TIM_HandleTypeDef htim;
--HAL_RCC_TIM2_CLK
GPIOA sau mỗi GPIOA sau mỗi mỗi khoảng thời GPIOA sau mỗi
_ENABLE(); khoảng thời gian khoảng thời gian gian 1 giây bằng khoảng thời gian
htim.Instance = TIM2; 1/10 giây bằng 1/10 giây bằng quét vòng 1 giây bằng
htim.Init.Prescaler = quét vòng chương trình chương trình
HAL_RCC_GetPCLK1Freq() / ngắt ngắt
1000 - 1;
htim.Init.CounterMode =
TIM_COUNTERMODE_UP;
htim.Init.Period=1000 - 1;
htim.Init.ClockDivision =
TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim);
HAL_NVIC_SetPriority(TIM2_IR
Qn, 0, 0);
HAL_NVIC_EnableIRQ(TIM2_I
RQn);
HAL_TIM_Base_Start_IT(&htim)
;
}
HAL_TIM_PeriodElapsedCallbac
k(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM2) {
HAL_GPIO_TogglePin(GPIOA,
GPIO_PIN_5);
}}
int main(void) {
HAL_Init();
Timer_Config();
--HAL_RCC_GPIOA_ CLK
_ENABLE();
GPIO_InitTypeDef
GPIO_InitStruct = {0};
GPIO_InitStruct.Pin =
GPIO_PIN_5;
GPIO_InitStruct.Mode =
GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull =
GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,
&GPIO_InitStruct);
while (1) {
}}
Chương trình STM32 dưới
lớp thư viện HAL ở trên
thực hiện:
237 #include "stm32f4xx_hal.h" Cấu hình kênh 2 Cấu hình kênh 1 Cấu hình kênh 1 Cấu hình kênh 1 3
TIM_HandleTypeDef htim; của Timer2 hoạt của Timer2 hoạt của Timer2 hoạt của Timer2 hoạt
void Timer_PWM_Config(void) {
động ở chế độ động ở chế độ động ở chế độ động ở chế độ
TIM_OC_InitTypeDef
sConfigOC; Fast PWM với Fast PWM với PWM mode 1 với Fast PWM chu
--HAL_RCC_TIM2_CLK_ chu kỳ nhiệm vụ mức cao là 1000 chu kỳ nhiệm vụ là kỳ là 500 xung
ENABLE(); là 50% xung 50%
htim.Instance = TIM2;
htim.Init.Prescaler = 0;
htim.Init.CounterMode =
TIM_COUNTERMODE_UP;
htim.Init.Period = 1000;
htim.Init.ClockDivision =
TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim);
sConfigOC.OCMode =
TIM_OCMODE_PWM1;
sConfigOC.Pulse = 500;
sConfigOC.OCPolarity =
TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode =
TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(
&htim, &sConfigOC,
TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim,
TIM_CHANNEL_1);
}
int main(void) {
HAL_Init();
Timer_PWM_Config();
while (1) {
}}
Chương trình STM32 dưới
lớp thư viện HAL ở trên
thực hiện:
238 #include "stm32f4xx_hal.h" Có cạnh xuống ở Có cạnh lên ở Có mức thấp ở Có mức cao ở 3
void EXTI_Config(void) { chân 0 cổng chân 0 cổng chân 0 cổng chân 0 cổng
--HAL_RCC_GPIOA_
CLK_ENABLE();
GPIOA GPIOA GPIOA GPIOA
GPIO_InitTypeDef
GPIO_InitStruct = {0};
GPIO_InitStruct.Pin =
GPIO_PIN_0;
GPIO_InitStruct.Mode =
GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull =
GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,
&GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI0_
IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI0
_IRQn);
}
void
HAL_GPIO_EXTI_Callback(uin
t16_t GPIO_Pin) {
if (GPIO_Pin ==
GPIO_PIN_0) {
}}
int main(void) {
HAL_Init();
EXTI_Config();
while (1) {
}}
Chương trình STM32
dưới lớp thư viện HAL ở
trên chương trình ngắt sẽ
thực hiện khi:
239 static void MX_TIM2_Init(void) { Khởi động Khởi động Khởi động Timer2 Khởi động 3
htim2.Instance = TIM2; Timer2 hoạt Timer2 hoạt hoạt động ở chế độ Timer2 hoạt
htim2.Init.Prescaler = 0;
động ở chế độ động ở chế độ one -pulse tạo ra động ở chế độ
htim2.Init.CounterMode =
TIM_COUNTERMODE_UP; encoder đếm sự kiện ở xung ở kênh tạo ra xung
htim2.Init.Period = 65535; kênh số 1 PWM1 PWM ở kênh
htim2.Init.ClockDivision = PWM1
TIM_CLOCKDIVISION_DIV1;
HAL_TIM_OnePulse_Init(&htim2,
TIM_OPMODE_SINGLE);
TIM_OC_InitTypeDef
sConfigOC;
sConfigOC.OCMode =
TIM_OCMODE_PWM1;
sConfigOC.OCPolarity =
TIM_OCPOLARITY_HIGH;
sConfigOC.Pulse = 32767;
sConfigOC.OCNPolarity =
TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode =
TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState =
TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState =
TIM_OCNIDLESTATE_RESET;
HAL_TIM_OnePulse_ConfigChann
el(&htim2, &sConfigOC,
TIM_CHANNEL_1);
}
Hàm STM32 dưới lớp thư
viện HAL ở trên thực hiện:
240 #include "stm32f4xx_hal.h" Cấu hình Timer2 Cấu hình Timer2 Cấu hình Timer2 ở Cả ba câu kia đề 3
TIM_HandleTypeDef htim2; ở chế độ ở chế độ chế độ Encoder; đúng
void Encoder; Encoder; Khởi động đọc giá
SystemClock_Config(void);
Khởi động đọc Khởi động đọc trị Encoder ở kênh
static void
MX_GPIO_Init(void);
giá trị Encoder ở giá trị Encoder ở 2;
static void kênh 1 và 2; kênh 1; Lấy giá trị
MX_TIM2_Init(void); Lấy giá trị Lấy giá trị Encoder ở chương
int main(void) { Encoder ở Encoder ở trình chính
HAL_Init(); chương trình chương trình
SystemClock_Config(); chính chính
MX_GPIO_Init();
MX_TIM2_Init();
HAL_TIM_Encoder_Start(&ht
im2, TIM_CHANNEL_1);
HAL_TIM_Encoder_Start(&ht
im2, TIM_CHANNEL_2);
while (1) {
int encoderValue =
__HAL_TIM_GET_COUNTE
R(&htim2);
HAL_Delay(100);
}}
void
SystemClock_Config(void) {
// Cấu hình hệ thống clock
// ...
}
static void
MX_TIM2_Init(void) {
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0;
htim2.Init.CounterMode =
TIM_COUNTERMODE_ENC
ODERMODE2; // Chọn chế
độ encoder
htim2.Init.Period = 65535; //
Giá trị tối đa của bộ đếm
htim2.Init.ClockDivision =
TIM_CLOCKDIVISION_DIV
1;
HAL_TIM_Encoder_Init(&hti
m2);
}
static void
MX_GPIO_Init(void) {
}
Chương trình STM32
dưới lớp thư viện HAL ở
trên thực hiện:
Các lệnh nào sau đây của B BX Cả ba câu kia đề
241 ARM thực hiện việc rẽ BXJ 1
BL BLX đúng
nhánh chương trình?
Trong các lệnh chế độ
242 ARM, mã điều kiện sẽ 2 bit 4 bit 6 bit 8 bit 1
chiếm độ dài là:
Trong các lệnh chế độ
Không có mã
THUMB của ARM, mã
243 2 4 6 điều kiện trong 1
điều kiện sẽ chiếm độ dài
lệnh
là:
Mã điều kiện trong các Xét điều kiện Xác định lệnh có Quản lý các điều Quản lý biến số
244 lệnh ARM được sử dụng sau khi thực hiện được thực hiện kiện của chương trong chương 1
để làm gì? lệnh không trình trình
245 ARM7 có bao nhiêu mã 10 15 12 17 1
điều kiện?
Lệnh không có
Mã điều kiện trong một
hậu tố S vừa Sau khi thực hiện Của một lệnh số Của một lệnh
246 lệnh của ARM khi xét là 1
thực hiện trước dòng lệnh học logic
của:
đó
Kết quả lệnh so
Kết quả lệnh so Kết quả lệnh so Kết quả lệnh so
Khi lệnh có mã điều kiện sánh trước đó là
247 sánh trước đó là sánh trước đó là sánh trước đó là 1
HS nó sẽ thực hiện khi: nhỏ hơn hoặc
lớn hơn lớn hơn hoặc bằng nhỏ hơn
bằng
Điều kiện "EQ" trong
Lớn hơn hoặc
248 lệnh ARM dùng để kiểm Bằng nhau Lớn hơn Không bằng 1
bằng
tra điều gì?
Điều kiện "NE" trong
Lớn hơn hoặc
249 lệnh ARM dùng để kiểm Bằng nhau Lớn hơn Không bằng 1
bằng
tra điều gì?
Điều kiện "MI" trong
250 lệnh ARM dùng để kiểm Tràn số Số âm Số dương Tràn bit 1
tra điều gì?
Điều kiện "PL" trong lệnh
Lớn hơn hoặc Nhỏ hơn hoặc
251 ARM dùng để kiểm tra Số âm Tràn bit 1
bằng bằng
điều gì?
Điều kiện "VS" trong
252 lệnh ARM dùng để kiểm Tràn Không tràn Nhớ Không nhớ 1
tra điều gì?
Điều kiện "VC" trong
253 lệnh ARM dùng để kiểm Tràn Không tràn Nhớ Không nhớ 1
tra điều gì?
Điều kiện "HI" trong lệnh Lớn hơn hoặc
Lớn hơn không Lớn hơn có tính Lớn hơn hoặc
254 ARM dùng để kiểm tra bằng không tính 1
tính dấu dấu bằng có tính dấu
điều gì? dấu
255 Điều kiện "LS" trong Nhỏ hơn không Nhỏ hơn có tính Nhỏ hơn hoặc Nhỏ hơn hoặc 1
lệnh ARM dùng để kiểm bằng không tính
tính dấu dấu bằng có tính dấu
tra điều gì? dấu
Điều kiện "GE" trong Lớn hơn hoặc
Lớn hơn không Lớn hơn có tính Lớn hơn hoặc
256 lệnh ARM dùng để kiểm bằng không tính 1
tính dấu dấu bằng có tính dấu
tra điều gì? dấu
Điều kiện "LE" trong Nhỏ hơn hoặc
Nhỏ hơn không Nhỏ hơn có tính Nhỏ hơn hoặc
257 lệnh ARM dùng để kiểm bằng không tính 1
tính dấu dấu bằng có tính dấu
tra điều gì? dấu
Trong mã điều kiện Lớn hơn hoặc
Lớn hơn không Lớn hơn có tính Lớn hơn hoặc
258 ARM, điều kiện "GT" có bằng không tính 1
tính dấu dấu bằng có tính dấu
ý nghĩa gì? dấu
Trong mã điều kiện
259 ARM, điều kiện "AL" có Lặp vô hạn Luôn luôn đúng Luôn không đúng Cảnh báo 1
ý nghĩa gì?
Tiền tố S trong một lệnh Duy trì dấu của Kết quả phép Không duy trì
Kết quả phép tính
260 Parallel của ARM có ý kết quả phép tính chia dư sẽ dấu của kết quả 1
chia dư sẽ luôn âm
nghĩa gì? tính chia dư luôn dương phép tính chia dư
Đảm bảo kết quả
của các phép tính
nằm trong
Kết quả phép tính
Tiền tố Q trong một lệnh khoảng giá trị
Chấp nhận kết số học là bão hòa Cả ba câu kia
261 Arithmetic Parallel của được xác định, 1
quả phép tính số theo khả năng của đều đúng
ARM có ý nghĩa gì? thường là giá trị
học có tràn thanh ghi
tối thiểu và tối đa
mà kiểu dữ liệu
có thể biểu diễn
Tiền tố U trong một lệnh Duy trì dấu của Kết quả phép Không duy trì
Kết quả phép tính
262 Arithmetic Parallel của kết quả phép tính chia dư sẽ dấu của kết quả 1
chia dư sẽ luôn âm
ARM có ý nghĩa gì? tính chia dư luôn dương phép tính chia dư
Tiền tố SH trong một Thực hiện các Thực hiện các Thực hiện các Thực hiện các
263 lệnh Arithmetic Parallel phép tính số học phép tính số học phép tính số học phép tính số học 1
của ARM có ý nghĩa gì? có dấu không dấu có dấu dương có dấu âm
Chế độ địa chỉ gián tiếp Giữ độ dời địa chỉ
Chứa địa chỉ bộ Chứa dữ liệu cần Giữ giá trị dịch
264 thanh ghi của ARM sử dữ liệu cần truy 1
nhớ cần truy cập truy cập của địa chỉ
dụng thanh ghi để: cập
Lấy giá trị trong Lấy giá trị trong
Lấy giá trị trong
Lệnh ldr r0, [r1] thực ô nhớ có địa chỉ Lấy giá trị trong r0 ô nhớ có địa chỉ
265 r1 vào thanh ghi 2
hiện: giữ trong r1 vào vào thanh ghi r1 giữ trong r0 vào
r0
thanh ghi r0 thanh ghi r1
Trong các lệnh của ARM
Giữ trong một ô Giữ trong một Mã hóa trong mã Nằm trong ngăn
266 toán hạng tức thời 2
nhớ dữ liệu thanh ghi lệnh xếp
(immediate) được:
Trong chế độ thanh ghi
Giá trị của thanh Giá trị của một
với độ dời tức thời
ghi cộng hoặc thanh ghi được
(Register with immediate Một giá trị được Không có địa chỉ
267 trừ đi một giá trị nạp một giá trị 2
offset) của ARM địa chỉ mã hóa trong lệnh trong chế độ này
được mã hóa mã hóa trong
của dữ liệu cần truy cập
trong lệnh lệnh
là:
Lấy giá trị trong
Lấy giá trị trong
ô nhớ có địa chỉ
Khi r1 =1000, lệnh ldr r0, ô nhớ có địa chỉ Lấy giá trị 1008 Lấy giá trị 1008
268 1000 vào thanh 2
[r1, #8] thực hiện: 1008 vào thanh vào thanh ghi r1 vào thanh ghi r0
ghi r0 sau đó
ghi r0
cộng với 8
Trong chế độ thanh ghi
với độ dời thanh ghi
Giá trị hai thanh
(Register with register Giá trị của thanh Giá trị của thanh Không có địa chỉ
269 ghi cộng hoặc 2
offset) của ARM địa chỉ ghi cơ sở (base) ghi độ dời trong chế độ này
trừ với nhau
của dữ liệu cần truy cập
là:
Lấy giá trị trong
Lấy giá trị trong
Lấy giá trị r1 + ô nhớ có địa chỉ
Lệnh ldr r0, [r1,r2] thực ô nhớ có địa chỉ Ghi giá trị trong r0
270 r2 vào thanh ghi giữ trong r1 vào 2
hiện: r1 + r2 vào thanh vào địa chỉ r1 + r2
r0 r0 sau đó cộng
ghi r0
với r2
Nạp giá trị 10 Dịch phải logic Dịch trái logic Lấy giá trị trong
Toán hạng LSL #10 thực
271 vào thanh ghi thanh ghi độ dời thanh ghi độ dời ô nhớ có địa chỉ 2
hiện:
LSL 10 bit 10 bit LSL + 10
Nạp giá trị 10 Dịch phải logic Dịch trái logic Lấy giá trị trong
Toán hạng LSR #10 thực
272 vào thanh ghi thanh ghi độ dời thanh ghi độ dời ô nhớ có địa chỉ 2
hiện:
LSR 10 bit 10 bit LSR + 10
Nạp giá trị 10 Dịch phải số học Dịch phải logic Lấy giá trị trong
Toán hạng ASR #10 thực
273 vào thanh ghi thanh ghi độ dời thanh ghi độ dời ô nhớ có địa chỉ 2
hiện:
ASR đi 10 bit 10 bit ASR + 10
Nạp giá trị 10 Lấy giá trị trong
Toán hạng ROR #10 thực Quay phải thanh Dịch phải thanh
274 vào thanh ghi ô nhớ có địa chỉ 2
hiện: ghi độ dời 10 bit ghi độ dời đi 10 bit
ROR ROR + 10
Toán hạng RRX thực Quay phải dữ Quay phải dữ Quay phải dữ liệu Quay phải dữ
275 2
hiện: liệu 33 bit liệu 32 bit 16 bit liệu 8 bit
Chế độ địa chỉ thanh ghi Tổng thanh ghi Tổng giữa thanh
Tổng thanh ghi Tổng thanh ghi cơ
với thanh ghi độ dời tỷ lệ cơ sở và thanh ghi cơ sở với
cơ sở và thanh sở và thanh ghi độ
276 (Register with scaled ghi độ dời đã thanh ghi độ dời 2
ghi độ dời đã dời đã được trừ đi
register offset), địa chỉ dữ được cộng thêm đã được quay
được chia tỷ lệ một giá trị
liệu cần truy cập là: một giá trị dịch
Lấy giá trị trong Lấy giá trị trong Lấy giá trị trong ô Lấy giá trị trong
Lệnh ldr r0, [r1, r2, LSL
277 ô nhớ có địa chỉ ô nhớ có địa chỉ nhớ có địa chỉ ô nhớ có địa chỉ 2
#2] thực hiện:
[(r1+r2)<<2)] [r1+(r2<<2)] [(r1+r2+LSL)<<2] [r1+r2+LSL<<2]
Lấy giá trị trong Lấy giá trị trong Lấy giá trị trong ô Lấy giá trị trong
Lệnh ldr r0, [r1, -r2, ASR
278 ô nhớ có địa chỉ ô nhớ có địa chỉ nhớ có địa chỉ ô nhớ có địa chỉ 2
#2] thực hiện:
[(r1-r2)>>2)] [r1-(r2>>2)] [(r1-r2+ASL)<<2] [r1-r2+ASL<<2]
Thay đổi thanh Thay đổi giá trị Thay đổi thanh ghi
Chỉ thị chỉ số trước (Pre- Thay đổi giá trị
ghi chứa địa chỉ dữ liệu bộ nhớ chứa địa chỉ bộ
279 Indexed) trong lệnh dữ liệu bộ nhớ 2
bộ nhớ sau khi trước khi truy nhớ trước khi truy
ARM thực hiện việc: sau khi truy cập.
truy cập. cập. cập.
Lệnh ldr r0, [r1, #4]! r1 = r1 + 4 r0 = [r1] r1 = r1 + 4 [r1]=r0
280 2
thực hiện: r0 = [r1] r1 = r1 + 4 [r1]=r0 r1 = r1 + 4
r0 = [r1] r0 = [r1]
Lệnh ldr r0, [r1, r2, lsl r1 = (r1 + r2) << 2 r1 = r1 + (r2 << 2)
281 r1 = r1 + (r2 << r1 = (r1 + r2) << 2
#2]! thực hiện: r0 = [r1] r0 = [r1]
2) 2
Thay đổi thanh Thay đổi giá trị Thay đổi thanh ghi
Chỉ thị chỉ số sau (Post- Thay đổi giá trị
ghi chứa địa chỉ dữ liệu bộ nhớ chứa địa chỉ bộ
282 Indexed) trong lệnh dữ liệu bộ nhớ 2
bộ nhớ sau khi trước khi truy nhớ trước khi truy
ARM thực hiện việc: sau khi truy cập.
truy cập. cập. cập.
Lệnh ldr r0, [r1], #4 r1 = r1 + 4 r0 = [r1] r1 = r1 + 4 [r1]=r0
283 2
thực hiện: r0 = [r1] r1 = r1 + 4 [r1]=r0 r1 = r1 + 4
Lệnh r0 = [r1] r0 = [r1]
r1 = (r1 + r2) << 2 r1 = r1 + (r2 << 2)
284 ldr r0, [r1], r2, lsl #2 r1 = r1 + (r2 << r1 = (r1 + r2) << 2
r0 = [r1] r0 = [r1]
thực hiện: 2) 2
Sử dụng Post –
Khi ARM sử dụng PC Không thể sử dụng
Có thể sử dụng Có thể sử dụng Index và Pre –
285 làm thanh ghi cơ sở truy Post – Index và 2
Post – Index Pre – Index Index đồng thời
cập bộ nhớ thì: Pre - Index
trong một lệnh
Lấy giá trị trong
Lấy giá trị trong Ghi giá trị của r3 Ghi giá trị của r3
Lệnh ldr r3, [pc, #5] ô nhớ có địa chỉ
286 ô nhớ có địa chỉ vào ô nhớ có địa + 5 vào ô nhớ có 2
thực hiện: pc vào r3 sau đó
pc+5 vào r3 chỉ pc+5 địa chỉ pc
cộng với 5
Nạp hằng số
chứa trong bộ Nạp hằng số tức Ghi giá trị tức thời Ghi giá trị tức
Lệnh ldr Rd, =imm32
287 nhớ chương thời vào thanh vào bộ nhớ thời vào vùng 2
thực hiện:
trình vào thanh ghi chương trình nhớ dữ liệu
ghi
Sau các lệnh:
MOV R0, #42
MOV R1, #255
288 297 42 255 Không xác định 2
ADD R0, R0, R1
Thanh ghi R0 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
289 297 42 255 Không xác định 2
ADD R0, R0, R1
Thanh ghi R1 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
290 255 42 213 Không xác định 2
SUB R1, R1, R0
Thanh ghi R1 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
291 255 42 213 Không xác định 2
SUB R1, R1, R0
Thanh ghi R0 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
292 0 42 255 Không xác định 2
MVN R0, R1
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
293 TST R0, #10 10 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
294 Sau khi thực hiện lệnh: BEQ BNE BVS BLT 2
MOV R0, #42
TST R0, #10
Lệnh rẻ nhánh nào sẽ
thực hiện rẽ nhánh
chương trình:
Sau khi thực hiện lệnh:
MOV R0, #42
295 EOR R0, R0,R0 84 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
296 AND R0, R0,#0xFF 84 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
297 AND R0, R0,#0 84 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
298 ORR R0, R0,#0xFF 84 0XFF 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
299 ORR R0, R0,#0 84 0XFF 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Lưu giá trị thanh Lưu giá trị thanh Lấy giá trị trong
Lưu giá trị thanh
Lệnh STR R0, [R1] thực ghi R1 ô nhớ có ghi R0 ô nhớ có ô nhớ có địa chỉ
300 ghi R1 vào thanh 2
hiện: địa chỉ giữ trong địa chỉ giữ trong giữ trong R1 vào
ghi R0
R0 R1 thanh ghi R0
Sau khi thực hiện lệnh:
MOV R0, #42
301 CMP R0, #10 BEQ BGT BVS BLT 2
Lệnh rẻ nhánh nào sẽ
thực hiện rẽ nhánh
chương trình:
foo:
ADD R0, R1, R2 ;
BX LR ;
MAIN:
MOV R1, #5 ; Chuyển về sau Chuyển về nhãn Chuyển về nhãn Chuyển tới lệnh
302 MOV R2, #3 ; 2
lệnh “BL foo” MAIN foo “BL LR”
BL foo
Trong đoạn chương trình
trên sau khi thực hiện
lệnh “BX LR” điều khiển
chương trình sẽ:
303 .thumb #17 #15 #10 #5 2
foo:
ADD R1, R1, #5 ;
BX LR ;
.code 32
MAIN:
MOV R2,#10;
MOV R1, #12 ;
BLX foo ;
MOV R2,R1
Sau khi thực hiện đoạn
chương trình trên R2 có
giá trị bằng bao nhiêu?
304 Sau khi thực hiện lệnh:
MOV R0, #42
EOR R0, R0,#0xFF 84 24 42 00 2
Thanh ghi R0 có giá trị
là:
305 AREA LoopExample,
CODE, READONLY
EXPORT main
main
MOV R0, #1
MOV R1, #10
loop_start
ADD R0, R0, #1 R0=0; R1=10 R0=10; R1=0 R0=11; R1=0 R0=0; R1=11 3
SUBS R1, R1, #1
BNE loop_start
SWI 0x11
END
Sau khi thực hiện chương
trình hợp ngữ ARM trên
sẽ được:
306 ADR R4,a x=a+b+c x=a-b-c x=a+b-c x=-a+b-c 3
LDR R0,[R4]
ADR R4,b
LDR R1,[R4]
ADD R3,R0,R1
ADR R4,c
LDR R2,[R4]
SUB R3,R3,R2
ADR R4,x
STR R3,[R4]
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
307 ADR R4,b
LDR R0,[R4]
ADR R4,c
LDR R1,[R4]
ADD R2,R0,R1
ADR R4,a
LDR R0,[R4] y=a*b+c y=a+b*c y=(a+b)*c y=a*(b+c) 3
MUL R2,R2,R0
ADR R4,y
STR R2,[R4]
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
308 ADR R4,a z=(a<<2)|(b&15) z=(a&15)|(b<<2) z=(a|(b&15)<<2) z=(a|(b<<2)&15) 3
LDR R0,[R4]
MOV R0,R0,LSL#2
ADR R4,b
LDR R1,[R4]
AND R1,R1,#15
ORR R1,R0,R1
ADR R4,z
STR R1,[R4]
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
309 SUBS R1,R1,#0
ADDEQ R1, R1,#10
Các lệnh hợp ngữ trên if if … else switch …case while 3
tương đương với cấu trúc
lập trình nào trong C?
310 SUB R0,R0
START:
CMP R0,#15
ADDLT R1,R1,R1
ADDLT R0,R0,#1 if if … else switch …case for 3
BLT START
Đoạn chương trình hợp
ngữ ARM trên tương
đương với cấu trúc lập
trình nào trong C?
311 ADR R4,a if (a>b) if (a>b) if (a>b) if (a>b) 3
LDR R0,[R4] { { { {
MOV R0,R0,LSL#2 x= c-d; x=5; x=5; x=c-d
ADR R4,b } y=c+d; y=c+d; }
LDR R1,[R4] else; } }
CMP R0,R1 { else
BGE fblock x=5; x= c-d;
MOV R0,#5 y=c+d;
ADR R4,x }
STR R0,[R4]
ADR R4,c
LDR R0,[R4]
ADR R4,d
LDR R1,[R4]
ADD R0,R0,R1
ADR R4,y
STR R0,[R4]
B after
fblock:
ADR R4,c
LDR R0,[R4]
ADR R4,d
LDR R1,[R4]
SUB R0,R0,R1
ADR R4,x
STR R0,[R4]
after: …
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
ADR R4,n
LDR R0,[R4]
MLA R1,R0,R0,R0
Tính n*n*n chia Tính tổng n số tự
312 MOV R0,R1,LSR#1 Tính n*n*n Tính n*n chia 2 3
2 nhiên đầu tiên
Đoạn chương trình hợp
ngữ trên thực hiện công
việc:
313 ADR R4,n Tính n*n*n Tính n*n Tính tổng n số tự Tính n+n chia 2 3
LDR R0,[R4] nhiên đầu tiên
MOV R1,#0
Loop:
ADD R1,R1,R0
SUB R0,R0,#1
BNE Loop
Đoạn chương trình hợp
ngữ trên thực hiện công
việc:
314 MOV R0, #0
MOV R1, #5
MOV R2, #100
loop:
CMP R1, R2
BGT done
ADD R0, R0, R1
ADD R1, R1, #7 while do … while for switch …case 3
B loop
done:
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên tương đương
với cấu trúc lập trình nào
trong C?
315 .data while do … while for switch …case 3
N .word 10
Sum .word 0
.text
.global main
main:
LDR R0, =N
MOV R1, #0
loop:
ADD R1, R1, R0
SUB R0, R0, #1
CMP R0, #0
BNE loop
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên tương đương
với cấu trúc lập trình nào
trong C?
316 .data Sắp xếp mảng Sắp xếp mảng dữ Sắp xếp mảng dữ Sắp xếp mảng dữ 3
Array .word 5, 2, 9, 1, dữ liệu Array liệu Array theo liệu Array theo giá liệu Array theo
5, 6, 3 theo giá trị từ giá trị từ lớn đến trị từ nhỏ đến lớn giá trị từ lớn đến
Length .word 7 nhỏ đến lớn theo nhỏ theo thuật theo thuật toán nhỏ theo thuật
.text thuật toán quick toán quick sort bubble sort toán bubble sort
sort
.global main
main:
LDR R0, =Array
LDR R1, =Length
outer_loop:
MOV R2, #0
MOV R3, #0
inner_loop:
LDR R4, [R0,
R3]
LDR R5, [R0, R3,
#4]
CMP R4, R5
BLE no_swap
STR R5, [R0, R3]
STR R4, [R0, R3,
#4]
no_swap:
ADD R3, R3, #4
CMP R3, R1
BLT inner_loop
ADD R2, R2, #1
CMP R2, R1
BLT outer_loop
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên thực hiện công
việc:
317 .text
.global main
main:
LDR R0, =TCode
BXJ R0
B end
Đoạn mã Java Đoạn mã Java Đoạn lệnh ở
TCode: Đoạn mã java
được chuyển đổi được chuyển đổi trạng thái 3
@ đoạn code nguyên gốc
thành mã máy thành hợp ngữ THUMB
end:
MOV R7, #1
SWI 0
Trong chương trình
ARM ở trên, đoạn lệnh
sau nhãn “Tcode” là:
318 .data Chuyển đổi Chuyển đổi số Chuyển đổi số Chuyển đổi 3
Input .word 42 chuỗi số hệ 16 nguyên trong nguyên trong chuỗi số hệ 16
Result .word 0 trong “Input” “Input” thành “Input” thành trong “Input”
Buffer .space 10 thành chuỗi số chuỗi ký tự hệ 16 chuỗi ký tự hệ 16 thành chuỗi số
.text nguyên và lưu và lưu trữ trong và lưu trữ trong bộ nguyên và lưu
.global main trữ trong bộ nhớ bộ nhớ đệm nhớ đệm “Buffer”. trữ trong bộ nhớ
main: đệm “Buffer”. “Result”. Sau đó, Sau đó, chương đệm “Result”.
Sau đó, chương chương trình trình chuyển đổi Sau đó, chương
LDR R0, =Input
trình chuyển đổi chuyển đổi chuỗi chuỗi ký tự hệ 16 trình chuyển đổi
LDR R1, =Buffer chuỗi số nguyên ký tự hệ 16 trở trở lại thành số chuỗi số nguyên
BL trở lại thành lại thành số nguyên và lưu trở lại thành
DecimalToHex chuỗi ký tự hệ nguyên và lưu trong biến chuỗi ký tự hệ 16
LDR R1, =Buffer 16 và lưu trong trong biến “Result” và lưu trong biến
LDR R2, =Result biến “Result” “Buffer” “Buffer”
BL
HexToDecimal
B end
DecimalToHex:
MOV R2, #0
loop1:
MOV R3, R0, LSR
#4
MUL R4, R3, #16
SUB R0, R0, R4
CMP R3, #9
ADDLS R3, R3,
#'0' ADDHI R3,
R3, #('A' - 10)
STRB R3, [R1],
#1
ADD R2, R2, #1
CMP R0, #0
BNE loop1
STRB R2, [R1],
#1
MOV R7, #0
HexToDecimal:
MOV R3, #0
loop2:
LDRB R4, [R1],
#1
CMP R4, #0
SUB R4, R4, #'0'
ADD R3, R3, R4,
LSL #4
B loop2
done2:
STR R3, [R2]
MOV R7, #0
end:
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên thực hiện công
việc:
319 .data Tìm giá trị nhỏ Tìm giá trị nhỏ Tìm giá trị lớn Tìm giá trị nhỏ 3
Array .word 5, 2, 9, 1, nhất lưu vào M2 nhất lưu vào M1 nhất lưu vào M2 nhất lưu vào M1
5, 6, 3 giá trị lớn nhất giá trị lớn nhất
Length .word 7 lưu vào M1 lưu vào M2
M1 .word 0
M2 .word 0
.text
.global main
main:
LDR R0, =Array
LDR R1, =Length
LDR R2, =M1
LDR R3, =M2
MOV R4, #0
LDR R5, [R0,
R4]
STR R5, [R2]
STR R5, [R3]
loop:
ADD R4, R4, #4
CMP R4, R1
BGE done
LDR R5, [R0,
R4]
CMP R5, [R2]
BLE not_max
STR R5, [R2]
not_max:
CMP R5, [R3]
BGE loop
@
STR R5, [R3]
B loop
done:
MOV R7, #1
SWI 0
Chương trình hợp ngữ
trên thực hiện công việc:
320 section .text Cấp Clock cho Cấp Clock cho Cấp Clock cho Cấp Clock cho 3
global main
main:
ldr r0, =0x40023830
mov r1, #0x08
str r1, [r0]
ldr r0, =0x40020C00
mov r1, #0x1000
str r1, [r0]
loop:
ldr r0, =0x40020C18
mov r1, #0x1000 GPIOD; GPIOD;
GPIOD;
str r1, [r0] Khởi động GPIOD; Khởi động
Khởi động
GPIOD chân 12 Khởi động GPIOD GPIOD chân 12
GPIOD chân 12
ldr r2, =1000000 là Output; chân 12 là Output; là Output;
là Input;
delay_on: Bật tắt LED gắn Bật LED gắn trên Cấp mức logic 0
Nhận dữ liệu từ
subs r2, #1 trên GPIOD chân GPIOD chân 12 ra GPIOD chân
GPIOD chân 12
bne delay_on 12 12
ldr r0, =0x40020C1C
mov r1, #0x1000
str r1, [r0]
ldr r2, =1000000
delay_off:
subs r2, #1
bne delay_off
b loop
Chương trình hợp ngữ
trên thực hiện công việc:
GIẢNG VIÊN BIÊN SOẠN
(Ký, ghi rõ họ tên)

Phạm Thế Duy

You might also like