八、参考程序:T3.ASM
NAME T3 ;I/O口扩展实验一 PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H
START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP
;调用273显示单元(以下雷同)
单片机实验指导书 第21页
ACALL DE3S ;延时3秒
LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP
ACALL DE10S ;延时10秒
MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP
MOV R2,#05H ;R2中的值为黄灯闪烁次数 TTT: MOV A,#14H ; ACALL DISP
ACALL DE02S ; MOV A,#10H ; ACALL DISP
ACALL DE02S ; DJNZ R2,TTT ; MOV A,#11H ; ACALL DISP
ACALL DE02S ; MOV A,#21H ; ACALL DISP
ACALL DE10S ; MOV A,#01H ; ACALL DISP
MOV R2,#05H ;GGG: MOV A,#41H ; ACALL DISP
ACALL DE02S ; MOV A,#01H ; ACALL DISP
ACALL DE02S ; DJNZ R2,GGG ; MOV A,#03H ;东西路口黄灯亮;南北路口红灯亮 延时0.2秒
东西路口黄灯灭;南北路口红灯亮 延时0.2秒
返回TTT,使东西路口黄灯闪烁五次 两个红灯亮,黄灯、绿灯灭 延时0.2秒
东西路口红灯亮;南北路口绿灯亮 延时10秒
东西路口红灯亮;南北路口绿灯灭 黄灯闪烁五次
东西路口红灯亮;南北路口黄灯亮 延时0.2秒
东西路口红灯亮;南北路口黄灯灭 延时0.2秒
返回GGG,使南北路口;黄灯闪烁五次 两个红灯亮,黄灯、绿灯灭
单片机实验指导书 第22页
ACALL DISP
ACALL DE02S ;延时0.2秒 JMP LLL ;转LLL循环 DE10S: MOV R5,#100 ;延时10秒 JMP DE1
DE3S: MOV R5,#30 ;延时3秒 JMP DE1
DE02S: MOV R5,#02 ;延时0.2秒 DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET
DISP: MOV DPTR,#PORT ;273显示单元
CPL A MOVX @DPTR,A RET
END
思考题:
修改程序,要求将红绿灯控制循环中,红绿灯转换时,黄灯闪烁5次后的“红灯亮,黄、绿灯全灭”状态,改为“红绿灯全灭,东西、南北方向黄灯闪烁10次”。
单片机实验指导书 第23页
实验4 简单I/O口扩展实验二
一、实验目的:
1. 学习在单片机系统中扩展简单I/O口的方法。 2. 学习数据输入,输出程序的编制方法。 二、实验设备:
CPU挂箱、8031CPU模块
三、实验原理:
MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。
程序中加了一段延时程序,以减少总线口读写的频繁程度。延时时间约为0.01秒,不会影响显示的稳定。 四、实验内容:
利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来。
五、实验原理图:
简单I/O实验2
六、实验步骤:
1. 74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1。
单片机实验指导书 第24页
2. 74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2。 3. 编程、全速执行。
4. 拨动开关K1~K8,观察发光二极管状态的变化。 七、程序框图:
八、参考程序:T4.ASM
NAME T4 ;I/O口扩展实验 CSEG AT 0000H LJMP START CSEG AT 4100H
INPORT EQU 0CFA8H ;74LS244端口地址 OUTPORT EQU 0CFB0H ;74LS273端口地址 START: MOV DPTR,#INPORT
LOOP: MOVX A,@DPTR ;读开关状态 MOV DPTR,#OUTPORT
MOVX @DPTR,A ;显示开关状态 MOV R7,#10H ;延时 DEL0: MOV R6,#0FFH DEL1: DJNZ R6,DEL1 DJNZ R7,DEL0 JMP START END
单片机实验指导书 第25页