![]() |
Lại giúp mình sửa cos ASM với
1 Attachment(s)
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?.... Code:
PROCESSOR 16F877A |
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, |
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! |
1 Attachment(s)
Trích:
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 |
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 |
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 |
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.... |
Múi giờ GMT. Hiện tại là 12:10 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam