RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Khủng hoảng với chân RB5

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • motu
    Đệ tử 4 túi
    • Oct 2007
    • 79

    #1

    Khủng hoảng với chân RB5

    Mình tìm hiểu PIC cũng khá lâu, nhưng ít khi thực hành với PIC (vì là dân ngoại đạo). nhưng khi làm mạch thì đụng chuyện với chân RB5, không hiểu sao chân này không lên dù với 1 code đơn giản.
    Code:
     
    ;=======================================================
    		TITLE 		"Mach test LED_2"
    		PROCESSOR	PIC16F877A
    		INCLUDE 	<P16F877A.inc>
    		__CONFIG   	_CP_OFF	& _PWRTE_ON & _WDT_OFF &_HS_OSC
    
    ;=======================================================
    ;Khoi tao bien
    ;=======================================================
    count1	EQU 0x20	;bien cho ham delay
    counta	EQU 0x21
    countb	EQU 0x22
    ;===============================================================================
    		ORG	0x0000
    		GOTO	MAIN
    
    
    		ORG	0x0005
    
    MAIN		
    		BCF		STATUS,RP1
    		BSF		STATUS,RP0		; bank1 select
    		CLRF	TRISB			; trisb = 00000000
    								; portb = output
    		MOVLW 	b'00000000'
    		MOVWF 	TRISB			
    		BCF		STATUS,RP0		; bank0 select
    ;======================
    ;Vong lap chinh
    ;======================
    		CLRF 	PORTB			;tat tat ca LED	
    		CALL	delay_100ms
    	loop
    		MOVLW 	b'10000001'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'01000010'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'00100100'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'00011000'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'00111100'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'01111110'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'11111111'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		MOVLW 	b'00000000'
    		MOVWF 	PORTB			
    		CALL 	delay_100ms
    		GOTO	loop			;tro ve loop
    ;======================
    ;chuong trinh con
    ;======================
    delay_100ms						;label bat dau chuong trinh con
    		MOVLW	d'200'
    		MOVWF	count1
    	d1
    		MOVLW	d'199'
    		MOVWF	counta
    		MOVLW	d'1'
    		MOVWF	countb
    	delay_0
    		DECFSZ	counta,1
    		GOTO	$+2
    		DECFSZ	countb,1
    		GOTO	delay_0
    		DECFSZ	count1,1
    		GOTO	d1
    		RETURN					;ket thuc chuong trinh con
    	
    		END						; lenh bat buoc de ket thuc
    ;================================================================================
    Lúc đầu mình tự làm mạch để test, chân RB5 không sáng đèn (hoăc sáng mờ mờ), nghĩ là PIC (mình xài 16F887A) bị lỗi.
    Mình mua 3 con mới về thử, cũng không lên.
    Chắc là mạch amatuer của mình bị chạm, làm thêm cái mạch khác
    .........cũng không lên.
    Ghét quá mua cái EasyPIC về test luôn, kết quả là ........... cũng không lên, nản quá!!!
    Ai giúp mình giải quyết vấn đề nhức đầu này với, không chắc bỏ PIC xài con khác quá.
    THk cả nhà, Năm mới hạnh phúc!
    Last edited by motu; 02-01-2010, 01:18 PM. Lý do: định dạng code
    Dao nao cung la dao, dao cao dai cung la dao.
  • namqn
    Trưởng lão PIC bang
    • Feb 2006
    • 3020

    #2
    Trước tiên, bạn dùng PIC16F877A hay PIC16F887, hay là cả hai?

    Code của bạn thì viết cho PIC16F877A, nhưng trong bài viết thì bạn nói đang dùng PIC16F887.

    Thân,
    Biển học mênh mông, sức người có hạn.

    Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
    http://www.picvietnam.com/forum/showthread.php?t=1263

    Comment

    • thanh_nam1977
      Đệ tử 2 túi
      • Apr 2007
      • 27

      #3
      Nguyên văn bởi motu View Post
      Mình tìm hiểu PIC cũng khá lâu, nhưng ít khi thực hành với PIC (vì là dân ngoại đạo). nhưng khi làm mạch thì đụng chuyện với chân RB5, không hiểu sao chân này không lên dù với 1 code đơn giản.
      Code:
       
      ;=======================================================
      		TITLE 		"Mach test LED_2"
      		PROCESSOR	PIC16F877A
      		INCLUDE 	<P16F877A.inc>
      		__CONFIG   	_CP_OFF	& _PWRTE_ON & _WDT_OFF &_HS_OSC
      
      ;=======================================================
      ;Khoi tao bien
      ;=======================================================
      count1	EQU 0x20	;bien cho ham delay
      counta	EQU 0x21
      countb	EQU 0x22
      ;===============================================================================
      		ORG	0x0000
      		GOTO	MAIN
      
      
      		ORG	0x0005
      
      MAIN		
      		BCF		STATUS,RP1
      		BSF		STATUS,RP0		; bank1 select
      		CLRF	TRISB			; trisb = 00000000
      								; portb = output
      		MOVLW 	b'00000000'
      		MOVWF 	TRISB			
      		BCF		STATUS,RP0		; bank0 select
      ;======================
      ;Vong lap chinh
      ;======================
      		CLRF 	PORTB			;tat tat ca LED	
      		CALL	delay_100ms
      	loop
      		MOVLW 	b'10000001'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'01000010'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'00100100'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'00011000'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'00111100'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'01111110'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'11111111'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		MOVLW 	b'00000000'
      		MOVWF 	PORTB			
      		CALL 	delay_100ms
      		GOTO	loop			;tro ve loop
      ;======================
      ;chuong trinh con
      ;======================
      delay_100ms						;label bat dau chuong trinh con
      		MOVLW	d'200'
      		MOVWF	count1
      	d1
      		MOVLW	d'199'
      		MOVWF	counta
      		MOVLW	d'1'
      		MOVWF	countb
      	delay_0
      		DECFSZ	counta,1
      		GOTO	$+2
      		DECFSZ	countb,1
      		GOTO	delay_0
      		DECFSZ	count1,1
      		GOTO	d1
      		RETURN					;ket thuc chuong trinh con
      	
      		END						; lenh bat buoc de ket thuc
      ;================================================================================
      Lúc đầu mình tự làm mạch để test, chân RB5 không sáng đèn (hoăc sáng mờ mờ), nghĩ là PIC (mình xài 16F887) bị lỗi.
      Mình mua 3 con mới về thử, cũng không lên.
      Chắc là mạch amatuer của mình bị chạm, làm thêm cái mạch khác
      .........cũng không lên.
      Ghét quá mua cái EasyPIC về test luôn, kết quả là ........... cũng không lên, nản quá!!!
      Ai giúp mình giải quyết vấn đề nhức đầu này với, không chắc bỏ PIC xài con khác quá.
      THk cả nhà, Năm mới hạnh phúc!
      Làm nhà Q7 xong cả năm rồi mà hôm nay mới có nước máy.Nằm chờ nước chảy mà mừng quá,cũng rảnh tranh thủ lướt qua diễn đàn .Vấn đề mà bạn gặp tôi cũng đã từng gặp.Đã kiểm tra code bạn viết rồi.Chạy tốt lắm.Chỉ là phần configuration bit (Hiểu nôm na là cài đặt cấu hình phần cứng cho con PIC) chưa đúng.Cái này hối tháng trước mình cũng bị vậy, muốn điên luôn mà không hiểu tại sao.Có 2 cách để đặt configuration bit.Một cách là khai báo mềm __config vào luôn trong chương trình, để chi tiết tham khảo file 16f877A.INC tương ứng. Cách thứ 2 là cách mà mình trình bày sau đây:
      1.Bỏ phần __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC trong chương trình
      2.Dịch chương trình ra file HEX đặt tên là testled.hex chẳng hạn
      3.
      Nếu bạn dùng MPLAB V8.40 thì bạn vào mục Configure chọn Configuration bits với cấu hình như sau:



      Sau đó bạn vào File chọn Export


      Ở cửa sồ hiện ra chọn File format



      Rồi save file vào cùng tên file Hex mà bạn đã biên dịch (testled.hex)
      Và kết quả chạy ở đây:

      PS: Các bạn mới học gặp khó ban đầu dễ nản lắm đề nghị mọi người giúp đỡ tận tình nhé, càng chi tiết càng tốt (Kết quả chụp bằng HTC HD2 nhìn ngon hơn Iphone 3GS kg bà con:X)

      Comment

      • nhanh0112
        Đệ tử 4 túi
        • May 2007
        • 81

        #4
        Tui cũng là dân amatuer mới tập tẹ làm PIC và cũng gặp vấn đề này khi cho RB và RE để điểu khiển LED 7 SEG (CATHOT common) và cũng gặp vấn đề như trên (RB5 ko set đc lên 1). Nhưng nếu cho qua 1 điện trở treo Vcc và đệm thêm 1 con NPN thì là okie (do làm mạch xong rồi... nên phải dùng giải pháp tình thế này). Chưa hiểu kỹ phần cứng lắm nhưng hiểu nôm na khi bị tình trạng này là do nó (RB5) ko có khả năng tự dâng lên 1 đc (theo kiểu cực góp thả nổi).

        Comment

        • motu
          Đệ tử 4 túi
          • Oct 2007
          • 79

          #5
          to namqn: mình s/dụng con PIC16F877A, sorry vì là dân amatuer nên tưởng 2 con đó giống nhau .
          to thanh_nam1977: botay, bài viết của bạn quá là chi tiết, hình minh họa rất sinh động, đến nỗi con EasyPIC cũng y chang của mình luôn , mình làm y chang theo cách bạn và kết quả là .... mạch không chạy, chắc tại mình dốt quá, cuối cùng phải làm theo cách khác, sửa code lại thành

          __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC & _LVP_OFF

          cũng tương tự như cách bạn hướng dẫn, và kết quả là quá OK, đèn chạy sáng trưng , Thk bạn nhiều lắm, kết bạn nhất là câu PS: Các bạn mới học gặp khó ban đầu dễ nản lắm đề nghị mọi người giúp đỡ tận tình nhé, càng chi tiết càng tốt (Kết quả chụp bằng HTC HD2 nhìn ngon hơn Iphone 3GS kg bà con:X).
          Mong rằng năm mới nhà bạn nước chảy dài dài để bạn có thời gian nằm chờ nước chảy cho dân ngoại đạo học đòi chơi PIC như mình đỡ khổ . Nhân tiện cho mình hỏi cái _LVP_OFF có ý nghĩa gì vậy?
          Một lần nữa xin cám ơn và chúc cả nhà vui vẻ!!!
          Dao nao cung la dao, dao cao dai cung la dao.

          Comment

          • thanh_nam1977
            Đệ tử 2 túi
            • Apr 2007
            • 27

            #6
            Nguyên văn bởi motu View Post
            to namqn: mình s/dụng con PIC16F877A, sorry vì là dân amatuer nên tưởng 2 con đó giống nhau .
            to thanh_nam1977: botay, bài viết của bạn quá là chi tiết, hình minh họa rất sinh động, đến nỗi con EasyPIC cũng y chang của mình luôn , mình làm y chang theo cách bạn và kết quả là .... mạch không chạy, chắc tại mình dốt quá, cuối cùng phải làm theo cách khác, sửa code lại thành

            __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC & _LVP_OFF

            cũng tương tự như cách bạn hướng dẫn, và kết quả là quá OK, đèn chạy sáng trưng , Thk bạn nhiều lắm, kết bạn nhất là câu PS: Các bạn mới học gặp khó ban đầu dễ nản lắm đề nghị mọi người giúp đỡ tận tình nhé, càng chi tiết càng tốt (Kết quả chụp bằng HTC HD2 nhìn ngon hơn Iphone 3GS kg bà con:X).
            Mong rằng năm mới nhà bạn nước chảy dài dài để bạn có thời gian nằm chờ nước chảy cho dân ngoại đạo học đòi chơi PIC như mình đỡ khổ . Nhân tiện cho mình hỏi cái _LVP_OFF có ý nghĩa gì vậy?
            Một lần nữa xin cám ơn và chúc cả nhà vui vẻ!!!
            Ý nghĩa của LVP là đây:
            Code:
            2: While in Low Voltage ICSP mode, the
            RB3 pin can no longer be used as a general
            purpose I/O pin.
            3: When using low voltage ICSP programming
            (LVP) and the pull-ups on PORTB
            are enabled, bit 3 in the TRISB register
            must be cleared to disable the pull-up on
            RB3 and ensure the proper operation of
            the device.
            4: RB3 should not be allowed to float if LVP
            is enabled. An external pull-down device
            should be used to default the device to
            normal operating mode. If RB3 floats
            high, the PIC16F87XA device will enter
            Programming mode.
            5: LVP mode is enabled by default on all
            devices shipped from Microchip. It can be
            disabled by clearing the LVP bit in the
            CONFIG register.
            6: Disabling LVP will provide maximum compatibility
            to other PIC16CXXX devices.
            Viết thì nhiều nhưng thực dụng nhất theo mình, khi ở LVP ON ,chỉ cần hiêu nôm na : Khi muốn sử dụng chân RB3 của PortB ở chế độ Digital I/O thì phải dùng một điện trở kéo xuống mass nếu không khi RB3 on thì vi điều khiển sẽ chuyển sang trạng thái Nạp chứ không ở chế độ chạy (Run).Do vậy, để tránh rắc rối thì chuyển sang LVP_OFF
            Last edited by thanh_nam1977; 02-01-2010, 07:59 PM.

            Comment

            • thanh_nam1977
              Đệ tử 2 túi
              • Apr 2007
              • 27

              #7
              To: Thầy Nguyển Quang Nam (Học với thầy môn thí nghiệm kỹ thuật điện 1 lâu rồi, nhanh thật!)
              Theo tài liệu thì PORT A của 16F877A có thể đực dùng như I/O. Về điểm này, nhiều người làm không chạy, mà những người trả lời thì cũng trả lời chung chung là do chưa đặt ADCON1 và CMCON.Xem lại datasheet thì có điều đó thật nhưng thử lại rồi vẫn không được. Code sau cực đơn giản chỉ để nhằm mục đích test cách đặt cấu hình port A, bật 2 bit RA1,RA2 lên nhưng khi chạy thì chỉ có bit RA6 sáng còn các bit khác tắt. Nhờ thầy xem hộ
              Code:
              ;=======================================================
              		TITLE 		"Test Port A"
              		PROCESSOR	PIC16F877A
              		INCLUDE 	<P16F877A.inc>
              		__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC & _LVP_OFF
              	;=======================================================
                  ;===============================================================================
              		ORG	0x0000
              		GOTO	MAIN
              
              
              		ORG	0x0005
              
              MAIN		
              		BCF		STATUS,RP0
              		BCF		STATUS,RP1
              		CLRF	PORTA
              	
              		BSF		STATUS,RP0
                              MOVLW 	b'00000110'
              		MOVWF 	ADCON1
              	        MOVLW 	b'00000111'
              		MOVWF 	CMCON
              		MOVLW 	b'00000000'
              		MOVWF 	TRISA			
              	
              		BCF		STATUS,RP0
              		BCF		STATUS,RP1
              		MOVLW 	b'00000110'
              		MOVWF 	PORTA
              		END
              PS: Bạn nào trên Forum đã viết port A như Digital I/O và quan trọng là đã chạy dùng với 16f877a thì post lên cho tham khảo với nhé

              Comment

              • biganaru9
                Nhập môn đệ tử
                • Aug 2009
                • 1

                #8
                thank anh Nam, bài viết rất bổ ích

                Comment

                • letho123
                  Nhập môn đệ tử
                  • May 2016
                  • 3

                  #9
                  Như này thì bảo sao không khủng hoảng cơ chứ!
                  vay tin chap - vay tien nhanh - vay von ngan hang

                  Comment

                  Working...