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

                Đang tải...
                X