Jack秦
2024-05-24 15:53:17
最佳回答
下面两种是自动洗衣机程序你可以跟据下列程序进行修改. 第一种: org 0000h start: ajmp main ; 初始化 org 0003h ajmp int0 ; 暂停中断中断向量 org 000bh ajmp t0 ; 定时器0中断向量 org 0013h ajmp int1 ; 开盖,不平衡中断中断向量 org 0030h main: mov p1, #0f0h ; 主程序开始 mov p3,#7fh mov sp,#35h mov 56h,#0f0h ; #0f0h 排水标志(指定 56h 为标志单元) mov 57h,#03 ; 洗衣机标准洗衣工作程序标志(指定 57h) mov 54h,#40 ; 强洗正、反转驱动4秒赋值(指定 54h 存放) mov 55h,#10 ; 强洗间歇1秒赋值(指定 55h 存放) mov 58h,#06 ; 漂洗6分钟赋值(指定 58h 存放) clr et0 setb ea ; 开总中断 clr it0 ; 设置外部中断0、1为低电平触发 clr it1 setb px0 ; 设置中断优先级别 setb pt0 setb px1 mov tl0,#0b0h ; 设置100ms中断时间常数 mov th0,#3ch mov tmod,#01h ka: jnb p1.4,x1 ; 以下为按键扫描程序 ajmp kb x1: acall k1 kb: jnb p1.5,x2 ajmp kc x2: acall k2 kc: ** p3.4,ka ; 按键扫描程序结束 acall del10 ** p3.4,ka acall fzh jnb p3.4,$ setb et0 ; 开定时器0中断 setb tr0 ; 启动定时器0 setb p3.5 setb ex0 clr p3.4 mov a ,57h cjne a,#00h,xy ; 是排水程序? ajmp bsh1 ; 是则跳转排水程序 xy: mov 70h,#00 mov 51h,#00 setb p1.0 ; 以下为进水*作,打开进水阀 mov a,#240 l0: cjne a,51h,l1 ; 进水系统有故障? ajmp fw ; 有则跳转故障处理程序 l1: ** p3.5 ,l0 ; 进水达预定水位? clr p1.0 ; 进水结束,关闭进水阀 mov 70h,#00 mov 71h,#00 mov 72h,#00 l: mov 50h,#00 ; 以下为洗涤/漂洗工作程序 setb p1.2 ; 正转洗涤/漂洗驱动 mov a,50h cjne a,50h,$ clr p1.2 ; 洗涤/漂洗间歇 mov 50h,#00 mov a,55h cjne a,50h,$ mov 50h,#00 setb p1.3 ; 反转洗涤/漂洗驱动 mov a,54h cjne a,50h,$ clr p1.3 ; 洗涤/漂洗间歇 mov 50h,#00 mov a,55h cjne a,50h,$ mov a,58h cjne a,72h,l ; 洗涤/漂洗工作结束? bsh: mov a,56h cjne a,#0f0h,pbsh ; 洗涤/漂洗工作结束,排水否? dec 57h ; 洗衣工作循环次数减 1 bsh1: setb p1.1 ; 排水*作,打开排水阀 mov 70h,#00 mov 51h,#00 mov a,#60 bsh2: cjne a,51h,bsh3 ; 排水系统有故障? ajmp fw ; 有则跳转故障处理程序 bsh3: jnb p3.5,bsh2 ; 水位下降至预定水位? mov a,51h add a,#50 mov 70h,#00 mov 51h,#00 cjne a,51h,$ ; 排水时间延长d+50秒 mov 73h,#00 ; 以下为脱水程序 clr p3.5 ; 开盖、不平衡中断请求触器允许 setb ex1 ; 脱水期间,开盖、不平衡中断允许 bsh4: mov 50h,#00 setb p1.2 ; 脱水驱动5秒 mov a,#50 cjne a,50h,$ clr p1.2 ; 脱水间歇2秒 mov a,#20 mov 50h,#00 cjne a,50h,$ inc 73h mov a,73h cjne a,#17,bsh4 ; 脱水时间达 2 分钟? clr p1.1 setb p3.5 clr ex1 ; 脱水结束,禁止开盖、不平衡中断中断崐 mov a,57h cjne a,#00,bsh5 ; 洗衣工作是否结束? ajmp pbsh ; 结束跳转结束报警程序 bsh5: mov a,58h subb a,#2 ; 洗涤/漂洗时间减2分钟 mov 58h,a ajmp xy ; 洗衣工作未结束,继续下一循环 pbsh: mov 74h,#00 ; 洗衣结束报警程序 jk: mov 50h,#00 bj1: setb p3.7 mov a,50h cjne a,#10,bj1 mov 50h,#00 bj2: clr p3.7 mov a,50h cjne a,#10,bj2 inc 74h mov a,74h cjne a,#3,jk ajmp main ; 洗衣工作结束,返回主程序 ; fw: clr ex1 ; 以下为进排水系统故障处理程序 clr p1.0 clr p1.1 clr p1.2 clr p1.3 fw1: mov 50h,#00 fw2: setb p3.7 jnb p1.4,fw4 mov a,50h cjne a,#10,fw2 mov 50h,#00 fw3: clr p3.7 jnb p1.4,fw4 mov a,50h cjne a,#20,fw3 ajmp fw1 fw4: clr p3.7 acall fzh jnb p1.4 ,$ ajmp main ; int0: push a ; 以下为暂停中断服务 程序 push psw push dph push dpl setb p3.4 ; 撤消本次中断请求信号 acall fzh mov a,p1 mov r1,a ; 保存p1端口状态 anl a,#0f0h mov p1,a ; 洗衣机暂停各种*作 ** p3.4,$ ; 等待启动键按下 acall fzh mov a,r1 mov p1,a ; 恢复p1口原始数据 pop dpl pop dph pop psw pop a clr p3.4 reti ; 中断返回 ; t0: push a ; 定时器0定时中断服务程序 push dph push dpl push psw inc 50h inc 70h ; 100ms单元累加1 mov a,70h cjne a,#0ah,ll ; 时间达1秒? mov 70h,#00 inc 51h inc 71h ; 时间达1秒,则秒单元累加1 mov a,71h cjne a,#3ch,ll ; 时间达1分? mov 71h,#00h inc 52h inc 72h ; 时间达1分,则分单元累加1 ll: pop psw pop dpl pop dph pop a reti ; 中断返回 ; int1: push a ; 以下为开盖、不平衡中断服务程序 push psw push dph push dpl setb p3.5 ; 撤消本次中断请求信号 clr p1.1 ; 停止排水* 作 clr p1.2 ; 停止脱水*作 clr et0 ; 关定时器0定时中断 jp0: jnb p1.6,$ ; 等待开盖或不平衡中断信号消失 setb p1.1 ; 恢复排水*作 setb p1.2 ; 恢复脱水*作 pop dpl pop dph pop psw pop a clr p3.5 setb et0 ; 定时器0中断允许 reti ; 中断返回 ; k1: acall del10 ; 以下为强弱选择键处理程序 jnb p1.4,x4 ajmp exit1 x4: acall fzh mov a,54h cjne a,#40,j1 clr p1.7 mov 54h,#30 mov 55h,#20 ajmp exit1 j1: setb p1.7 mov 54h,#40 mov 55h,#10 exit1: jnb p1.4,exit1 ret ; k2: acall del10 ; 以下为洗衣工作程序选择键处理程崐序 jnb p1.5,x5 ajmp x9 x5: acall fzh mov a,57h cjne a,#00,x6 setb p3.0 ; 标准洗衣工作程序赋值 setb p3.1 mov 57h,#03 mov 56h,#0f0h ajmp x9 x6: cjne a,#03,x7 setb p3.0 ; 经济洗衣工作程序赋值 clr p3.1 mov 57h,#02 mov 56h,#0f0h ajmp x9 x7: cjne a,#02,x8 clr p3.0 ; 单独洗衣工作 程序赋值 setb p3.1 mov 57h,#01 mov 56h,#00 ajmp x9 x8: cjne a,#01,x9 clr p3.0 ; 排水洗衣工作程序赋值 clr p3.1 mov 57h,#00 mov 56h,#00 x9: jnb p1.5,x9 ; 等待该键释放 ret ; fzh: setb p3.7 ; 发声子程序 acall del10 clr p3.7 ret ; del10: mov r6,#0ah ; 10ms延时子程序 d1ms: mov r7,#64h dll: nop nop nop djnz r7,dll djnz r6,d1ms ret 本txt 由“文库宝”下 20210311