| 关键你这机器周期不是1us一次,可以进入 bebug 单独看看 delay 这段程序 ,当i = 1000000us,花了多久 |
xuyaqi 发表于 2022-12-4 16:09 这是正确的 |
Hephaestus 发表于 2022-12-4 17:47 原来是这样,呵呵,脑壳昏 |
| long运算时间远大于1us,所以你的代码是正确的,但是需要极大地耐心来证明。 |
|
1个机器周期等于12个振荡周期,振荡周期也叫时钟周期,时钟周期即晶振的单位时间发出的脉冲数, 如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期, 即1/12微秒;如11.0592MHZ=11.0592×10的6次方,即每秒发出11059200个脉冲信号, 那么发出一个脉冲的时间就是时钟周期,即1/11.0592微秒)。 在51单片机中,1个机器周期等于12个振荡周期,则在计算定时时间t时: 计数值N乘以机器周期Tcy就是定时时间t 。 |
芙蓉焊料 发表于 2022-12-4 15:19 i=1000000也是可以的,你得耐心等待。 |
|
建议延迟函数这样写,这样是1s。(uint为unsigned int)你那种不规范。。。。。。 void delay(uint time) { uint i,j; for(i=0;i<time;i++) for(j=0;j<155;j++) ; } |
| i=10000 就正常了,不应该啊,请老师解答 |