C源程序 void delay1ms() //1毫秒延时子程序 { unsigned int i,j; for(i=125;i>0;i--); }
void display() { P0_1=~P0_1; //对P0.1进行去反,查延时 delay1ms(); }
main() { while(1) { display(); } }
编译后的汇编 5: void delay1ms() //1毫秒延时子程序 6: { 7: unsigned int i,j; 8: for(i=125;i>0;i--); C:0x0003 7F7D MOV R7,#0x7D //1个周期 C:0x0005 7E00 MOV R6,#0x00 //1个周期 C:0x0007 EF MOV A,R7 //1个周期 C:0x0008 1F DEC R7 //1个周期 C:0x0009 7001 JNZ C:000C //2个周期 C:0x000B 1E DEC R6 //1个周期 C:0x000C EF MOV A,R7 //1个周期 C:0x000D 4E ORL A,R6 //1个周期 C:0x000E 70F7 JNZ C:0007 //2个周期 9: }
最后对P0.1测量波形,周期是2.19ms 则单个延时2.19/2=1.095ms
根据汇编的结果: 1+1+2+1+1+1+2=9us 9*125=1125us=1.125ms 理论和示波器还差不多 over
|