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)
-   -   đếm sự kiện với timer (http://www.picvietnam.com/forum/showthread.php?t=9024)

hoainam17101990 26-04-2011 11:39 PM

đế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ị.

tanbka 27-04-2011 12:23 AM

Trích:

Nguyên văn bởi hoainam17101990 (Post 44404)
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

Trích:

Nguyên văn bởi tanbka (Post 44405)
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.

tdm 27-04-2011 08:47 PM

1 Attachment(s)
Trích:

Nguyên văn bởi hoainam17101990 (Post 44408)
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:
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);
 {
 }
}


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

Trích:

Nguyên văn bởi hoainam17101990 (Post 44456)
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 8253
 
1 Attachment(s)
PIT Programmable Interval Timer 8253

Mẫu tạo âm La tần số 440Hz băng chip đếm xung Timer 8253A :)


Múi giờ GMT. Hiện tại là 11:08 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam