汗!问这个问题说明你对时钟周期、机器周期、定时器周期都不太了解吧。
公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出彭泽免费做网站回馈大家。
延时100毫秒的程序可以是一个函数,也可以是利用定时器的一段代码。
如果是用汇编延时那么你要把单片机指令周期表翻一下了,看看整个循环语句用了哪些指令,每个指令多少个机器周期,然后计算每个机器周期耗时多少时长,你就知道循环多少次了。
如果用C语言延时,那么就要借助仪器了,你同样要估算一下机器周期和循环次数,然后要精确到100ms就需要把这个延时时间作为频率从单片机IO口输出,用仪器来辅助测量,最后得出叫准确的100ms的循环次数的值。
如:
void delay_100ms(uint8 n)
{
uint16 i;
while(n)
{
for(i=0;ixxx;i++)//此循环应为运行100ms,用仪器辅助得到xxx的值。不够就再在FOR一次。
}
}
最好直接利用定时器延时,定时1毫秒,程序中调用延时函数就行了,Delay(100): uint count; //定义外部变量 Delay( uint k) // 延时函数 { count = k; while(count!=0) ; } TIME0() interrupt 1 // 定时器0中断函数 { TH0 = 0XFC; TL0 = 0X18; count--; }
delay100ms延时函数 i=0xfe 在一直循环减到0的时候再重置为0xfe 也就是说这个程序一直在循环延时 led功能 是100ms循环闪烁 但是你程序应该没有定义全 abc是三盏灯 交替闪烁