導航:首頁 > 操作系統 > 單片機1ms延時

單片機1ms延時

發布時間:2023-08-04 19:42:21

A. 設單片機系統採用6M晶振,寫出用定時器1方式2實現1ms的延時程序

6M晶振,方式2定時1mS的時間太長,不能直接實現,(最大定時應該是512uS)下面是500uS定時示常式序,可在中斷函數中計數每2次得1S。
void Timer1Init(void) //500微秒@6.000MHz
{
AUXR &= 0xBF; //定時器時鍾12T模式
TMOD &= 0x0F; //設置定時器模式
TMOD |= 0x20; //設置定時器模式
TL1 = 0x06; //設置定時初值
TH1 = 0x06; //設置定時重載值
TF1 = 0; //清除TF1標志
TR1 = 1; //定時器1開始計時
}

B. C51單片機,誰幫我寫個1ms的延時

void delay(uint i) //調用子程序所需時間)
{
uchar j,k;
for (j=i; j>0; j--)
for(k=0;k<30;k++);
}

在程序調用函數就可以得到1ms的程序,具體調用如下:
delay(10); //延時1.011ms

C. 51單片機中,寫個延時函數,延時1ms,該怎麼寫,為什麼

用匯編語言寫可以精確計算,但有時想拼出整數的ms或10ms也不容易,計算方法如下圖說明:

而C語言靠經驗和實驗得來的,如下面程序

如果不準(與晶振頻率有關),調K的值,,軟體模擬查看,直到大致准確,想更精確用定時器

void delay(unsigned char i)//延時程序
{

unsigned chari,k;

for(j=i;j>0;j--)
for(k=125;k>0;k--);
}

D. 單片機延時1ms問題

首先,不知道你的晶振頻率是多少,然後不知道你使用的是哪種類型的單片機。
我根據KEILC的測試:for循環這個語句是雙周期指令2個機器周期,j=0;j<33;j++。這有三步單周期指令,每次三個機器周期。。。所以時間是(3j+2) 乘以循環次數i。就是時間微秒
上述指令在12MHZ的晶振頻率,AT89S52的單片機測試情況下為0.0001060秒。也就是1MS

E. 求一個1ms的單片機C語言延時程序

void
delay(char
x)
{
unsigned
char
a,b,c;
for(c=x;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
學過標准C就知道了,char

int
是可以相互轉換的,char的取值范圍是-128~+127
unsigned
char
的是0~255
可以用unsigned
int啊,我一般都是用char的,用unsigned
int的話占的位元組比較多,運行速度也沒char那麼快,計算機會麻煩點,建議使用char

閱讀全文

與單片機1ms延時相關的資料

熱點內容
如何讓軟體在多個安卓系統上運行 瀏覽:573
java判斷半形 瀏覽:880
java判斷正負 瀏覽:320
刷頭條程序員的日常 瀏覽:102
吉林程序員吐槽 瀏覽:243
單片機溫度范圍 瀏覽:419
程序員為什麼素質低 瀏覽:897
可愛的程序員小姐姐 瀏覽:145
伺服器上網站的地址 瀏覽:798
蘋果平板如何找到app資源庫 瀏覽:321
阿里雲可以雲伺服器地址 瀏覽:249
熊貓繪畫app如何導入圖片 瀏覽:555
如何自己編輯手機app 瀏覽:924
程序員那麼可愛帶的項鏈 瀏覽:532
安卓系統導航mic什麼意思 瀏覽:192
編譯sdk如何輸出bin文件 瀏覽:679
如何用html5開發app 瀏覽:143
怎麼隱藏蘋果的app 瀏覽:328
上海捷豹空氣壓縮機 瀏覽:458
51單片機換行 瀏覽:739