void Delay(unsigned int count) { unsigned int i,j; for(i=0;i<count;i++) { for(j=0;j<1000;j++); } }
时间: 2024-05-24 11:15:32 浏览: 120
这是一个简单的延时函数,函数的作用是让程序暂停一段时间。函数的参数 count 表示延时的时间,具体延时的时间是取决于 for 循环中的计数器 i 和 j 的值。其中,i 的循环次数为 count,j 的循环次数为 1000,每次 j 循环完成需要一定的时间,因此整个函数的延时时间为 count * 1000。但是,这个函数的延时精度不高,因为每个处理器的时钟频率不同,所以不同的处理器上执行该函数的延时时间可能会不同。
相关问题
#include <reg52.h> #define LED_COUNT 8 sbit LED1 = P1^0; sbit LED2 = P1^1; sbit LED3 = P1^2; sbit LED4 = P1^3; sbit LED5 = P1^4; sbit LED6 = P1^5; sbit LED7 = P1^6; sbit LED8 = P1^7; void delay(unsigned int msec) { unsigned int i, j; for (i = 0; i < msec; i++) for (j = 0; j < 125; j++); } void blink(int led, int count) { int i; for (i = 0; i < count; i++) { P1 &= ~(1 << led); delay(1000); P1 |= (1 << led); delay(1000); } } void main() { int i; TMOD = 0x01; TH0 = 0xFC; TL0 = 0x66; TR0 = 1; while (1) { for (i = 0; i < LED_COUNT; i++) { blink(i, 10); } } }
这是一个使用定时器和循环结构来实现多个LED灯闪烁的程序。程序中定义了8个LED灯的控制引脚,并使用了一个延时函数和一个闪烁函数。
闪烁函数根据传入的参数控制相应的LED灯闪烁,闪烁次数为传入的count参数。闪烁时先将对应的LED灯的引脚置为低电平,延时1秒后再将对应的引脚置为高电平,再延时1秒,实现闪烁效果。
主函数使用循环结构和闪烁函数实现多个LED灯的不断闪烁。通过for循环依次控制8个LED灯闪烁,每个LED灯闪烁10次,然后再循环控制下一个LED灯闪烁。
具体的程序实现可以参考如下代码:
```c
#include <reg52.h>
#define LED_COUNT 8
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
void delay(unsigned int msec)
{
unsigned int i, j;
for (i = 0; i < msec; i++)
for (j = 0; j < 125; j++);
}
void blink(int led, int count)
{
int i;
for (i = 0; i < count; i++) {
P1 &= ~(1 << led);
delay(1000);
P1 |= (1 << led);
delay(1000);
}
}
void main()
{
int i;
TMOD = 0x01; //设置定时器0为模式1
TH0 = 0xFC; //设置定时器0的高8位为0xFC
TL0 = 0x66; //设置定时器0的低8位为0x66
TR0 = 1; //启动定时器0
while (1) {
for (i = 0; i < LED_COUNT; i++) {
blink(i, 10); //控制每个LED灯闪烁10次
}
}
}
```
需要注意的是,程序中使用了定时器来控制延时函数的精度。在程序中,定时器0被设置为模式1,每个计数周期为1毫秒。在blink函数中,延时1秒的实现是通过循环125次来实现的,每个循环周期为8微秒,因此125个循环周期大约等于1毫秒。
void Alarm(unsigned int count) { unsigned char i; while(count>0) { for(i=0;i<200;i++) { DelayUs2x(245); SPEAKER=!SPEAKER; } SPEAKER=0;//·ÀÖ¹Ò»Ö±¸øÀ®°ÈͨµçÔì³ÉË𻵠for(i=0;i<200;i++) { DelayMs(1); } count--; } }
这段代码是用来实现蜂鸣器报警功能的,函数名为Alarm,参数为报警次数count,使用了一个while循环和两个for循环来控制蜂鸣器的响声和停顿时间。在每个循环中,使用了一个DelayUs2x函数和一个DelayMs函数来实现延时。其中,DelayUs2x函数是一个延时函数,可以实现微秒级别的延时;DelayMs函数是一个延时函数,可以实现毫秒级别的延时。在每个循环中,通过改变SPEAKER的值,来控制蜂鸣器的响声。当count减为0时,函数结束。
阅读全文