PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   counter cho pic 16F877A (http://www.picvietnam.com/forum/showthread.php?t=2685)

0509592 09-08-2008 01:48 AM

counter cho pic 16F877A
 
chào các bác!
em dung pic 16F877A!
em đếm xung ngoài bằng counter nhưng chưa được!
có phải là mỗi khi có sự thay đổi sường lên , xuống ở chân (với timer0 là RA4) thì giá trị của timer sẽ tăng lên 1!
em đã cấu hình cho timer hoạt động ở chế độ counter và cho phép ngắt zồi thực hiện chương trình đếm. Nhưng vẫn không được!
em dùng trình dịch Mikro C. các bác có code thì cho em xin?
bằng CCS C cũng được!
thanks!

HDL_MTAK42 05-10-2012 09:48 AM

anh em ai đã viết code đếm xung >=1Mhz từ chân c0 16f877a chua. tớ cần hiển thị ra 8 cái led 7 thanh,tức là sử dụng biến lưu giá trị int32,mong mọi người quan tâm

HDL_MTAK42 05-10-2012 09:49 AM

chú 0509592 post code lên để mọi nguời bàn luận chứ

tay mơ 06-10-2012 05:24 PM

http://www.picvietnam.com/forum/show...3&postcount=15

nguyenvantay05 30-11-2012 02:14 AM

các bạn ơi mình đang cần gấp code mạch đếm xe tự động hiển thi LCD ai có cho mình xin với. không thì chỉ cho mình cách đếm lên hiển thị LCD cũng được! mình xin cảm ơn!

kidmaster08 17-12-2012 12:55 AM

mình dùng asm viết thì mô phỏng được đếm tần số và hiển thị ra LCD như thế này
chương trình dùng thuật toán đếm số xung trong thời gian là 1s. hiện tại mình chỉ cho đếm tối đa là 33MHz. các bít cấu hình được MPlab định nghĩa rồi. sử dụng thạch anh 4Mhz. sau đây la code :
Code:

PROCESSOR 16F877A
INCLUDE <P16F877A.INC>
 
    E EQU 0
    RS EQU 1
    RW EQU 2
    BUFF0 EQU 0X27
    BUFF1 EQU 0X28
    BUFF2 EQU 0X29
    BUFF3 EQU 0X31
    BUFF4 EQU 0X32
    BUFF5 EQU 0X33
    BUFF6 EQU 0X38
    BUFF7 EQU 0X39
    CNTW EQU 0X34
    CNT1 EQU 0X35
    CNT2 EQU 0X36
    WORKA EQU 0X41
    WORKB EQU 0X45
    CNTA EQU 0X42
    CNTB EQU 0X43
    CNTW1 EQU 0X43
    CNTW2 EQU 0X44
; BAT DAU CHUONG TRINH
    ORG 0X00
    GOTO START
START
    BCF STATUS,RP1
    BSF STATUS,RP0
    MOVLW 0X00
    MOVWF TRISB
    CLRF PIE1
    MOVLW 0X00
    MOVWF TRISD
    MOVLW 0XFF
    MOVWF TRISC
    CLRF OPTION_REG
    BSF OPTION_REG,7
    BCF STATUS,RP0
 
    MOVLW 0X0E
    MOVWF T1CON ; THIET LAP THONG SO CHO BO DEM TMR1 : CHAN DEM TU RC0, HE SO CHIA =1, DEM KO DONG BO
    CLRF PIR1
 
;THIET LAP BAN DAU CHO LCD
    CALL WAITLCD
    BCF PORTB,RS
    MOVLW 0X38
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    BCF PORTB,RS
    MOVLW 0X01
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    BCF PORTB,RS
    MOVLW 0X0C
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
LOOP
    CLRF BUFF0
    CLRF BUFF1
    CLRF BUFF2
    CLRF BUFF3
    CLRF BUFF4
    CLRF BUFF5
    CLRF BUFF6
    CLRF BUFF7
    CLRF CNTA
    CLRF CNTB
    CLRF CNTW1
    CLRF WORKA
    CLRF WORKB
    CLRF CNTW2
    CLRF TMR1H
    CLRF TMR1L
    CLRF CNT1
    CLRF CNT2
    BCF PIR1,TMR1IF
    BSF T1CON,TMR1ON ; BAT DAU DEM
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
NOP
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
    CALL TMRCHK
 
    BCF T1CON,TMR1ON
    MOVF CNTW1,0 ; TAT BO DEM DE XU LY KET QUA DEM
    MOVWF CNTA
    MOVF CNTW2,0
    MOVWF CNTB
    MOVF TMR1H,0
    MOVWF CNT1
    MOVF TMR1L,0
    MOVWF CNT2
    BTFSS PIR1,TMR1IF
    GOTO HH0
    MOVLW 0XFF
    SUBWF CNTA,0
    BTFSC STATUS,Z ;CNTA DA BANG 255 HAY CHUA ?
    GOTO HH1
    INCF CNTA
    GOTO HH0
HH1
    CLRF CNTA
    INCF CNTB
 
HH0 ; LUC NAY CNTA,CNTB LUU SO LAN TRAN, CNT1 VA CNT2 LUU TRONG TMR1H VA TMR1L
 
    MOVLW 0X02
    SUBWF CNTB,0
    BTFSC STATUS,C
    GOTO OVER
    MOVLW 0X02
    SUBWF CNTB,0
    BTFSC STATUS,Z
    GOTO OVER
    BTFSS CNTB,0 ; BAT DAU VIET NHU CHUONG TRINH CU
    GOTO CD1
    MOVLW d'1'
    MOVWF BUFF0
    MOVLW d'6'
    MOVWF BUFF1
    MOVLW d'7'
    MOVWF BUFF2
    MOVLW d'7'
    MOVWF BUFF3
    MOVLW d'7'
    MOVWF BUFF4
    MOVLW d'2'
    MOVWF BUFF5
    MOVLW d'1'
    MOVWF BUFF6
    MOVLW d'6'
    MOVWF BUFF7
CD1
    BTFSS CNTA,7
    GOTO CD2
    MOVLW d'8'
    ADDWF BUFF1
    MOVLW d'3'
    ADDWF BUFF2
    MOVLW d'8'
    ADDWF BUFF3
    MOVLW d'8'
    ADDWF BUFF4
    MOVLW d'6'
    ADDWF BUFF5
    MOVLW d'0'
    ADDWF BUFF6
    MOVLW d'8'
    ADDWF BUFF7
CD2
    BTFSS CNTA,6
    GOTO CD3
    MOVLW d'4'
    ADDWF BUFF1,1
    MOVLW d'1'
    ADDWF BUFF2
    MOVLW d'9'
    ADDWF BUFF3
    MOVLW d'4'
    ADDWF BUFF4
    MOVLW d'3'
    ADDWF BUFF5
    MOVLW d'0'
    ADDWF BUFF6
    MOVLW d'4'
    ADDWF BUFF7
CD3
    BTFSS CNTA,5
    GOTO CD4
    MOVLW d'2'
    ADDWF BUFF1
    MOVLW d'0'
    ADDWF BUFF2
    MOVLW d'9'
    ADDWF BUFF3
    MOVLW d'7'
    ADDWF BUFF4
    MOVLW d'1'
    ADDWF BUFF5
    MOVLW d'5'
    ADDWF BUFF6
    MOVLW d'2'
    ADDWF BUFF7
CD4
    BTFSS CNTA,4
    GOTO CD5
    MOVLW d'1'
    ADDWF BUFF1
    MOVLW d'0'
    ADDWF BUFF2
    MOVLW d'4'
    ADDWF BUFF3
    MOVLW d'8'
    ADDWF BUFF4
    MOVLW d'5'
    ADDWF BUFF5
    MOVLW d'7'
    ADDWF BUFF6
    MOVLW d'6'
    ADDWF BUFF7
 
CD5
    BTFSS CNTA,3   
    GOTO CD6
    MOVLW d'5'
    ADDWF BUFF2
    MOVLW d'2'
    ADDWF BUFF3
    MOVLW d'4'
    ADDWF BUFF4
    MOVLW d'2'
    ADDWF BUFF5
    MOVLW d'8'
    ADDWF BUFF6
    MOVLW d'8'
    ADDWF BUFF7
 
CD6
    BTFSS CNTA,2
    GOTO CD7
    MOVLW d'2'
    ADDWF BUFF2
    MOVLW d'6'
    ADDWF BUFF3
    MOVLW d'2'
    ADDWF BUFF4
    MOVLW d'1'
    ADDWF BUFF5
    MOVLW d'4'
    ADDWF BUFF6
    MOVLW d'4'
    ADDWF BUFF7
CD7   
    BTFSS CNTA,1
    GOTO CD8
    MOVLW d'1'
    ADDWF BUFF2
    MOVLW d'3'
    ADDWF BUFF3
    MOVLW d'1'
    ADDWF BUFF4
    MOVLW d'0'
    ADDWF BUFF5
    MOVLW d'7'
    ADDWF BUFF6
    MOVLW d'2'
    ADDWF BUFF7   
CD8
    BTFSS CNTA,0
    GOTO CD9
    MOVLW d'6'
    ADDWF BUFF3
    MOVLW d'5'
    ADDWF BUFF4
    MOVLW d'5'
    ADDWF BUFF5
    MOVLW d'3'
    ADDWF BUFF6
    MOVLW d'6'
    ADDWF BUFF7
CD9
    BTFSS CNT1,7
    GOTO CD10
    MOVLW d'3'
    ADDWF BUFF3
    MOVLW d'2'
    ADDWF BUFF4
    MOVLW d'7'
    ADDWF BUFF5
    MOVLW d'6'
    ADDWF BUFF6
    MOVLW d'8'
    ADDWF BUFF7
CD10
    BTFSS CNT1,6
    GOTO CD11
    MOVLW d'1'
    ADDWF BUFF3
    MOVLW d'6'
    ADDWF BUFF4
    MOVLW d'3'
    ADDWF BUFF5
    MOVLW d'8'
    ADDWF BUFF6
    MOVLW d'4'
    ADDWF BUFF7
CD11
    BTFSS CNT1,5
    GOTO CD12
    MOVLW d'8'
    ADDWF BUFF4
    MOVLW d'1'
    ADDWF BUFF5
    MOVLW d'9'
    ADDWF BUFF6
    MOVLW d'2'
    ADDWF BUFF7
CD12
    BTFSS CNT1,4
    GOTO CD13
    MOVLW d'4'
    ADDWF BUFF4
    MOVLW d'0'
    ADDWF BUFF5
    MOVLW d'9'
    ADDWF BUFF6
    MOVLW d'6'
    ADDWF BUFF7
CD13
    BTFSS CNT1,3
    GOTO CD14
    MOVLW d'2'
    ADDWF BUFF4
    MOVLW d'0'
    ADDWF BUFF5
    MOVLW d'4'
    ADDWF BUFF6
    MOVLW d'8'
    ADDWF BUFF7
CD14
    BTFSS CNT1,2
    GOTO CD15
    MOVLW d'1'
    ADDWF BUFF4
    MOVLW d'0'
    ADDWF BUFF5
    MOVLW d'2'
    ADDWF BUFF6
    MOVLW d'4'
    ADDWF BUFF7
CD15
    BTFSS CNT1,1
    GOTO CD16
    MOVLW d'5'
    ADDWF BUFF5
    MOVLW d'1'
    ADDWF BUFF6
    MOVLW d'2'
    ADDWF BUFF7
CD16
    BTFSS CNT1,0
    GOTO CD17
    MOVLW d'2'
    ADDWF BUFF5
    MOVLW d'5'
    ADDWF BUFF6
    MOVLW d'6'
    ADDWF BUFF7
CD17
    BTFSS CNT2,7
    GOTO CD18
    MOVLW d'1'
    ADDWF BUFF5
    MOVLW d'2'
    ADDWF BUFF6
    MOVLW d'8'
    ADDWF BUFF7
CD18
    BTFSS CNT2,6
    GOTO CD19   
    MOVLW d'6'
    ADDWF BUFF6
    MOVLW d'4'
    ADDWF BUFF7
CD19
    BTFSS CNT2,5
    GOTO CD20
    MOVLW d'3'
    ADDWF BUFF6
    MOVLW d'2'
    ADDWF BUFF7
CD20
    BTFSS CNT2,4
    GOTO CD21
    MOVLW d'1'
    ADDWF BUFF6
    MOVLW d'6'
    ADDWF BUFF7
CD21
    BTFSS CNT2,3
    GOTO CD22
    MOVLW d'8'
    ADDWF BUFF7
CD22
    BTFSS CNT2,2
    GOTO CD23
    MOVLW d'4'
    ADDWF BUFF7
CD23
    BTFSS CNT2,1
    GOTO CD24
    MOVLW d'2'
    ADDWF BUFF7   
CD24
    BTFSS CNT2,0
    GOTO CONVERT
    MOVLW d'1'
    ADDWF BUFF7
CONVERT
    MOVLW 0X0A
    SUBWF BUFF7,0
    BTFSS STATUS,C
    GOTO CR1
    MOVLW 0X0A
    SUBWF BUFF7,1
    INCF BUFF6
    GOTO CONVERT
CR1
    MOVLW 0X0A
    SUBWF BUFF6,0
    BTFSS STATUS,C
    GOTO CR2
    MOVLW 0X0A
    SUBWF BUFF6,1
    INCF BUFF5
    GOTO CR1
CR2
    MOVLW 0X0A
    SUBWF BUFF5,0
    BTFSS STATUS,C
    GOTO CR3
    MOVLW 0X0A
    SUBWF BUFF5,1
    INCF BUFF4
    GOTO CR2
CR3
    MOVLW 0X0A
    SUBWF BUFF4,0
    BTFSS STATUS,C
    GOTO CR4
    MOVLW 0X0A
    SUBWF BUFF4,1
    INCF BUFF3
    GOTO CR3
CR4
    MOVLW 0X0A
    SUBWF BUFF3,0
    BTFSS STATUS,C
    GOTO CR5
    MOVLW 0X0A
    SUBWF BUFF3,1
    INCF BUFF2
    GOTO CR4
CR5
    MOVLW 0X0A
    SUBWF BUFF2,0
    BTFSS STATUS,C
    GOTO CR6
    MOVLW 0X0A
    SUBWF BUFF2,1
    INCF BUFF1
    GOTO CR5
CR6
    MOVLW 0X0A
    SUBWF BUFF1,0
    BTFSS STATUS,C
    GOTO DOCKQ
    MOVLW 0X0A
    SUBWF BUFF1,1
    INCF BUFF0
    GOTO CR6
 
DOCKQ
    MOVLW d'48'
    ADDWF BUFF0,1
    ADDWF BUFF1,1
    ADDWF BUFF2,1
    ADDWF BUFF3,1
    ADDWF BUFF4,1
    ADDWF BUFF5,1
    ADDWF BUFF6,1
    ADDWF BUFF7,1
    BCF PORTB,RS
    MOVLW 0X80
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'.'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'T'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'A'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'N'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #' '
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'S'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'O'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #' '
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'C'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'O'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    MOVLW #'N'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'G'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #' '
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    MOVLW #'T'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'A'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    MOVLW #'C'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
 
    BCF PORTB,RS
    MOVLW 0XC2
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVF BUFF0,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
 
    MOVF BUFF1,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'.'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVF BUFF2,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVF BUFF3,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVF BUFF4,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #' '
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVF BUFF5,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
    MOVF BUFF6,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
    MOVF BUFF7,0
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
    MOVLW #'M'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD   
 
    MOVLW #'H'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    MOVLW #'z'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    GOTO LOOP
 
TMRCHK ; XU LY THOI GIAN THUC, CAN THAN
    MOVLW d'189'
    MOVWF WORKB
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
;    NOP
TMRCHK1
    MOVLW d'25'
    MOVWF WORKA
KT   
    BTFSS PIR1,TMR1IF
    GOTO XX1
    BCF PIR1,TMR1IF
    MOVLW 0XFF
    SUBWF CNTW1,0
    BTFSS STATUS,Z
    GOTO XXX
    INCF CNTW2
    CLRF CNTW1
    GOTO XX2
XXX
    INCF CNTW1
    GOTO XX2
XX1
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
XX2
    nop
    NOP
    NOP
    NOP
    NOP
NOP
    NOP
DECFSZ WORKA
    GOTO KT
    DECFSZ WORKB ; XEM LAI TAI DAY
    GOTO TMRCHK1
    RETURN
OVER
    BCF PORTB,RS
    MOVLW 0X81
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    MOVLW #'.'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
    MOVLW #'O'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
    MOVLW #'V'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
    MOVLW #'E'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
 
 
    MOVLW #'R'
    MOVWF PORTD
    BSF PORTB,E
    BCF PORTB,E
    CALL WAITLCD
    goto LOOP
 
WAITLCD
    BCF PORTB,E
    BSF PORTB,RW
    BSF STATUS,RP0
    MOVLW 0XFF
    MOVWF TRISD
    BCF STATUS,RP0
WAIT1
    BTFSC PORTD,7
    GOTO WAIT1
    BSF PORTB,RS
    BCF PORTB,RW
    BSF STATUS,RP0
    MOVLW 0X00
    MOVWF TRISD
    BCF STATUS,RP0
    RETURN
    END


kidmaster08 17-12-2012 01:09 AM

Mình xin giải thích chung chương trình mình như sau :
-thiết lập cho Timer1 có hệ số chia 1, các chân rb0,1,2 nối vơi E,rs,rw của LCD.chọn đếm không đồng bộ
- cho phép Timer1 hoạt động, từ thời điểm này bắt đầu đếm. 10 lần gọi nhãn tmrchk và các lệnh nop được bố trí để sau khi ngưng hoạt động của timer1 thời gian đạt đưc là 1s. trong thời gian 1s này cntw1 và cntw2 sẽ cập nhật số lần tràn của timer. sau khi dừng timer1 sẽ xử lý từng bít của các thanh ghi này và xuất giá trị trong các thanh ghi Buff0 đến buff7. để hiển thị ra lcd, đổi các thanh ghi này ra ma asii bằng cách cộng thêm 48 đơn vị.
- đến phần hiển thị chắc các bạn đã hiểu
mình đã mô phỏng rất tốt nhưng vì bận quá mình chưa thử, đáng tiếc là pic 16f877a không có lệnh nhân chia nên lập trình dài, cộng với bank thanh ghi cung nhiều nên đảo băng không thích cho lắm.haizz

kidmaster08 17-12-2012 01:11 AM

quên mất, hi. cổng PORTD nối với các chân dữ liệu của LCD. chúc các bạn vui

kidmaster08 17-12-2012 01:17 AM

nếu dùng led7thanh thì cần phải lồng đoạn chương trình hiển thị led vào trong khoảng thời gian 1s, vì nếu cứ xử lý 1s rồi mời hiển thị thì không có 24 hình/s. hj

kidmaster08 17-12-2012 01:24 AM

7 Attachment(s)
đây là các hình mình mô phỏng

kidmaster08 25-12-2012 05:28 PM

sao dạo này diễn đàn buồn quá.muốn đi cùng píc việt nam mà chả ai đi cùng
Hu hu hu

kidmaster08 29-12-2012 03:02 PM

Đã thành công trên mạch thật.


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