单片机讲义8讲.pptVIP

  • 12
  • 0
  • 约3.66千字
  • 约 10页
  • 2018-05-18 发布于四川
  • 举报
第 3 章 MCS-51单片机汇编语言程序设计 3.6 位操作程序设计 例3-17 编写一个程序,以实现逻辑运算电路。其中,P1.1和P1.2分别是端口线上的信息,TF0和IE1分别是定时器定时溢出标志和外部中断请求标志,(25H)和(26H)分别是这两个位地址中的信息,运算结果由端口线P1.3输出。 ≥ 1 ≥1 1 P1.1 P2.2 TF0 IE1 25H(位) 26H(位) P1.3 分析 MCS-51单片机由着优异的位逻辑功能,可以方便地实现各种复杂的逻辑运算。这种用软件代替硬件的方法,可以大大简化甚至完全不用硬件,但比硬件要花多一些运算时间。 程序 START: MOV C, P2.2 ORL C, TF0 ANL C, P1.1 MOV F0, C MOV C, IE1 ORL C, /25H ANL C, F0 ANL C, /26H MOV P1.3, C SJMP $ 程序: MOV C, ACC.0 ANL C, ACC.1 ANL C, ACC.2 MOV 00H, C MOV C, ACC.0 ANL C, /ANN.0 MOV 01H, C ANL C, /ACC.2 ORL C, 00H MOV 00H, C MOV C, ACC.2 ANL C, 02H ANL C, ACC.3 ORL C, /00H MOV 00H, C MOV C, ACC.7 ANL C, /ACC.6 ANL C, /ACC.5 ANL C, /ACC.4 ORL C, 00H SJMP $ 例 3-18 设累加器A的各位ACC.0~ACC.7分别为X0~X7,编制程序用软件实现下面各式: ??Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7 3. 7 子程序 子程序是构成单片机应用程序必不可少的部分,由于MCS-51单片机由ACALL 和LCALL两条子程序调用指令,可以十分方便地用来调用任何地址处的子程序。善于灵活地使用子程序,也是程序设计的重要技巧之一。 在调用子程序时,有以下几点应予以注意: 1) 保护现场。如果在调用前主程序已经使用了某些存储单元或寄存器,在调用时,这些寄存器和存储又有其他用途,就应先把这些单元和寄存器中的内容压入堆栈保护,调用完后再从堆栈中弹出以便加以恢复。如果有较多的寄存器要保护,应使主子程序使用不同的寄存器组。 2) 设置入口参数和出口参数。调用之前主程序2要按子程序的要求设置好入口参数,子程序从指定的地址单元或寄存器获得输入数据,经运算或处理的结果存放到指定的地址单元或寄存器,只有这样主程序才能在调用后,在出口参数处得到调用后的结果。这3就是子程序和主程序间的数据传递。 3) 子程序中可包括对另外子程序的调用,称之为子程序嵌套。 例3-19 用程序实现c=a2+b2,设A,B均小于10。A存放在31H单元,B存放在32H单元,把C存入34H和33H单元(和为BCD码)。 解 因本题二次用到平方值,所以在程序中采用把求平方编为子程序的方法。依题意编写主程序和子程序如下 主程序: ORG 0000H MOV SP, #3FH ;设堆栈指针 MOV A, 31H ;取a值 LCALL SQR ;求a2 MOV R1, A ; a2暂存R1 MOV A, 32H ;取b值 LCALL SQR ;求b2 AD A, R1 ;求a2 +b2 DA A ;BCD码调整 MOV 33H, A ;存入33H MOV A, #0 ADDC A, A MOV 34H, A ;存进位 SJMP $ 子程序: ORG 0030H SQR: INC A ;RET占一个字节,即查表指令到TAB

文档评论(0)

1亿VIP精品文档

相关文档