![]() |
|
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 |
Đệ tử 3 túi
Tham gia ngày: Jul 2008
Bài gửi: 58
: |
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! |
![]() |
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Nov 2010
Bài gửi: 2
: |
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
thay đổi nội dung bởi: HDL_MTAK42, 05-10-2012 lúc 10:02 AM. |
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Nov 2010
Bài gửi: 2
: |
chú 0509592 post code lên để mọi nguời bàn luận chứ
|
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Nov 2007
Bài gửi: 8
: |
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Nov 2012
Bài gửi: 2
: |
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!
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
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 thay đổi nội dung bởi: hatuan296, 29-12-2012 lúc 07:30 PM. |
![]() |
![]() |
![]() |
#7 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
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 |
![]() |
![]() |
![]() |
#8 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
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
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
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
|
![]() |
![]() |
![]() |
#10 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
đây là các hình mình mô phỏng
|
![]() |
![]() |
![]() |
#11 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
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 |
![]() |
![]() |
![]() |
#12 |
Đệ tử 2 túi
Tham gia ngày: Sep 2010
Bài gửi: 41
: |
Đã thành công trên mạch thật.
|
![]() |
![]() |
![]() |
|
|