一、_near_func 用法解释
那就是说__near_func和汇编的JUMP作用差不多而_far_func 和汇编的LONG JUMP 差不多了
二、st(P##port##SEL &= ~BV(pin); \ 1
P##port##_##pin## = val; \ 2
P##port##DIR |= BV(pin); ) 3
解释
port和pin是IO口的,例如,如果port是1,pin是0,则P##port##_##pin##=1表示P1_0=1
BV 为宏定义为 #define BV(n) ……
BV 为宏定义为 #define BV(n) ……
st意思是指括号里的程序直接执行
预定义运算与函数中运算符的运算是一样的,关键在于灵活掌握运算符的含义与使用。
3 表示P端口的值与BV(pin)“相或”,结果赋值给DIR;
1 表示P端口的值与BV(pin)的按位求反的值“相与”,结果赋值给DIR。define的基本用法
3 表示P端口的值与BV(pin)“相或”,结果赋值给DIR;
1 表示P端口的值与BV(pin)的按位求反的值“相与”,结果赋值给DIR。define的基本用法
三、asm(nop) 时间计算
根据设定的晶振,怎么样确定asm("nop");延时了多少时间?比如7.3728MHz下,一个asm("nop");代表多少时间呢?
1、一个指令周期.
指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析取数到执行完所需的全部时间。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
机器周期:通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是 计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间它一般由12个时钟周期组成。而时钟周期=1秒/晶振频率,因此单片机的机器周期=12秒/晶振频率
补充其他几个周期:
指令周期:取出并执行一条指令的时间。
时钟周期:处理操作的最基本单位。(CPU的主频)
存储周期:也就是一个访存指令周期。
指令周期、机器周期和时钟周期之间的关系:指令周期通常用若干个机器周期表示,而机器周期时间又包含有若干个时钟周期。
--》指令周期=若干个机器周期=12个时钟周期12秒/晶振频率 (51系列)
2、1/7378200 = 0.000000135534 s = 135.5ns (51系列)
3、执行一个空语句 null opreation 延时
有时软件抗干扰时要用到,使跑飞的程序入正轨
有时软件抗干扰时要用到,使跑飞的程序入正轨
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论