Cảm ơn bạn Tranninh đã có lời. Rất mong được mọi người góp ý. Thanks
Lập trình ASM cho 8051
Collapse
X
-
-
Các Bạn oi! Có thể cho Mình biết chương trình treo là vì những lí do nào không ?. Mình đã thử tách chương trình số đếm từ 000-999 thì mạch vân đếm đựơc. Nhưng khi đưa vào chương trình trên để đếm sản phẩm thì chương trình bị treo giống như ở trên đã nói.
Comment
-
T đã thử đem chương trình qua Pinacle để Simulate nhưng báo là bị lỗi Nop..... gì đó. Có thể cho T biết lỗi Nop là lỗi gì không. Có người giới thiệu T xài Pinacle nhưng vì là tự mò nên chưa gì đã bị lỗi trên.
Có ai biết sử dụng hay tài liệu về Pinacle thì Shared cho Mình nha. Thanks.
Comment
-
-
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
-
-
Mình đang nghiên cứu về UART mode 3 của 8051 (truyền thông đa xử lý). Hệ thống gồm 3 vi điều khiển 89D52 (1 master và 2 slave). Các bạn nào có biết xin giúp mình với.
Comment
-
-
Xin chào các bạn, máy mình mới cài lại sơ ý xoá mất chương trình batronix pro studio 5.28 (mình phân vùng partition lại, giờ không phục hồi được) dùng lập trình cho chi điều khiển. bạn nào có chương trình này chia sẻ chi mình với. Cám ơn nha.
Comment
-
bạn ơi hãy đưa ra những bài tập cụ thể hơn sau đó ta đi sau vào nó nhé ! lúc đó mình nghĩ sẽ có hứng hơn đó
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
-
chào mọi người , em là thành viên mới tập tọe nghiên cứu con IC 8051 . em muốn hỏi mọi người về cách hiện chữ trên LCD sử dụng IC này
Đề bài cụ thể của nó đây ạ : T.kế hệ thốg hiển thị sử dụng màn hình LCD character 40*4 hiển thị dòg chữ "Hello world" với IC 8051.
thank mọi người
Comment
Bài viết mới nhất
Collapse
-
-
bởi bqvietĐám UPS cửa cuốn đời cổ vẫn chạy 1 biến áp sắt từ vừa để hạ áp điện lưới nạp bình điện, vừa để kích áp bình điện thành sóng vuông đầu ra đấy thôi. Kiểu tiết kiệm này đã có từ mấy chục năm nay. Sơ đồ đại loại như link
https://www.homemade-circuits.com/si...rchargerchang/...-
Channel: Nguồn!
06-09-2026, 16:49 -
-
bởi dinhthuong92Không biết nó thiết kế kiểu gì mà dùng chung được cuộn cảm L cho cả mạch Buck hạ áp để sạc pin và Boost nâng áp cho Led. Muốn vẽ mạch để xem mà nhiều linh kiện quá, e không kham nổi!
Bác nào có sơ đồ xin up lên cho mọi người tham khảo nhé!...-
Channel: Nguồn!
04-09-2026, 11:09 -
-
-
Trả lời cho TCL - Tập hợp các vấn đề về màn hình màu TCLbởi dtvankhoeBác nào có file rom này cho em xin em cảm ơn ạ TCL L43S6500 – TPD.RT2841.PB772
-
Channel: Điện tử truyền hình
30-08-2026, 21:08 -

Comment