单片机中的NOP指令

在单片机中的很多程序中都能看见NOP这条指令的身影,有些人很疑惑这条空空的指令到底有什么用呢,,经过多次的实验,,我终于证实(呀,谁扔的番茄)主要有两条作用:
1,精确定时:NOP指令时间为1个周期,12M晶振的活呢是1US秒的时间。非常的准确。如
如果晶振用12Mz的话,这样一个机器周期为1us。 

                    MOV  R0,#0FFH
DLY_LP:
                      NOP                                              执行一次所需时间为1us             
                      NOP                                              执行一次所需时间为1us
                      DJNZ  R0,DLY_LP        执行一次所需时间为2us

这个延时程序的总延时时间为:(1+1+2)×255=1020us 


DELAY:     
                      MOV  R0,#0FFH
                      MOV  R1,#0FFH
DLY_LP:
                      NOP                                                    执行一次所需时间为1us
                      NOP                                                    执行一次所需时间为1us
                      DJNZ  R0,DLY_LP                执行一次所需时间为2us
                      MOV  R0,#0FFH                    执行一次所需时间为1us
                      DJNZ  R1,DLY_LP                执行一次所需时间为2us
                      RET

这个延时程序的总延时时间为:〔(1+1+2)×255+1+2〕×255=260865us。
2。还有些时候CPU对I/O操作时,通常也会加几个NOP指令,用来延会时,在这期间。CPU什么都不做。其实外部线路中的高低电平转换是需要时间的,这里的NOP就是为了等待缓冲区清空。总线恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值