首页 理论教育零起点学习单片机多语言编程|指令学习与程序分析

零起点学习单片机多语言编程|指令学习与程序分析

【摘要】:第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。

1.I/O接口某位置0指令

“n”表示I/O接口中的某一位。实验机I/O接口共有8位分别用00、01、02、03、04、05、06、07表示。n=00、01、02、03、04、05、06、07。

【例2-2】 将I/O接口01位的状态置0(即使n=01)

【例2-3】 设计一个00、02、04、06位发光二极管发光的程序

实例运行效果:在单片机键盘上输入机器码程序后复位并运行。安装单片机的I/O接口00位、02位、04位和06位的外接发光二极管发光(亮)。

程序点评:程序运行后,只要不断电,上述4个发光二极管一直亮。结束语句是一个程序结束的标志,将会在后面讲解。

输入练习:将编程练习中机器码依次输入到单片机中观察该程序运行状况。输入操作步骤如下:

1)安装电池、打开电源开关。

2)按下复位键,显示器显示“C”。

3)输入数据“0B”(机器码):调整“加数、减数”键使显示器显示“0B”。

4)写入,按下写入键将数据“0B”写入到单片机的内存中。

5)反复重复步骤3、4)再将数据“00、0B、02、0B、04、0B、06、10”依次写入到单片机的内存中。

6)运行程序:先按下复位键,显示器显示“C”。在按下地址键的同时按下写入键然后同时抬起。

7)检查程序:程序运行后显示器显示“-1”。单片机I/O接口中外接的00、02、04、06位发光二极管发光,程序编写和输入正确(若程序输入有错可重新输入,如何修改后文中将提到)。

2.I/O接口置1指令

“n”表示I/O接口中的某一位。本款单片机I/O接口共有8位分别用00、01、02、03、04、05、06、07表示。n=00、01、02、03、04、05、06、07。

【例2-4】 设计一个00、02、04、06位发光二极管发光,而01、03、05、07位的发光二极管不发光的程序

实例运行效果:在单片机键盘上输入机器码程序后复位并运行。安装在单片机I/O接口00位、02位、04位和06位外接的发光二极管发光(亮),01位、03位、05位和07位外接的发光二极管不发光(灭)。

程序点评:程序运行后,只要不断电,有4个发光二极管一直亮,而另外4个发光二极管一直灭。结束语句是一个程序结束的标志。

3.延时指令

其中,“n1”表示延时时间的数据,其取值范围为n1=00H~FFH。

“n2”表示延时时间的单位,其时间单位定义“n2=00”表示0.01s;“n2=01”表示0.1s;“n2=02”表示1s;“n2=03”表示1min;“n2=04”表示1h。

延时时间=n1×n2。

延时时间举例如下:

【例2-5】 延时5s

其中,n1=05表示数;n2=02表示时间,单位1s延时时间=n1×n2=05×1s=05s。

【例2-6】 延时0.2s

【例2-7】 设计一个00位发光二极管亮2s后熄灭,00位发光二极管熄灭5s后02位发光二极管亮2s后熄灭,02位发光二极管熄灭5s的程序

实例运行效果:在单片机键盘上输入机器码程序后复位并运行。安装单片机的I/O接口00位和02位外接的发光二极管先后亮、灭。

程序点评:00位外接的发光二极管亮、灭时间间隔不相同。(www.chuimin.cn)

4.无条件转移指令

其中,“n”表示地址,其取值范围n=00H~FFH。

【例2-8】 设计00位发光二极管亮2s灭2s循环闪烁程序

实例运行效果:在单片机键盘上输入机器码程序后复位并运行。安装单片机的I/O接口00位外接的发光二极管进入亮、灭循环闪烁状态。

程序点评:00位发光二极管亮、灭时间间隔相同。只要不断电,00位外接的发光二极管一直会循环闪烁。

【例2-9】 设计一个00位发光二极管亮2s后熄灭,熄灭5s后02位发光二极管亮2s后熄灭,熄灭5s以后00位发光二极管与02位发光二极管逐一亮灭(即00位发光二极管与02位发光二极管逐一交替循环闪烁)的程序

实例运行效果:在单片机键盘上输入机器码程序后复位并运行。安装在单片机I/O接口00位和02位的外接发光二极管发光开始交替循环闪烁。

程序点评:00位和02位发光二极管先后亮灭,亮、灭时间间隔不相同。只要不断电,两只外接的发光二极管会一直交替循环闪烁。

5.程序结束指令

程序结束指令是一条伪指令,表示程序结束,它已在程序中多次应用。因此,不再举例说明。

6.地址

在单片机芯片内部有一定容量的存储单元用于保存用户编写的程序。地址就是这些存储单元的编号。用宏指令编写的汇编语言中有地址一栏,计算每条程序的地址时可以按助记符一栏计算也可以按机器码一栏计算,但每个程序的首地址都是从00开始。

1)程序地址的计算。以例2-1汽车转向灯程序为例,其按机器码一栏计算地址如下:

在例2-1的程序中,第一条机器码程序有两个指令有分别是“0B”、“01”。程序的首行地址都是从00开始,所以第一行程序的地址是00,它表示00地址单元中存放“0B”指令。第一条机器码程序中的第二个指令数据“01”存放在01地址单元中。第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。其中04地址单元中存放“12”指令,05地址单元中存放“05”数据,06地址单元中存放“02”数据。依此类推计算并写出程序的地址栏。

2)通过地址修改程序。在单片机上输入完毕程序后,若要对程序中的某些指令、数据进行修改时简捷的方法是按地址修改。下面以例2-1汽车转向灯程序为例讲解如何修改地址上的数据。

例2-1汽车转向灯程序是两个黄灯同时亮灭,现将修改两个黄灯同时亮灭的延时时间,以改变汽车转向灯闪烁的视觉效果。修改延时时间可以修改时间长短(即时间数据),也可以修改延时时间单位。下面我们以修改延时时间为例,将时间单位从1s改为0.1s,即将“02”改为“01”。

具体操作步骤如下:

1)计算出要修改的延时单位数据存放的存储单元地址。例2-1中的两条延时指令程序的行地址分别是“04”和“0B”。存放延时单位数据的存储单元地址分别是“06”,“0D”。

2)按下单片机的复位键,显示器显示“C”。

3)按下地址键,显示器显示“00.”(注意是00点,显示点表示的是00地址)。

4)按住地址键不松手,在显示器上显示“00.”的基础上调整“加数”、“减数”键使显示器显示要修改的时间数据的地址“04.”后放手。

5)再将原数据“02”调整为修改值“01”(用“加数”、“减数”键)。

6)写入:按下写入键将修改后的指令或数据写入到单片机的内存中。

7)再修改第二个数据。

8)按下地址键不松手,在显示器上显示“05.”的基础上调整“加数”、“减数”键使显示器显示要修改的时间数据的地址“0D.”后放手。

9)再将原数据“02”调整为修改值“01”(用“加数”、“减数”键)。

10)写入:按下写入键将修改后的指令或数据写入到单片机的内存中。

11)运行程序并检查修改效果。先按下单片机的复位键,显示器显示“C”。再分别按下地址键和写入键同时放手。