新建一个VI项目。
2
/6
如图所示,在面板上添加垂直滚动条和开关按钮,垂直滚动条用于显示随机数据,开关按钮用于控制VI的开关。
3
/6
如图所示,为后台程序框架。把while循环的循环变量输出给显示控件,把开关和关闭变量连接。
4
/6
如图所示,观看运行效果,看到滚动条运行速度非常快。
5
/6
如图所示,在程序框图里面添加延时单元,设计延时值为1s。
6
/6
如图所示,运行程序看到此时的变化速度变慢,改变延时单元设置的延时值,观看运行效果,体会延时单元的使用。
一、获取毫秒数的代码:
(1)System.currentTimeMillis() 这种方式速度最快。
(2)Calendar.getInstance().getTimeInMillis() 这种方式速度最慢。
二、获取微秒数的代码:
微秒使用System.nanoTime()方法:如果Java程序需要高精度的计时,如1毫秒或者更小,使用System.nanoTime()方法,可以满足需求。
扩展资料:
获取微秒函数System.nanoTime() 的隐患:
System.currentTimeMillis() 起始时间是基于 1970.1.1 0:00:00 这个确定的时间的,而System.nanoTime()是基于cpu核心的时钟周期来计时,它的开始时间是不确定的。
但是在多核处理器上,由于每个核心的开始时间不确定,那么
“long start = System.nanoTime()String ip = Utilities.getIpByUrl(url)long cost = System.nanoTime() - start ”
这段代码有可能会运行在两个不同的cpu核心上,从而导致得到的结果完全不符逻辑。
_delay_us:DJNZR7,$
RET
说明:
本8051的子程序可以一定程度由调用函数定制延时时间,定时值由调用程序事先保存在R7中。本程序也可以C调用,但需要在函数所在的汇编文件中写公开声明: PUBLIC _delay_us 函数原型是:void delay_us(unsigned char T_count)
如果使用的是标准8051内核,DJNZR7,$执行一条指令消耗24时钟周期,RET指令也一样。加上调用耗时,一般是由第一条指令 MOV R7,#T_count 或MOV R7,A 或MOV R7 direct 和第二条指令 ACALL/LCALL_delay_us组成。最长48个时钟周期,最短36时钟周期。
然后读者可根据系统时钟频率计算出12us和20us需要给R7的赋值即可完成。
因为现在的派生8051型号众多,不同厂家的8051核执行一条指令的时钟数已大不相同,读者需要根据自己所用的单片机生产厂家的规格书来确定延时值了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)