子程序往返车的编程可以通过以下步骤实现:
初始化程序
清除显示单元的内存。
设置循环次数。
配置定时器T1为16位定时器,并设置其初值。
开启总中断允许和定时器T1。
中断服务程序
串口中断入口和定时器T2中断入口的处理。
主程序
调用初始化程序。
设置输出端口状态以控制小车的运动方向。
根据限位开关的状态控制小车的停止和往返运动。
```assembly
; 初始化程序
ORG 0023H
MOV R0, 70H ; 清70H-76H显示单元
MOV R7, 07H ; 循环次数
ML0: MOV @R0, 00H ; 清0
INC R0 ; 下一地址
DJNZ R7, ML0 ; 未完再循环
MOV TMOD, 10H ; T1为16位定时器
MOV R4, 14H ; 1秒定时用(50毫秒20次)
MOV TL1, 0B0H ; 50毫秒定时用初值
MOV TH1, 3CH ;
; 设置中断
SETB ET1 ; 开T1中断
SETB EX1 ; 开外中断1
SETB IT1 ; 外中断1采用边沿触发
SETB IT0 ; 外中断0优先级为1(最高)
SETB EX0 ; 开外中断0
SETB EA ; 开总中断允许
SETB TR1 ; 开启定时器T1
; 主程序
START: LCALL CLEARMEMIO ; 上电初始化
SETB P1.6 ; 选择7.5V输出
CLR P1.7 ; 选择7.5V输出
SETB P3.7 ; 前进状态
CLR P3.6 ; 前进状态
CLR P1.
; 小车往返控制逻辑
; ...
; 停车程序
STOP: CLR P1.6 ; 停止输出
CLR P1.7 ; 停止输出
; ...
; 中断服务程序
INT0: ; 串口中断
; 处理串口中断
IRET
INT1: ; 定时器T1中断
; 处理定时器T1中断,更新计数器
IRET
```
建议
详细设计:根据具体应用场景,详细设计小车的运动逻辑,包括启动、停止、前进、后退等状态。
调试:在实际硬件上调试程序,确保小车能够按照预期进行往返运动。
安全性:考虑添加紧急停止功能,确保在异常情况下能够立即停止小车运动。
通过以上步骤和示例代码,可以实现一个基本的子程序往返车编程。根据具体需求,可以进一步扩展和优化程序。