本文目录一览:
1、单片机,C语言写的一小段程序,高手帮看看
2、设单片机的晶振频率为6MHZ编写一段延时程序约延时100ms的子程序
3、单片机中延时100毫秒的程序
4、[用for循环 和while 循环分别完成延时100毫秒的延时函数 假设晶振为12m](#用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; j < 3; j++);
}
}
给定delay(100)
即延迟100ms。
设单片机的晶振频率为6MHZ编写一段延时程序约延时100ms的子程序
机器周期 = 12 / 6MHz = 2μs
定时100ms的计数值 = 100ms / 2μs = 50000
设T1工作于方式1(16位计数器)
计数初值 = 2^16 - 50000 = 65536 - 50000 = 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; i < xxx; i++) // 此循环应为运行100ms,用仪器辅助得到xxx的值。不够就再在FOR一次。
}
}
用for循环 和while 循环分别完成延时100毫秒的延时函数 假设晶振为12m
最好直接利用定时器延时,定时1毫秒,程序中调用延时函数就行了,Delay(100)
:
uint count; // 定义外部变量
void Delay(uint k) { // 延时函数
count = k;
while(count != 0);
}
void TIME0() interrupt 1 { // 定时器0中断函数
TH0 = 0XFC;
TL0 = 0X18;
count--;
}
用C语言编写一段循环100次的延时程序。
#include <stdio.h>
int main() {
int i;
for(i = 0; i < 100; i++);
return 0;
}
哈,你想多了吧。
额,你如果是说sleep
那种形式的延时,可以在头上加#include <windows.h>
,然后:
#include <stdio.h>
#include <windows.h>
int main() {
int i, a = 1000;
for(i = 0; i < 100; i++) {
Sleep(a);
}
return 0;
}
想看一下延时效果的话,可以这样:
#include <stdio.h>
#include <windows.h>
int main() {
int i, a = 1000;
for(i = 0; i < 100; i++) {
Sleep(a);
printf("%d\n", i);
}
return 0;
}