หัวข้อ : ตั้งหน่วงเวลาในไมโครไม่ได้อะครับ
ข้อความ : ผมเขียนโดยใช้โปรแกรมkeilนะครับ

เริ่มต้น ผมตั้ง xtal clock ที่ 24 MHz

จากนั้น เอาความถี่มาหา เวลาสัญญาณนาฬิกา 1 ลูก

1/24MHz=4.167 X 10^(-8)

จากนั้น นำมาหาเวลา 1 แมชชีนไซเคิล

4.167 X 10^(-8) X 12 = 5X10^(-7)

ผมเลือกใช้ค่าoverflow ที่ 200 เนื่องจาก
5X10^(-7) X 200 = 1X 10^(-4)

ดังนั้น ค่าที่ใช้เริ่มต้น จึงเป็น
256-200=56=0x38

ต้องการให้แสดงผลโดยการเพิ่มค่า ผ่าน Port 1 ทีละ 1
เริ่มต้นที่ 0x01 แล้ว 1++ ไปเรื่อยๆ
เพิ่มทุกครั้งที่ผ่านไป10 วินาที

ดังนั้นผมจึงใช้ตัวคูณที่ 100000

และนี่เป็นโค้ดผมครับ

#include<AT898252.H>

void del_of100u(unsigned long int xtime)
{TR0=1;
while(xtime--)
{
while(TF0==1)
{TF0=0;
}

}
TR0=0;
}

main(void)
{unsigned int i;
TH0=0x38;
TL0=0x38;
TMOD=0x02;
i=0x01;
while(1)
{P1=i;
del_of100u(10000);
i++;
}
// if(P1==0xff)
// {return(0);}
}


เมื่อรันออกแล้ว ผมลองนับในใจ 1-5 เพื่อดูว่า มีการเพิ่มค่าของP1 ไหม มันดันเพิ่มอะครับ

ผมผิดตรงไหนเนี่ยครับ




จาก : ช่วยผมที - 24/06/2006 19:41

มีข้อคิดเห็นเพิ่มเติม ร่วมแสดงความคิดเห็นได้ที่นี่
ชื่อ :
Email :
ข้อความ :


This Free service hosted by D'Server