View Single Post
Old 31-03-2009, 12:03 AM   #1
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
TÍnh toán thời gian trong CCS C

Mình đang chuyển sang lập trình PIC bằng PIC C nhưng cái tính toán thời gian lệnh ,chu kỳ lệnh chưa biết tính toán thế nào cho đúng.Thứ nhất là vể chu kỳ lệnh của các lệnh trong PIC C:delay_ms();output_D()...Cái này tham khảo ở đâu vậy vì trong datasheet của PIC chỉ nói đến chu kỳ lệnh của mã asembly thôi.Lấy ví dụ chương trình này :
Code:
/*   CONTINUE.C
*/

#include "16F877A.H"
#use delay(clock=4000000)

main()
{
   int outbyte;

    restart: outbyte=0;

    while(1)
    {
        output_D(outbyte);
        delay_ms(2);
        outbyte++;
                 
        if (!input(PIN_D0)) continue;
        if (!input(PIN_D1)) break;
        delay_ms(2);
        if (outbyte==100) goto restart;
    }
}
Ở trên ta khai báo clock=4000000 tức là 1 chu kỳ lệnh là =4*t0=4*(1/4000000)=1us
Các câu hỏi chưa có câu trả lời là:
1> Lệnh delay(clock=4000000) ảnh hưởng như thế nào tới lệnh delay_ms(2).Bởi vì delay_ms(2) tức là tạm dừng 2s,vậy clock kia ảnh hưởng thế nào?????
2> Khi chạy debug thi khi den lệnh delay_ms(2) thì nó sẽ trở về dòng #use delay(clock=4000000),và dừng ở đó 8 lần .Phải chăng 2 trong dòng lệnh delay_ms(2) kia là...?
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn