|
หัวข้อ : ตั้งหน่วงเวลาในไมโครไม่ได้อะครับ ข้อความ : ผมเขียนโดยใช้โปรแกรม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 |