注册 登录
编程论坛 汇编论坛

求助--------------我的有错改下呀??????????????

wangluncbal6 发布于 2008-10-24 19:02, 1187 次点击
编写8255初始化程序和键值读取程序,并将键值序号显示在一个LED七段数码管上入口地址是200H~207H用PC0~PC2控制行线PC4~PC6控制列线,PA0~PA6做输出到LED上,我编了一下可能有很多的错误请高手指正。
CODE如下:
      DATA  SEGMENT
      TABLE  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,7FH,6FH  ;预置显示值
      BUFFER DB  ?  ;预留一个字节装键值
      DATA ENDS
      CODE  SEGMENT
      ASSUME  CS:CODE,DS:DATA
 START: MOV AX,DATA ;初始化操作
        MOV DS,AX
  SET:  MOV DX,206H;初始化8255
        MOV AL,89H
        OUT DX,AL
WAIT-IN: MOV AL,00H;检测按键所有行输出0
         MOV DX,204;8255的 C口地址
         OUT DX,AL
         IN AL,DX;读列线
         AND AL,70H
         CMP AL,70H;比较是否有按键按下
         JZ WAIT-IN;无就等待
 DONE:  CALL DAELAY;延时消除抖动
        MOV BL,0;键号初始值为0
        MOV CL,0FEH;扫描初始值
       MOV DL,3;计数值行数
SCANR: MOV AL,CL;扫描一行
       MOV DX,204H;C口地址
       OUT DX,AL
       ROL AL,1;修改行数
       MOV CL,AL
       IN AL,DX;读列数
       AND AL,70H
       CMP AL,70H ;判断列线状态
       JNZ SCANL;有低转
       ADD BL,3;没有使键号=键号值+列数
       DEC DL
       JNZ SCANR;行未完转
       JMP HANDLE;扫描结束
SCANR: OR AL,0FH; 高位置1,避免出错
       RCR AL,1
       JNC HANDLE;列为低,确定按键值
       INC BL
       JMP SCANL;查找下一列
 HANDLE MOV AL,BL;传按键
        MOV BX,OFFSET TABLE;段码表首址
        XLAT
        MOV DX,200H  ;A口地址
        OUT DX,AL;送段码
        CALL DELAY
        MOV AH,04H
        INT 21H
 CODE ENDS
 END STATRT
我感觉错误太多了,高手帮下忙啊,感激不尽
7 回复
#2
zhulei19782008-10-24 19:51
就发现一个错
SCANR: OR AL,0FH; 高位置1,避免出错   这里是不是应该是SCANL
#3
wangluncbal62008-10-25 00:02
那个是打错的,你们在仔细看看,赋值,检测那些对不,谢谢。
#4
ONEPROBLEM2008-10-25 08:52
建议楼主用编译器帮助查错.
#5
cnhanxiao2008-10-26 12:05
简单一看,程序中延时子程序呢?还有,你是怎么确定8255端口的?Int21h04功能辅助设备输出,没有返回DOS的功能吧?
写程序风格不错,但是程序确实如你所说,错误太多。。。
需要知道你的硬件电路——似乎类似诊断卡?

[[it] 本帖最后由 cnhanxiao 于 2008-10-26 12:10 编辑 [/it]]
#6
wangluncbal62008-10-26 13:11
谢谢 哦 ,8255的端口是题上给定的,是200H-207H 延时子程序我 没写上,关于辅助设备你 说了我才知道不用返回DOS。我才学2个月的《微机系统原理与接口技术》现在就要考试真的好难呀 ,望高手帮我改改啊 ,提提学习的意见。
#7
wangluncbal62008-10-26 13:58
还有怎样结尾?谢谢了 哦 。。。。。。。
#8
ass7547545632008-10-28 12:53
[bo][un]wangluncbal6[/un] 在 2008-10-26 13:58 的发言:[/bo]

还有怎样结尾?


mov ah,4ch
int 21h
1