Thông báo

Collapse
No announcement yet.

nhờ mọi người xem hộ!!!!!!!

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

  • nhờ mọi người xem hộ!!!!!!!

    em mới học lập trình cho 89s52 nên nhờ mọi người cho ý kiến giúp em với:
    em đang làm mạch dùng led hồng ngoại làm tín hiệu. Mỗi lần 1 đèn led bị che thì 1 port làm cho một động cơ hoạt động.( led mắc từ port p0.0 đến p0.3, động cơ mắc tương ứng từ p0.4 đến p0.7). p3.0 là động cơ băng chuyền để di chuyển vật.(bt thi no k hoạt động,khi đèn led 1 bị che thì nó mới hoạt động, dùng xong thì nó tắt.)
    em có viết đoạn code này nhưng khi nạp vào nó chạy không đúng.mong mọi người giúp đỡ.phần cứng thì em làm đúng rồi.



    Code:
    dseg		at		030h
    	delay0:	ds		1
    	delay1:	ds		1
    
    
    cseg		at		00h
    main:
    		mov		p0,#00001111b
    		mov		p1,#0c0h
    		mov		p2,#0c0h
    		mov		p3,#0ffh
    	lap:
    		call	quet
    		ljmp	lap
    
    		quet:
    			led0:	
    				call delay
    				jb	p0.0,bat1
    
    				ljmp	led1
    			 bat1:
    			 	setb	p0.4
    				setb	p3.0
    				jbc		p0.0,clr1
    				ljmp	led1
    			 clr1:
    			 	clr		p0.4
    				ljmp	led1
    			 ;-----------------------------------
    			 led1:
    			 	call delay	
    				jb	p0.1,bat2
    				ljmp	led2
    			  bat2:
    			  	setb		p0.5
    				jbc		p0.1,clr2
    				ljmp	led2
    			  clr2:
    			  	clr		p0.5
    				ljmp	led2
    			;	--------------------------------------
    			  led2:
    			  	call	delay
    				jb		p0.2,bat3
    				ljmp	led3
    			  bat3:
    			  	setb		p0.6
    				jbc		p0.2,clr3
    				ljmp	led3
    			  clr3:
    			  	clr		p0.6
    				ljmp	led3
    			;	------------------------------------------
    			  led3:
    			  	call	delay
    				jb		p0.3,bat4
    				ljmp	ledCB
    			  bat4:
    			   	setb		p0.7
    				jbc		p0.3,clr4
    				ljmp	ledCB
    			   clr4:
    			   	clr		p0.7
    				ljmp	ledCB
    			;	--------------------------------------------
    			ledCB:
    				clr		p3.0
    				ljmp	led0
    
    delay:
    			mov		delay0,#10
    	  delay_loop2:
    	  		mov		delay1,#250
    	  delay_loop1:
    	  		nop
    			nop
    			djnz	delay1,delay_loop1
    			djnz	delay0,delay_loop2
    			ret
    
    			 
    end

  • #2
    không có anh chị nào giúp em à...Mong sự giúp đỡ của mọi người.

    Comment


    • #3
      Tớ đọc câu hỏi của cậu mà hoa cả mắt, cậu có thể nói rõ ràng hơn k???

      Comment


      • #4
        1/Khi muốn hỏi phần mềm, bạn phải kèm phần cứng theo bất kể phần cứng bạn làm tốt hay ko vì đó 2 phần ko thể tách biệt.
        2/Bạn muốn chân p0.0 là chân in thì ko nên dùng lệnh " jbc p0.0,clr1" vì sau lệnh đó nó clear chân p0.0 của bạn mất rồi, chân p0.0 sẽ ko là pin-in đựoc nữa.
        3/ mạch bạn chạy ko đúng là chạy như thế nào, nói thế ai mà đoán ra cho nổi, câu hỏi phải rõ ràng thì ngừoi khac mới giúp được chứ!
        Đạo khả đạo phi thường đạo
        Danh khả danh phi thường danh

        Comment


        • #5
          1/Khi muốn hỏi phần mềm, bạn phải kèm phần cứng theo bất kể phần cứng bạn làm tốt hay ko vì đó 2 phần ko thể tách biệt.
          2/Bạn muốn chân p0.0 là chân in thì ko nên dùng lệnh " jbc p0.0,clr1" vì sau lệnh đó nó clear chân p0.0 của bạn mất rồi, chân p0.0 sẽ ko là pin-in đựoc nữa.
          3/ mạch bạn chạy ko đúng là chạy như thế nào, nói thế ai mà đoán ra cho nổi, câu hỏi phải rõ ràng thì ngừoi khac mới giúp được chứ!
          Cám ơn anh nhiepphong1!

          mạch chạy không đúng là quét qua led nhưng các động cơ không hoạt động(từ 1 tới 3 và động cơ băng chuyền), còn cái thứ 4 thì nó chạy liên tục.
          Đây là link down các file em vẽ sơ đồ nguyên lí. Anh down về xem giúp em.
          Cám ơn các anh chị đẫ giúp đỡ!
          Em cũng có sửa code lại nữa.

          dseg at 030h
          delay0: ds 1
          delay1: ds 1
          i: ds 1
          j: ds 1
          cseg at 00h
          main:
          mov p0,#00001111b
          mov p1,#0c0h
          mov p2,#0c0h
          mov p3,#00h
          mov dptr,#maled1
          mov r7,#1
          mov r6,#0

          lap:
          call quet
          ljmp lap

          quet:
          led0:
          call delay
          jnb p0.0,bat1

          ljmp led1
          bat1:
          setb p0.4
          setb p3.0
          jnb p0.0,led1
          ljmp clr1
          clr1:
          clr p0.4
          ljmp led1
          ;-----------------------------------
          led1:
          call delay
          jnb p0.1,bat2
          ljmp led2
          bat2:
          setb p0.5
          jnb p0.1,led2
          ljmp clr2
          clr2:
          clr p0.5
          ljmp led2
          ; --------------------------------------
          led2:
          call delay
          jnb p0.2,bat3
          ljmp led3
          bat3:
          setb p0.6
          jnb p0.2,led3
          ljmp clr3
          clr3:
          clr p0.6
          ljmp led3
          ; ------------------------------------------
          led3:
          call delay
          jnb p0.3,bat4
          ljmp ledCB
          bat4:
          setb p0.7
          jnb p0.3,led0
          ljmp clr4
          clr4:
          inc r7
          call xuatled
          clr p0.7
          ljmp ledCB
          ; --------------------------------------------
          ledCB:
          jnb p0.0,led0
          jnb p0.1,led0
          jnb p0.2,led0
          jnb p0.3,led0
          clr p3.0
          ljmp led0

          delay:
          mov delay0,#10
          delay_loop2:
          mov delay1,#250
          delay_loop1:
          nop
          nop
          djnz delay1,delay_loop1
          djnz delay0,delay_loop2
          ret
          xuatled:
          mov a,r7
          movc a,@a+dptr
          mov p1,a
          cjne r7,#11,hienled1
          ljmp xuatled2
          maled1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0c0h
          xuatled2:
          ljmp hienled1
          mov r7,#0
          inc r7
          inc r6
          mov a,r6
          movc a,@a+dptr
          mov p2,a
          ljmp $
          call quet
          hienled1: ljmp $
          ret
          end
          http://www.mediafire.com/?s4wb4yggrrd868z

          Comment


          • #6
            có chút góp ý thế này: đoạn chương trình cho chạy và ngừng động cơ của bạn có vấn đề khá lớn( sửa từ từ nhé):

            led3:
            call delay
            jnb p0.3,bat4
            ljmp ledCB
            bat4:
            setb p0.7
            jnb p0.3,led0
            ljmp clr4
            clr4:
            inc r7
            call xuatled
            clr p0.7
            ljmp ledCB

            Đoạn ct này có vấn đề gì? Đó là p0.7 chỉ được clear khi và chỉ khi ở đầu chương trình con thì p0.3=0 và =1 ở :jnb p0.3,led0. Khả năng để p0.3 đổi trạng thái ngay ở đoạn chương trình đó là rất khó
            Đạo khả đạo phi thường đạo
            Danh khả danh phi thường danh

            Comment


            • #7
              thanks! anh...anh co thể cho em chút gợi ý được không ạ...em vẫn chưa tim ra được cách sữa lỗi được!.Cám ơn anh!

              Comment


              • #8
                sao cậu không sử dụng thuật toán quét bit để kiểm tra từng bit một, nếu bit nào được set thì bật động cơ lên thui, viết chi câu lệnh loằng ngoằng thế kia, mình cũng chưa hiể tại sao p3.0 lại điều khiển động cơ băng truyền, cậu có thể nói rõ hơn về cái đề của bài này được không, hy vọng mình có thể giúp được !

                Comment


                • #9
                  hổm rày về quê nên không có máy tính lên mạng.
                  Mình làm hệ thống rửa xe tự động gồm 4 công đoạn nên từ p0.0 tới p0.3 mình dùng để mắc led hồng ngoại.p0.4 đến p0.7 thì kết nối với 4 động cơ rồi. p1 và p2 thì mình gắn led 7 đoạn hiển thị số xe rửa nên p3.0 mình mới dùng để dk đông cơ băng truyền đấy.
                  à cách quét bit là thế nào bạn chumanh có thể nói cụ thể giúp mình được không.
                  Cám ơn mọi người giúp đỡ!

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X