View Full Version : đếm sự kiện với timer
hoainam17101990
26-04-2011, 11:39 PM
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ị.
tanbka
27-04-2011, 12:23 AM
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ị.
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 đó.
hoainam17101990
27-04-2011, 12:54 AM
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 đó.
bạn giải thích rõ hơn cho mình được ko,mình vẫn chưa hiểu lắm.
đ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);
}
tanbka
27-04-2011, 10:56 AM
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.
hoainam17101990
27-04-2011, 04:27 PM
Minh sẽ nối PORTD với 1 con giải mã BCD 7447 mà
tanbka
27-04-2011, 06:08 PM
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.
bạn giải thích rõ hơn cho mình được ko,mình vẫn chưa hiểu lắm.
đ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);
}
code đã sửa:
#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);
{
}
}
hoainam17101990
27-04-2011, 11:56 PM
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
tanbka
29-04-2011, 11:37 AM
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
Oh sorry mình chưa dùng chương trình mô phỏng lần nào cả, nên ko bit hiii
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...
hungvu11
10-06-2011, 07:41 PM
PIT Programmable Interval Timer 8253
Mẫu tạo âm La tần số 440Hz băng chip đếm xung Timer 8253A :)
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.