You are on page 1of 5

Tên: Phạm văn trường giang

Mssv: 18200090
Đề bài 1:
Viết chương trình assembly thực hiện đồng hồ số (hoạt động như một đồng hồ bình thường đếm
lên sau mỗi giây, khi đủ 60 giây thì phút tăng lên 1, và đủ 60 phút thì giờ tăng lên 1, …) và KEY[3] để
thiết lập thời gian ban đầu bằng cách đọc giá trị từ SW để cấu hình giờ, phút, giây và kết quả ghi ra
led 7 đoạn từ HEX5 đến HEX0 dưới con số thập phân.
- Giây được đọc từ SW[5:0] ghi ra HEX1-HEX0.
- Phút được đọc từ SW[11:6] ghi ra HEX3-HEX2.
- Giờ được đọc từ SW[16:12] ghi ra HEX5-HEX4.
Lưu ý:
- Sử dụng interrupt cho key và interval timer.
- Sử dụng hàm con để giải mã ra led 7 đoạn.

Ý tưởng: Sử dụng chương trình đã học trên lớp để viết thêm hàm con giải mã led 7 đoạn,
đọc giá trị key[3] để thiết lập giờ, chỉnh sửa lại timer cho đếm đúng 1s thì ngắt.
- Chỉnh sửa interval timer period cho đủ 1s

- Thêm bảng mã led 7 đoạn, các nhãn…

- Viết hàm con HEX_DISPLAY để hiển thị ra led 7 đoạn


- Khai báo tên hàm và lưu các thanh ghi sẽ bị thay đổi dữ liệu
- Khởi tạo các thanh ghi để tính toán

- Thanh ghi r2 chứa giá trị của giây, nhãn GIAY tách giá trị hàng dvi và hàng chục
thành r2 và r5 để hiển thị tại led 0 và led 1 trong nhãn HEX_GIAY

- Thực hiện cách tương tự với phút và giờ: r3 chứa giá trị phút, r4 chứa giá trị giờ
- Kết thúc hàm con, trả lại các thanh ghi giá trị ban đầu
- Thêm đoạn code trong INTERVAL_TIMER_ISR để mỗi 1 giây thi triển 1 lần
- Giá trị của nút nhấn key[3] viết trong hàm ngắt được lưu vào biến PATTEN

- Load giá trị của Switch lên thanh ghi r6

- Lưu 6-bit thấp của thanh ghi r6 vào thanh ghi r2(giây), 6-bit tiếp theo vào thanh
ghi r3(phút), 6-bit còn lại vào thanh ghi r4(giờ)

- Tăng giây lên 1 mỗi khi xảy ra ngắt timer và kiểm tra giây đủ 60 thì reset giây,
tăng phút lên 1, nếu phút đủ 60 thì reset phút tăng giờ lên 1

- Giây đủ 60, reset giây = 0, tăng phút thêm 1

- Phút đủ 60, reset phút = 0, tăng giờ thêm 1

- Khi giờ đếm đến 13, reset tất cả giây, phút, giờ
- Sau khi xử lý xong các giá trị giây, phút, giờ thì ghép tất cả các giá trị này vào
thanh ghi r4 rồi gán cho r6 sau đó gọi hàm HEX_DISPLAY để hiển thị và thoát
chương trình ngắt của timmer

You might also like