哈工大单片机实验报告 下载本文

1.P3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。

2.P1口做输出口,编写程序,使P1口接的8 个发光二极管L1—L8按16进制加一方式点亮发光二极管。

三、程序框图

四、实验电路

五、实验过程

实验是将P3.3口串行输入的电压变换次数变为累加器中的数并用P1口并行显示出来。P3.3读入数据前应加高电平防止误读。每次读入电压负跳变,累加器中数值加一,取反送至P1口。P1口八位分别控制8个LED灯管,若为高电平则灭,低电平则亮,从而通过灯的亮灭来表示按键次数。

六、实验结果及分析

实验中每开合一次开关K1,LED灯的显示情况表示的数字就加一,如同二进制数,灯亮表示1,灯灭表示0。

-32-

问题回答:开合K1开关13次即对应的二进制数为1101,点亮的LED灯为L1、L3和L4。

七、实验源程序

ORG 0000H LJMP MAIN ORG 0810H MAIN: MOV A, #0FFH CLR C LOOP0: MOV C, P3.3 JC LOOP0 ACALL DELAY LOOP1: MOV C, P3.3 JC LOOP0 LOOP2: MOV C, P3.3 JNC LOOP2 ACALL DELAY DEC A MOV P1, A JMP LOOP0 DELAY: MOV R6, #00H DELAY1: MOV R7, #80H DJNZ R7, $ DJNZ R6, DELAY1 RET END

实验四 工业顺序控制

一、实验目的

掌握工业顺序控制程序的简单编程,中断的使用。

二、实验内容

8032的P1.0—P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平启动。P3.3为外故障输入模拟开关,P3.2为0时不断警告。P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。

-33-

三、程序框图

四、实验电路

五、实验过程

实验中用外部中断0,编中断服务程序的关键是:

1.保护进入中断时的状态,并在退出中断之前恢复进入的状态。

2.必须在中断程序中设定是否允许中断重入,即设置EX0位。 运行过程:

(1)连续方式开始运行程序,此时应在等待开工状态。 (2)K1拨至低电平“L”位置,各道工序应正常运行。

(3)K2拨至低电平“L”位置,应有声音报警(人为设置故障)。

(4)K2拨至高电平“H”位置,即排除故障,程序应从报警的那道工序继续执行。

实验中运用外部中断0来实现报警功能,由K1、K2分别模拟总开关和外部紧急事件,一旦有外界中断或人为控制,系统则停在当前工序,执行中断程序。报警时调用响铃子程序设定蜂鸣器响铃,时间由延时长度控制。外部中断消失,且允许工作时,系统按工序一步一步循环进行,由亮灯表示工序进行过程,由延时子程序设定工序持续时长。

-34-

六、实验结果及分析

实验中工序进行由小灯亮灭表示,一旦遇到K1変高电平或者K2为低电平系统即停止K2为低时产生报警声响,K2为高时才继续正常工作。 工作等待中断被处理,只有K1为低,

问题回答:工序一L1、L2亮,工序二L2、L3亮,需将工序一中MOV P1, #7EH改为MOV P1, #7CH,同时将工序二中MOV P1, #7DH改为MOV P1, #79H。

七、实验源程序

ORG 0000H LJMP MAIN ORG 0003H LJMP INTISR ORG 0190H MAIN: MOV SP, #60H MOV P1, #00H MOV C, P3.4 JC MAIN MOV A, #0FEH SETB EX0 SETB EA LOOP: MOV P1, A ACALL DELAY RL A

CJNE A, #7FH,LOOP MOV A, #0FEH SJMP LOOP

DELAY: MOV R0, #0FAH DL1: MOV R1, #7DH DL2: NOP NOP

DJNZ R1, DL2 DJNZ R0, DL1 RET

INTISR: CLR EX0

-35-