如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第三章MCS-51单片机汇编语言程序设计二、汇编语言程序设计步骤:1.分析任务,确定方案和计算方法。2.按功能划分模块,确定各模块之间的相互关系及参数传递,画出程序流程图。3、合理分配寄存器和存储器单元,编写汇编语言源程序,并作必要的注释,以方便阅读、调试和修改。4、汇编语言源程序进行汇编和连接生成可执行的目标文件(.BIN或.HEX)。5、仿真调试、修改程序,直至满足任务要求。6、将调试好的目标文件(·BIN或·HEX)烧录进单片机内,上电执行。程序流程图表示程序结构和功能,一个典型分支程序流程如下:三、程序汇编的方法:程序汇编的方法有两种:1、手工汇编:人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。2、机器汇编:用计算机中的汇编程序对用户源程序进行汇编。用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定,这些由伪指令指定。1.机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。2.伪指令:汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息,给编程提供方便。3.宏指令:由多条指令通过宏汇编集合而产生的指令。宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序段(宏调用)。2、字节定义标号:DB(字节常数,或字符或表达式)功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。例如LN:DB32,’C’,25H,-1;以上的伪指令是在LN~LN+3地址单元依次存放20H,43H,25H,FFH。6、等值指令标号EQU(数值表达式)表示EQU两边的量等值,用于为标号或标识符赋值。例如:X1EQU2000HX2EQU0FH…MAIN:MOVDPTR,#X1;DPTR=2000HADDA,#X2;A=A+0FH3.3常用程序结构有顺序程序、分支程序、循环程序、子程序等。3.4顺序程序顺序程序(简单程序),程序走向只有一条路径。例3-3分解压缩式BCD码,使其成为非压缩式BCD码。3.5分支程序的设计由条件转移指令构成程序判断框部分,形成分支结构。1.利用转移地址表实现转移(先把DPTR找好,再跳转)例3-7根据R3的内容转向对应的程序,R3的内容为0~n,处理程序的入口符号地址分别为PRo~PRn(n<128)。分析:将PRo-PRn入口地址列在表格中,每一项占两个单元,PRn在表中的偏移量为2n,因此将R3的内容乘2即得PRn在表中的偏移地址,从偏移地址2n和2n+1两个单元分别取出PRn的高八位地址和低八位地址送DPTR寄存器,用JMP@A+DPTR指令(A先清零)即转移到PRn入口执行。2.利用转移指令表实现转移(直接跳到一个跳转指令中去执行)例3-8设有五个按键0、1、2、3、4其编码分别为3AH、47H、65H、70H、8BH,要求根据按下的键转向不同的处理程序,分别为PR0、PR1、PR2、PR3、PR4,设按键的编码已在B寄存器中,编出程序。3.5循环程序设计例3-9,设计一个延时10ms的延时子程序,已知单片机使用的晶振为6MHz。分析:延时时间与两个因素有关:晶振频率和循环次数。由于晶振采用6MHz,一个机器周期是2μs,用单循环可以实现1ms延时,外循环10次即可达10ms延时。内循环如何实现1ms延时呢,程序中可先以未知数MT代替,从附录A查每条指令机器周期计算程序的执行时间。例3-10编写多字节数×10程序。内部RAM以20H为首址的一片单元中存放着一个多字节符号数,字节数存放在R7中,存放方式为低位字节在低地址,高位字节在高地址,要求乘10后的积仍存放在这一片单元中。分析:用R1作该多字节的地址指针,部分积的低位仍存放于本单元,部分积的高位存放于R2,以便和下一位的部分积的低位相加。以R7作字节数计数。编程如下:3.6位操作程序设计程序如下:START:MOVC,P2.2ORLC,TF0ANLC,P1.1MOVF0,CMOVC,IE1ORLC,/25HANLC,F0ANLC,/26HMOVP1.3,CSJMP$Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X73.7子程序3.8小结27