生成一个c语言的延时函数
时间: 2023-06-09 10:02:29 浏览: 103
好的,以下是一个简单的c语言延时函数的代码:
```c
#include <time.h>
void delay(int milliseconds) {
clock_t start_time = clock();
while (clock() < start_time + milliseconds);
}
```
你可以调用该函数来实现指定毫秒数的延时。例如,如果你想延迟1000毫秒,可以使用以下代码:
```c
delay(1000);
```
相关问题
波特率115200时用c语言生成10us的延时函数
在波特率为115200的情况下,每个数据位的时间为1/115200秒,即约为8.68微秒。因此,要生成10微秒的延时函数,需要通过循环延时的方式实现。
以下是一个简单的实现示例:
```c
void delay_10us(void)
{
unsigned int i;
for(i=0; i<86; i++) // 86个数据位时间为约749微秒,因此循环86次可以实现10微秒的延时
{
__nop(); // 空操作,消耗一点时间
}
}
```
需要注意的是,在不同的编译器和平台上,空操作的实现方式可能不同,需要根据具体情况进行调整。
用PICC 9.83生成一个微秒的延时函数,可输入值,如100 则延时100us
在Microchip PIC 微控制器上,你可以使用Peripheral Interface Controller (PIC) 的定时器功能来实现微秒级别的延迟。例如,如果你使用的是PIC16F系列,可以利用Timer 1模块来创建这样的延时函数。PIC16F系列通常使用中断来实现定时,比如通过软件定时器(TMR1)。
以下是使用C语言和9.83编译器的基本思路:
```c
#include <htc.h> // 如果你是在Hitech C编译器环境下
void microsecond_delay(unsigned int us) {
unsigned char delay_count;
// 定义定时器初值,1ms等于2^16个定时器计数周期
TMR1 = (F_CPU / 4000000 - 1); // F_CPU代表主频
// 开启定时器1
PIE1bits.TMR1IE = 1; // 紧急中断使能
GIE1bits.TMR1IE = 1; // 全局中断使能
TRISBbits.TRISB1 = 0; // 让RB1作为TMR1的溢出标志位
for (delay_count = us * 2; ; delay_count--) { // 乘以2是因为每个计数就是50us
if (RB1 == 1) { // 检查是否有溢出
RB1 = 0; // 清除溢出标志
break; // 当计数值达到设定时间就跳出循环
}
}
}
// 调用函数,比如你想延时100us
microsecond_delay(100);
```
阅读全文