标题:
delay(0)对单片机定时中断有影响吗
[打印本页]
作者:
learn_c51
时间:
2017-11-7 16:06
标题:
delay(0)对单片机定时中断有影响吗
当我把delay(5000)改成delay(10000)后,数字管上数字滚动延时时间变很长也不规律
单片机源程序:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,num;
sbit duan=P2^2;
sbit wei=P2^3;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint t);
void InitTimer();
void main()
{
num=0;
InitTimer();
temp=0xfe;
P1=temp;
duan=1;
P0=table[0];
duan=0;
wei=1;
P0=0x00;
wei=0;
while(1)
{
delay(5000);
temp=_crol_(temp,1);
P1=temp;
if(aa==40)
{
aa=0;
num++;
if(num==16)
num=0;
duan=1;
P0=table[num];
duan=0;
}
}
}
void delay(uint t)
{
while(t--);
}
void InitTimer()
{
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void Timer() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
复制代码
作者:
bryce1111
时间:
2017-11-7 17:14
肯定有啊
作者:
prostone
时间:
2017-11-7 20:04
1.)一般来说说既然已用中断来计时,为何还要另外调用延迟程序???除非延迟程序时间太短!!
2.)假设中断设初始定成2mSec.而且中断程序中运算后利用标号来表示各时间段到达(timeout);
eg.
2*25=50mS//给按键去抖用标号
2*250=500mS//给秒点用标号
...
3.)主程序中只要判断所须标号,是否为真再清除即可.
作者:
slzqm
时间:
2017-11-7 20:17
是有影响的吧
作者:
slzqm
时间:
2017-11-7 20:17
应该有的吧,存在即合理
作者:
小润龙
时间:
2017-11-7 21:30
调用延时函数的话是根据单片机内部处理指令的时间来计算的,本来就不会很准确,只是一个大致的时间,即处理一条指令说用的时间
延时函数采用循环语句,单片机处理一条指令的时间乘以循环的次数就是你要求的时间,而单片机处理一条指令的时间不是一个准确的时间,不精确,只是一个大致的时间,不知道您能明白吗?如果还有问题请私聊我,
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1