|
Tài trợ cho PIC Vietnam |
MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ... |
|
Ðiều Chỉnh | Xếp Bài |
|
01-01-2010, 06:18 PM | #1 |
Đệ tử 4 túi
Tham gia ngày: Oct 2007
Bài gửi: 79
: |
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 ;================================================================================ 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! thay đổi nội dung bởi: motu, 02-01-2010 lúc 01:18 PM. Lý do: định dạng code |
01-01-2010, 08:41 PM | #2 |
Trưởng lão PIC bang
|
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 |
02-01-2010, 02:22 AM | #3 | |
Đệ tử 2 túi
|
Trích:
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) |
|
02-01-2010, 08:57 AM | #4 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 81
: |
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).
|
02-01-2010, 06:56 PM | #5 |
Đệ tử 4 túi
Tham gia ngày: Oct 2007
Bài gửi: 79
: |
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ẻ!!! |
02-01-2010, 07:46 PM | #6 | |
Đệ tử 2 túi
|
Trích:
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. thay đổi nội dung bởi: thanh_nam1977, 02-01-2010 lúc 07:59 PM. |
|
02-01-2010, 07:59 PM | #7 |
Đệ tử 2 túi
|
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 |
10-11-2015, 11:02 PM | #8 |
Nhập môn đệ tử
Tham gia ngày: Aug 2009
Bài gửi: 1
: |
thank anh Nam, bài viết rất bổ ích
|
20-05-2016, 05:14 PM | #9 |
Nhập môn đệ tử
Tham gia ngày: May 2016
Bài gửi: 3
: |
Như này thì bảo sao không khủng hoảng cơ chứ!
|
|
|