内容发布更新时间 : 2024/11/16 8:30:26星期一 下面是文章的全部内容请认真阅读。
MOV R2,#20H LCALL DELAY JNB P3.3,HA1S2 INC A
PUSH ACC MOV P1,A
POP ACC
AJMP HA1S1 DELAY: PUSH 02H DELAY1: PUSH 02H DELAY2: PUSH 02H
DELAY3: DJNZ R2,DELAY3 POP 02H
DJNZ R2,DELAY2 POP 02H
DJNZ R2,DELAY1 POP 02H
DJNZ R2,DELAY RET
END
C语言:
#include
#define _8255_A XBYTE[0x8000] #define _8255_B XBYTE[0x8001] #define _8255_C XBYTE[0x8002] #define _8255_Ctrl XBYTE[0x8003]
main() {
_8255_Ctrl =0x90; while (1) {
_8255_B=_8255_A; } }
实验二 单片机I/O口应用实验_工业顺序控制
6
一、 实验目的
掌握工业顺序控制程序的简单编写和中断的使用。
二、 实验预备知识
在工业控制中,像冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程,按某种程序有规律地完成预定的动作,对这类断续生产过程的控制称顺序控制,例:注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。
三、 实验内容
8031的P1.0~P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。P3.3为外故障输入模拟开关,P3.3为0时不断告警,P1.7为报警声音输出。
四、 实验说明
实验中用外部中断0,编中断服务程序的关键是:
1、保护进入中断时的状态,并在退出中断之前恢复进入中断前的状态。
2、必须在中断程序中设定是否允许中断重入,即设置EX0位。
一般中断程序进入时应保护PSW、ACC以及中断程序中使用到的但并非其专用的寄存器,本实验中未涉及。
五、 实验接线图
图(2-1)
六、 实验程序框图
7
主程序: 开始 中断服务子程序:
关输出 中断、P1口、P3口初始化 P1口全低 保护现场 报 警 等开工 故障清除了吗? 工序1延时 Y 恢复现场 N 工序2延时 · · · · · · · 工序7延时 返 回 图(2-3) 图(2-2)
七、 实验步骤
1、P3.4连K1,P3.3连K2,P1.0~P1.6分别连到L0~L6,P1.7连SIN(电子音响驱
动控制区),其卧式开关打在音乐上,短路片选择左边为蜂鸣器,下边为喇叭。 2、K1开关拨在上面,K2拨在上面。
3、调试、运行程序test2中的GYSX.ASM。 4、K1拨至下面(低电平),各道工序应正常运行。 5、K2拨至下面(低电平),应有声音报警(人为设置故障)。
6、K2拨至上面(高电平),即排除故障,程序应从刚才报警的那道工序继续执行。
八、实验程序
ORG 0000H
AJMP 0030H
ORG 0013H
LJMP HA2S3 ORG 0030H
MOV P1,#0fFH
HA2S:
ORL P3,#00H HA2S1: JB P3.4,HA2S1 ORL IE,#84H
8
ORL IP,#04H
MOV PSW,#00H MOV SP,#53H HA2S2: MOV P1,#081H ACALL HA2S7 MOV P1,#082H ACALL HA2S7 MOV P1,#084H ACALL HA2S7 MOV P1,#088H ACALL HA2S7 MOV P1,#090H ACALL HA2S7 MOV P1,#0A0H ACALL HA2S7 MOV P1,#0C0H ACALL HA2S7
SJMP HA2S2
HA2S3: MOV B,R2 HA2S5: SETB P1.7
ACALL HA2S6 CLR P1.7 ACALL HA2S6 JNB P3.3,HA2S5 MOV R2,B
RETI
HA2S6: MOV R2,#06H ACALL DELAY
RET
HA2S7: MOV R2,#30H ACALL DELAY
RET
DELAY:PUSH 02H DELAY1: PUSH 02H DELAY2: PUSH 02H DELAY3: DJNZ R2,DELAY3 POP 02H
DJNZ R2,DELAY2 POP 02H
DJNZ R2,DELAY1
9
POP 02H
DJNZ R2,DELAY RET END
修改程序,使每道工序中有多位输出。
10