Thông báo

Collapse
No announcement yet.

Lập trình ASM cho 8051

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #46
    Cảm ơn bạn Tranninh đã có lời. Rất mong được mọi người góp ý. Thanks

    Comment


    • #47
      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


      • #48
        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


        • #49
          Hic... Ít người quan tâm vậy sao ?

          Comment


          • #50
            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


            • #51
              Có ai biết Pinacle ko ?. Shared cho T ít tài liệu được không ?

              Comment


              • #52
                có cách nào ghi tạm 2-3 thanh ghi vào ROM nội của 8051 ko nhỉ các bác ? Để phòng hờ cúp điện ấy mà ! Khi có điện thì có thể đọc ROM nội ra
                Như thế để khỏi giao tiếp ROM ngoài , liệu có khả thi không nhỉ các bác ?

                Comment


                • #53
                  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


                  • #54
                    Hệ thống gồm 3 vi điều khiển 89S52 (1 master và 2 slave).Mình gõ nhầm.

                    Comment


                    • #55
                      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


                      • #56
                        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


                        • #57
                          Nguyên văn bởi ngohaibac Xem bài viết
                          Chi 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:

                          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.
                          Mình xin giải thích cách làm:
                          2 số 5 byte là:
                          Code:
                          b5 b4 b3 b2 b1 b0
                              a4 a3 a2 a1 a0
                          (mõi số là số 1 byte)

                          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:
                          Code:
                          ; R0 là địa chỉ của bi
                          ; R1 là địa chỉ của ai
                          MOV   A, @R0
                          ADDC  A, @R1
                          MOV   @R0, A
                          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:
                          index = m; // m = const
                          Do{
                          // Làm việc gì đó
                          index -- ;
                          } while (index>0)
                          Tướng ứng trong ASM:
                          Code:
                          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
                          DJNZ: Decrease and Jump if Not Equal

                          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.
                          Cho mình hỏi là trước lệnh RLC A có cần CLR A không

                          Comment


                          • #58
                            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


                            • #59
                              Khi dùng chương trình Reads51 để chuyển từ file .asm sang .hex. Tới dòng lệnh MOV A, #"A" (hoặc bất kỳ ký tự nào khác là ) trình dịch có báo lỗi Undecodable line, Syntax error là lỗi gì vậy? Làm thế nào để sửa nó?
                              |

                              Comment


                              • #60
                                Bác ngohaibac ơi xem lại link download đi die rùi.

                                Comment

                                Về tác giả

                                Collapse

                                ngohaibac Tìm hiểu thêm về ngohaibac

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X