微型计算机原理及应用实验指导实验一数据查找实验一、实验目的熟悉汇编语言编程。
二、实验内容在7000H-700FH中查出有几个字节是零,统计“00”的个数再显示在数码管上。
三、实验程序框图四、实验步骤(1)在7000H-700FH单元中放入随机数,其中几个单元中输入零。
(2)用连续方式从起始地址0160H开始运行程序(输入0160后按EXEC键)。
(3)观察显示器上的内容,应显示内容为“00”的单元的个数。
五、思考修改程序,查找其它内容。
实验程序1 ORG 0160H2 FIND: MOV SP,#60H ;设栈指针3 MOV R0,#10H ;查找16个字节4 MOV R1,#00H5 MOV DPTR,#7000H6 FIND1: MOVX A,@DPTR7 CJNE A,#00H,FIND2 ;取出的内容与00H相等吗?8 INC R1 ;计数值加1,指针加19 FIND2: INC DPTR10 DJNZ R0,FIND1 ;未完继续11 MOV A,R112 MOV R0,#79H ;个数送显示缓冲区13 ANL A,#0FH14 MOV @R0,A15 INC R016 MOV A,R117 SWAP A18 ANL A,#0FH19 MOV @R0,A20 INC R021 MOV A,#10H22 MOV R4,#04H23 FIND3: MOV @R0,A24 INC R025 DJNZ R4,FIND326 FIND4: LCALL DISP ;循环调显示程序27 SJMP FIND428 DISP: SETB 0D4H ;显示子程序29 MOV R1,#7EH30 MOV R2,#20H31 MOV R3,#00H32 DISP1: MOV DPTR,#0FF21H33 MOV A,R234 MOVX @DPTR,A35 MOV DPTR,#DATA136 MOV A,@R137 MOVC A,@A+DPTR38 MOV DPTR,#0FF22H39 MOVX @DPTR,A40 DISP2: DJNZ R3,DISP241 DEC R142 CLR C43 MOV A,R244 RRC A45 MOV R2,A46 JNZ DISP147 MOV A,#0FFH48 MOV DPTR,#0FF22H49 MOVX @DPTR,A50 CLR 0D4H51 RET52 DATA1: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;显示代码53 DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH54 END实验二工业顺序控制模拟实验一、实验目的掌握工业顺序控制程序的简单编程和中断的使用。
二、实验预备知识在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程,按某种程序有规律地完成预定的动作,例如注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作。
对这类断续生产过程的控制称为顺序控制,可用单片机控制实现。
三、实验内容8032的P1.0-P1.6控制注塑机的七道工序,模拟控制七只发光二极管的亮灭,高电平时发光二极管点亮。
设定每道工序时间转换为延时,P3.4为启动开关,低电平启动。
P3.3为外故障输入模拟开关,P3.3为0时不断告警。
P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。
四、实验说明实验中使用外部中断0,编中断服务程序的关键是:1. 保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2. 必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
一般在进入中断服务程序时应保护PSW、ACC以及中断服务程序使用但非其专用的寄存器,本实验未涉及。
五、实验程序框图六、实验接线图七、实验步骤(1)P3.4连K1,P3.3连K2,P1.0-P1.6分别连到L1-L7,P1.7连SIN(电子音响输入端)。
(2)K1开关拨在上面,K2开关拨在上面。
(3)用连续方式从起始地址0580H开始运行程序(输入0580后按EXEC键),此时应处于等待启动状态。
(4)K1拨至下面(低电平),各道工序应正常运行。
(5)K2拨至下面(低电平),应有声音报警(人为设置故障)。
(6)K2拨至上面(高电平),即排除故障,程序应从刚才报警的那道工序继续执行。
八、思考修改程序,使每道工序中有多位输出。
实验程序1 ORG 0013H2 LJMP HA2S33 ORG 0580H4 HA2S: MOV P1,#00H ;关各道工序5 ORL P3,#00H6 HA2S1: JB P3.4,HA2S1 ;是否开始工作7 ORL IE,#84H ;初始化中断寄存器8 ORL IP,#04H9 MOV PSW,#00H10 MOV SP,#53H11 HA2S2: MOV P1,#01H ;第一道工序12 ACALL HA2S713 MOV P1,#02H ;第二道工序15 MOV P1,#04H ;第三道工序16 ACALL HA2S717 MOV P1,#08H ;第四道工序18 ACALL HA2S719 MOV P1,#10H ;第五道工序20 ACALL HA2S721 MOV P1,#20H ;第六道工序22 ACALL HA2S723 MOV P1,#40H ;第七道工序24 ACALL HA2S725 SJMP HA2S2 ;循环26 HA2S3: MOV B,R2 ;外部中断服务程序27 HA2S4: MOV P1,#00H ;关各道工序28 MOV 20H,#0A0H29 HA2S5: SETB P1.7 ;声音报警31 CLR P1.732 ACALL HA2S633 DJNZ 20H,HA2S534 CLR P1.735 ACALL HA2S636 JNB P3.3,HA2S4 ;判断故障是否已经排除37 MOV R2,B38 RETI ;排除故障后中断返回39 HA2S6: MOV R2,#06H ;延时子程序140 ACALL DELAY41 RET42 HA2S7: MOV R2,#30H ;延时子程序243 ACALL DELAY44 RET45 DELAY: PUSH 02H ;延时子程序46 DELAY1: PUSH 02H47 DELAY2: PUSH 02H48 DELAY3: DJNZ R2,DELAY349 POP 02H50 DJNZ R2,DELAY251 POP 02H52 DJNZ R2,DELAY153 POP 02H54 DJNZ R2,DELAY55 RET56 END实验三交通灯控制模拟实验一、实验目的1.掌握用8255A芯片扩展8051的输入输出接口的方法;2.掌握8051内部定时器的使用方法;3.掌握8051中断功能的使用方法;4.熟悉8051汇编程序的设计方法。
二、实验设备DVCC-598JH单片机、微机仿真实验系统三、实验内容用8255A芯片扩展单片机的I/O口,用作输出口,控制发光二极管的亮灭,模拟交通灯管理。
编程实现各个状态的转换。
每个状态的持续时间用8051单片机的内部定时器和中断实现。
四、实验要求因为本实验是交通灯控制模拟实验,所以要先了解实际交通灯的变化情况和规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。
然后回到状态1。
状态1至状态4为一个循环;循环不断重复,直到断电。
在本实验中,用十二个发光二极管代表十二盏交通灯,要求发光二极管的亮灭状态转换与交通灯相同。
各状态的持续时间和黄灯闪烁次数要求如表1所示。
要求用8051内部定时器和中断功能实现各个状态的延时。
状态要求0 仅在系统复位后执行一次,持续10S。
1 每个循环执行一次,持续20S。
2 每个循环执行一次,黄灯闪烁5次;每次闪烁,黄灯亮和灭均持续0.5S。
3 每个循环执行一次,持续20S。
4 每个循环执行一次,黄灯闪烁5次;每次闪烁,黄灯亮和灭均持续0.5S。
做实验前要完成如下准备工作:1.确定各个状态对应的8255A的输出数据。
2.根据8051内部定时器和中断的特点设计定时方式。
3.绘制程序的流程图。
4.编制控制程序。
五、实验程序框图图1 状态转换六、实验接线图及说明图2 实验接线十二个发光二极管L1-L12的亮灭由8255A的输出口线控制,其对应关系如表2所示。
方向东南西北颜色绿黄红绿黄红绿黄红绿黄红灯序号L12 L11 L10 L9 L8 L7 L6 L5 L4 L3 L2 L1 控制口线PB3 PB2 PB1 PB0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 控制逻辑为:控制口线输出高电平时,对应的发光二极管亮;控制口线输出低电平时,对应的发光二极管灭。
七、实验步骤1.按接线图,连接8255A的输出口线和发光二极管。
2.输入程序。
3.调试程序,检验状态的转换和持续的时间。
实验程序1 ORG 0630H2 HA4S: MOV SP,#60H ;设栈指针3 MOV DPTR,#0FF2BH4 MOV A,#80H ;设置PC、PB口为输出口,工作在方式05 MOVX @DPTR,A6 MOV DPTR,#0FF29H7 MOV A,#02H8 MOVX @DPTR,A9 INC DPTR10 MOV A,#49H11 MOVX @DPTR,A ;点亮四个红灯12 MOV R2,#25H13 LCALL DELAY ;延时14 HA4S3: MOV DPTR,#0FF29H15 MOV A,#08H16 MOVX @DPTR,A17 INC DPTR18 MOV A,#61H19 MOVX @DPTR,A ;东西绿灯亮,南北红灯亮20 MOV R2,#55H21 LCALL DELAY ;延时22 MOV R7,#05H ;黄灯闪烁次数为05H23 HA4S1: MOV DPTR,#0FF29H25 MOVX @DPTR,A26 INC DPTR27 MOV A,#51H ;东西黄灯亮,南北红灯亮28 MOVX @DPTR,A29 MOV R2,#20H30 LCALL DELAY ;延时31 MOV DPTR,#0FF29H32 MOV A,#00H33 MOVX @DPTR,A34 INC DPTR35 MOV A,#41H ;南北红灯亮36 MOVX @DPTR,A37 MOV R2,#20H38 LCALL DELAY ;延时39 DJNZ R7,HA4S1 ;闪烁次数未到继续40 MOV DPTR,#0FF29H41 MOV A,#03H42 MOVX @DPTR,A43 INC DPTR45 MOVX @DPTR,A ;东西红灯亮,南北绿灯亮46 MOV R2,#55H47 LCALL DELAY ;延时48 MOV R7,#05H ;置黄灯闪烁次数49 HA4S2: MOV DPTR,#0FF29H50 MOV A,#02H51 MOVX @DPTR,A52 INC DPTR53 MOV A,#8aH54 MOVX @DPTR,A ;东西红灯亮,南北黄灯亮55 MOV R2,#20H56 LCALL DELAY ;延时57 MOV DPTR,#0FF29H58 MOV A,#02H59 MOVX @DPTR,A60 INC DPTR61 MOV A,#08H ;东西红灯亮62 MOVX @DPTR,A64 LCALL DELAY ;延时65 DJNZ R7,HA4S2 ;闪烁次数未到继续66 LJMP HA4S3 ;循环67 DELAY: PUSH 02H ;延时子程序68 DELAY1: PUSH 02H69 DELAY2: PUSH 02H70 DELAY3: DJNZ R2,DELAY371 POP 02H72 DJNZ R2,DELAY273 POP 02H74 DJNZ R2,DELAY175 POP 02H76 DJNZ R2,DELAY77 RET78 END实验四A/D转换实验一、实验目的1. 掌握A/D转换与单片机的接口方法。