本文目录一览:
- 1、单片机,C语言写的一小段程序,高手帮看看
- 2、设单片机的晶振频率为6MHZ编写一段延时程序约延时100ms的子程序
- 3、单片机中延时100毫秒的程序
- 4、用for循环 和while 循环分别完成延时100毫秒的延时函数 假设晶振为12m
- 5、用C语言编写一段循环100次的延时程序。
单片机,C语言写的一小段程序,高手帮看看
这是一个简单的流水灯实验,前面的void
delay(uint)是一个函数申明,你这一段里面没有给delay函数,给的程序不够清晰。
如果是延迟100ms的话,delay函数应该是这样的:
void
delay(unsigned
int
x)
{
unsigned
int
i,j;
for(
i
=0;i
x;i++
)
{
for(
j
=0;j3;j++
);
}
}
给定delay(100)即延迟100ms。
设单片机的晶振频率为6MHZ编写一段延时程序约延时100ms的子程序
机器周期=12/6MHz=2μs
定时100ms的计数值 =100ms/2μs =50000
设T1工作于方式1(16位计数器)
计数初值 =2^16 -50000=65536=15536=3CB0H
MOV TMOD,#10H ;; T1工作方式1、定时模式
MOV TH1,#3CH ;; 写入计数初值高8位
MOV TL1,#B0H ;; 写入计数初值低8位
SETB TR1 ;; 启动T1,开始计时
SETB ET1 ;; 允许T中断
SETB EA ;; CPU开中断
SJMP $ ; ; 等待T1计时溢出中断
单片机中延时100毫秒的程序
汗!问这个问题说明你对时钟周期、机器周期、定时器周期都不太了解吧。
延时100毫秒的程序可以是一个函数,也可以是利用定时器的一段代码。
如果是用汇编延时那么你要把单片机指令周期表翻一下了,看看整个循环语句用了哪些指令,每个指令多少个机器周期,然后计算每个机器周期耗时多少时长,你就知道循环多少次了。
如果用C语言延时,那么就要借助仪器了,你同样要估算一下机器周期和循环次数,然后要精确到100ms就需要把这个延时时间作为频率从单片机IO口输出,用仪器来辅助测量,最后得出叫准确的100ms的循环次数的值。
如:
void delay_100ms(uint8 n)
{
uint16 i;
while(n)
{
for(i=0;ixxx;i++)//此循环应为运行100ms,用仪器辅助得到xxx的值。不够就再在FOR一次。
}
}
用for循环 和while 循环分别完成延时100毫秒的延时函数 假设晶振为12m
最好直接利用定时器延时,定时1毫秒,程序中调用延时函数就行了,Delay(100): uint count; //定义外部变量 Delay( uint k) // 延时函数 { count = k; while(count!=0) ; } TIME0() interrupt 1 // 定时器0中断函数 { TH0 = 0XFC; TL0 = 0X18; count--; }
用C语言编写一段循环100次的延时程序。
#include stdio.h
int main()
{
int i;
for(i=0;i100;i++);
return 0;
}
哈 你想多了把
额,你如果是说sleep那种形式的延时,可以在头上加#include windows.h
然后
#include stdio.h
#include windows.h
int main()
{
int i,a=(1000);
for(i=0;i100;i++)
{
sleep(a);
}
return 0;
}
想看一下延时效果的话,可以这样:
#include stdio.h
#include windows.h
int main()
{
int i,a=(1000);
for(i=0;i100;i++)
{
sleep(a);
printf("%d\n",i);
}
return 0;
}