5910|13

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用89C51单片机控制消毒柜的源程序 [复制链接]

    消毒柜功能要求:臭氧消毒指示灯两个,假设分别为LED1、LED2;加热指示灯两个,假设分别为LED3、LED4;消毒按键一个,假设为A1;消毒柜照明按键一个,假设为A2。
    开机时所有指示灯均熄灭,按下A1则LED1亮,臭氧发生器开始工作,20S后,LED1熄灭,LED2点亮;20S后,LED2熄灭,LED3点亮,臭氧消毒结束,进入加热干燥阶段。20S后,LED3熄灭,LED4点亮,再经过20S后LED4熄灭,整个消毒、加热干燥过程结束。需要不同种类的消毒,加热干燥时,可以通过按A1进行选择,每按一次A1,点亮的LED指示灯下移一位,只进行余下的消毒、干燥程序。本消毒柜有四种消毒干燥程序:
1)LED1亮 消毒20S→消毒20S→加热20S→加热20S
2)LED2亮 消毒20S→加热20S→加热20S
3)LED3亮 加热20S→加热20S
4)LED4亮 加热20S
    消毒或加入的确切时间(秒)必须用数码管显示出来。
    A2单独控制,按一下A2,点亮照明灯LED5,再按一下A2,关闭照明灯LED5

我自己写了一个,请问有问题吗?可以实现上述功能吗?请大家指出其中需要修改的地方,谢谢。
源程序:
       GW EQU 40H
      SW EQU 41H
      BW EQU 42H
      QW EQU 43H
      WW EQU 44H
      SWW EQU 45H
      JS EQU 46H
      DSQ EQU 47H
      ORG 0000H
      LJMP MAIN1
      LJMP MAIN2
      ORG 000BH
      LJMP INTT0
      ORG 0300H
;**********A2按键控制子程序**********
MAIN2:MOV P2,#0FFH
MAIN3:ORL P1,#0FFH
KEYA2:JB P1.1,KEYA2
      LCALL DELAY
      JB P1.1,KEYA2
      JNB P1.1,$
      CPL P2.4
      AJMP MAIN3
;**********A1按键控制子程序**********
MAIN1:MOV P2,#0FFH
      ORL P1,#0FFH
KEYA1:JB P1.0,KEYA1
      LCALL DELAY
      JB P1.0,KEYA1
      JNB P1.0,$
;**********消毒20S控制子程序**********
AA1:  MOV P2,#0FFH
      CLR P2.0
      LCALL TIME1
TIME1:MOV SCON,#10H
      MOV SP,#50H
      MOV IE,#10000010B
      MOV TMOD,#01H
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV JS,#00H
      MOV GW,#3FH
      MOV SW,#3FH
      MOV BW,#3FH
      MOV QW,#3FH
      MOV WW,#3FH
      MOV SWW,#3FH
      LCALL LED10
      SETB TR0
      SJMP $
INTT0:PUSH PSW
      PUSH ACC
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV R6,DSQ
      DJNZ R6,LT1
      JNB P1.0,S1
S1:   LCALL DELAY
      JNB P1.0,AA2
      CLR C
      MOV A,JS
      ADD A,#01H
      DA  A
      MOV JS,A
      MOV R5,A
      ANL A,#0FH
SS1:  MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV GW,A
      MOV A,R5
      SWAP A
      ANL A,#0FH
      MOVC A,@A+DPTR
      CJNE A,2,SS1
      MOV SW,A
      LCALL LED10
      MOV R6,#20
LT1:  MOV DSQ,R6
      POP ACC
      POP PSW
      RETI
LED10:MOV R7,#02H
      MOV R0,#GW
LED11:MOV A,@R0
      MOV SBUF,A
LED12:JNB TI,LED12
      CLR TI
      INC R0
      DJNZ R7,LED11
      RET
;**********消毒20S控制子程序**********
AA2:  JNB P1.0,$
      MOV P2,#0FFH
      CLR P2.1
      LCALL TIME2
TIME2:MOV SCON,#10H
      MOV SP,#50H
      MOV IE,#10000010B
      MOV TMOD,#01H
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV JS,#00H
      MOV GW,#3FH
      MOV SW,#3FH
      MOV BW,#3FH
      MOV QW,#3FH
      MOV WW,#3FH
      MOV SWW,#3FH
      LCALL LED20
      SETB TR0
      SJMP $
INTT2:PUSH PSW
      PUSH ACC
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV R6,DSQ
      DJNZ R6,LT2
      JNB P1.0,S2
S2:   LCALL DELAY
      JNB P1.0,BB1
      CLR C
      MOV A,JS
      ADD A,#01H
      DA  A
      MOV JS,A
      MOV R5,A
      ANL A,#0FH
SS2:  MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV GW,A
      MOV A,R5
      SWAP A
      ANL A,#0FH
      MOVC A,@A+DPTR
      CJNE A,2,SS2
      MOV SW,A
      LCALL LED21
      MOV R6,#20
LT2:  MOV DSQ,R6
      POP ACC
      POP PSW
      RETI
LED20:MOV R7,#02H
      MOV R0,#GW
LED21:MOV A,@R0
      MOV SBUF,A
LED22:JNB TI,LED22
      CLR TI
      INC R0
      DJNZ R7,LED21
      RET
;**********加热20S控制子程序**********
BB1:  JNB P1.0,$
      MOV P2,#0FFH
      CLR P2.2
      LCALL TIME3
TIME3:MOV SCON,#10H
      MOV SP,#50H
      MOV IE,#10000010B
      MOV TMOD,#01H
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV JS,#00H
      MOV GW,#3FH
      MOV SW,#3FH
      MOV BW,#3FH
      MOV QW,#3FH
      MOV WW,#3FH
      MOV SWW,#3FH
      LCALL LED30
      SETB TR0
      SJMP $
INTT3:PUSH PSW
      PUSH ACC
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV R6,DSQ
      DJNZ R6,LT3
      JNB P1.0,S3
S3:   LCALL DELAY
      JNB P1.0,BB2
      CLR C
      MOV A,JS
      ADD A,#01H
      DA  A
      MOV JS,A
      MOV R5,A
      ANL A,#0FH
SS3:  MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV GW,A
      MOV A,R5
      SWAP A
      ANL A,#0FH
      MOVC A,@A+DPTR
      CJNE A,2,SS3
      MOV SW,A
      LCALL LED30
      MOV R6,#20
LT3:  MOV DSQ,R6
      POP ACC
      POP PSW
      RETI
LED30:MOV R7,#02H
      MOV R0,#GW
LED31:MOV A,@R0
      MOV SBUF,A
LED32:JNB TI,LED32
      CLR TI
      INC R0
      DJNZ R7,LED31
      RET
;**********加热20S控制子程序**********
BB2:  JNB P1.0,$
      MOV P2,#0FFH
      CLR P2.3
      LCALL TIME4
TIME4:MOV SCON,#10H
      MOV SP,#50H
      MOV IE,#10000010B
      MOV TMOD,#01H
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV JS,#00H
      MOV GW,#3FH
      MOV SW,#3FH
      MOV BW,#3FH
      MOV QW,#3FH
      MOV WW,#3FH
      MOV SWW,#3FH
      LCALL LED40
      SETB TR0
      SJMP $
INTT4:PUSH PSW
      PUSH ACC
      MOV TH0,#3CH
      MOV TL0,#0B0H
      MOV R6,DSQ
      DJNZ R6,LT4
      CLR C
      MOV A,JS
      ADD A,#01H
      DA  A
      MOV JS,A
      MOV R5,A
      ANL A,#0FH
SS4:  MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV GW,A
      MOV A,R5
      SWAP A
      ANL A,#0FH
      MOVC A,@A+DPTR
      CJNE A,2,SS4
      MOV SW,A
      LCALL LED40
      MOV R6,#20
LT4:  MOV DSQ,R6
      POP ACC
      POP PSW
      RETI
LED40:MOV R7,#02H
      MOV R0,#GW
LED41:MOV A,@R0
      MOV SBUF,A
LED42:JNB TI,LED42
      CLR TI
      INC R0
      DJNZ R7,LED41
      RET
;**********共阴极字型码表**********
TAB:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;**********延时子程序**********
DELAY:MOV R1,#10H
LOOP1:MOV R2,#200H
LOOP2:DJNZ R2,LOOP2
      DJNZ R1,LOOP1
      RET
      END

最新回复

想将你的程序烧芯片试下,可是你没有原理图,我的实验板的P口与你的程序不同要修改。如果有兴趣的的请将原理图E-Mail:shaocunsheng@163.com.  详情 回复 发表于 2009-2-21 18:57
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

对于现在仍然坚守在纯汇编工作岗位的同志们表示钦佩和敬意!
可以找HotPower切磋,其汇编功底杠杠的!

 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
汇编比较难看懂,先下载来看看
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
汇编其实很容易看懂,不过如果不知道这段程序是想干吗的时候,就麻烦了。
汇编难在调试跟踪,所有的异常处理,条件判断,来回蹦跶,可不像C那样清晰自然。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 1 楼 shuiyan 的回复:
对于现在仍然坚守在纯汇编工作岗位的同志们表示钦佩和敬意!
可以找HotPower切磋,其汇编功底杠杠的!


汗一下,用纯汇编的就真的那么少吗?

楼主程序只要烧进片子试试就可以了,光看没实践哪能保证一次成功。

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
纯汇编写的时候很容易,不过维护就很麻烦了。
你翻过三年前你写的纯汇编吗?
我可是吃过很大的苦头的,不要说对别人写的纯汇编程序进行维护,就连自己写的,注释详细的纯汇编程序,再次看的时候都有种想掐死自己的感觉。

而且纯汇编代码重复利用率不高。

不过有一类人的纯汇编的要求应该比较高,那就是做反向的,不是简单的copy&paste(从原机到目标机),而是需要自己看懂,再改的。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
晕,十年前的51汇编都翻过,有阵子专门从事改别人的汇编以增删功能.没有注释,没有缩进的.想掐死自己的不适合做汇编.
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
啊,那fclvgyfe绝对是牛人了,汇编用成这样就绝对不是盖的,佩服!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
可以优化呀
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
从学校出来,我的汇编也丢了,呵呵

很多时候都丢给编译器了....

其实感觉,现在的片子更多的不再是性能的资源的问题

问题在于创意和想法...

呵呵
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
汇编N人
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

12
 
虽然我现在已经没有使用汇编了,但是汇编是我的第一语言,所以无论如何我都是汇编的终极GG;
不管现在学汇编语言会有多少人的不屑,但是我还是会支持汇编;
楼主的汇编很有意思,虽然我觉得自己的不错了,但是汇编其实也是很强的
我要做汇编的高手,也要做C
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

13
 
***************************************************************************

思想决定行动,行动决定习惯,习惯决定命运.
程序员在深圳QQ群,交流产生思想碰撞.

部份专业群:
程序员在深圳c++群15195967
程序员在深圳英语学习群:23864353
程序员在深圳c++Ⅱ17409451
程序员在深圳嵌入式开发群37489763
程序员在深圳移动开发群31501597
程序员在深圳创业群33653422

部份高级程序员群:
高级群I:17538442
高级群II:7120862

部份初、中级程序员群:
第三群:2650485
第五群:29537639
第四群:28702746
第六群:10590618
第七群:10543585
第八群:12006492
第九群:19063074
第十群:2883885
第十一群:25460595
第十二群:9663807

深圳程序员QQ群联盟成立三年多,拥有三十个以上的QQ群,人数超二千多人,大量经验丰富的老手,成员从业于大公司(如微软、IBM,SUN,华为

)、来自国内著名高校和研究院成员,和有丰富实践经验的高级程序员、系统分析员(包括参加过上亿元的项目的架构师),有很热爱技术的成员

(包括自己写操作系统),还有少数女程序员。推荐:深程高级群I:17538442 深程高级群II:7120862 (深程高级群不欢迎新手,如果在深圳,月薪

6K以下的别加入) c++:15195967  mobile:31501597嵌入式:37489763  
——————————————————————————————————————————
如果你不是第一次看到此广告,说明我们最近T了一些人,因为我们要不断提升群的质量,保证名副其实.
-------------------------------------------------------------------------------------
在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到:
      1. 通读手册,试着自己找答案。
      2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。
      3. 在网上搜索(个人推荐google~)。
      4. 向你身边精于此道的朋友打听。
我想我们首先应该靠自己解决问题,然后才是问!

*****************************************************************************
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
想将你的程序烧芯片试下,可是你没有原理图,我的实验板的P口与你的程序不同要修改。如果有兴趣的的请将原理图E-Mail:shaocunsheng@163.com.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表