单片机 SJMP $表示重复执行这条指令。
void main()
{ p1=0x00;
while(1)
void DelayMS()
{ uchar i;
while(10)
for(i=0;i<120;i+ +);
}
p1=!p1;
}
2:
void timer_init()
{
TMOD=0x01;
TH0=(65536-0)/256;
TL0=(65536-0)%256;
TR0=1;
}
在上面程序1中,0x00表示一种状态,即表示单片机P1口八位都是低电位0,而不是表示为等于零无意义。
在程序2中,初值赋为零,则表示整个定时为65.536ms,是该定时方式的最大值,而初值0则仅表示该值为零,没有任何意义。
在单片机学习中,数值的表示方法是学习中应引起注意的细节,若不注意,有时因何而错,都分辨不清。
单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机。运行中也仅能处理数字信号。
单片机只能识别二进制数,也就是高低电平1与0。但当数值太大时,用1和0来表示程序中的数值时显得太繁锁了,于是便用十六进制来表示。这样表示起来方便,通用,
为了让单片机按照我们的要求来工作,就必须对它赋予指令也就是编写程序,在程序中同一个数值会因应用的位置不一样,而理解含义就不一样。
如下面程序1中用十六进制表示的0x00和定时程序2赋初值时用0(0=0x00)表示的初值。它们在不同程序中所表示的意义也不一样,理解起来也就不能用同一种思维方式去理解。
SJMP是单片机的短跳转指令,后面一般跟标号,例如:SJMP HERE,SJMP $等。sjmp $ 就是跳到此处,也就是原地踏步,让程序停在此处。
跳转到自己所在在位置
原地踏步