基于at89s51单片机自动往返小车系统设计-论文内容摘要:

MOV TMOD,10H。 T1 为 16 位定时器 MOV R4,14H。 1 秒定时用( 50 毫秒 20 次) MOV TL1,0B0H。 50 毫秒定时用初值 MOV TH1,3CH。 MOV 20H,00H。 清 0 操作 MOV 21H,00H。 MOV 22H,00H。 MOV 23H,00H。 MOV 24H,00H。 CLR 30H。 清停车标志 SETB ET1。 开 T1 中断 SETB EX1。 开外中断 1 SETB IT1。 外中断 1 采用边沿触发 SETB IT0。 外中 断 0 优先级为 1(最高) SETB EX0。 开外中断 0 SETB EA。 开总中断允许 SETB TR1。 开启定时器 T1 基于 AT89S51 单片机自动往返小车系统设计 ************************************* 主 程 序 ************************************* START: LCALL CLEARMEMIO。 上电初始化 SETB。 选择 输出 CLR。 选择 输出 SETB。 前进状态 CLR。 前进状态 CLR。 电机供电开始 MAIN: LCALL DISP。 LED 显示一次 LJMP MAIN。 转 MAIN 循环 NOP。 PC 值出错处理 NOP LJMP START。 重新初始化 ************************************* 外中断 0 服务程序,用作跑道位置处理 23H 作跑道计数器 ************************************* INTEX0: PUSH ACC。 堆栈保护 PUSH PSW。 CLR EX0。 关中断 LCALL DISP。 LED 显示一次(延时抗干扰) JB ,IN0RET。 为 1 退出(干扰) INC 23H。 跑道计数器加 1 MOV A,23H。 数据入 A CJNE A,06H,JUDGE1。 不是第 6 道转 JUDGE1 LCALL STOP。 是第 6 道,停车 LJMP IN0RET。 转中断退出 JUDGE1: CJNE A,03H,JUDGE2。 不是第 3 道转 JUDGE2 LCALL STOPSLOW。 是第 3 道,变慢车 LJMP IN0RET。 转中断退出 JUDGE2: CJNE A,04H,JUDGE3。 不是第 4 道转 JUDGE3 LCALL FAST。 是第 4 道,变快车 LJMP IN0RET。 转中断退出 JUDGE3: CJNE A,05H,IN0RET。 不是第 5 道转 INORET 退出 LCALL STOPSLOW。 是第 5 道,变慢车 IN0RET: CLR IE0。 清外中断 0 中断标志 POP PSW。 恢复现场 POP ACC。 LCALL DL7MS。 延时 7 毫秒(抗干扰) SETB EX0。 开外中断 0 RETI。 中断返回 ************************************ 慢车控制子程序 ************************************ STOPSLOW: CLR。 关 电源 CPL。 反向驱动(刹车) CPL。 反向驱动 LCALL DS50MS。 刹车时间(可根据试车情况调整) LCALL DS50MS。 LCALL DS50MS。 CPL。 正向驱动 CPL。 正向驱动 SETB。 开 电源 RET。 返回。 ************************************。 * 快车控制子程序 *。 ************************************ FAST: CLR。 关 电源 SETB。 开 电 源 RET。 返回 ************************************ 停车控制程序 ************************************ STOP: MOV 23H,00H。 跑道计数单元清 0 CPL。 反向驱动(刹车)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。