找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5206|回复: 2
打印 上一主题 下一主题
收起左侧

单片机工业控制程序

[复制链接]
跳转到指定楼层
楼主
ID:60416 发表于 2014-10-13 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;工业控制程序
;实验目的:
;1.掌握单片机开发系统的使用
;2.掌握一次性在线仿真调试的全过程
;3.掌单片机如何编程及中断的应用
;实验原理:
;在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程,
;这些断续生产过程又都是按某种顺序有规律地完成预定的动作。对这类断续生
;产过程的控制称顺序控制。
;例如注塑机要生产一个工件,其工艺过程大致按"合模→注射→延时→开模
; →产伸→产退"这么个时间顺序动作。这种顺序控制采用单片机是很容易实现的。
;本实验是以控制注塑机为例而设计的典型时间顺序控制实验。   
   ; 我们把89XX P0口的0-6位依次用发光二极管作为模拟输出指示,
;共分7道工序,P1.7为声光报警,P3.4为开工启动开关,P3.2,P3.3为外部故障输入模拟开关,
;低电平告警。
;为了问题简单化,我们设定每道工序只有一位有输出(高电平灯亮),工作流程表如下:
;P0.7  P0.6  P0.5  P0.4  P0.3  P0.2  P0.1  P0.0  工序  控制字
;0     0     0     0     0     0     0     1     1     01H
;0     0     0     0     0     0     1     0     2     02H
;0     0     0     0     0     1     0     0     3     04H
;0     0     0     0     1     0     0     0     4     08H
;0     0     0     1     0     0     0     0     5     10H
;0     0     1     0     0     0     0     0     6     20H
;0     1     0     0     0     0     0     0     0     40H
;1     0     0     0     0     0     0     0     0     80H
;以上设硬件接线为高电平有效,如果设硬件接线为低电平有效(灌电流,减小CPU功耗),
;LED灯亮,你又如何写出控制字!请你画出程序流程图!
        ORG     0000H  ;工业顺序控制程序
        AJMP    MIN  ;转主程序
        ORG     0003H  ;INT0中断入口地址
        AJMP    INTA  ;转中断服务程序
        ORG     0013H  ; INT1中断入口地址
        AJMP    INTB  ;转中断服务程序
        ORG     0050H  ;主程序
MIN:  MOV SP,#50H   
MOV     P0,#0FFH ;关P0口(设高电平LED灯亮)
        MOV     P3,#0FFH ;关P3口(设低电平工作
L0056:  JNB     T0,$  ;等开工(P3.4)
        ORL     IE,#85H  ;允许INT0,INT1中断
        ORL     IP,#04H  ;设为INT1为优先中断
L005F:  MOV     P0,#0FEH ;执行工序1
        ACALL   S00E0  ;延时
        MOV     P0,#0FDH ; 执行工序2
        ACALL   S00E0  ;
        MOV     P0,#0FBH ; 执行工序3
        ACALL   S00E0  ;
        MOV     P0,#0F7H ; 执行工序4
        ACALL   S00E0  ;
        MOV     P0,#0EFH ; 执行工序5
        ACALL   S00E0  ;
        MOV     P0,#0DFH ; 执行工序6
        ACALL   S00E0  ;
        MOV     P0,#0BFH ; 执行工序7
        ACALL   S00E0  ;
MOV P0,#7FH  ;执行工序8
        ACALL   S00E0  ;
        SJMP    L005F  ;循环
        ORG     0090H  ;INT0中断服务程序
INTA:   MOV     B,R2  ;保护现场
        MOV     P0,#0FFH ;关输出
        MOV     20H,#0F0H ;报警声参数
L0098:  SETB    P1.7  ;P1.7输出报警声
        ACALL   S00D0  ;延时时间比INT1长
        CLR     P1.7   ;
        ACALL   S00D0  ;
        DJNZ    20H,L0098 ;不为零转
        CLR     P1.7   ;
        ACALL   S00E0  ;
        JNB     INT0,L0098 ;INT0为零继续报警
        MOV     R2,B  ; INT0为1不报警,恢复现场
        SETB    P1.7
RETI      ;中断返回
ORG 00B0H   ; INT1中断服务程序
INTB:   MOV     B,R2  ; 保护现场
        MOV     P1,#0FFH ; 关输出
        MOV     B,#20H  ; 报警声参数
L00B8:  SETB    P1.7  ; P1.7输出报警声
        ACALL   S00D6  ; 延时时间比INT0短
        CLR     P1.7   ;
        ACALL   S00D6  ;
        DJNZ    20H,L00B8 ; 不为零转
        CLR     P1.7   ;
        ACALL   S00E0  ;
        JNB     INT1,L00B8 ; INT1为零继续报警
        MOV     R2,B  ; INT1为1不报警,恢复现? SETB    P1.7
        RETI      ; 中断返回
  ORG  00D0H
S00D0:  MOV     R2,#07H  ;
        ACALL   S00EB  ;
        RET         ;
  ORG  00D6H
S00D6:  MOV     R2,#05H  ;
        ACALL   S00EB
        RET     
        ORG     00E0H  ;
S00E0:  MOV     R2,#25H
        ACALL   S00EB
RET
        ORG     00EBH  ;通用延时子程序
S00EB:  PUSH    02H  ;R2(复位后R2即为02H)存放时间常数,进栈保护
L00ED:  PUSH    02H  ; R2进栈保护
L00EF:  PUSH    02H  ; 进栈
L00F1:  DJNZ    R2,$  ;R2不为零等待
        POP     02H  ;出栈
        DJNZ    R2,L00EF ; R2不为零转
        POP     02H  ; 出栈
        DJNZ    R2,L00ED ; R2不为零转
        POP     02H  ; 出栈
        DJNZ    R2,S00EB ; R2不为零转
        RET       ;子程序返回
        END


评分

参与人数 1黑币 +5 收起 理由
舞风 + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:76408 发表于 2018-1-31 16:54 | 只看该作者
好东西,收藏了。谢谢。
回复

使用道具 举报

板凳
ID:340011 发表于 2018-5-28 19:06 | 只看该作者
喜欢实用的,赞
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表