⑴ 单片机延时一秒的c程序
单片机延时一秒
程序是不固定的
要根据你的晶振 计算出一次循环执行需要的时间
然后 写循环次数
一般是
voiddelay_one_second(void)
{
inti;
for(i=0;i<TIMES;i++);
}
这样就可以了。 TIMES是要计算的。或者 根据示波器 自己尝试。
⑵ 单片机延时1秒如何计算要最详细一点的要过程用C语言
unsigned char rSecondCount; //秒计时数
unsigned char rMinuteCount; //分计时数
sbit IsOneSecondReach;
sbit Pulse_Sec=P1^0;
sbit Pulse_Min=P1^1;
main()
{
rSecondCount=0;
rMinuteCount=0;
TH1=0x3C;
TL1=0xAF; //定时器50ms产生一次中断 (FFFF-3CAF)us
MOD = 0x10; //定时器1工作于模式1,(用工作于模式2也可以,而且更 简便)
TR1=1; //使能定时器1
ET1=1; //开中断
EA=1; //开全局中断
while(1)
{
if (IsOneSecondReach)
{
IsOneSecondReach = 0;
//do something,如果一秒延时标志为1,则清除此标志,等待下次1秒,在此处
//执行需要执行的程序
}
}
}
/* 定时器50ms产生一次中断 */
void Timer(void) interrupt 3
{
/* 重新载入T1参数 */
TH1=0x3C;
TL1=0xAF;
/* 一秒累加 */
rSecondCount++;//秒计时+1
if (rSecondCount==20) //1sec到,50ms*20
{
IsOneSecondReach = 1;
}
}
//
脉冲宽度为50ms,如果有其他要求的话,修改T1参数和“秒分”的参数凑下就行了.
⑶ 51单片机用定时器查新的方法编写一秒的延时程序,fosc=12MHZ
一、用定时器中断,50ms中断的1 次,20次就是1秒
#include <REG51.H>
#define uchar unsigned char
sbit LED =P1^1; //接一LED,1 秒钟亮或灭一次
uchar time;
void init_t0int()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init_t0int();
while(1);
}
void t0int() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
time++;
if(time==20)
{
time=0;
LED=~LED;
}
}
二、用循环延时可能程序更简单一点,但没实际意义 。单片机在这1 秒内只能循环而不能做其它事。
#include<reg51.h>
sbit LED=P1^0;
void delay_ms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}
void main()
{
while(1)
{
delay_ms(1000);
LED=~P1^0; //P1.0接一LED,可看到LED每1S亮或灭一次
}
}
参考资料: LED
⑷ 请问在单片机C语言编程中,用delay延迟的话,1秒程序是什么单片机晶振为12MHZ
在Keil里仿真的话,在配置里把晶振调成12MHz,然后在调用delay函数的地方设置一个断点,开始调试程序,运行到断点处,注意程序左边有一个记录当前寄存器和一些状态的窗口,其中,里面有一个是专门记录当前运行了多少时间的变量,记下当前时间T1,然后按F10(不进入子函数)调试,再记录当前时间T2,则延时=T2-T1。多试几个A,差不多调到1s就够了。我一般都这么调。
你要想明白其中原理,想自己算的话,你就看看delay的汇编代码段自己算吧。
⑸ 单片机 延迟一秒程序怎么写延迟2秒我是初学者,想请教一下。
你好!
你要先写一个延时基准(50毫秒),在延时1秒就是做20次基准,2秒就是40个基准!
也可以用定时器,定时50毫秒,定时器中断计数,计数20就是1秒,计数40次就是2秒(推荐用定时器!)
仅代表个人观点,不喜勿喷,谢谢。