|
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 |
22-01-2008, 12:33 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Jan 2008
Bài gửi: 8
: |
thắc mắc
Code:
;**************************************************************************************** PROCESSOR P16F877A INCLUDE <P16F877A.inc> __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF &_BODEN_OFF ;**************************************************************************************** ORG 0X20 COUNT1 EQU 0X20 COUNT2 EQU 0X21 COUNT3 EQU 0X22 ;**************************************************************************************** ORG 0X0000 GOTO MAIN ; ORG 0X0004 ; GOTO INTERRUPT ;***************************************************************************************** ORG 0X0005 MAIN BCF STATUS,RP1 BSF STATUS,RP0 ;BANK1 CLRF TRISC ;PORTC IS OUTPUT BCF STATUS,RP0 ;BANK0 CLRF PORTC GOTO C0 C0 BSF PORTC,0 CALL DELAY_LONG BCF PORTC,0 CALL DELAY_LONG C1 BSF PORTC,1 CALL DELAY_LONG C2 BSF PORTC,2 CALL DELAY_LONG BCF PORTC,2 CALL DELAY_LONG GOTO C0 ;***************************************************************************************** DELAY_LONG MOVLW D'5' MOVWF COUNT3 DELAY_LONG_START DECFSZ COUNT3,F GOTO $+2 RETURN CALL DELAY GOTO DELAY_LONG_START ;****************************************************************************** DELAY MOVLW D'255' MOVWF COUNT1 LOOP1 MOVLW D'255' MOVWF COUNT2 DECFSZ COUNT1,F GOTO LOOP2 RETURN LOOP2 DECFSZ COUNT2,F GOTO LOOP2 GOTO LOOP1 END |
22-01-2008, 01:51 AM | #2 |
Trưởng lão PIC bang
|
Bạn chú thích các lệnh từ nhãn C2 đến lệnh GOTO C0 như sau:
Code:
C2 ; BSF PORTC,2 ; CALL DELAY_LONG ; BCF PORTC,2 ; CALL DELAY_LONG GOTO C0 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 |
22-01-2008, 09:38 AM | #3 |
Nhập môn đệ tử
Tham gia ngày: Jan 2008
Bài gửi: 8
: |
Em đã Thử Rồi ạh. Bit1 Vẫn. Cứ Sáng Rồi Tắt.nếu Thử Bit Khác Của Portc Nó Cũng Thế.?
|
22-01-2008, 07:50 PM | #4 |
Trưởng lão PIC bang
|
À, tôi quên. Chương trình lại chạy lại từ C0, nên vẫn bị ảnh hưởng của các lệnh bật tắt RC0. Bạn sửa lại như sau và thử lại xem.
Code:
C2 ; BSF PORTC,2 ; CALL DELAY_LONG ; BCF PORTC,2 ; CALL DELAY_LONG GOTO C2
__________________
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 |
23-01-2008, 08:05 AM | #5 |
Nhập môn đệ tử
Tham gia ngày: Jan 2008
Bài gửi: 8
: |
Nếu Ghi Chú Thích Như đoạn Anh Nói Thì Bit1 Sẽ Sáng Hoài.nhưng Nói Như Vậy Nghĩa Là Các Bit Của Portc Ko độc Lập Với Nhau.cứ Tác động Bit Này Là ảnh Hưởng Bit Kia A.em Thử Porta Cũng Thế. Còn Portb Thì Ko Bị ảnh Hưởng.liệu Có Cách Nào để Bật Tắt Các Bit Portc độc Lập Ko ạ.mong Các Anh Giúp đỡ.
|
23-01-2008, 08:06 PM | #6 | |
Trưởng lão PIC bang
|
Trích:
Sau đó, nếu bạn muốn tìm hiểu thêm về hoạt động read-modify-write, bạn có thể tìm đọc trên diễn đàn (ở đây chẳng hạn: http://www.picvietnam.com/forum//showthread.php?p=8949, post #68), hay đọc datasheet của PIC (dùng chức năng tìm kiếm của phần mềm để tìm cụm từ 'read-modify-write'). 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 |
|
26-01-2008, 11:30 AM | #7 |
Nhập môn đệ tử
Tham gia ngày: Jan 2008
Bài gửi: 8
: |
sao mà sử dụng con pic6f877a này khác nhiều so với con pic6f84a quá. em xem về cấu trúc port của 2 con cũng gần giống nhau.em nghĩ thì việc đưa chân output ra mức cao ko có gì khó, thế mà giờ nó rối quá.(.ko biết có ai gặp trường hợp như em ko. việc I/0 mà cũng fải dùng đến thanh gi khác làm ảnh thì rắc rối wá.
về read-modify-write ,theo em hiểu thì thanh gi được đọc, rồi chỉnh sửa , rồi ghi lại.viêc đọc được thực hiện ngay cả khi lệnh là 1 lệnh gi vào.chẳng lẽ có bước nào đã chạy sai trong 3 bước trên. |
26-01-2008, 11:48 AM | #8 | |
Nhập môn đệ tử
Tham gia ngày: Jan 2008
Bài gửi: 8
: |
Trích:
Mong anh giải thích giùm em.cảm ơn anh đã trả lời. |
|
27-01-2008, 02:23 AM | #9 | |
Trưởng lão PIC bang
|
Trích:
Tóm lại, với các PIC16 (PIC12, và PIC10), hãy dùng một ô nhớ trung gian khi muốn thao tác trạng thái của thanh ghi PORTx. 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 |
|
17-05-2009, 12:04 PM | #10 |
Nhập môn đệ tử
Tham gia ngày: Jan 2009
Bài gửi: 8
: |
search thấy có thắc mắc như mình nhg mình vẫn chưa hiểu nên đành đào mộ cổ vậy
Code:
;RA0-3 - output ;RA0-3 noi voi LED ;LED dau K chung - GND include <p16f628.inc> __config h'3fe6' org 0x0 goto init init bsf STATUS, RP0 movlw h'f0' movwf TRISA bcf OPTION_REG, PS1 ;WDT 1:64, khoang nua giay se reset bcf STATUS, RP0 bsf PORTA, 0 loop nop bsf PORTA, 1 nop sleep nop bsf PORTA, 2 nop sleep nop bsf PORTA, 3 nop sleep nop clrf PORTA nop goto loop end |
|
|