微机原理与接口技术课程设计

微机原理与接口技术课程设计,用到8255,8254等

;8255
PA55 EQU 3000H
PB55 EQU 3004H
PC55 EQU 3008H
P55CTL EQU 300CH
;IO
PIO EQU 3040H
;8254
P054 EQU 3080H
P154 EQU 3084H
P54CTL EQU 308CH
;ADC0809
PADC EQU 30C0H


DATA SEGMENT

LED DB 3FH,06H,5BH,4FH ;LED数码管的共阴极段码
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H,00H
CHAR DB '0123456789ABCDEF' ;字符的ASCII码表

ADATA DB 10 dup(?) ;存放采集10次数据量的缓冲区
TIME DB ? ;循环次数
SUM DW 0 ;10次数据量的总和
MAX DB ? ;10次的最大值
MIN DB ? ;10次的最小值
VR DB ? ;数据量的平均值

DIV1 DB 8
DIV2 DB 51
MUL1 DB 10
BCDNUM DB 3 DUP(?)
DATA ENDS


STAC SEGMENT PARA STACK
DB 256 DUP(?)
STAC ENDS


CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STAC

START:
MOV AX,DATA
MOV DS,AX
P1:
CALL GETV
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ P1 ;无按键按下
QUIT:
MOV AX,4C00H
INT 21H

DELAY PROC NEAR ;延时子程序
PUSH CX
MOV CX,0FFFFH
LOOP $
POP CX
RET
DELAY ENDP


GETV PROC NEAR ;整个大的流程图

GETV0:
MOV AL,81H ;初始化8255,10000001B,8255的A口、B口输出
MOV DX,P55CTL
OUT DX,AL

GETV1:
MOV AL,0 ;数码管全灭
MOV DX,PB55
OUT DX,AL

GETV2: ;LED全灭
MOV DX,PIO
OUT DX,AL ;LED=0时灯灭

DOWN: ;关报警
MOV AL,10H ;写8254控制字,00010000B,方式0二进制计数
MOV DX,P54CTL
OUT DX,AL
MOV AL,1 ;计数初值N=1
MOV DX,P054 ;计数器0
OUT DX,AL

MOV AL,50H ;01010000B,方式0二进制计数
MOV DX,P54CTL
OUT DX,AL
MOV AL,1 ;计数初值N=1
MOV DX,P154 ;计数器1
OUT DX,AL ;OUT1保持输出高电平,灯灭

JUDGEK:
MOV DX,PIO
IN AL,DX
MOV BL,80H ;10000000B,判断K7?=1
TEST AL,BL
JZ GETVWAIT ;若K7=0,系统停止
;若K7=1,采集10个AD值,送AD输入缓冲区
CALL AVERAGE ;均值滤波,得到AD的平均值VR

MOV DX,PIO ;LED显示VR值
MOV AL,VR
OUT DX,AL
CALL DELAY ;延时

MOV DX,PIO
IN AL,DX

MOV BL,01000000B ;判断K6?=1
TEST AL,BL
JZ DISPV1 ;若K6=0,数据采集控制系统
;若K6=1,表示数码管为电压表显示
CALL DisNum ;电压表显示
CALL DELAY
JMP JUDGEK

GETVWAIT:
CALL DELAY ;延时
RET

DISPV1:
MOV AL,VR ;数据显示
CMP AL,51 ;1V对于二进制数51

你可能喜欢

  • C语言实例
  • 汇编语言指令大全
  • 电子时钟课程设计
  • 微机原理课程设计电子钟
  • 微机原理课程设计交通灯

微机原理与接口技术课程设计相关文档

最新文档

返回顶部