打印

第一个自己做的产品,给个建议

[复制链接]
2616|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
monitor|  楼主 | 2009-9-13 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据客户要求用AT89C2051做了个小装置来控制空压机启停,动作都实现了,目前没出什么问题,第一次做这种东西,不知道这段程序有没有问题,比如符不符合写程序的规范,请给个建议。延时程序是从书上移过来的。还用一部分是报警功能,用来诊断压力传感器是不是正常,不在这里。
            OUT EQU P1.6
            PL EQU P1.0    ;压力下限
            PH EQU P1.1    ;压力上限
            ORG 0000H
            MOV R0,#255 ;
D1:       DJNZ R0,D1
INITIAL:SETB OUT       ;禁止输出
;延时3秒
            MOV R3,#20h    ;
LOOP0: MOV R4,#0C8H  ;
LOOP1: MOV R5,#0FAH  ;
XD:      DJNZ  R5,XD      ;
            DJNZ R4,LOOP1 ;
            DJNZ R3,LOOP0 ;

           CLR OUT ;空压机启动
;让空压机工作约5秒钟
            MOV R3,#50 ;
            MOV R1,#200 ;
D3:       MOV R2,#250 ;
D2:       DJNZ R2,D2;
            DJNZ R1,D3;
            DJNZ R3,D3;

;检测压力传感器状态   
MAIN:   JNB PH,STOP
           JNB PL,START
           AJMP MAIN
START: CLR OUT   ;
           JNB  PH,STOP ;
           ACALL START
STOP:  SETB OUT  ;
           ACALL MAIN
           END


相关帖子

沙发
一个牧师| | 2009-9-13 21:49 | 只看该作者
你的压力传回的上限下线是不是得加个消抖啊?
得按照按键那样处理,要不出现杂讯不是乱跳了?
要是并个电容啥的应该可以,但是软件上最好做一下!
程序体不怎么好,小程序可以,大点的就不行了!
我也在这瞎说啊!做下参考!

使用特权

评论回复
板凳
monitor|  楼主 | 2009-9-13 22:29 | 只看该作者
实际测试开关抖动对工作没发现有影响,结构不好是不是说用了太多的acall?

使用特权

评论回复
地板
一个牧师| | 2009-9-13 23:02 | 只看该作者
用电容了?
用什么测的?
上干扰机了?
测的时候得考虑最不好的时候要不测也白测
用不用acall无所谓
实现功能就好了
你这个实现功能简单,这样写法能实现,但是我感觉需要硬件来加固,要不肯定会不稳定
但是以后写大点的东西难写
用中断扫描或者定时扫描好一些

使用特权

评论回复
5
o蓝玉莹| | 2009-9-13 23:19 | 只看该作者
NG

使用特权

评论回复
6
5880527| | 2009-9-14 10:29 | 只看该作者
开卷有益,值得鼓励一下。做个大循环,再用个定时器,所有与时间相关的东西就都有了个刻度,你这样DJNZ会影响太多

使用特权

评论回复
7
wanghao123| | 2009-9-16 00:45 | 只看该作者
大概能看懂
学习中:P

使用特权

评论回复
8
thanksgiving| | 2009-9-16 11:26 | 只看该作者
mark

使用特权

评论回复
9
luotianzhi| | 2009-9-16 11:48 | 只看该作者
看具体的系统,但是启动机器后应该一直检测压力,用中断的还是比较好,为何不用C。

使用特权

评论回复
10
辰少| | 2009-9-16 18:11 | 只看该作者
学习 单片机很好 可惜俺还不会

使用特权

评论回复
11
gooogleman| | 2009-9-17 09:41 | 只看该作者
嗯,不错。俺一年都单片机,
陌生了,嘿嘿。

使用特权

评论回复
12
monitor|  楼主 | 2009-9-17 21:02 | 只看该作者
当初的思路是不间断的去查询传感器的状态,初始化结束后使空压机运行,直到上限压力传感器发出信号才停止工作,如果这个传感器不能动作空压机就一直工作,压力超过上限后系统会通过卸荷阀自动卸荷,不会继续升高。因为程序比较短,执行一个循环的时间也短,所以没考虑消抖的问题,在程序的开头还有一条给电源模块TLE4271喂狗的指令,电源和信号的输入、输出在电路上有隔离设计。
感谢各位帮助,我是第一次写程序,看来思路有问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

126

帖子

0

粉丝