PDA

View Full Version : Hàm delay trong c18


handsome3746
03-09-2011, 02:07 PM
mấy sư huynh cho em hỏi tí:hình như hàm delay trong c18 không chính xác phải không ạ...
em muốn delay 1s nhưng kết quả lại hơn 1s...
code của em thế này:
#include <p18f4431.h>
#include <delays.h>
#pragma config WDTEN = OFF
#pragma config LVP = OFF
#pragma config OSC = HS

void main()
{
TRISB=0;
PORTB=0;
while (1)
{
PORTB=0XFF;
Delay10KTCYx(250);
Delay10KTCYx(250);
PORTB=0;
Delay10KTCYx(250);
Delay10KTCYx(250);
}

bác nào giúp với...chắc em dùng timer để đếm quá...
nhưng hơi lạ,sao hàm có sẵn lại thiếu chính xác đến vậy...hic...
help...help...
thanks in advance!!!

handsome3746
03-09-2011, 03:13 PM
help me,plz

handsome3746
04-09-2011, 09:49 PM
không ai giup đỡ mình hết vậy...buồn vãi...

rocket42
05-09-2011, 05:57 PM
như thế này nhé bạn:
cái hàm Delay10KTCYx() tức là delay 10^4 chu kì xung nhịp của thạch anh bạn sử dụng.
ở trên theo như bạn sử dụng thì nếu đúng 1s thì bạn phải sử dụng thạch anh 5Mhz
nếu bạn sử dụng thạch anh 4Mhz hoặc nhỏ hơn thì hiển nhiên là chưong trình của bạn sẽ delay nhiều hơn.
với chưong tình của bạn thời gian delay t= 5.10^6/f (f: là tần số dao động thạch anh)
f=5Mhz thì t=1s
t=4Mhz thì t=1.25s
ok?