Cảm ơn bạn Tranninh đã có lời. Rất mong được mọi người góp ý. Thanks
Thông báo
Collapse
No announcement yet.
Lập trình ASM cho 8051
Collapse
X
-
hiện tại thì mình có thể cho chạy được 256 chử trên led ma trận,còn cao hơn thì bác nào biết chỉ giùm nha.
bạn nên lưu những chử cần chạy vào một ô nhớ nào đó
vd: 500h chẳng hạn (vd 00h,c8h,0f0h,0c0h,) và lần lượt như thế cho đến khoảng 255 ký tự.
sau đó dùng thanh ghi con tro dptr để lấy dử liệu, và chuyển wa thanh ghi a, còn những việc quét hay hiển thị là ở bạn
chúc thành công
Comment
-
Cho mình hỏi là trước lệnh RLC A có cần CLR A khôngNguyên văn bởi ngohaibac Xem bài viếtChi tiết về không gian nhớ của 8051 các bạn có thể xem ở đây:
http://dientuvietnam.net/forums/show...t=1163&page=24
Các bài viết của mình dưới đây có thể chưa tối ưu, mong sự góp ý của các bạn vê thuật giải cũng như cách viết để cho mình thi tốt trong kì thi tới
.
1/Bài 1: Cộng hai số 5 byte, yêu cầu và cách làm mình đều viết trong chương trình:
Mình xin giải thích cách làm:Code:;======================================================== ; Ten chuong trinh : Cong 2 so 5 bytes ; Nguoi thuc hien : Ngo Hai Bac ; Ngay thuc hien : 29/12/06 ; Phien ban : 1.0 ; Mo ta phan cung : Dung AT89S52 - thach anh 11.0592 MHZ ;---------------------------------------------------------------- ; Ngay hoan thanh : 29/12/06 ; Ngay kiem tra : ; Nguoi kiem tra : Ngo Hai Bac ;---------------------------------------------------------------- ; Chu thich : Chuong trinh don gian dung cho thi cu ; Hai so hang deu trong bo nho, ket qua cat vao so hang dau ; Chu y: MSB duoc cat vao o co dia chi nho ; So I: 49 50 51 52 53 54 ; So II: 60 61 62 63 64 ; O nho 49 dung luu so nho tu phep cong truoc neu co tran ;======================================================== ORG 00h ; Reset NOP LJMP Start ORG 003h ; Int EX0 NOP RETI ORG 0bh ; Int Timer0 NOP RETI ORG 13h ; Int EX1 NOP RETI ORG 1bh ; Int Timer1 NOP RETI ORG 23h ; Int Communication NOP RETI ;==================================================================== stack equ 2fh ;==================================================================== ; Main Program ;==================================================================== ORG 4bh Start: PUSH 00h PUSH 01h PUSH 02h ; Cat R0, R1, R2 vao Stack MOV R0, #54h MOV R1, #64h MOV R2, #5 CLR C ;Xua co nho C Loop: CLR A ; Xoa thanh ghi Accumulator MOV A, @R0 ; A = du lieu co dia chi = R0 ADDC A, @R1 ; A = A + @R1 + C MOV @R0,A ; Cat ket qua vao byte so thu nhat DEC R0 ; R0 = R0 - 1 DEC R1 ; R1 = R1 - 1 DJNZ R2, Loop ; Giam R2 va kiem tra neu R2 #0 thi nhay ve Loop, ; = 0 thi chay tiep RLC A ; Quay trai A voi bit C => A = C MOV @R0,A ; O nho 49h co gia tri = C POP 02h POP 01h POP 00h END.
2 số 5 byte là:
(mõi số là số 1 byte)Code:b5 b4 b3 b2 b1 b0 a4 a3 a2 a1 a0
với mỗi cặp tương ứng (bi, ai) thì chúng ta cộng như sau:
tổng = ai + bi + nhớ từ phép cộng của hàng trước;
nếu tổng >0xFF thì nhớ sang hàng tiếp theo và bi = tổng - 0xFF
nếu tổng <0xFF thì gán bi = tổng
Điều này thực hiện dễ dàng bằng lệnh ADDC, khi có nhớ từ bit 7 thì sẽ set cờ nhớ C, không nhớ thì nó sẽ tự xóa cờ nhớ này. Do đó C như là số nhớ từ phép tính trước.Vì nó tự động xóa hoặc set nên không cần xóa Nên chỉ cần dùng như sau:
Như vậy cần thực hiện 5 vòng lặp. Có nhiều cách lặp, mình sử dụng kiểu Do.. While; (trong C);Code:; R0 là địa chỉ của bi ; R1 là địa chỉ của ai MOV A, @R0 ADDC A, @R1 MOV @R0, A
Tướng ứng trong ASM:Code:index = m; // m = const Do{ // Làm việc gì đó index -- ; } while (index>0)
DJNZ: Decrease and Jump if Not EqualCode:MOV R2,#5 ; gán R2 = 5 LOOP: ; do something DJNZ R2,LOOP ; Giảm R2, nếu chưa = 0 thì nhảy đến Loop
Chi tiết hơn về các lệnh anh em xem trong tệp lệnh nhé. Rảnh thì mình sẽ viết luôn cả code C cho anh em so sánh nhé :d.
Chúc anh em thành công.
Comment
Bài viết mới nhất
Collapse
-
bởi ittcHi các bác, sau khi được vài lời khuyên thì em có vào lướt web để xem vài mẫu máy, thì ở phần thông số kỹ thuật của máy, thấy họ để vài thông số sau thì em không rành lắm, nhờ các bác giải thích hộ em được không, cụ thể như hình...
-
Channel: Điện tử gia dụng
Hôm qua, 18:34 -
-
bởi Nexus 6PCác bác cho e xin mạch chớp xinhan 4 bóng hazard kiểu luân phiên với
giống clip này mà kiểu nháy ở giây thứ 2, e cảm ơn ạCode:https://www.tiktok.com/@caitiemdocar/video/7586617548284628242
-
Channel: Điện tử công suất
14-03-2026, 17:26 -
-
bởi ittcNhờ các bác chỉ bảo, tư vấn giúp em nên mua loại máy khoan cầm tay nào dùng trong nhu cầu gia đình với ạ, em vào website của 1 số nới bán uy tín thì mục Máy khoan họ để nhiều loại quá, em chả biết là nên mua loại nào cho đúng, hoa cả mắt...
-
Channel: Điện tử gia dụng
13-03-2026, 17:59 -
-
bởi chinhnguyen9Sóng vuông trên cực D của 1 nhánh mạch Push pull (board mạch UPS Santak 1000)
Kết quả khi chạy không có hồi tiếp âm ghim điện áp ra thì khi không tải điện áp có thể >400VDC do sóng hài tạo ra.
Sóng vuông giữa 2 cực D của mạch Push pull trong module...-
Channel: Hướng dẫn sử dụng diễn đàn
10-03-2026, 02:54 -
-
bởi ittcDo đang vội nên tính làm dần, nhờ các bác tư vấn giúp em về việc lắp camera quan sát ở nhà với, nhà em thì cũng kiểu nhà phố, nhà mặt tiền đường ngõ hẻm thôi.
- Thứ nhất là em tính sẽ lắp đặt loại camera đi dây và có đầu...-
Channel: Tâm tình dân kỹ thuật
09-03-2026, 06:18 -
-
bởi s2pk98Ai có sơ đồ nguồn tcl l49p3- cf cho em với ,cháy mấy con r mà không biết là mấy...
-
Channel: Điện tử gia dụng
08-03-2026, 21:38 -

Comment