——门控系统。
一、实验目的。
掌握8253,8255,8259等工作方式。
二、实验要求。
自行设计一个程序,要求程序内容要包含8253,8255以及8259等。
三、设计思路。
门控系统:通过小键盘输入一个四位数的密码,每输入一个数对应的七段数码管显示a,这是为了判断按键是否有按下。当输入密码与预设密码相同时,绿灯亮起;当输入密码与预设密码不同时,红灯亮起,并可重新输入密码;当输入密码错误超过三次时,此时红灯亮起并发出警报。
四、实验程序。
a8255 equ 288h ;8255 a口。
b8255 equ 289h8255 b口。
c8255 equ 28ah ;8255 c口。
k8255 equ 28bh ;8255控制口。
io8253a equ 280h ;8253 a口。
io8253c equ 283h ;8253控制口。
data segment
table1 dw 0770h,0b70h,0d70h,0e70h,07b0h,0bb0h,0db0h,0eb0h,07d0h,0bd0h,0dd0h,0ed0h,07e0h,0be0h,0de0h,0ee0 ;键盘扫描码表。
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch
39h,5eh,79h,71h,0ffh ;led段码0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
char db ‘0123456789abcdef’ ;字符表。
time db 0h输入密码错误次数。
light db 08h,0ch,0eh,0fh ;七段数码管对应灯亮起的片选信号
password db 31h,32h,33h,34h ;预设密码。
key_in db 5 dup (?输入密码储存空间,从第二个位置开始存。
data ends
stacks segment stack ;堆栈空间。
db 100 dup (?
stacks ends
code segment
assume cs:code,ds:data,ss:stacks,es:data
start:
climov ax,data
mov ds,ax
mov es,ax
mov ax,stacks
mov ss,ax
mov bx,0h
mov dx,k8255 ;初始化8255控制字。
mov al,83h
out dx,al
main_key:
call key ;调用key子函数。
cmp byte ptr key_in,'e' ;用字节比较。
jnz main_key跳转。
l1: mov bx,1h设置bx初始值。
l2: mov si,offset key_in ;验证密码是否正确。
mov di,offset password
mov dl,[si+bx]
cmp dl,[di+bx-1]
jnz l3密码错误。
inc bx
cmp bx,5
jnz l2
mov dx,b8255 ;密码正确程序结束。
mov al,2fh ;密码正确是8255b口的低四位控制片选信号,高四位b5口输出信号给绿灯。
out dx,al
jmp l6
l3: mov dx,b8255 ;密码错误时8255b口低四位控制片选信号,高四位b4口输出信号给红灯与8253的clk
mov al,1fh
out dx,al
mov si,offset time
mov al,[si]
cmp al,2
jz l7inc al
mov [si],al
call delay多个delay延迟红灯亮的时间。
call delay
call delay
call delay
call delay
call delay
mov bx,0
mov dx,k8255 ;由于8255b口输出的始终为高频,通过初始化8255使其b口输出电压减低形成一个脉冲给8253的clk
mov al,83h
out dx,al
jmp main_key
l7: mov dx,io8253c ;向8253写控制字。
mov al,36h ;使0通道为工作方式2
out dx,al
mov ax,3 ;写入循环计数初值3
mov dx,io8253a
out dx,al ;先写入低字节。
mov al,ah
out dx,al ;后写入高字节
l6: mov ax,4c00h ;退出。
int 21h
l5: jmp l1由于程序过长,用jmp跳转。
key proc near
key_loop:
mov ah,1
int 16h
jnz exit ;pc键盘有键按下则退出。
mov dx,c8255
mov al,0fh
out dx,al
in al,dx ;读行扫描值。
and al,0fh
cmp al,0fh
jz key_loop ;未发现有键按下则转。
mov ah,al
mov dx,k8255
mov al,88h
out dx,al
mov dx,c8255
mov al,ah
or al,0f0h
out dx,al
in al,dx ;读列扫描值。
and al,0f0h
cmp al,0f0h
jz key_loop ;未发现有键按下则转。
mov si,offset table1 ;键盘扫描码表首址。
微机原理大作业
一 1.程序。stack segment stack db 256 dup top label word stack ends data segment table dw g1,g2,g3,g4,g5 string1 db 1.change small letters into capital le...
微机原理大作业
大作业2 8086微机系统设计,具体要求如下 工作在最小方式。2 工作时钟频率为 5mhz。3 系统地址总线形成用74ls373。系统数据总线形成用74ls245。4 外部扩充设计16kb程序存储器,芯片选用intel2764,首地址从fc000h开始 外部扩充设计16kb数据存储器,芯片选用int...
微机测控技术 大作业
3.现场总线有什么特点?答 现场总线系统打破了传统控制系统的结构形式,其在技术上具有以下特点 1 系统的开放性现场总线致力于建立统一的工厂底层网络的开放系统。用户可根据自己的需要,通过现场总线把来自不同厂商的产品组成大小随意的开放互连系统。2 互操作性与互用性互操作性是指实现互连设备间 系统间的信息...