步驟如下所示:
1、在編譯器下建立一個新專案,也可以利用已有專案。此過程中需要注意,微控制器晶振的選擇,因為for迴圈裡指令的執行時間和晶振有直接關係,本例中晶振使用11.0592M。
2、編寫一段關於延時的函式,主要利用for迴圈,程式碼如下:
void delay_ms(unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
其中ms是輸入引數,如果輸入1,就是要求程式延時1ms。j變數是調整程式執行的時間引數。調整j的數值,使1次迴圈的時間在1ms。
3、將此程式編譯透過,然後利用軟體模擬,調整時間。
4、兩次時間差就是延時函式使用的時間,如果與1ms相差比較多,使用者可以調整j引數的值,使延時時間儘量接近1ms。如增大j的值for(j=0;j<105;j++);此方法得出延時函式,在晶振不同的情況下,延時時間會不準。另外這種方法不是完全精確的延時,所以不要太深研究誤差的問題。軟體除錯結果,這個程式的延時時間為:1.01779ms,一般的微控制器系統中都可以應用。
步驟如下所示:
1、在編譯器下建立一個新專案,也可以利用已有專案。此過程中需要注意,微控制器晶振的選擇,因為for迴圈裡指令的執行時間和晶振有直接關係,本例中晶振使用11.0592M。
2、編寫一段關於延時的函式,主要利用for迴圈,程式碼如下:
void delay_ms(unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
其中ms是輸入引數,如果輸入1,就是要求程式延時1ms。j變數是調整程式執行的時間引數。調整j的數值,使1次迴圈的時間在1ms。
3、將此程式編譯透過,然後利用軟體模擬,調整時間。
4、兩次時間差就是延時函式使用的時間,如果與1ms相差比較多,使用者可以調整j引數的值,使延時時間儘量接近1ms。如增大j的值for(j=0;j<105;j++);此方法得出延時函式,在晶振不同的情況下,延時時間會不準。另外這種方法不是完全精確的延時,所以不要太深研究誤差的問題。軟體除錯結果,這個程式的延時時間為:1.01779ms,一般的微控制器系統中都可以應用。