PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Lại giúp mình sửa cos ASM với (http://www.picvietnam.com/forum/showthread.php?t=4297)

maitruccucdao 14-06-2009 08:05 PM

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
#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

1 Attachment(s)
Trích:

Nguyên văn bởi maitruccucdao (Post 26778)
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
#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....


Múi giờ GMT. Hiện tại là 05:25 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