You are on page 1of 5

Giảng viên ra đề: (Ngày ra đề) Người phê duyệt: (Ngày duyệt đề)

(Chữ ký và Họ tên) (Chữ ký, Chức vụ và Họ tên)

Học kỳ/năm học 2 2022-2023


THI CUỐI KỲ Ngày thi 17/5/2023
Môn học Vi xử lý
TRƯỜNG ĐH BÁCH KHOA – ĐHQG-HCM Mã môn học EE2039
KHOA ĐIỆN-ĐIỆN TỬ
Thời lượng 90 phút Mã đề
Ghi - Sinh viên ĐƯỢC sử dụng tài liệu giấy. KHÔNG được sử dụng các phương tiện lưu trữ, thiết bị truyền thông.
chú: - Tất cả các lệnh MCU324P phải được viết bằng hợp ngữ (không sử dụng ngôn ngữ C).
- Đề thi gồm 04 trang và 01 trang Phụ lục hình. Sinh viên làm bài trực tiếp trên đề thi và nộp lại trang Phụ lục hình.

Lưu ý: Trong các câu hỏi liên quan đến tần số dao động, sử dụng Fosc = 8MHz, 1MC = 125ns.
Câu hỏi 1) (2.5đ) (L.O.2, L.O.5, L.O.6):
a. (0.5đ) Viết chương trình con DELAY_2MS có chức b. (0.5đ) Sử dụng chương trình con ở câu a, viết
năng tạo trễ 2ms sử dụng Timer2, chế độ NOR. Giả sử chương trình con XUNG tạo 1 xung vuông ở chân
đã khởi động Timer2 (nhưng chưa cho Timer2 chạy) ở PB3 như hình vẽ. Giả sử đã khai báo PB3 là ngõ ra ở
chương trình chính. chương trình chính.

PB3
2ms 8ms

c. (1.5đ) Cho sơ đồ kết nối giữa ATmega324P và các LED như Hình 1 (xem ở trang phụ lục hình). Ban đầu làm tối
hết dãy LED.
Viết chương trình sử dụng 2 Timer: Timer2 (tạo trễ) và Timer1 (tạo ngắt) hoạt động như sau:
- Chương trình chính: cấu hình port; khởi động các Timer1 và Timer2 hoạt động ở chế độ thích hợp; khởi tạo con
trỏ bảng dữ liệu; cho phép ngắt Timer1 và liên tục tạo chuỗi xung vuông ở ngõ ra PB3 với chu kỳ xung như ở câu b.
Các chương trình con chỉ cần trình bày nhãn đầu vào và lệnh kết thúc.
- Chương trình phục vụ ngắt tràn Timer1 TIMER1_OVF_ISR: thực hiện điều khiển các LED sáng dần từ 2
biên vào trong cho đến khi sáng hết dãy LED, sau đó tối hết dãy LED rồi quay vòng lại. Ngắt tràn Timer1 tạo thời
gian 0.5s để chuyển trạng thái các LED (xem minh họa ở Bảng 1 trang phụ lục hình). Gợi ý: sử dụng bảng tham
chiếu định nghĩa các trạng thái LED.

MSSV: ........................................ Họ và tên SV: .......................................................................................................... Trang 1/4


Câu hỏi 2) (2.5đ) (L.O.2, L.O.5, L.O.6):
Cho hệ thống sử dụng vi điều khiển MCU324P có sơ đồ thiết kế như Hình 2 (xem ở trang phụ lục hình).

a. (0.75đ) Cho chương trình con khởi động UART sau: Xác định các thông số hoạt động của bộ
INIT_UART: UART được khởi động ở câu a:
LDI R16,(1<<RXEN1) | (1<<TXEN1)  Tốc độ baud (trình bày công thức tính và
STS UCSR1B,R16 kết quả):
LDI R16,(1<<UCSZ11)|(1<<UCSZ10)|(1<<UPM11)
STS UCSR1C,R16
LDI R16,0x00
STS UBRR1H,R16
LDI R16,51  Kích thước dữ liệu (5/6/7/8/9 bit):
STS UBRR1L,R16  Parity bit (chẵn/lẻ/không dùng):
RET  Số stop bit (1/2 bit):

Giả sử việc thiết lập chế độ hoạt động của UART có sẵn như ở câu a. Trả lời các câu hỏi bên dưới về hoạt động của
các chương trình con RECEIVE và TRANS:
b. (0.75đ) Chương trình con RECEIVE:
RECEIVE: LDS R16,UCSR1B ;(8)
LDS R16,UCSR1A ;(1) SBR R16,(1<<TXEN1) ;(9)
SBRS R16,RXC1 ;(2) CBR R16,(1<<RXEN1) ;(10)
RJMP RECEIVE ;(3) STS UCSR1B,R16 ;(11)
LDS R18,UCSR1A ;(4) EXIT: RET
LDS R17,UDR1 ;(5)
SBRC R18,UPE1 ;(6)
RJMP EXIT ;(7)
Hãy cho biết chức năng của:
- Lệnh (1) đến (3):
- Lệnh (4) đến (7):
- Lệnh (8) đến (11):

c. (0.5đ) Chương trình con TRANS:


TRANS: LDS R16,UCSR1B
IN R20,PINB CBR R16,(1<<TXEN1)
ANDI R20,0X07 SBR R16,(1<<RXEN1)
OUT PORTA,R20 STS UCSR1B,R16
ADD R20,R17 RET
LOOP: LDS R16,UCSR1A
SBRS R16,UDRE1
RJMP LOOP
STS UDR1,R20
Giả sử sau khi thực hiện CTC RECEIVE ký tự thu được (trong R17) là 0x31, không có lỗi parity và tiếp tục
thực hiện CTC TRANS. Nếu các ngõ vào PB2:PB0=010, hãy xác định:
- Nội dung hiển thị trên LED 7 đoạn:
- Dữ liệu phát ra port nối tiếp:

d. (0.5đ) Từ CTC RECEIVE ở câu b, sửa lại thành chương trình ngắt thu USART1_RX_ISR sao cho không thay
đổi chức năng với số dòng lệnh tối thiểu. Giả sử việc cho phép ngắt và các vector ngắt đã được khai báo sẵn.

MSSV: ........................................ Họ và tên SV: .......................................................................................................... Trang 2/4


Câu hỏi 3) (2.5đ) (L.O.2, L.O.5, L.O.6):
Một cảm biến nhiệt độ được dùng để đo nhiệt độ từ 0oC đến 100oC. Cảm biến có dạng nguồn dòng cho dòng điện ngõ
ra liên hệ với nhiệt độ ngõ vào như sau: Io=T+1 (Io: mA, T: oC). Cảm biến được mắc vào mạch đo như Hình 3a (xem
ở trang phụ lục hình). Tín hiệu Vo sau đó được đọc bởi ADC của MCU ATmega324PA như Hình 3b (xem ở trang
phụ lục hình). Hoạt động của hệ thống như sau: MCU liên tục thực hiện đọc giá trị của cảm biến nhiệt độ đã cho sau
mỗi 50ms. Nếu nhiệt độ lớn hơn hoặc bằng 80oC thì LED2 sáng, LED1 tắt. Ngược lại, LED2 tắt, LED1 sáng. Sử
dụng ADC ngõ vào đơn (SE), hiệu chỉnh phải, Vref=2.56V (nguồn trong), fCKADC=125KHz.

a. (0.5đ) Viết phương trình ngõ ra điện áp Vo và cho biết tầm giá trị của Vo tương ứng với tầm đo nhiệt độ ở trên.

b. (0.5đ) Viết công thức tính giá trị ADC c. (0.5đ) Viết chương trình con INIT_ADC thực hiện khởi động
ngõ ra. Từ đó, tính giá trị ngõ ra ADC khi ADC ở mode tự kích (Auto Trigger) sử dụng nguồn tạo tín hiệu
T=80oC. kích khởi là cờ báo kết quả so sánh Timer1 B OCF1B, ngõ vào đơn
(xem Hình 3b), hiệu chỉnh phải, Vref=2.56V (nguồn trong),
fCKADC=125KHz.

d. (1.0đ) Viết một chương trình hoàn chỉnh thực hiện công việc như mô tả ở trên, sử dụng chương trình con (CTC)
INIT_ADC (ở câu c) và hai CTC INIT_TIMER, COMPARE_16BIT cho sẵn như mô tả bên dưới.
 CTC INIT_TIMER có chức năng khởi động và chạy Timer1 mode CTC4 so sánh kênh B để tạo thời gian đếm
50ms cho bật cờ OCF1B.
 CTC COMPARE_16BIT thực hiện so sánh hai số 16 bit với số thứ nhất chứa trong R20:R19 (R20 chứa byte
cao), số thứ hai chứa trong R22:R21 (R22 chứa byte cao).
o Nếu R20:R19 < R22:R21 thì PC1 = 0 và PC2 = 1.
o Nếu R20:R19 ≥ R22:R21 thì PC1 = 1 và PC2 = 0.
Lưu ý: Ngoài việc sử dụng các CTC trên, SV cần phải cấu hình port, khởi tạo các thông số khác phù hợp trong
chương trình chính. Khi viết các CTC chỉ cần ghi nhãn đầu vào và lệnh kết thúc.

Câu hỏi 4) (2.5đ) (L.O.2, L.O.5, L.O.6):


Cho mạch điện kết nối như Hình 4 (xem ở trang phụ lục hình).
a. (0.5đ) Viết một chương trình con (CTC) tên DISP_LED hiển thị giá trị cất trong R17 ra LED 7 đoạn Anode
chung, R17 chứa giá trị từ 0 – 9. Khai báo bảng tra mã 7 đoạn Anode chung các số 0 – 9 có tên TAB_LED
trong Flash ROM.

MSSV: ........................................ Họ và tên SV: .......................................................................................................... Trang 3/4


b. (0.5đ) Viết ISR ngắt Timer1 COMPA với tên c. (0.5đ) Viết ISR ngắt INT1 với tên INT1_ISR thực
TIMER1_COMPA_ISR thực hiện đếm lên giá hiện cho phép ngắt Timer1 COMPA và xóa
trị cất trong R17 từ 0 đến 9 và lặp vòng lại từ 0. R17=0. Viết ISR ngắt INT0 với tên INT0_ISR
Mỗi lần chương trình ngắt được thực thi, nội thực hiện cấm ngắt Timer1 COMPA. Giả sử đã
dung R17 chỉ tăng 1 đơn vị. Giả sử đã khai báo khai báo các điều kiện ngắt thích hợp.
mode Timer1 và điều kiện ngắt thích hợp.

d. (1.0đ) Viết một chương trình hoàn chỉnh thực hiện các công việc sau:
- Khi nhấn SW1 tạo ngắt INT1 tác động cạnh xuống cho phép ngắt Timer1 COMPA và xóa R17=0.
- Khi nhấn SW0 tạo ngắt INT0 tác động cạnh xuống cấm ngắt Timer1 COMPA.
- Ngắt Timer1 COMPA thực hiện cứ sau 0.1s đếm lên R17 từ 0 đến 9 và lặp vòng lại từ 0.
- Chương trình chính khởi động và khai báo Timer1 mode thích hợp, cho phép các ngắt tương ứng và liên tục gọi
CTC DISP_LED như câu a.
Xem CTC và các ISR có sẵn (đã trình bày ở các câu a, b, c), chỉ cần trình bày nhãn đầu vào và lệnh kết thúc.

MSSV: ........................................ Họ và tên SV: .......................................................................................................... Trang 4/4


Lưu ý: Sinh viên xem hình ở trang Phụ lục hình.
Phụ lục hình
MSSV: ........................................ Họ và tên SV: ..........................................................................................................................

Lưu ý: SV ghi đầy đủ MSSV, họ và tên và nộp lại trang Phụ lục hình này kèm với đề thi.

Câu hỏi 1:

Hình 1 Bảng 1
8 x 330
PC0
Các trạng thái LED (LED sáng , LED tối ):
t1=0.5s t 2 =1.0s t 3 =1.5s t 4 =2.0s t 5 =2.5s t 6 =3.0s …
PB3 PC1

ATmega324P

PC2 …
PC3 …
PC4 …

PC5

PC6 …
PC7 …

Câu hỏi 2:
Hình 2
a

f b

e c

PD2 RXD1
PD3 TXD1

IC 7447: có chức năng giải mã từ BCD sang LED 7 đoạn anode chung. Ví dụ: ngõ vào DCBA = 0000,
ngõ ra QA…QG = 0000001  LED 7 đoạn hiển thị số 0.
Câu hỏi 3:
Hình 3a Hình 3b

LED1

ADC2/PA2
LED2

Câu hỏi 4:
Hình 4

You might also like