单片机的晶振频率为12Mhz,机器周期就是1us,定时器用的时钟周期就是1MHz,怎么可能实现100ns的延时?
换单片机吧,换用1T的51单片机,速度是普通51的12倍,如果用12M的晶振,机器周期是83ns,也很勉强!
或者就用CPLD、逻辑电路自己搭吧
我很好奇,你做什么需要ns级的延时?
用C写延时程序的话不精准?
sleep(Time);
Time 毫秒级
如果在VC 直接用Sleep(Time) API函数
当然不用VC也可以用sleep();不用自己申明的~~
#includeWindows.h
int main(){
Sleep(2000);
return 0;
}
void delay1s(void) //误差 0us
{
unsigned char a,b,c;
for(c=167;c0;c--)
for(b=171;b0;b--)
for(a=16;a0;a--);
_nop_(); //if Keil,require use intrins.h
}
asm( NOP),每个NOP指令空操作一次,即一个CPU指令周期
sleep在系统忙时是不准确的,没有直接汇编的准
可是可以嵌入NOP这样的空指令来延时啊
我认为最好的办法是,用示波器实测,不断的调整,这样才能行,不然,就不好定了。
举报成功
经过核实后将会做出处理
感谢您为社区和谐做出贡献
扫码参与新品0元试用
晒单、顶楼豪礼等你拿