当前位置:文档之家› 天津理工大学课程设计实验报告

天津理工大学课程设计实验报告

MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL
CALL DALLY2
MOV AH,1 ;判断是否有按键按下
INT 16H
JMP LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CLI
MOV AX,0000H ;恢复INTR原中断矢量
MOV AL,IM_BAK
OUT DX,AL
STI
MOV AX,4C00H ;返回到DOS
INT 21H
DALLY1 PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,0FFFFH
D1: MOV AX,100H
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
MOV CX,019FH
A2: MOV AL,[BX]
ROL AL,1
MOV LB,AL
OUT DX,AL
CALL DALLY1
INC BX
LOOP A2
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP4 ;无按键则跳回继续循环,有则退出
LOOP4:
MOV AL,LA
MOV AL,00000011B ;YELLOW
MOV AX,OFFSET MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址
ADD DI,2
MOV AX,ES:[DI]
MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址
MOV AX,SEG MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口段地址
MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址
MOV ES:[DI],AX
ADD DI,2
MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址
MOV ES:[DI],AX
MOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字
OUT DX,AL
CALL DALLY3
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP2 ;无按键则跳回继续循环,有则退出
LOOP2: MOV AL,LA
MOV AL,00000011B ;YELLOW
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL
CALL DALLY2
实验使用模块:8255实验模块,直流电机,LED灯,8259单次脉冲模块。
实验现象:交通灯依次闪烁,当绿灯时直流电机转动,单次脉冲单元可以给任意灯增加延时。
实验电路连接图:
实验代码:
INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址
INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址
RET
DALLY1 ENDP
DALLY2 PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,5FFFH
D3: MOV AX,0FFFFH
D4: DEC AX
JNZ D4
LOOP D3
POP AX
POP CX
RET
DALLY2 ENDP
DALLY3 PROC NEAR ;软件延时子程序
MY8255_C EQU IOY0+02H*2 ;8255的C口地址
MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址
STACK1 SEGMENTቤተ መጻሕፍቲ ባይዱSTACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
TTABLE DB 01H,03H,02H,06H,04H,0CH,08H,09H
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP3 ;无按键则跳回继续循环,有则退出
LOOP3: MOV AL,LA
MOV AL,00001100B ;GREEN
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL
A1: MOV DX,MY8255_B
MOV BX,OFFSET TTABLE
INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址
INTR_IM EQU 0FBH ;INTR对应的中断屏蔽字
IOY0 EQU 3000H ;片选IOY0对应的端口始地址
MY8255_A EQU IOY0+00H*2 ;8255的A口地址
MY8255_B EQU IOY0+01H*2 ;8255的B口地址
START: MOV AX,DATA
MOV DS,AX
MOV DX,MY8255_MODE ;定义8255工作方式
MOV AL,80H ;工作方式0,A口和B口为输出
OUT DX,AL
MOV DX,MY8255_B ;写B口发出的起始数据
MOV AL,01H
OUT DX,AL
MOV LB,AL
MOV DX,MY8255_A ;写A口发出的起始数据
OVER: MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令
MOV AL,20H
OUT DX,AL
MOV AL,20H
OUT 20H,AL
POP AX
IRET
MYISR ENDP
CODE ENDS
END START
实验效果图:
PUSH CX
PUSH AX
MOV CX,0FFFFH
D5: MOV AX,0FFFFH
D6: DEC AX
JNZ D6
LOOP D5
POP AX
POP CX
RET
DALLY3 ENDP
MYISR PROC NEAR ;中断处理程序MYISR
PUSH AX
JZ WAIT1
WAIT1: CALL DALLY2:如果有按键则调用设定好的延迟
MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位
IN AL,DX
MOV IM_BAK,AL ;保存INTR原中断屏蔽字
AND AL,INTR_IM
OUT DX,AL
LOOP1: MOV AL,LA
MOV AL,00110000B ;RED
MOV LA,AL
MOV DX,MY8255_A
LB DB ?
LA DB ? ;定义数据变量
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量
IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量
IM_BAK DB ? ;保存INTR原中断屏蔽字的变量
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
实验报告
学院(系)名称:计算机与通信工程学院
姓名
马春雷
学号
20115508
专业
计算机科学与技术
班级
2011级2班
实验名称
可延时交通灯
课程名称
嵌入式课程设计
课程代码
实验时间
2014年9月22号—26号
实验地点
软件实验室1-109
批改意见
成绩
教师签字:
实验目的:模拟公路上交通灯现象,并增加行人控制灯时能力。
MOV AL,11000000B
OUT DX,AL
MOV LA,AL
CALL DALLY2
CALL DALLY2
MAIN:MOV AX,0000H ;替换INTR的中断矢量
MOV ES,AX
MOV DI,INTR_IVADD
MOV AX,ES:[DI]
MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址
相关主题