10.1 主程序和子程序的概念
10.1.2 子程序及参数传递 2.用指针寄存器来传递参数
① 如果参数在片内RAM中,则可用 R0 或 R1 作指针; ② 如参数在片外RAM或程序存储器中,则可用 DPTR 作指针。
例10-2 将R0和R1指出的内部RAM中两个3字节无符号整数相加,结果送到由R0指出 的内部RAM中。入口时,R0和R1分别指向加数和被加数的低位字节;出口时,R0指 向结果的高位字节。低字节在高地址,高字节在低地址。(此处书上错)
图10-6 水塔水位控制原理图
10.2 数据采集及简单控制程序
10.2.3 水位控制程序 2.水位控制电路 如图10-7所示 3.信号输入与输出
• 水位信号由P1.0和P1.1输入 • 由P1.2端输出,去控制电机。 • 由P1.3输出报警信号,驱动 一只发光二极管进行光报警。
C (P1.1) 0
主程序调用子程序与主程序被中断去执行中断服务子程序的过程是不同的:
① 调用子程序是当主程序运行到 “LCALL”等指令时,先自动压入断点,再 进入子程序;当执行子程序到最后一条指令RET时,自动弹出断点送PC,返回 主程序; ② 程序中断是随机的。当主程序运行时,遇到中断申请,则CPU执行完当前 指令后,首先自动压入断点,然后转去执行中断服务子程序。当中断服务程 序执行到最后一条指令RETI时,同样弹出断点送PC,返回主程序。
10.2 数据采集及简单控制程序
10.2.3 水位控制程序 1.水位控制原理
• 图 10-6 中虚线表示允许水位变化的上、下限。水塔安装固定的 3 根金属棒。其 中,A棒处于下限水位, A棒接 +5V电源, C棒处于上限水位,B棒在上、下限水 位之间。B棒、C棒各通过一个电阻与地相连。 • 单片机控制电机转动,电机带动水泵供水供水时,水位上升,当达到上限时,由于 水导电,B 、C 棒连通+5V。 b 和c两端均为” 1”.这时,应停止电机工作,不再 供水。 • 当水位降到下限时,B 、C棒都不能与A棒导通,b 和c两端均为”0”。启动电 机供水. • 当水位处于上下限之间,B棒与A棒导通.C棒不能与A棒导通,b端为”1”, c端为“0”状态。应继续维持原有的工作状态。