标题:
初学单片机,请问一个延时的问题
[打印本页]
作者:
51老鹰
时间:
2022-8-8 10:31
标题:
初学单片机,请问一个延时的问题
#include <STC11F.h>
#define uint unsigned int
#define uchar unsigned char
#include "intrins.h"
sbit ge=P3^5;
sbit shi=P3^4;
sbit bai=P3^3;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,};
uint num;
void delay(uint);
void main(void)
{
uint i;
while(1)
{
{
P3=0xff;
P1=0xff;
delay(2);
bai=0;
P1=table[num/100];
delay(15);
}
{
P3=0xff;
P1=0xff;
delay(2);
shi=0;
P1=table[num/10%10];//送个位段码
delay(15);
}
{
P3=0xff;
P1=0xff;
delay(2);
ge=0;
P1=table[num%10];
delay(15);
}
i++;
if(i==100) //大概是1秒
{
i=0;
num++;
if(num>1000)
{
num=0;
}
}
delay(1); //延时约1ms,以此控制主循环周期
}
}
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
作者:
51老鹰
时间:
2022-8-9 13:39
不会编辑,下文没接上,我重新试试
作者:
51老鹰
时间:
2022-8-9 13:40
初学51,只学到了延时函数阶段,这个是我按照我的理解写的一个三位数码管999倒计时,其中自增加部分是是抄前辈的,
i++;
if(i==100) //大概是1秒
{
i=0;
num++;
if(num>1000)
{
num=0;
}
就是这一段有点不能理解,i==100是如何延时的,按我的理解这个要写成
{
num=0,num<1000,num++;
delay(1000);
if(num=1000);
num=0;
}
每一秒钟num自加一,直到满1000,然后归0.
作者:
墨鱼腌肉
时间:
2022-8-10 16:55
这个i要进这个函数void delay(uint xms) //延时函数;
void delay() //延时函数
{
uint i,j;
for(i=100;i>0;i--)
for(j=110;j>0;j--);
}
这样去理解
作者:
lkc8210
时间:
2022-8-10 17:54
看代码不能断章取义
你的代码可以简化为
while(1)
{
i++;
if(i==100) //大概是1秒
{
i=0;
num++;
}
delay(1);//延时约1ms,以此控制主循环周期<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
复制代码
这样看的出如何延时的吧?
作者:
51老鹰
时间:
2022-10-22 17:04
感谢两位老师的指点,是我理解片面了,要从总局来看这个。再次感谢两位老师。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1