PDA

View Full Version : lại làm phiền các huynh về vấn đề Delay?


kiemkhach10
27-04-2010, 10:56 PM
mình viết 1 hàm Delay như thế này:
#include <htc.h>
__CONFIG(HS & WDTDIS& LVPDIS& BORDIS);
void Delay(unsigned char n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
mình dùng PIC16F88 và THACH ANH ngoài 20000000M.
mình tính mỗi 1 chu kì máy là 0,2us.
mình để: Delay(200) = 200 x 0,2 x (100x255)=1020000 us ~ 1s
ko hiểu sao khi mình chạy trên mạch thật thì thời gian ko đúng và sai lệch rất nhiều.
mong các bạn chỉ giúp
cám ơn các bạn nhiều!

buiminhquy
28-04-2010, 05:36 PM
mình viết 1 hàm Delay như thế này:
#include <htc.h>
__CONFIG(HS & WDTDIS& LVPDIS& BORDIS);
void Delay(unsigned char n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
mình dùng PIC16F88 và THACH ANH ngoài 20000000M.
mình tính mỗi 1 chu kì máy là 0,2us.
mình để: Delay(200) = 200 x 0,2 x (100x255)=1020000 us ~ 1s
ko hiểu sao khi mình chạy trên mạch thật thì thời gian ko đúng và sai lệch rất nhiều.
mong các bạn chỉ giúp
cám ơn các bạn nhiều!
mình cũng gặp vấn đề tương tự như bạn.Mà cũng ko hiểu vì sao?
đành phải đợi các cao nhân giúp đỡ vây:D

MAINGUYEN_STU
29-04-2010, 10:22 AM
mình viết 1 hàm Delay như thế này:
#include <htc.h>
__CONFIG(HS & WDTDIS& LVPDIS& BORDIS);
void Delay(unsigned char n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
mình dùng PIC16F88 và THACH ANH ngoài 20000000M.
mình tính mỗi 1 chu kì máy là 0,2us.
mình để: Delay(200) = 200 x 0,2 x (100x255)=1020000 us ~ 1s
ko hiểu sao khi mình chạy trên mạch thật thì thời gian ko đúng và sai lệch rất nhiều.
mong các bạn chỉ giúp
cám ơn các bạn nhiều!

Chào bạn, bạn có kiểm soát được vòng lặp FOR mất bao nhiêu thời gian ko? con số 0,2 của bạn nên xem xét lại. nếu muôn đơn giảng thì dùng hàm delay có sẵn đi.
ví dụ: delay_ms(1000); thì ta có được 1s như mong muốn.

kiemkhach10
29-04-2010, 12:01 PM
Chào bạn, bạn có kiểm soát được vòng lặp FOR mất bao nhiêu thời gian ko? con số 0,2 của bạn nên xem xét lại. nếu muôn đơn giảng thì dùng hàm delay có sẵn đi.
ví dụ: delay_ms(1000); thì ta có được 1s như mong muốn.
vì mình dùng Hi-tec PIC nên ko bít hàm Delay có sẵn ở đâu?
bạn có thể port lên dùm mình ko?
cám ơn bạn!