Thông báo

Collapse
No announcement yet.

cho em hỏi về delay trong asm

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

  • cho em hỏi về delay trong asm

    "delay:
    MOV r6,#255
    de:
    mov r7,#255
    djnz r7,$
    djnz r6,de
    ret"
    XIN MẤY BÁC GIẢI THÍCH DÙM EM . EM VẪN CÒN MÙ MỜ CÁI CHỖ $ LẮM. THANKS CÁC BÁC

  • #2
    $ tức là tại chỗ đó, khi yêu cầu nhảy tại dấu $ tức là nhảy tại chỗ đó, khi đó lệnh djnz r7,$ sẽ nhảy tại lệnh đó cho đến khi thanh ghi r7=0

    Comment


    • #3
      cảm ơn bác nhiều + thanks

      Comment


      • #4
        Delay chuẩn 1ms với thạch anh 24Mhz

        Code delay :
        Code:
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ;#######################################################################################
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        delay_ms:	
        	push	7
        	push	6
        	push	5
        	mov	r5,num_ms	;thoi gian delay ms
        	mov 	r6,#4
        	mov 	r7,#249
        	djnz 	r7,$		;2*249=498
               	djnz 	r6,$-4		;(498+2)*4=2000	;
        	djnz	r5,$-8		;(2000+2)*num_ms= clk_delay
        	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
        	pop	6		;	=clk_delay*1/2000000 ~= num_ms/1000 (s)
        	pop	7		;				=num_ms (ms)	
                ret
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ;#######################################################################################
        ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ví dụ: cần delay 10ms thì gọi hàm như sau
        Code:
        num_ms	equ	30h	;define num_ms la o nho 30h
        	mov	num_ms,#10
        	call	delay_ms

        Email:
        Tel: 0983.497.310

        Comment


        • #5
          Nguyên văn bởi tienhuypro Xem bài viết
          Code delay :
          Code:
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;#######################################################################################
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          delay_ms:	
          	push	7
          	push	6
          	push	5
          	mov	r5,num_ms	;thoi gian delay ms
          	mov 	r6,#4
          	mov 	r7,#249
          	djnz 	r7,$		;2*249=498
                 	djnz 	r6,$-4		;(498+2)*4=2000	;
          	djnz	r5,$-8		;(2000+2)*num_ms= clk_delay
          	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(24000000/12)
          	pop	6		;	=clk_delay*1/2000000 ~= num_ms/1000 (s)
          	pop	7		;				=num_ms (ms)	
                  ret
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;#######################################################################################
          ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ví dụ: cần delay 10ms thì gọi hàm như sau
          Code:
          num_ms	equ	30h	;define num_ms la o nho 30h
          	mov	num_ms,#10
          	call	delay_ms
          Bác cho em hỏi em dùng thạch anh 12MHz mà muốn delay 10ms thì em phải sửa thế nào?
          Với lại mấy cái lệnh PUSH và POP của bác dùng để làm gì thế?

          Comment


          • #6
            Nguyên văn bởi Ck33spkt Xem bài viết
            Bác cho em hỏi em dùng thạch anh 12MHz mà muốn delay 10ms thì em phải sửa thế nào?
            Với lại mấy cái lệnh PUSH và POP của bác dùng để làm gì thế?
            - Nếu muốn delay 10ms với thạch anh 12Mhz:
            Bạn tinh ý thì có thể suy luận như sau: Thạch anh 12Mhz =1/2 thạch anh 24Mhz ---> delay 10ms thì nhập num_ms=5 hoặc sửa code lại như sau
            Code:
            ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            ;#######################################################################################
            ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            delay_ms:	
            	push	7
            	push	6
            	push	5
            	mov	r5,num_ms	;thoi gian delay ms
            	mov 	r6,#2                    ;  <--- sửa 4-->2
            	mov 	r7,#249
            	djnz 	r7,$		;2*249=498
                   	djnz 	r6,$-4		;(498+2)*2=1000	;
            	djnz	r5,$-8		;(1000+2)*num_ms= clk_delay
            	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(12000000/12)
            	pop	6		;	=clk_delay*1/1000000 ~= num_ms/1000 (s)
            	pop	7		;				=num_ms (ms)	
                    ret
            ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            ;#######################################################################################
            ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            - Còn lệnh Push và Pop là cất và lấy giá trị thanh ghi r7,6,5. Vì đây là chương trình con nên viết thêm mấy câu lệnh này để tránh làm ảnh hưởng đến giá trị thanh ghi R7,6,5 ở các chương trình con/chính khác.

            Email:
            Tel: 0983.497.310

            Comment


            • #7
              Nguyên văn bởi tienhuypro Xem bài viết
              - Nếu muốn delay 10ms với thạch anh 12Mhz:
              Bạn tinh ý thì có thể suy luận như sau: Thạch anh 12Mhz =1/2 thạch anh 24Mhz ---> delay 10ms thì nhập num_ms=5 hoặc sửa code lại như sau
              Code:
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              ;#######################################################################################
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              delay_ms:	
              	push	7
              	push	6
              	push	5
              	mov	r5,num_ms	;thoi gian delay ms
              	mov 	r6,#2                    ;  <--- sửa 4-->2
              	mov 	r7,#249
              	djnz 	r7,$		;2*249=498
                     	djnz 	r6,$-4		;(498+2)*2=1000	;
              	djnz	r5,$-8		;(1000+2)*num_ms= clk_delay
              	pop	5		;T_dl= clk_delay*chu_ki_may=clk_delay*1/(12000000/12)
              	pop	6		;	=clk_delay*1/1000000 ~= num_ms/1000 (s)
              	pop	7		;				=num_ms (ms)	
                      ret
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              ;#######################################################################################
              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              - Còn lệnh Push và Pop là cất và lấy giá trị thanh ghi r7,6,5. Vì đây là chương trình con nên viết thêm mấy câu lệnh này để tránh làm ảnh hưởng đến giá trị thanh ghi R7,6,5 ở các chương trình con/chính khác.
              Bác giúp nốt em chỗ này với: chỗ cái dấu "$-4" và "$-8" thì nó nhảy đến đâu đấy ạ ?

              Comment


              • #8
                Nguyên văn bởi Ck33spkt Xem bài viết
                Bác giúp nốt em chỗ này với: chỗ cái dấu "$-4" và "$-8" thì nó nhảy đến đâu đấy ạ ?
                - $-4 là nhảy đến dòng
                mov r7,#249
                Lệnh $-4 là nhảy lùi so với con trỏ chương trình PC hiện tại 4Byte, mà lệnh
                mov r7,#249
                djnz r7,$
                tốn 4Byte ----> kết quả
                - $-8 là nhảy đến dòng
                mov r6,#2
                Lệnh $-8 là nhảy lùi so với con trỏ chương trình PC hiện tại 8Byte, mà lệnh
                mov r6,#2 ; <--- sửa 4-->2
                mov r7,#249
                djnz r7,$ ;2*249=498
                djnz r6,$-4 ;(498+2)*2=1000 ;
                tốn 8Byte ----> kết quả

                Email:
                Tel: 0983.497.310

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                • tuyennhan
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi tuyennhan
                  Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                  Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                  hôm nay, 07:44
                • vi van pham
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi vi van pham
                  Cám ơn những lời chúc tốt đẹp của em.

                  Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                  Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                  hôm nay, 02:00
                • nhathung1101
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi nhathung1101
                  Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                  Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                  Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                  Hôm qua, 22:18
                • dinhthuong80
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi dinhthuong80
                  Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                  Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                  Hôm qua, 14:51
                • dinhthuong80
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi dinhthuong80
                  Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                  Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                  Hôm qua, 14:39
                • dinhthuong80
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi dinhthuong80
                  Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                  Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                  Hôm qua, 14:28
                • bqviet
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi bqviet
                  Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                  21-02-2025, 20:26
                • mèomướp
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi mèomướp
                  Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                  21-02-2025, 12:32
                • vi van pham
                  Trả lời cho Tiếng Anh cho người Việt
                  bởi vi van pham
                  Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                  Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                  20-02-2025, 21:31
                • bqviet
                  Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                  bởi bqviet
                  Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                  20-02-2025, 17:22
                Đang tải...
                X