![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2009
Bài gửi: 5
: |
Cảm ơn bạn DTM nhiều.Mình đã làm chạy được rồi nhưng trong chương trình bạn viết mình có sửa lại một tí lúc đầu chạy theo code bạn sửa thì chỉ đếm được đến 10 thôi và không đếm lên tiếp được. sau đó mình có bỏ đoạn code bạn thêm vào chỉ giữ lại
MOVLW b'00000111' MOVWF OPTION_REG hai dòng code này thì mạch chạy đúng. Vậy nếu như không bỏ những đoạn code kia của bạn ; CÁC THAO TÁC CHÍNH TRONG NGAT DECFSZ dem,1 GOTO exit_int và MOVLW D'20';toc do dem MOVWF dem thì mình có cách nào để sửa code cho chay đúng ko. MÌnh cũng đã thử nhưng ko được. Thứ hai là bạn nói "Thời gian delay > thời gian time0 tràn." Vậy làm thế nào để mình tránh được tình huống này. Có phải là mình phải đặt PS2:PS0 là "111" là tốt nhất ko. Mong nhận được sự giúp đỡ từ DTM và các anh em khác. Cảm ơn vì sự giúp đỡ. |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
Code:
LIST P=16F877A #INCLUDE P16F877A.INC ; khai bao bien COUNT1 EQU 0x20 COUNTA EQU 0x21 COUNTB EQU 0x22 HANGCHUC EQU 0x23 HANGDONVI EQU 0x24 W_SAVE EQU 0x25 PCLATH_save EQU 0x26 STATUS_save EQU 0x27 FSR_SAVE EQU 0x28 dem EQU 0x29 ORG 0x004 GOTO ISR ISR ;CHUONG TRINH NGAT MOVWF W_SAVE SWAPF STATUS,W CLRF STATUS MOVWF STATUS_save MOVF PCLATH,W MOVWF PCLATH_save CLRF PCLATH MOVF FSR,W MOVWF FSR_SAVE BTFSS INTCON,TMR0IF GOTO exit_int BCF INTCON,TMR0IF ;------------------------------------------------ ; CÁC THAO TÁC CHÍNH TRONG NGAT DECFSZ dem,1 GOTO exit_int ;****************************** INCF HANGDONVI,1 MOVLW 0x0A XORWF HANGDONVI,0 BTFSS STATUS,Z GOTO exit CLRF HANGDONVI INCF HANGCHUC,1 MOVLW 0x0A XORWF HANGCHUC,0 BTFSS STATUS,Z GOTO exit;sửa tại đây CLRF HANGCHUC GOTO exit exit MOVLW D'20';toc do dem MOVWF dem ;---------------------------- ;ket thuc ngat exit_int MOVF FSR_SAVE,W MOVWF FSR MOVF PCLATH_save,W MOVWF PCLATH SWAPF STATUS_save,W MOVWF STATUS SWAPF W_SAVE,1 SWAPF W_SAVE,0 RETFIE ;----------------------------; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;----------------------------; ;chuong trinh chinh ORG 0x00 GOTO MAIN ORG 0x050 MAIN ;khoi taoj port BCF STATUS,RP1 BSF STATUS,RP0 MOVLW 0x00 MOVWF TRISD MOVLW 0x00 MOVWF TRISC MOVLW b'11111100' MOVWF TRISB BCF STATUS,RP0 CLRF PORTD MOVLW b'00000011' MOVWF PORTB MOVLW d'20' MOVWF dem MOVWF PORTC ; KHOI TAO TIME0 CLRF TMR0 CLRF INTCON BSF STATUS,RP0 MOVLW b'00000111' MOVWF OPTION_REG BCF STATUS,RP0 BSF INTCON,TMR0IE BSF INTCON,PEIE BSF INTCON,GIE ;khoi tao bien CLRF HANGCHUC CLRF HANGDONVI START CALL HIENTHI GOTO START HIENTHI MOVF HANGCHUC,0 CALL TABLE MOVWF PORTD MOVLW b'11111101' MOVWF PORTB CALL DELAY CLRF PORTB MOVF HANGDONVI,0 CALL TABLE MOVWF PORTD MOVLW b'11111110' MOVWF PORTB CALL DELAY CLRF PORTB RETURN TABLE ADDWF PCL,1 RETLW 0xC0 RETLW 0xF9 RETLW 0xA4 RETLW 0xB0 RETLW 0x99 RETLW 0x92 RETLW 0x82 RETLW 0xF8 RETLW 0x80 RETLW 0x90 DELAY MOVLW 0xC7 MOVWF COUNTA delay_1 DECFSZ COUNTA,1 GOTO delay_1 RETURN END hàm delay không cho quá lớn tránh để led hiển thị sẽ bị nháy.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Nov 2009
Bài gửi: 5
: |
Vậy cảm ơn DTM nhiều. Bạn có thể cho mình mail của bạn được ko để có gì khó khăn trong quá trình mình tự học pic này nhờ bạn giúp được ko. Cảm ơn Bạn một lần nữa
|
![]() |
![]() |
![]() |
|
|