用C语言for循环写一个通用延时函数
时间: 2023-09-14 08:14:26 浏览: 279
好的,以下是用C语言for循环写一个通用延时函数的示例代码:
```
void delay(unsigned int ms) {
for(unsigned int i = 0; i < ms; i++) {
for(unsigned int j = 0; j < 120; j++) {
// do nothing
}
}
}
```
注意:这个延时函数的精度取决于循环次数,而循环次数又与处理器的时钟频率有关,因此在不同的处理器上可能需要调整循环次数以达到需要的延时精度。另外,这个函数会占用 CPU 的运算资源,因此不适用于需要同时进行其他操作的场景。
相关问题
用C语言写一个点亮Led代码
### 回答1:
好的,以下是一个简单的用C语言写的点亮LED的代码:
```
#include <stdio.h>
#include <wiringPi.h>
int main()
{
wiringPiSetup(); //初始化wiringPi库
pinMode(0, OUTPUT); //将GPIO0引脚设置为输出模式
while(1)
{
digitalWrite(0, HIGH); //将GPIO0引脚电平设置为高电平,点亮LED
delay(1000); //延时1秒
digitalWrite(0, LOW); //将GPIO0引脚电平设置为低电平,熄灭LED
delay(1000); //延时1秒
}
return 0;
}
```
该代码使用了`wiringPi`库来进行树莓派的GPIO口的初始化和控制,其中`digitalWrite()`函数用于设置GPIO引脚的电平,`delay()`函数用于进行延时操作。在`pinMode()`函数中将GPIO0引脚设置为输出模式,然后在`while`循环中不断点亮LED,再熄灭LED,循环往复。
### 回答2:
使用C语言编写点亮LED的代码通常涉及到控制硬件的接口,比如使用GPIO(通用输入输出)引脚。以下是一个简单的示例代码:
```c
#include <wiringPi.h>
#define LED_PIN 0 // 使用物理引脚11(GPIO 0)控制LED
int main(void) {
// 初始化wiringPi库
wiringPiSetup();
// 设置引脚为输出模式
pinMode(LED_PIN, OUTPUT);
while(1) {
// 点亮LED
digitalWrite(LED_PIN, HIGH);
// 延迟一段时间
delay(1000); // 延迟1秒
// 关闭LED
digitalWrite(LED_PIN, LOW);
// 延迟一段时间
delay(1000); // 延迟1秒
}
return 0;
}
```
这段代码使用了wiringPi库来控制设备的GPIO引脚,其中`wiringPiSetup()`函数用于初始化wiringPi库,`pinMode()`函数用于设置GPIO引脚的模式为输出模式,`digitalWrite()`函数用于控制GPIO引脚输出高电平还是低电平,`delay()`函数用于延迟一定的时间。
注意:上述示例代码假定物理引脚11与GPIO 0关联,你需要根据你的硬件相关文档或引脚映射表来确定正确的引脚和GPIO编号。
### 回答3:
要用C语言写一个点亮LED的代码,首先需要确定使用的硬件平台。假设我们使用的是基于51系列单片机的开发板,其中有一个LED连接到P1口的一个IO口上。
首先,我们需要在代码中包含头文件和宏定义,以便能够使用相应的寄存器和位操作函数。例如:
```
#include <reg51.h>
#define LED_PIN P1_0
```
然后,我们需要初始化IO口的方向,将其配置为输出模式。我们可以使用P1口的相应位操作函数,代码如下:
```
void initLed() {
LED_PIN = 0; // 将LED引脚置为低电平
P1 |= (1 << 0); // 将P1口配置为输出模式
}
```
接下来,我们可以定义一个点亮LED的函数,使LED引脚输出高电平。代码如下:
```
void lightUpLed() {
LED_PIN = 1;
}
```
最后,我们可以在主函数中调用初始化函数和点亮LED函数来完成整个动作。代码如下:
```
int main() {
initLed(); // 初始化LED引脚
lightUpLed(); // 点亮LED
while(1); // 保持程序运行
return 0;
}
```
以上代码中,我们首先调用了初始化函数将LED引脚配置为输出模式,并将其置为低电平。接着,我们调用点亮LED的函数,将LED引脚置为高电平,从而实现LED点亮的效果。最后,我们让程序处于一个死循环中,保持程序持续运行。
这样,就通过C语言编写了一个简单的点亮LED的代码。当代码被烧录到单片机上运行时,LED将会被点亮。
用C语言写一个可以控制C51单片机蜂鸣器的能播放小星星的代码
由于C51单片机的具体型号和硬件连接方式不同,因此无法提供通用的代码。以下代码仅供参考,需要根据实际情况进行修改和调试。
```
#include <reg51.h>
#define BEEP P2
unsigned int music[] = { // 小星星音乐频率表
659, 659, 880, 880, 987, 987, 880, 0,
784, 784, 699, 699, 659, 659, 587, 0,
880, 880, 784, 784, 699, 699, 659, 0,
880, 880, 784, 784, 699, 699, 659, 0,
659, 659, 880, 880, 987, 987, 880, 0,
784, 784, 699, 699, 659, 659, 587, 0,
880, 880, 784, 784, 699, 699, 659, 0,
880, 880, 784, 784, 699, 699, 659, 0,
659, 659, 880, 880, 987, 987, 880, 0,
784, 784, 699, 699, 659, 659, 587, 0,
880, 880, 784, 784, 699, 699, 659, 0,
880, 880, 784, 784, 699, 699, 659, 0,
659, 659, 880, 880, 987, 987, 880, 0,
784, 784, 699, 699, 659, 659, 587, 0,
880, 880, 784, 784, 699, 699, 659, 0,
880, 880, 784, 784, 699, 699, 587, 0
};
unsigned int duration[] = { // 小星星音乐节拍表
500, 500, 1000, 500, 500, 1000, 500, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
500, 500, 1000, 500, 500, 1000, 500, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
500, 500, 1000, 500, 500, 1000, 500, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
500, 500, 1000, 500, 500, 1000, 500, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 1000, 500,
1000, 500, 500, 1000, 500, 500, 2000, 0
};
void delay(unsigned int t) { // 延时函数
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 120; j++);
}
void main() {
unsigned int i, j;
while (1) {
for (i = 0; i < sizeof(music) / sizeof(music[0]); i++) {
if (music[i] == 0) { // 暂停
delay(duration[i]);
} else { // 发声
for (j = 0; j < duration[i] * 1000 / music[i] / 2; j++) {
BEEP = ~BEEP;
delay(1);
}
}
}
}
}
```
以上代码实现了一个可以播放小星星的程序。其中,`music`数组为小星星音乐频率表,`duration`数组为小星星音乐节拍表,`delay()`函数为延时函数,`main()`函数为主函数。
在主函数中,使用一个无限循环,不断地按照音乐频率表和节拍表发声或暂停。发声时,通过循环计算每个音符需要的时间,然后在这个时间内交替控制蜂鸣器输出高低电平,从而发出声音。
需要注意的是,以上代码中使用的是简单的软件延时方式,可能导致实际播放的音乐与预期有偏差。如果需要更精确的播放效果,可以使用定时器或其他硬件方式实现延时。