PDA

View Full Version : Lại giúp mình sửa cos ASM với


maitruccucdao
14-06-2009, 08:05 PM
Mỗi lần post lên đây là mỗi lần thấy quá tệ, nhưng lại phát hiện ra những điều đơn giản mình chưa biết. Mong mọi người giúp đỡ.
Giúp mình sửa cos ASM này với. Mình làm thử đèn cầu thang bằng các lệnh btfss... đơn giản nhưng làm lâu rồi, mở ra sửa tới sửa lui vẫn không chạy?....
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
ORG 0X0000
BCF STATUS,6
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BSF STATUS,5
BCF TRISB,0
BSF TRISA,0
BSF TRISA,1
BCF STATUS,5

MAIN
BTFSS PORTA,0
GOTO LOOP
BTFSS PORTA,1
GOTO LOOP1
GOTO MAIN
LOOP
BTFSS PORTA,0
GOTO LOOP
GOTO KIEMTRA
LOOP1
BTFSS PORTA,1
GOTO LOOP1
GOTO KIEMTRA
KIEMTRA
BTFSS PORTB,0
GOTO ON
GOTO OFF

OFF
BCF PORTB,0
GOTO MAIN
ON
BSF PORTB,0
GOTO MAIN
END
Mình làm mãi mà cái portb nó vẫn không sáng lên khi mình nhấn nút.

namqn
14-06-2009, 10:58 PM
Với PIC16F877A, bạn nên đặt giá trị cho thanh ghi ADCON1 là 0x06 hoặc 0x07 để thiết lập các chân RA0 và RA1 là các chân vào/ra dạng số, trước khi đọc trạng thái logic của chúng. Nếu bạn không thực hiện điều này, trạng thái logic được đọc về của các chân RA0 và RA1 sẽ luôn luôn là '0', bất chấp tín hiệu thực đặt vào các chân này từ bên ngoài.

Tôi không kiểm tra thuật toán trong đoạn code của bạn, nhưng có gợi ý rằng việc điều khiển đèn cầu thang từ 2 vị trí có logic tương tự với XOR hay XNOR của 2 tín hiệu từ 2 công tắc. Do đó không cần viết code rườm ra như bạn đã làm.

Tôi cũng nhận thấy trong sơ đồ mô phỏng của bạn, bạn dùng 2 nút nhấn (button) chứ không phải 2 công tắc (switch).

Thân,

maitruccucdao
15-06-2009, 08:50 PM
Cám ơn anh thật nhiều vì lời chỉ dẫn. Tôi đã ứng dụng và sửa lại cos nhưng đèn sáng luôn.
Sử dụng 2 nút nhấn cũng là đề bài yêu cầu. Thực ra bài này không ai làm như vậy, nhưng nó có nhiều cách viết. Để hiểu được cos tôi phải viết những đoạn cos ngắn để hiểu. Vì vậy mong anh xem lại cos và phát hiện dùm chổ sai sót, vì sao lại sai.
Thân!

tdm
15-06-2009, 10:15 PM
Mỗi lần post lên đây là mỗi lần thấy quá tệ, nhưng lại phát hiện ra những điều đơn giản mình chưa biết. Mong mọi người giúp đỡ.
Giúp mình sửa cos ASM này với. Mình làm thử đèn cầu thang bằng các lệnh btfss... đơn giản nhưng làm lâu rồi, mở ra sửa tới sửa lui vẫn không chạy?....
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
ORG 0X0000
BCF STATUS,6
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BSF STATUS,5
BCF TRISB,0
BSF TRISA,0
BSF TRISA,1
BCF STATUS,5

MAIN
BTFSS PORTA,0
GOTO LOOP
BTFSS PORTA,1
GOTO LOOP1
GOTO MAIN
LOOP
BTFSS PORTA,0
GOTO LOOP
GOTO KIEMTRA
LOOP1
BTFSS PORTA,1
GOTO LOOP1
GOTO KIEMTRA
KIEMTRA
BTFSS PORTB,0
GOTO ON
GOTO OFF

OFF
BCF PORTB,0
GOTO MAIN
ON
BSF PORTB,0
GOTO MAIN
END
Mình làm mãi mà cái portb nó vẫn không sáng lên khi mình nhấn nút.
code bạn viết không có chống phần chống dội của phím nhấn.
bạn không cấu hình cho pic.
bạn tham khảo phần code sau tôi đã mô phỏng chạy tốt:
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
__CONFIG 0x3F62;CAU HINH CHO PIC
CBLOCK 0x20
TAM
ENDC
ORG 0X0000
BCF STATUS,6
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BSF STATUS,5
MOVLW B'00000110';DAT PORTA VA PORTE LA I/O
MOVWF ADCON1
MOVLW B'00000011'
MOVWF TRISA
BCF TRISB,0
BCF STATUS,5

MAIN
BTFSS PORTA,0
GOTO LOOP
BTFSS PORTA,1
GOTO LOOP1
GOTO MAIN
LOOP
CALL CHONG_RUNG_PHIM
BTFSS PORTA,0
CALL CO_PHIM_NHAN
GOTO MAIN
LOOP1
CALL CHONG_RUNG_PHIM
BTFSS PORTA,1
CALL CO_PHIM_NHAN_1
GOTO MAIN
CO_PHIM_NHAN
CALL KIEMTRA
BTFSS PORTA,0;CHO_PHIM_NHA
GOTO $-1
CALL CHONG_RUNG_PHIM
RETLW .00
CO_PHIM_NHAN_1
CALL KIEMTRA
BTFSS PORTA,1;CHO_PHIM_NHA
GOTO $-1
CALL CHONG_RUNG_PHIM
RETLW .00
KIEMTRA
BTFSS PORTB,0
GOTO ON
GOTO OFF

OFF
BCF PORTB,0
RETLW .00
ON
BSF PORTB,0
RETLW .00
CHONG_RUNG_PHIM
MOVLW .255
MOVWF TAM
DECFSZ TAM,1
GOTO $-1
RETLW .00
END

maitruccucdao
16-06-2009, 06:16 AM
Cám ơn bạn nhiều. Không ngờ bài viết của mình lại cần nhiều thứ vậy, mình sẽ nghiên cứu lại thêm.
Mình cũng không biết rành về mấy cái chống nhiễu, rung hay đại loại là như thế. Thanks

maitruccucdao
16-06-2009, 06:29 AM
Bài viết của bạn cũng hơi phức tạp. Mình có 1 quyển sách chỉ dạy đơn giản là những gì mình viết thôi. Nếu bạn có quyển sách nào hay hơn có thể cho mình được không?
Chẳng hạn phần chống rung, ...
Phần cấu hình... . MÌnh đọc phần đó không hiểu

maitruccucdao
16-06-2009, 08:21 PM
Bạn ơi! Mình viết để người khác hiểu, đôi khi viết sai tí thôi mà người ta cũng hiểu là được rồi. Cần gì phải bắt bẻ thế.
Có 2 nguyên nhân: Mình đã quen gọi code là cos, và thứ 2 có thể do sai chính tả.
Trong nhiều trường hợp đôi khi người ta chỉ diễn tả bằng khuôn mặt hay vài cử chỉ nhỏ là cũng có thể hiểu rồi. Có thể do bạn quá chi tiết, và chắt bạn cũng là người rất tỉ mỉ...ừm...
Nhưng cũng có thể do sai chính tả mà ra cách gọi sai....