- 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
您可能关注的文档
最近下载
- 2025年河北省中考数学真题.docx VIP
- 6.3.2 世界上最大的黄土堆积区—黄土高原(第2课时2023-2024学年八年级下册地理精品教学课件(人教版)+.pptx VIP
- 安源光伏特玻璃厂带式输送机投标书.doc VIP
- 压缩热再生吸附式干燥机.ppt VIP
- 中医执业医师中医基础试题(一)(中医执业医师中医基础考试卷).doc VIP
- 中医执业医师考试中医基础模拟试题(2)(中医执业医师中医基础考试卷).doc VIP
- 吊耳计算对照表.pdf VIP
- 香港中医执业医师考试试题题库.pdf
- 高中语文选择性必修上课本原文、翻译.pdf VIP
- SY_T6592-2016固井质量评价方法.docx VIP
原创力文档

文档评论(0)