单片机延时1秒如何计算要最详细一点的要过程 用C语言写的 晶振为12M 主要是计算过程和算法
发布网友
发布时间:2022-05-26 14:48
我来回答
共3个回答
热心网友
时间:2023-10-22 19:19
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参数和“秒分”的参数凑下就行了。
热心网友
时间:2023-10-22 19:20
用定时器1啊,12M晶振的话最大可以延时65点几ms,然后你定个初值让它定时50ms,再用一个变量累计定时函数执行的次数有20次,就是1秒了
热心网友
时间:2023-10-22 19:20
我会用汇编