您好,欢迎来到世旅网。
搜索
您的当前位置:首页微机原理程序

微机原理程序

来源:世旅网
程序代码 io3 equ 200h io6 equ 208h data segment

ledtab db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

data ends

code segment

assume cs:code,ds:data start: mov ax ,data mov ds , ax lea di , ledtab

mov al , 35h mov dx , 20bh out dx , al

mov ax , 1000h mov dx , 208h out dx , al mov al ,ah out dx , al

mov al , 77h mov dx , 20bh out dx , al

mov al , 1000h mov dx , 209h out dx , al mov al , ah out dx , al

mov al , 81h ; 通道0初始化 ,00110101b,16位,方式2,BCD ; 写初值1000BCD ; 通道1初始化 ,01110111b,16位,方式3,BCD ; 写初值1000BCD ; 8255初始化 ,10000001b,c口低四位输入 ,

其余均为输出

mov dx , 203h out dx , al wait2:

mov dx , 201h ; B口清零,PB0=0,无方波,LED暗

mov al , 00h out dx , al mov dx , 200h

mov al , 00h out dx , al

ks1 : call ks cmp al , 0fh jz ks1 mov cx , 0f0h

loop1: loop loop1 call ks

cmp al , 0fh jz ks1

mov bh , 0efh mov bl , 00h jz k1

cmp al , 0bh jz k4

cmp al , 07h jz k7

next : rol bh , 1 inc bl cmp bh , 0feh ; A口清零,数码管暗

; 读取按键

; 判断有无键闭合(行有无低电平) ; 无键闭合 ; 延时,去抖

; 再次判断有无键闭合 ; 初始化列码,11101111b,准备检测第一列 ; 初始化列值

; 第三行(4)? ; 第四行(7)? ; 列码左移一位 ; 列值加一

; 判断该键扫描是否结束

jnz again jmp ks1

k0 : add bl , 0 ; 与列值合成键码 jmp wait1 k1 : add bl , 1 jmp wait1 k4 : add bl , 4 jmp wait1 k7 : add bl , 7 wait1: call ks cmp al , 0fh

jnz wait1

jmp flash

flash: mov bh , 00h add di , bx

count: mov al , [di] xlat

mov dx , 200h

out dx , al

dec di mov dx , 201h

mov al , 01h

out dx , al

call delay dec bl

jnz count jmp wait2

; 判断键是否释放 ; 键未释放,等待!

; 进行闪烁和显示 ; 数码管倒计时显示

; 用的b0控制的Gate1,使8253产生1S方波

;用bl(键盘值)控制循环次数

ks proc near ;读取按键 mov dx , 202h mov al , 0fh

out dx , al ;使所有列线为低电平 in al , dx ;读取行值 and al , 0fh ;屏蔽高4位 ret ks endp delay

proc near push ax push cx push bx

mov bx , 4

delay1: mov cx, 0fh delay2: loop delay2 dec bx

jnz delay1 pop bx pop cx pop ax ret delay endp

code ends end start

;循环4*65536次,延迟0.02ms

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务