51单片机c语言 _nop_()是一个空指令?短时间延时的?空几个机器周期?

Python021

51单片机c语言 _nop_()是一个空指令?短时间延时的?空几个机器周期?,第1张

这个_nop_()等效与汇编里面的,NOP指令,也就是空一个机器周期,如果是传统51单片机的话,等于空12个时钟周期【即一个机器周期】,操作方法如下:

1、首先,可以利用keil来进行模拟实验,观察软件所显示的数值,然后再进行相关的运算,即可得出结果。

2、在使用keil进行模拟之前,要“模拟”给单片机各个口上电,点击这里。

3、然后再点击这里,会出来一个对话框,全部勾选即可。

4、除了使用keil外,还可可以借助其他的软件,来进行测试运算。

5、最后要知道指令周期,指执行一条指令所需的时间。机器周期,由6个状态周期组成。状态周期,是时钟周期的两倍,如下图所示就完成了。

在单片机c语言中直接调用库函数即可,具体如下:

#include<intrins.h>// 声明了void _nop_(void)

_nop_()// 产生一条NOP指令。

该函数的作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

给你一个矩阵键盘的参考程序

行列扫描:通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。

/****************************************************************************

*函数名

:KeyDown

*函数功能

:

检测有按键按下并读取键值

*输入

:

*输出

:

****************************************************************************/

voidKeyDown(void)

{

char

a=0

GPIO_KEY=0x0f

if(GPIO_KEY!=0x0f)//读取按键是否按下

{

Delay10ms()//延时10ms进行消抖

if(GPIO_KEY!=0x0f)//再次检测键盘是否按下

{

GPIO_KEY=0X0F

//测试列

switch(GPIO_KEY)

{

case(0X07):

KeyValue=0break

case(0X0b):

KeyValue=1break

case(0X0d):

KeyValue=2break

case(0X0e):

KeyValue=3break

}

//测试行

GPIO_KEY=0XF0

switch(GPIO_KEY)

{

case(0X70):

KeyValue=KeyValuebreak

case(0Xb0):

KeyValue=KeyValue+4break

case(0Xd0):

KeyValue=KeyValue+8break

case(0Xe0):

KeyValue=KeyValue+12break

}

while((a<50)&&(GPIO_KEY!=0xf0))//按键松手检测

{

Delay10ms()

a++

}

}

}

}