本文目錄一覽:
- 1、51單片機求10微秒的延時函數 C語言(晶振11.0592MHz)
- 2、用C語言怎麼在單片機AT89C51上編寫一個延時10秒的程序?
- 3、求單片機C語言延時程序(延時10s)
- 4、51單片機的10ms延時C語言程序~~~急啊!!!
- 5、單片機C語言的精確延時問題!!! 這個能不能實現延時10ms? 如果能幫忙解釋一下,如果不能,怎麼
- 6、急需一個延時10秒的C語言程序,求大師幫忙,謝謝
51單片機求10微秒的延時函數 C語言(晶振11.0592MHz)
1、下面幾個是單片機的延時程序(包括asm和C程序,都是我在學單片機的過程中用到的),在單片機延時程序中應考慮所使用的晶振的頻率,在51系列的單片機中我們常用的是11.0592MHz和12.0000MHz的晶振,而在AVR單片機上常用的有8.000MHz和4.000MH的晶振所以在網上查找程序時如果涉及到精確延時則應該注意晶振的頻率是多大。
2、軟體延時:(asm)
晶振12MHZ,延時1秒
程序如下:
DELAY:MOV
72H,#100
LOOP3:MOV
71H,#100
LOOP1:MOV
70H,#47
LOOP0:DJNZ
70H,LOOP0
NOP
DJNZ
71H,LOOP1
MOV
70H,#46
LOOP2:DJNZ
70H,LOOP2
NOP
DJNZ
72H,LOOP3
MOV
70H,#48
LOOP4:DJNZ
70H,LOOP4
定時器延時:
晶振12MHZ,延時1s,定時器0工作方式為方式1
DELAY1:MOV
R7,#0AH
;;晶振12MHZ,延時0.5秒
AJMP
DELAY
DELAY2:MOV
R7,#14H
;;晶振12MHZ,延時1秒
DELAY:CLR
EX0
MOV
TMOD,#01H
;設置定時器的工作方式為方式1
MOV
TL0,#0B0H
;給定時器設置計數初始值
MOV
TH0,#3CH
SETB
TR0
;開啟定時器
HERE:JBC
TF0,NEXT1
SJMP
HERE
NEXT1:MOV
TL0,#0B0H
MOV
TH0,#3CH
DJNZ
R7,HERE
CLR
TR0
;定時器要軟體清零
SETB
EX0
RET
3、C語言延時程序:
10ms延時子程序(12MHZ)
void
delay10ms(void)
{
unsigned
char
i,j,k;
for(i=5;i0;i–)
for(j=4;j0;j–)
for(k=248;k0;k–);
}
1s延時子程序(12MHZ)
void
delay1s(void)
{
unsigned
char
h,i,j,k;
for(h=5;h0;h–)
for(i=4;i0;i–)
for(j=116;j0;j–)
for(k=214;k0;k–);
}
200ms延時子程序(12MHZ)
void
delay200ms(void)
{
unsigned
char
i,j,k;
for(i=5;i0;i–)
for(j=132;j0;j–)
for(k=150;k0;k–);
}
500ms延時子程序程序:
(12MHZ)
void
delay500ms(void)
{
unsigned
char
i,j,k;
for(i=15;i0;i–)
for(j=202;j0;j–)
for(k=81;k0;k–);
}
用C語言怎麼在單片機AT89C51上編寫一個延時10秒的程序?
1、十秒對於單片機來說是很長很長的時間了,單片機十秒的時間什麼事都不能做,只在跑這延時程序,那是什麼概念,用中斷的話,單片機正常運行其他程序,只是時間到了才過來處理延時以後的程序,效率不知道高了多少 。
2、常式:
//假設晶振12MHZ
#include “reg51.h”
unsigned int YSJS=0;
void main(void)
{
TMOD |= 0X10; //定時器1工作於方式1,16位定時器
TH1 = 0XFF; //定時器1定時時間=500uS
TL1 = 0X06;
ET1 = 1; //使能定時器1中斷
EA =1; //開總中斷
while(1)
{
}
}
void TIMER1(void) interrupt 3 //定時器1中斷函數使用默認寄存器組
{
TH1 = 0XFF; //定時器1定時時間=500us
TL1 = 0X06;
YSJS++;
if(YSJS==20000) //500uS*20000=10000000us=10s
{
P1 = P1 ^ 0X01; //P1.0十秒鐘翻轉一次
YSJS = 0
}
}
求單片機C語言延時程序(延時10s)
用定時器做吧,DELAY了不能做別的事情,效率太低了。做一個1ms的定時程序,再到計數10000次的時候執行一次你要的程序(比如說置位某個變數),這樣就可以了。51就那麼幾個寄存器,看一下就可以了設定了,TH和TL只要記住計數到0的時候,會產生中斷就可以了
51單片機的10ms延時C語言程序~~~急啊!!!
延時函數很常見:
delay1ms(unsigned
int
tt)
//延時1ms
{
unsigned
char
i;
while(tt–)
for(i
=
113;
i
0;
i–);
}
反覆多次調用即可。
但是,用軟體延時,觀察起來,就像死機一樣,經常會誤事的。
單片機C語言的精確延時問題!!! 這個能不能實現延時10ms? 如果能幫忙解釋一下,如果不能,怎麼
延時時間和單片機晶振頻率有關,12MHZ的時候單片機執行一條基本指令需要的時間是1us
急需一個延時10秒的C語言程序,求大師幫忙,謝謝
#includedos.h
void fun()
{
delay(10000);
}
調用系統的延遲函數delay,該函數的延時單位是毫秒,所以括弧內寫10000毫秒,即延遲10秒
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243781.html