写单片机C语言程序,什么时候要加延时子程序?感谢各位高人指点..非常感谢!!

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:51:29
关于AT89C52,AT89C51的单片机
关于LED,LCD显示方面的,延时短还长,它显示的清楚!感谢各位交流!

给 你段程序自己感受下:
//中断方式
#include<at89x52.h>
#define uint unsigned int
#define uchar unsigned char
//共阴数码管段码
uchar a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint i=0;
uint j=10000; //10000*0.1ms=1s
//延时子程序
delay(uint m)
{
for(;m>0;m--);
}
//显示子程序
display()
{
P2=a[i];
delay(100);
}
//中断服务子程序
void timer1() interrupt 3 using 0
{
j--;
if(j==0)
{
j=10000;
i++;
if(i>9)
i=0;
}
}
//主程序
void main()
{
TMOD=0x20; //T1定时工作方式2 8位计数结构
TH1=0x9c; //设定计数初值 定时时间(0.1ms)=(256-计数初值)*晶振周期(1/12MHz)*12
TL1=0x9c;
EA=1; //中断允许总控制位
ET1=1; //定时/计数中断允许位
TR1=1;
while(1)
display(); //数码管显示
}

你这个问题太笼统了,需要加延时的地方很多,例如在对外接芯片时序问题上,还有按键去抖,单片机软件延时进行控制,显示模块等等,很多地方都需要延时。如果是很精确的延时的话,那就得需要单片机内部的定时器了。呵呵

w13460299002 说的才是最好的 ……

c