单片机中的程序 每句翻译对应的意思 我是菜鸟 高手帮忙翻译下 万分感谢!!!

LINE EQU 30H
ROW EQU 31H
VAL EQU 32H
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
START: MOV P0,#00H
MOV TMOD,#01H
LSCAN: MOV P3,#0F0H
L1: JNB P3.0,L2
LCALL DELAY
JNB P3.0,L2
MOV LINE,#00H
LJMP RSCAN
L2: JNB P3.1,L3
LCALL DELAY
JNB P3.1,L3
MOV LINE,#01H
LJMP RSCAN
L3: JNB P3.2,L4
LCALL DELAY
JNB P3.2,L4
MOV LINE,#02H
LJMP RSCAN
L4: JNB P3.3,L1
LCALL DELAY
JNB P3.3,L1
MOV LINE,#03H
RSCAN: MOV P3,#0FH
C1: JNB P3.4,C2
MOV ROW,#00H
LJMP CALCU
C2: JNB P3.5,C3
MOV ROW,#01H
LJMP CALCU
C3: JNB P3.6,C4
MOV ROW,#02H
LJMP CALCU
C4: JNB P3.7,C1
MOV ROW,#03H
CALCU: MOV A,LINE
MOV B,#04H
MUL AB
ADD A,ROW
MOV VAL,A
MOV DPTR,#TABLE2
MOV B,#2
MUL AB
MOV R1,A
MOVC A,@A+DPTR
MOV TH0,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV TL0,A
MOV IE,#82H
SETB TR0
MOV A,VAL
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV P0,A
W0: MOV A,P3
CJNE A,#0FH,W1
MOV P0,#00H
CLR TR0
LJMP LSCAN
W1: MOV A,P3
CJNE A,#0F0H,W2
MOV P0,#00H
CLR TR0
W2: SJMP W0
INT_T0: MOV DPTR,#TABLE2
MOV A,VAL
MOV B,#2
MUL AB
MOV R1,A
MOVC A,@A+DPTR
MOV TH0,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV TL0,A
CPL P1.0
RETI
DELAY: MOV R6,#10
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TABLE1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE2: DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 65058,65110,65157,65178

LINE EQU 30H //相当于宏定义 LINE=30H
ROW EQU 31H //ROW=31H
VAL EQU 32H //VAL=32H
ORG 00H //程序入口地址
SJMP START //跳到START处
ORG 0BH //定义定时器0的中断地址入口
LJMP INT_T0 //跳到定时器0的服务程序入口INT_T0处
START: MOV P0,#00H //START标号程序的入口处,P0=0;
MOV TMOD,#01H //TMOD=01H,定义定时器0的工作方式为1
LSCAN: MOV P3,#0F0H //LSCAN标号程序的入口处,P0=0F0H
L1: JNB P3.0,L2 //L1标号程序的入口处,如果P3=0,则跳到L2标号处
LCALL DELAY //调用DELAY函数
JNB P3.0,L2 //如果P3=0,则跳到L2标号处
MOV LINE,#00H //将LINE指向的地址清零,在这里即将地址30H处的内存清零
LJMP RSCAN //长无条件跳转到RSCAN
L2: JNB P3.1,L3 //L2标号程序的入口处, 如果P3.1=0,则跳到L3标号处
LCALL DELAY //长调用函数DELAY
JNB P3.1,L3 //如果P3.1=0,则跳到L3标号处
MOV LINE,#01H //将LINE指向的地址的内存赋值为1,在这里即将地址30H处的内存赋值为1
LJMP RSCAN //长无条件跳转到RSCAN
L3: JNB P3.2,L4 //L3程序标号入口处,如果P3.2=0,则跳到标号L4处
LCALL DELAY //长调用函数DELAY
JNB P3.2,L4 //如果P3.2=0,则跳到标号L4处
MOV LINE,#02H //将LINE指向的地址的内存赋值为2,在这里即将地址30H处的内存赋值为2
LJMP RSCAN //长无条件跳转到RSCAN标号处
L4: JNB P3.3,L1 //L4标号程序入口处,如果P3.3=0,则跳到L1标号处
LCALL DELAY //长高用函数DELAY
JNB P3.3,L1 //如果P3.3=0,则跳到L1标号处
MOV LINE,#03H //将LINE指向的地址的内存赋值为3,在这里即将地址30H处的内存赋值为3
RSCAN: MOV P3,#0FH //RSCAN程序标号入口处,P3=0FH
C1: JNB P3.4,C2 //C1程序标号入口处,如果P3.4=0,则跳到C2标号处
MOV ROW,#00H //将ROW指向的地址的内存赋值为0,在这里即将地址31处的内存赋值为0
LJMP CALCU //长无条件跳到CALCU标号处
C2: JNB P3.5,C3 //C2程序标号入口处,如果P3.5=0,则跳到C3标号处
MOV ROW,#01H //将ROW指向的地址的内存赋值为1,在这里即将地址31处的内存赋值为1
LJMP CALCU //长无条件跳到CALCU处
C3: JNB P3.6,C4 //C3程序标号入口处,如果P3.6=0,则跳到C4标号处
MOV ROW,#02H //将ROW指向的地址的内存赋值为2,在这里即将地址31处的内存赋值为2
LJMP CALCU //长无条件跳到CALCU处
C4: JNB P3.7,C1//C4程序标号入口处,如果P3.7=0,则跳到C1标号处
MOV ROW,#03H //将ROW指向的地址的内存赋值为3,在这里即将地址31处的内存赋值为3
CALCU: MOV A,LINE//CALCU程序标号入口处,A=LINE,在此,即A=30H,A指向地址30H处
MOV B,#04H //B=04H
MUL AB //A中的内容与B中的内容相乘
ADD A,ROW //A=A的内容+ROW中的内容
MOV VAL,A //并A中的内容放到VAL所指向的地址内存处,在此VAL为32H
MOV DPTR,#TABLE2 //将TABLE2的地址存到DPTR里
MOV B,#2 //B=2
MUL AB //A中的内容与B中的内容相乘
MOV R1,A //将A中的内容存到R1里
MOVC A,@A+DPTR //将A+DPTR的内容存到A中,在此表示取表值
MOV TH0,A //将A中的内容给定时器0的高位赋初值
INC R1 //R1自身加1
MOV A,R1 //将R1 的值赋给A
MOVC A,@A+DPTR //将A+DPTR的内容存到A中,在此表示取表值
MOV TL0,A //将A中的内容给定时器0的低位赋初值
MOV IE,#82H //设置中断允许寄存器,在此,表示开总中断EA,开定时器允许中断ET0
SETB TR0 //将T0置1,在此表示启动定时器T0
MOV A,VAL //将VAL的地址赋值给A
MOV DPTR,#TABLE1 //将TABLE1的地址存到DPTR里
MOVC A,@A+DPTR//将A+DPTR的内容存到A中,在此表示取表值
MOV P0,A //P0=A
W0: MOV A,P3 //W0程序标号入口处,将P3赋值给A
CJNE A,#0FH,W1//如果A不等于0FH,则跳到W1标号处
MOV P0,#00H //将P0赋值为0
CLR TR0 //将TR0清零,在此表示关闭定时器T0
LJMP LSCAN //长无条件跳到LSCAN标号处
W1: MOV A,P3 //W1程序标号入口处,将P3赋值给A
CJNE A,#0F0H,W2//如果A不等于0FH,则跳到W2标号处
MOV P0,#00H //将P0赋值为0
CLR TR0 //将TR0清零,在此表示关闭定时器T0
W2: SJMP W0 //W2程序标号入口处,短无条件跳到W0标号处
INT_T0: MOV DPTR,#TABLE2 //定时器0中断的服务程序入口处,将TABLE2的地址存到DPTR里
MOV A,VAL //将VAL存到A中,在此VAL =32H
MOV B,#2 //将B赋值为2
MUL AB //A中的内容与B中的内容相乘
MOV R1,A //将A中的内容存放到R1中
MOVC A,@A+DPTR //将A+DPTR的内容存到A中,在此表示取表值
MOV TH0,A //将A中的内容存到TH0中,作为定时器T0的高位初值
INC R1 //R1自身加1
MOV A,R1 //将R1中的内容存放到A中
MOVC A,@A+DPTR //将A+DPTR的内容存到A中,在此表示取表值
MOV TL0,A//将A中的内容存到TH0中,作为定时器T0的低位初值
CPL P1.0 //将P1.0取反
RETI //中断子函数返回标号
DELAY: MOV R6,#10 //DELAY函数入口处,R6=10
D1: MOV R7,#250 //D1程序标号入口处,R7=250
DJNZ R7,$ //R7自减1,一直在此循环到为0
DJNZ R6,D1 //R6自减1,如果不为0,则跳到D1标号处
RET 子函数返回标号
TABLE1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H //TABLE1地址处往下的地址中所放的数据
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE2: DW 64021,64103,64260,64400 //TABLE2地址处往下的地址中所放的数据
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 65058,65110,65157,65178

希望这有用
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-30
EQU 30H线
EQU 31H排
EQU 32H瓦尔
有机00H
SJMP开始
有机0BH
LJMP INT_T0
并开始,# 00H:MOV
TMOD,# 01H MOV
LSCAN MOV P3,# 0F0H:
JNB,二语P3.0 L1:
LCALL延迟
P3.0 JNB,二语
00H MOV线,#
LJMP RSCAN
P3.1,L3 JNB L2:
LCALL延迟
JNB P3.1,L3
01H MOV线,#
LJMP RSCAN
第十四条:JNB P3.2 L3,
LCALL延迟
P3.2腰4 JNB,
02H MOV线,#
LJMP RSCAN
第十四条:JNB P3.3,L1
LCALL延迟
P3.3 JNB,L1
03H MOV线,#
RSCAN MOV P3,# 0FH:
JNB P3.4阮,C2
00H MOV排,#
LJMP液压
P3.5,C3 JNB C2:
01H MOV排,#
LJMP液压
JNB C3、C4 P3.6:
02H MOV排,#
LJMP液压
P3.7 C4:JNB,C1
03H MOV排,#
一、MOV等液压线:
MOV B,# 04H
多AB
加一,排
MOV valkilmer,
MOV DPTR,#表
MOV B,# 2
多AB
MOV R1,
@A + DPTR MOVC一个,
MOV TH0,
公司R1
一、R1 MOV
@A + DPTR MOVC一个,
MOV TL0,
82H MOV IE,#
SETB TR0
MOV一个瓦尔,
DPTR,# TABLE1 MOV
@A + DPTR MOVC一个,
MOV并证明,
0胜4平:MOV一个,第26 - 32页
CJNE 0FH W1,#,
并证明,# 00H MOV
CLR TR0
LJMP LSCAN
乔治% 26 # 8226;MOV一个,第26 - 32页
一、# 0F0H CJNE风云人物,
并证明,# 00H MOV
CLR TR0
0胜4平SJMP % 26 # 8226;
INT_T0 MOV DPTR表号:
MOV一个瓦尔,
MOV B,# 2
多AB
MOV R1,
@A + DPTR MOVC一个,
MOV TH0,
公司R1
一、R1 MOV
@A + DPTR MOVC一个,
MOV TL0,
刑讯逼供P1.0
国际
延迟:MOV R6、# 10
D1:MOV R7 250号
DJNZ R7美元,
DJNZ R6、D1
海运市场
06H TABLE1:DB 3FH,4FH,5BH,6DH 7DH,66H,07H,,
DB型硅碳棒7FH 6FH 7CH,77H,5EH,39H,71H,79H,,
64021表:DW,64400 64103 64260,,
64524,64684 64580 DW,64777,
64820,64968 64898 DW,65030,
65058,65157 65110 DW,65178,
第2个回答  2011-05-31
学习了
相似回答