2 xxl505 xxl505 于 2013.06.10 22:43 提问

求大神帮看看这段汇编代码

学校课程设计,这段是步进电机的控制代码,用键盘输入,在六位LED七段数码显示管上显示,求大神把下面代码加上注释,实在不行就帮忙看下键盘显示那部分是怎么回事,有重谢。

ORG 0A30H ;?
MONIT: MOV SP,#50H
MOV 7EH,#00H
MOV 7DH,#02H
MOV R0,#7CH
MOV A,#08H
MOV R4,#04H
MONIT1: MOV @R0,A
DEC R0
DJNZ R4,MONIT1
MOV A,#7EH
MOV DPTR,#1FFFH ;DISPFLAG
MOVX @DPTR,A
MOV 76H,#00H
MOV 77H,#00H
KEYDISP0:LCALL KEY
JC DATAKEY
AJMP MONIT2
DATAKEY:LCALL DATAKEY1
DB 79H,7EH
SJMP KEYDISP0

MONIT2: CJNE A,#16H,KEYDISP0
LCALL DISP
MOV A,7AH
ANL A,#0FH
SWAP A
ADD A,79H
MOV R6,A
MOV A,7CH
ANL A,#0FH
SWAP A
ADD A,7BH
MOV R7,A
MOV A,7EH
CJNE A,#00H,MONIT4
MONIT3: MOV P1,#03H
LCALL DELAY0
LCALL MONIT5
MOV P1,#06H
LCALL DELAY0
LCALL MONIT5
MOV P1,#0CH
LCALL DELAY0
LCALL MONIT5
MOV P1,#09H
LCALL DELAY0
LCALL MONIT5
SJMP MONIT3
MONIT4: MOV P1,#09H
LCALL DELAY0
LCALL MONIT5
MOV P1,#0CH
LCALL DELAY0
LCALL MONIT5
MOV P1,#06H
LCALL DELAY0
LCALL MONIT5
MOV P1,#03H
LCALL DELAY0
LCALL MONIT5
SJMP MONIT4
MONIT5: DEC R6
CJNE R6,#0FFH,MONIT6
DEC R7
CJNE R7,#0FFH,MONIT6
LJMP MONIT
MONIT6: LCALL MONIT7
RET

MONIT7: MOV R0,#79H
MOV A,R6
LCALL MONIT8
MOV A,R7
LCALL MONIT8
LCALL DISP
RET
MONIT8: MOV R1,A
ACALL MONIT9
MOV A,R1
SWAP A
MONIT9: ANL A,#0FH
MOV @R0,A
INC R0
RET
DELAY0: MOV R0,#7DH
MOV A,@R0
SWAP A
MOV R4,A
DELAY1: MOV R5,#80H
DELAY2: DJNZ R5,DELAY2
LCALL DISP
DJNZ R4,DELAY1 ;***
RET

DATAKEY1:MOV R4,A
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R1,A
MOV A,R4
MOV @R1,A
CLR A
POP 83H
POP 82H
MOVC A,@A+DPTR
INC DPTR
CJNE A,01H,DATAKEY3
DEC R1
CLR A
MOVC A,@A+DPTR
DATAKEY2:PUSH 82H
PUSH 83H
MOV DPTR,#1FFFH
MOVX @DPTR,A
POP 83H
POP 82H
INC DPTR
PUSH 82H
PUSH 83H
RET
DATAKEY3:DEC R1
MOV A,R1
SJMP DATAKEY2

KEY0: MOV R6,#20H
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R0,A
MOV A,@R0
MOV R7,A
MOV A,#10H
MOV @R0,A
KEY3: LCALL KEYDISP
JNB 0E5H,KEY2
DJNZ R6,KEY3
MOV DPTR,#1FFFH ;***
MOVX A,@DPTR
MOV R0,A ;***
MOV A,R7
MOV @R0,A
KEY: MOV R6,#50H
KEY1: LCALL KEYDISP
JNB 0E5H,KEY2 ;***
DJNZ R6,KEY1
SJMP KEY0
KEY2: MOV R6,A
MOV A,R7
MOV @R0,A
MOV A,R6 ;A=KEYDATA
KEYEND: RET

KEYDISP:LCALL DISP
LCALL KEYSM
MOV R4,A ;KEYDATA
MOV R1,#76H ;DATASAME TIME
MOV A,@R1
MOV R2,A
INC R1
MOV A,@R1
MOV R3,A ;LAST KEYDATA
XRL A,R4
;TWO TIME KEYDATA
MOV R3,04H ;NEW KEYDATA---R3
MOV R4,02H ;TIME---R4
JZ KEYDISP1
MOV R2,#88H
MOV R4,#88H
KEYDISP1:DEC R4
MOV A,R4
XRL A,#82H
JZ KEYDISP2
MOV A,R4 ;R4=TIME
XRL A,#0EH
JZ KEYDISP2
MOV A,R4
ORL A,R4
JZ KEYDISP3
MOV R4,#20H ;R4=20H
DEC R2
LJMP KEYDISP5
KEYDISP3:MOV R4,#0FH
KEYDISP2:MOV R2,04H
MOV R4,03H
KEYDISP5:MOV R1,#76H
MOV A,R2
MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
MOV A,R4 ;****
CJNE R3,#10H,KEYDISP4
KEYDISP4:RET

DISP: SETB 0D4H
MOV R1,#7EH
MOV R2,#20H
MOV R3,#00H
DISP1: MOV DPTR,#0FF21H
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#DATA1
MOV A,@R1
MOVC A,@A+DPTR
MOV DPTR,#0FF22H
MOVX @DPTR,A
DISP2: DJNZ R3,DISP2
DEC R1
CLR C
MOV A,R2
RRC A
MOV R2,A
JNZ DISP1
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A
CLR 0D4H
RET
DATA1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH

KEYSM: SETB 0D4H
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A ;OFF DISP
KEYSM0: MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H
KEYSM1: MOV A,R2
MOV DPTR,#0FF21H
MOVX @DPTR,A
NOP
RL A
MOV R2,A
MOV DPTR,#0FF23H
MOVX A,@DPTR
CPL A
NOP
NOP
NOP
ANL A,#0FH
JNZ KEYSM2
INC R0 ;NOKEY
DJNZ R3,KEYSM1
SJMP KEYSM10
KEYSM2: CPL A ;YKEY
JB 0E0H,KEYSM3
MOV A,#00H
SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4
MOV A,#08H
SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5
MOV A,#10H
SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM10
MOV A,#18H
KEYSM7: ADD A,R0
CLR 0D4H
CJNE A,#10H,KEYSM9
KEYSM9: JNC KEYSM10
MOV DPTR,#DATA2
MOVC A,@A+DPTR
KEYSM10:RET
DATA2: DB 07H,04H,08H,05H,09H,06H,0AH,0BH
DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
END

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
_tcp_iocp_vc6_1.rar
_tcp_iocp_vc6_1.rar 帮看看问题,求指教
请大神帮我看看这段代码
#include #include DWORD WINAPI FunThread(LPVOID lpPra); DWORD WINAPI FunThread2(LPVOID lpPra); int iIndex = 0; int tickets = 100; HANDLE hMutex;//互斥对象句柄 void main() { HANDLE hTh
易语言钓鱼源码
求大神买走 求大神买走 易语言钓鱼源码
求大神救,能帮看看Java代码吗?
各路大神好,我是一个编程小小白,所以我估计所提的问题也会很小白,万望各位大神不要鄙视不要生气不要吐槽,我正努力地向各位靠近。想请大神帮我看看,下面的代码为什么是错的勒?我是真的真的不知道哇。PS:我有看过CSDN上的文章,但不知道这里能不能这样直接作为问题发表出来,若是不可以,还望告知,我会马上删除的。题目是计算机内部用二进制来表达所有的值。一个十进制的数字,比如18,在一个32位的计算机内部被表...
关于eclipse中调试出来的问题 求大神帮看看~~
最近小弟做了个东西 很简单 但是新手 所以请教大神帮忙 我要做的东西就是一个activity上通过三个Button 可以切换到其他三个activity 应该是设置Intent中出现了问题 但我也不知道问题在哪 附上图片一张求看看
sql正常执行,在程序中报错,求大神帮看看
insert into non_wip_sku(sku_code,rccp_time,su,description,valid,w1,w2,factory_hp,factoty_xq) values( ?,?,?,?,?,?,?,?,? )   82244276(String), 2017-10-01 00:00:00.0(Timestamp), 2.0429(Double), OB TP TR
求了个助啊~~大神帮看看哪出问题了
这个是超声波测距的程序,用了两个超声波测距模块,分别用了两个定时器测距,然后用液晶显示屏显示。问题时现在这两个模块显示的数据永远是一样的,而且过一段时间就死机了,需要刷新才能重新正常显示距离。大神帮看看问题出资按哪。/*****************************************************************************/#include<r...
掌百模拟的雏形
无,不能登录了。求大神改改。我发了一个帖子。大家都帮忙看看
求大神指教这段代码该怎么改?
补充:修改源码格式,使其符合《Google C++风格指南》 #include<stdio.h> #define N 8 main() {  int a[N],i,thismax,maxsum;     for(i=0;i<N;i++)   scanf("%d",&a[i]);         thismax=0;   maxsum=0;  for(i=0;i<N;...
求大神,求大神 求大神
课程设计任务书 题目 自动发牌程序设计 主要 内容 开发一个自动发扑克牌的软件,使之能完成以下基本功能: 1)52张扑克牌(无大小王)随机分发给4个玩家,每个玩家13张牌。 2)数据包括:4种花色(黑、红、梅、方),每种花色13张牌(2、3、4、5、6、7、8、9、T、J、Q、K、A)。 3)按花色和大小依次输出每个玩家被发给的牌。 4) 要求使用:随机函数、循环、数组、函数、数组名作为函数的参数、模块化程序设计等知识。