❶ AVR单片机毫秒和微秒延时程序为什么不同
在这两个函数参数的类型没多大关系的(延时us用Int可能是因为us到ms是1000就足够了,延时ms用uint可以在调用一次该函数时的最大延时时间能更久点)
用while(time!=0)的意思是在循环中time--后time等于0 时退出循环(用什么请根据时钟来决定,你也可以用time>1啊,但延时的时间可能没while(time!=0)更接近需要延时ms的时间,实际和单片机的时钟有关)
❷ 51单片机计时60毫秒怎么算呀,计数周期是啥意思呀
一般51单片机的晶振频率是fosc=12M,单片机内部计时的频率是fosc/12 即1MHZ
因此计数周期1us
内部定时器是16位,最多 计脉冲数为65536个,因此最长定时时间是65.536 ms
要定时60 ms,需经过的脉冲个数是60000个,由于51单片机的定时器是加法计数,因此初值应该写入(65536-60000)
这样经过60mS后,计数器的值就是 (65536-60000)+60000=65536,刚好溢出,溢出标志位TF置1或产生中断
定时器初值又分高8位和低8位,高8位的1代表256,因此高8位是256的倍数,低8位是256的余数
因此 C语言编程就这样 写:
TH0=(65536-60000)/256
TL0=(65536-60000)%256
❸ 单片机中125ms是什么意思
就是时间
125毫秒,一秒等于1000毫秒,
对的
delay中的for循环为什么循环tick加1次
,delay中的for循环应该是从0到始的,所以到tick,就多了一次
这个如果你是自己做的硬件板,晶振的频率要保证稳定准确,使然时钟的频率比较高。轻微的频偏影响不大,不过要求精确的时候表现还是很明显的
❹ 单片机的延时10ms是多长时间啊
延时多长时间要看你单片机的频率和使用的语言种类,比如同一个延时程序,在8M晶振单片机跑就比在4M的快接近一倍,用汇编写的延时就比用c的要准些,一般都用c写,用不同软件转换相同延时程序时间也不同。由于软件将你编的程序转成汇编交给单片机识别,它所执行的时间为单片机一个周期*程序运行的条数
❺ 好单片机能毫秒级响应吗
毫秒级响应?一般的单片机的指令周期都是微秒级的。如PIC系列单片机,晶振为4M,单指令周期为1微秒,几个微秒,就是查询状态,就能得到相应。毫秒级,单片机可经过运算,比较,判定,能做的事多了。频率高的单片机品种很多的。
❻ 51单片机中用定时器定时1毫秒,怎么编写
假设晶振为12MHz,不用中断时程序语句如下:
TMOD=0x01;//定时器0工作方式1
TH0=(65536-1000)/256;//装入初值
TL0=(65536-1000)%256;
TF0=0;//清溢出标志;
TR0=1;//启动定时器0
while(TF0==0);//等待定时时间到
TR0=0;
TF0=0;
❼ 单片机中延时100毫秒的程序
汗!问这个问题说明你对时钟周期、机器周期、定时器周期都不太了解吧。
延时100毫秒的程序可以是一个函数,也可以是利用定时器的一段代码。
如果是用汇编延时那么你要把单片机指令周期表翻一下了,看看整个循环语句用了哪些指令,每个指令多少个机器周期,然后计算每个机器周期耗时多少时长,你就知道循环多少次了。
如果用C语言延时,那么就要借助仪器了,你同样要估算一下机器周期和循环次数,然后要精确到100ms就需要把这个延时时间作为频率从单片机IO口输出,用仪器来辅助测量,最后得出叫准确的100ms的循环次数的值。
如:
void delay_100ms(uint8 n)
{
uint16 i;
while(n)
{
for(i=0;i<xxx;i++)//此循环应为运行100ms,用仪器辅助得到xxx的值。不够就再在FOR一次。
}
}
❽ 单片机中的392毫秒的延时是如何实现的
不要求精确的话编一个ms延时函数,调用时参数取394即可,若要求精确定时,则要用单片机内部定时器1ms中断一次,中断394次即是394mS