Nguyên văn bởi jimhawkins
Xem bài viết
Thông báo
Collapse
No announcement yet.
Các bạn giúp mình giải đáp một số vấn đề
Collapse
X
-
thanh ghi đếm tới 20 nó làm công việc đếm số lần tràn timer đúng ko. Timer tràn nó mới đếm, khi timer tràn thì xảy ra ngắt. Vậy theo trình tự, timer tràn, nhảy vào ngắt, đếm coi tràn bao nhiêu, tràn đủ thì reset lại bộ đếm, chưa đủ thì nhảy ra chờ tràn tiếp.
-
Bạn giúp mình giải thích chi tiết chỗ nó hoạt động thông qua từng đoạn code được không mình còn hơi mơ hồ về cái đoạn nó đếm đủ 1s thì xảy ra ngắt chưa ah,còn mấy cái hiển thị,điều chỉnh để tăng R0 thì mình hỉu rồi
START:
ACALL KHOI_TAO ;KHOI TAO CAC THANH GHI
MOV TH0,#03CH
MOV TL0,#0B0H
SETB TR0
SETB TF0
MOV R0,#0
MOV 30H,#0
LJMP $
RET
;-------------------------------------
NGAT_T0:
CLR TR0
MOV TH0,#03CH
MOV TL0,#0B0H ; dat lai thanh ghi timer
SETB TR0 ; bat TR0 cho timer hoat dong
ACALL HT_R0 ; goi ham hien thi
MOV R1,30H
CJNE R1,#20,TANG_30H ;say 20 lan thi tang gia tri cua o nho 30H len 1
MOV 30H,#0 ;neu toi 20 thi ve 0 tro lai
ACALL DC_R0 ; sau 20 lan goi timer la dc 1 giay, tien hanh dieu chinh R0 len 1
LJMP EXIT
TANG_30H:
INC 30H
EXIT:
RETI
Comment
-
Nói ngắn gọn là đoạn code trên hoạt động như sau:Nguyên văn bởi jimhawkins Xem bài viếtBạn giúp mình giải thích chi tiết chỗ nó hoạt động thông qua từng đoạn code được không mình còn hơi mơ hồ về cái đoạn nó đếm đủ 1s thì xảy ra ngắt chưa ah,còn mấy cái hiển thị,điều chỉnh để tăng R0 thì mình hỉu rồi
- Ban đầu là khởi tạo giá trị nạp cho các thanh ghi của bộ định thời 0, sau đó buộc ngắt đầu tiên xảy ra bằng lệnh SETB TF0. Khi có ngắt xảy ra, trình phục vụ ngắt được phục vụ. Nhiệm vụ của trình phục vụ ngắt là nạp lại giá trị định thời cho timer 0, khởi động lại bộ định thời, gọi hàm hiển thị. Đồng thời trình phục vụ ngắt thực hiện việc kiểm tra thanh ghi 30H (đoán không nhầm thì thanh ghi 30H ở đây dùng để đếm số lần tràn của timer), 30H chưa bằng 20 thì tăng lên 1 đơn vị rồi thoát khỏi ngắt, nếu bằng 20 thì xóa 30H về 0 (lúc này có nghĩa là timer đã tràn 20 lần và 1s đã trôi qua) và gọi chương trình tăng R0 lên 1 đơn vị (để đếm số giây đã trôi qua).
- Chương trình chính sau khi khởi động các giá trị nạp vào thanh ghi, buộc ngắt lần đầu rồi xóa các thanh ghi R0, 30H thì không làm gì cả. Công việc hoàn toàn là do trình phục vụ ngắt thực hiện.
P/S: Cần phải cho phép ngắt khi trước khi buộc ngắt lần đầu.
Comment
Bài viết mới nhất
Collapse
-
bởi FotiniChào mọi người.
Cấu trúc khung giàn của tôi sử dụng một động cơ servo tích hợp trên mỗi trục (https://www.oyostepper.es/category-8...integrado.html), với một dây nối đất chung.
Việc kích hoạt từng trục riêng lẻ hoạt động tốt, nhưng...-
Channel: Điện tử dành cho người mới bắt đầu
18-06-2026, 14:03 -
-
Trả lời cho Cấu hình chiến game "quốc dân" cho nền tảng AM5: Lựa chọn tối ưu ngân sách với Ryzen 5 7500Fbởi kumarbrMình đồng ý với hướng build AM5 bằng 7500F, nhưng nếu có thể cố thêm ngân sách thì nên lên RX 7600 ngay từ đầu. 4GB VRAM của RX 6500 XT bắt đầu khá chật với nhiều game mới, còn RX 7600 sẽ dùng thoải mái hơn trong vài năm tới.
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 15:49 -
-
bởi theidiotcatTrong thời buổi vật giá leo thang, việc sắm một bộ máy tính chơi game đáp ứng đủ tiêu chí "ngon, bổ, rẻ" là ưu tiên hàng đầu của nhiều bạn trẻ. Lúc này, combo sử dụng vi xử lý AMD Ryzen 5 7500F kết hợp cùng card màn hình Radeon...
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 10:16 -
-
bởi theidiotcatAMD Ryzen 9 9950X3D không chỉ là một bộ vi xử lý đơn thuần; nó là lời khẳng định về sức mạnh của kiến trúc Zen 5 kết hợp cùng công nghệ 3D V-Cache đột phá. Trong bối cảnh thị trường linh kiện PC cạnh tranh khốc liệt, đây được xem...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:21 -
-
bởi theidiotcatBộ đôi Ryzen 9 9950X3D2 và Radeon RX 9070 XT 16GB là sự kết hợp phần cứng cao cấp nhất của AMD hiện nay. Đây không chỉ là một dàn máy tính để giải trí thông thường, mà là công cụ làm việc mạnh mẽ dành cho những ai có nhu cầu xử lý cường...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:09 -

Comment