LOOP WEN1 DEC BL
JNZ STEP2 ;南北路口黄灯亮 STEP3: MOV DX,0EC0AH ;写入C口 MOV AL,10000001B
OUT DX,AL MOV CX,0 MOV AX,2000H DELAY2: DEC AX JNZ DELAY2 LOOP DELAY2
MOV BL,5 ;STEP4: MOV DX,0EC0AH ; MOV AL,10000010B
OUT DX,AL ; MOV CX,3000H MOV AX,0100H LI2: DEC AX
JNZ LI2 ; LOOP LI2 MOV DX,0EC0AH MOV AL,10000000B
OUT DX,AL ; MOV CX,3000H MOV AX,0100H WEN2: DEC AX JNZ WEN2
控制黄灯亮的次数写入C口 南北红,东西黄 短延时 东西路口黄灯先灭 LOOP WEN2 DEC BL
JNZ STEP4 ;东西路口黄灯再亮 MOV DL,0FFH MOV AH,06H
INT 21H ;执行键盘输入操作 JZ STEP1 MOV AH,4CH
INT 21H ;返回操作系统 CODE ENDS END START
五.成果及感想
该次实验通过对I/O接口芯片8255A的A、C各个接口的电平控制实现点亮
对应LED灯来模拟红绿灯,通过延时程序来执行延时,让我对汇编语言掌握更进一步,同时也对8255A的接口芯片更熟悉了端口控制。
实验二 可编程定时器/计数器(8253)
一、 实验目的
掌握 8253 的基本工作原理和编程方法。
二、 实验内容
1. 按图 5-1 虚线连接电路,将计数器 0 设置为方式 0,计数器初值为 N
(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察 OUT0 电平变化(当输入 N+1 个脉冲后 OUT0 变高电平)。
图 5-1
2. 按图 5-2 连接电图,将计数器 0、计数器 1 分别设置为方式 3,计数初值
设为 1000,用
逻辑笔观察 OUT1 输出电平的变化(频率 1HZ)。
图 5-2
三、 编程提示
1、8253 控制寄存器地址 283H
计数器 0 地址
计数器 1 地址
280H
281H CLK0 连接时
钟 1MHZ。 2、参考流程图:
开 始 设计数器0为 工作方式0 送计数器初值 开 始 设计数器0为 工作方式3 向计数器0送初值1000 先送低字节后送高字节 设计数器1为 工作方式3 向计数器1送初值1000 先送低字节后送高字节 结 束 读计数器值 显示计数值 有键按下吗? N Y 结 束
四、程序
DATA SEGMENT
N EQU 0BH ;计数器初值,不大于0FH CHL DB 0AH,0DH,'$' ;换行 DATA ENDS
STACK1 SEGMENT STACK DW 100 DUP(0) STACK1 ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX
MOV DX,0C403H ;控制寄存器地址
MOV AL,10H ;计数器0,低字节,方式0,二进制计数 OUT DX,AL ;写入控制字 MOV DX,0C400H MOV AL,N
OUT DX,AL 写入计数初值 MOV CL,N
L0: MOV AL,0 ;计数器0锁存 MOV DX,IO8253 OUT DX,AL
MOV DX,0C400H
相关推荐: