|
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 |
23-05-2007, 02:49 PM | #1 |
Đệ tử 2 túi
Tham gia ngày: Jan 2007
Bài gửi: 27
: |
Capture Mode
Code:
; PIC16F877A HOAT DONG O CHE DO CAPTURE MODE ; WAIT EQU 0x22 WAIT1 EQU 0x23 WAIT2 EQU 0x24 include <p16f877a.inc> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF org 0x000 CLRF STATUS ; DOAN CHUONG TRINH KHOI TAO CHO CAPTURE MODE BSF STATUS,RP0 BSF TRISC,2 ; RC2 IN-PUT CHON CHAN RC2 LAM CHAN DUA XUNG VAO CLRF TRISB BCF STATUS,RP0 CLRF CCP1CON ; KHOI TAO CHO CHE DO CAPTURE MODE MOVLW .4 ; NAP GIA TRI TRUYEN VAO THANH GHI CCP1CON MOVWF CCP1CON ; CHI KIEM TRA SUON XUNG XUONG CLRF T1CON ; KHOI DONG CHO TIMER1 BSF T1CON,TMR1ON Loop CLRF CCPR1H ; XOA THANH GHI CCPR1 CLRF CCPR1L BCF PIR1,CCP1IF ; XOA CO NGAT DE TIEP TUC. NOP BTFSS PIR1,CCP1IF ; DOI CCP1IF SET LEN 1 GOTO $-1 MOVF CCPR1H,0 ; DOC GIA TRI TU THANH GHI CCPR1L MOVWF PORTB ; HIEN THI RA PORTB CALL DELAY MOVF CCPR1L,0 ; DOC GIA TRI TU THANH GHI CCPR1L MOVWF PORTB ; HIEN THI RA PORTB CALL DELAY GOTO Loop ; LAP VO THOI HAN DELAY ; DOAN CHUONG TRINH TAO THOI GIAN TRE MOVLW .250 MOVWF WAIT D1 MOVLW .250 MOVWF WAIT1 D2 MOVLW .250 MOVWF WAIT2 DECFSZ WAIT2,1 GOTO $-1 DECFSZ WAIT1,1 GOTO D2 DECFSZ WAIT,1 GOTO D1 RETURN END thay đổi nội dung bởi: falleaf, 23-05-2007 lúc 04:16 PM. |
23-05-2007, 08:46 PM | #2 |
Trưởng lão PIC bang
|
Bạn nên cho biết bạn muốn làm gì với đoạn code này.
Tốt nhất bạn mô tả bài toán, sau đó là các thao tác cần thiết (theo bạn), rồi mới đến code. Từ đó sẽ dễ dàng đối chiếu code của bạn với các thao tác, cũng như kiểm tra các thao tác dựa vào datasheet. Bạn chỉ đưa đoạn code lên thì sẽ rất khó cho người đọc. Theo tôi thì bạn viết code không tốt, bạn đang phát xung 10 kHz, nghĩa là sẽ có sự kiện được capture mỗi 100 us (bạn thiết lập để capture mỗi cạnh xuống tại RC2), trong khi đó vòng lặp của bạn lại có đến 2 lần delay với thời gian không dưới 100 us mỗi lần, như vậy sẽ xảy ra sự kiện tiếp theo trước khi bạn đọc giá trị CCPR1L, và CCPR1L sẽ bị ghi đè bởi giá trị mới. Bạn phát biểu rằng 'nó không chạy', nhưng theo bạn như thế nào là 'không chạy'? 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 |
24-05-2007, 11:54 AM | #3 | |
Đệ tử 2 túi
Tham gia ngày: Jan 2007
Bài gửi: 27
: |
Trích:
thu nhat em rat cam on anh da nhiet tinh giup em va em xin trinh bay van de nhu the nay anh xem va giup em cai nhe. Thu nhat em se tra loi tung cau hoi cua anh nhu sau: Mo Ta Bai Toan: Bai toan chi don gian la do tan so bang cach khi phat xung vao chan RC2. cho CCP1 hoat dong o che do Capture Mode va gia tri nhan duoc se nam trong thanh ghi CCPR1H va CCPR1L dung khong anh. Du lieu nay khong can xu ly ma dua truc tiep ra PortB luon . de hien thi gia tri trong thanh ghi CCPR1H ca CCPR1L ra PortB. Con van de anh bao la 2 Delay: Em xin duoc noi the nay anh nhe. Theo em doc trong Datasheet thi Sau moi lan do xung va khi hoan tat qua trinh thi co bao ket thuc la PIR1<2> tuc la CCP1IF se duoc set. Va no se khong bi xoa Neu khong co lenh xoa boi phan men. Va khi co CCP1IF =1 thi che do Capture Mode dung hoat dong va doi cho den khi CCP1IF duoc xoa. Trong thoi gian CCP1IF chua duoc xoa. thi em doc gia tri cua CCPR1H ra PortB va quan sat bang mat qua may con LED tre 1 khoang thoi gian du de nguoi quan sat thay duoc gia tri trong CCPR1H thi tiep tuc truyen gia tri CCPR1L ra PortB de quan sat. khi quan sat lan 2 nay xong dong thoi cung la luc ta bat dau vong lap chuong trinh tiep theo. Ta xoa Thanh ghi CCPR1x va PIR1<CCP1IF> = 0. Chac le den day em da tra loi cau hoi Ve di lay cua anh roi dung khong. Va la no se khong anh huong den chuong ket qua chuong trinh. Con cau hoi ? The nao moi la chay ? Hien tai no chay rat linh tinh va so dem trong CCPR1x rat linh tinh khi thi chi 2.000 khi thi 40-50.000 trong khi do xung cua em phat la xung chuan 10Khz va sai so xung nay chi la 1 xung (neu co). Con trong doan Code em da viet rat day du ve mat chu thich tung cau lenh cung nhu tung buoc thuc hien che do Capture Mode. Nhung em cung xin noi lai nhu sau : 1. dat chan RC2 lam chan InPut. 2. khoi dong Timer1 3. xoa thanh ghi CCPR1x va PIR1<CCP1IF> 4. Dat gia tri Cho che do Capture Mode la 4 de bat dau qua trinh 5. doi co CCP1IF bao ket thuc duoc SET. 6. Doc va hien thi Ket Qua ra PortB 7. Chu trinh lap lai. Mong Cac anh chi giup em nhe. |
|
24-05-2007, 11:56 AM | #4 |
PIC Bang chủ
|
Nhớ viết tiếng Việt có dấu. Diễn đàn có bộ gõ tiếng Việt.
Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
24-05-2007, 07:59 PM | #5 | ||
Trưởng lão PIC bang
|
Trích:
Trích:
Kết quả chạy chương trình của bạn cũng xác nhận điều đó, vì số đếm bạn đọc ra được nhảy lung tung. Nghĩa là nó capture liên tục, và nếu bạn xóa CCP1RH và CCP1RL ở những mốc thời gian khác nhau thì bạn sẽ capture được những giá trị khác nhau. Tôi gợi ý thế này, trước tiên bạn chỉ capture đúng một lần và hiển thị kết quả. Thử chạy nhiều lần chương trình đó xem kết quả thế nào. Sau đó bạn thử capture lần đầu, sau đó tắt Timer 1, hiển thị kết quả, và bật Timer 1 trở lại để bắt đầu capture lần thứ hai, so sánh kết quả. Tạm thời là như thế. 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-05-2007, 12:42 AM | #6 |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Sao khong dung duoc tieng viet nhi
ban dung thu nhe! PIC16F877A HOAT DONG O CHE DO CAPTURE MODE ; WAIT EQU 0x22 WAIT1 EQU 0x23 WAIT2 EQU 0x24 include <p16f877a.inc> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF org 0x000 CLRF STATUS ; DOAN CHUONG TRINH KHOI TAO CHO CAPTURE MODE BSF STATUS,RP0 BSF TRISC,2 ; RC2 IN-PUT CHON CHAN RC2 LAM CHAN DUA XUNG VAO CLRF TRISB BCF STATUS,RP0 CLRF CCP1CON ; KHOI TAO CHO CHE DO CAPTURE MODE MOVLW .4 ; NAP GIA TRI TRUYEN VAO THANH GHI CCP1CON MOVWF CCP1CON ; CHI KIEM TRA SUON XUNG XUONG CLRF T1CON ; KHOI DONG CHO TIMER1 Loop CLRF TMR1H CLRF TMR1L CLRF CCPR1H ; XOA THANH GHI CCPR1 CLRF CCPR1L BCF PIR1,CCP1IF ; XOA CO NGAT DE TIEP TUC. NOP ;CHO PHAT HIEN CANH LEN DE LAY MAU CHO CHUAN BTFSS PIR1,CCP1IF ; DOI CCP1IF SET LEN 1 GOTO $-1 BCF PIR1,CCP1IF ; XOA CO NGAT DE TIEP TUC. ;BAT DAU LAY MAU BSF T1CON,TMR1ON ;CHO CANH LEN LAN NUA DE LAY CA CHU KI BTFSS PIR1,CCP1IF ; DOI CCP1IF SET LEN 1 GOTO $-1 BCF T1CON,TMR1ON MOVF CCPR1H,0 ; DOC GIA TRI TU THANH GHI CCPR1L MOVWF PORTB ; HIEN THI RA PORTB CALL DELAY MOVF CCPR1L,0 ; DOC GIA TRI TU THANH GHI CCPR1L MOVWF PORTB ; HIEN THI RA PORTB CALL DELAY GOTO Loop ; LAP VO THOI HAN DELAY ; DOAN CHUONG TRINH TAO THOI GIAN TRE MOVLW .250 MOVWF WAIT D1 MOVLW .250 MOVWF WAIT1 D2 MOVLW .250 MOVWF WAIT2 DECFSZ WAIT2,1 GOTO $-1 DECFSZ WAIT1,1 GOTO D2 DECFSZ WAIT,1 GOTO D1 RETURN END |
26-05-2007, 12:31 PM | #7 | |
Đệ tử 2 túi
Tham gia ngày: Jan 2007
Bài gửi: 27
: |
Trích:
Thứ nhất rất chân thành cảm ơn anh đã giúp đỡ để em có thể lập trình cho chế độ này. Em biết sẽ có rất nhiều người gặp phải trường hợp như em. Chính vì vậy em Post lên bài đầy đủ về Capture Mode để những người như em có thể lấy làm tài liệu tham khảo. Chương trình dưới đây đã chạy tốt các bạn coi như đây là 1 Modul cho Capture Mode : ; ************************************************** ************* ; Đặt chế độ cho Capture Mode CLRF STATUS BSF STATUS,RP0 BSF PORTC,2 ; RC2 IN-PUT CLRF PORTB ; PORTB OUT-PUT BCF STATUS,RP0 CLRF CCP1CON MOVLW .4 ; NAP GIA TRI TRUYEN VAO THANH GHI CCP1CON MOVWF CCP1CON ; CHI KIEM TRA SUON XUNG XUONG CLRF T1CON LOOP BCF PIR1,CCP1IF ; XOA CO NGAT DE TIEP TUC. BTFSS PIR1,CCP1IF ; DOI CCP1IF SET LEN 1 GOTO $-1 CLRF TMR1H ; XOA GIA TRI TRONG THANH GHI TIMER1 CLRF TMR1L ; GIA TRI TRONG THANH GHI CCPR1x SE TU DONG XOA BCF PIR1,CCP1IF ; XOA CO NGAT DE TIEP TUC. BSF T1CON,TMR1ON; BAT DAU LAY MAU BTFSS PIR1,CCP1IF ; DOI CCP1IF SET LEN 1 GOTO $-1 BCF T1CON,TMR1ON MOVFW CCPR1H ; DOC GIA TRI TU THANH GHI CCPR1L MOVLW PORTB ; HIEN THI RA PORTB CALL DELAY MOVFW CCPR1L ; DOC GIA TRI TU THANH GHI CCPR1L MOVLW PORTB ; HIEN THI RA PORTB CALL DELAY GOTO LOOP ; DOAN CHUONG TRINH TAO THOI GIAN TRE DELAY MOVLW .250 MOVWF WAIT D1 MOVLW .250 MOVWF WAIT1 D2 MOVLW .250 MOVWF WAIT2 DECFSZ WAIT2,1 GOTO $-1 DECFSZ WAIT1,1 GOTO D2 DECFSZ WAIT,1 GOTO D1 RETURN END Một lần nữa chân thành cảm ơn mọi người. Tôi đã hỏi và mọi người trả lời bây giờ tôi chưa có câu hỏi nào nhờ mọi người. Nhưng nếu ai có câu hỏi mà tôi có thể trả lời được thì tôi rất sẵn sang. Tôi làm về thiết kế mạch Analog và lập trình.. Trước đây thường lập trình cho 89C52 nay chuyển sang PIC nên còn hơi mắc. Có gì mong anh em giúp đỡ. Chào và chúc thành công. |
|
01-10-2008, 04:07 PM | #8 | |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
xin hỏi, em cũng đang làm về modul capture và lập trình trên CCS với đoạn code sau:
công việc của em là hiển thị khoảng cách mà SRF05 đo được khi gặp vật cản. em dùng bộ capture để đọc tín hiệu đầu vào: Trích:
mong mọi người giúp em ??? |
|
|
|