|
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 |
|
26-04-2011, 11:39 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 9
: |
đếm sự kiện với timer
Mình mới tìm hiểu về PIC.đang có 1 bài toán mong mọi người giúp:
Đếm số tự nhiên từ 1 đến 9 hiển thị trên LED7 dùng chức năng đếm sự kiện của timer.Và VDK phải được nối đến 1 button,mỗi khi nhấn button thì LED7 tăng lên 1 đơn vị. |
27-04-2011, 12:23 AM | #2 |
Đệ tử 5 túi
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
: |
Cấu hình Timer dùng bộ đếm đống bộ (Synchronous timer), khi đó timer sẽ đếm tăng theo tín hiệu đầu vào của timer đó.
|
27-04-2011, 12:54 AM | #3 | |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 9
: |
Trích:
đoạn code này do mình viết nhưng chưa chạy.bạn xem giúp mình nó sai ở đâu nha.Thanks nhiều!! #include "E:\Code_CCS\demskien\demsk.h" #include "DEF_877A.H" #use delay(clock=1000000) int count=0; #int_ext void ngat_RB0(){ count++; PORTD=count; if(count==9) count=0; } void main() { TRISB=0xff; TRISD=0x00; PORTD=0x00; PORTB=0xff; enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); while(1); } |
|
27-04-2011, 08:47 PM | #4 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
Code:
#include <16F877a.H> #fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP #use delay(clock=1000000) int count=0; #int_ext void ngat_RB0(){ count++; output_d(count); if(count>=10) { count=0; output_d(count); } } void main() { set_tris_d(0x00); output_d(0x00); enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); while(1); { } }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
27-04-2011, 10:56 AM | #5 |
Đệ tử 5 túi
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
: |
Bài này bạn sử dụng ngắt chứ không phải timer đếm sự kiện hix....
Bạn xuất trực tiếp số ra PORTD (PORTD = count) thì LED hiển thị không đúng là phải rồi để LED hiển thị đúng bạn phải mã hóa cho LED trước. VD nếu muốn LED hiển thị số 0 thì PORTD phải có giá trị khác để làm sao cho các thanh của LED: a,b,c,d,e,f sáng. |
27-04-2011, 04:27 PM | #6 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 9
: |
Minh sẽ nối PORTD với 1 con giải mã BCD 7447 mà
|
27-04-2011, 06:08 PM | #7 |
Đệ tử 5 túi
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
: |
Oh thế có nghĩa là chip của bạn đang bị đơ à, trong chương trình bạn chưa có khai báo chip sử dụng, thạch anh rồi các bit cấu hình nữa.
|
27-04-2011, 11:56 PM | #8 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 9
: |
Bạn cho mình hỏi khi mô phỏng trên proteus thì có cần thiết phải set fuse ko.Vì đoạn code trên mình mô phỏng chạy ngon,mà PIC ko bị đơ j cả.hi
#include "E:\Code_CCS\demskien\demsk.h"//dòng này chính là dòng mình đã khai báo sử dụng chíp |
29-04-2011, 11:37 AM | #9 | |
Đệ tử 5 túi
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
: |
Trích:
Tốt nhất khi chạy mô phỏng bạn cũng làm như thật luôn ý, để đến lúc làm mạch thật đỡ phải hoang mang hii... |
|
10-06-2011, 07:41 PM | #10 |
Nhập môn đệ tử
Tham gia ngày: Jul 2010
Bài gửi: 1
: |
Pit 8253
PIT Programmable Interval Timer 8253
Mẫu tạo âm La tần số 440Hz băng chip đếm xung Timer 8253A |
|
|