单片机程序注释

ORG 0000H
AJMP MAIN
ORG 30H
MAIN: MOV SP, #60H
MOV DPTR, #4100H
MOV A, #0fH
MOVX @DPTR, A

MOV 70H,#01H
MOV 71H,#02H
MOV 72H,#03H
MOV 73H,#04H
MOV 74H,#05H
MOV 75H,#06H
MOV 76H,#07H
MOV 77H,#08H

LOOP:ACALL DISPLAY
AJMP LOOP

DISPLAY:
MOV R0,#70H
MOV R3,#0feH

LD0: MOV DPTR, #4102H
MOV A, #0FFH
MOVX @DPTR, A

MOV A,@R0
MOV DPTR,#DISTAB
MOVC A,@A+DPTR
MOV DPTR,#4101H
MOVX @DPTR,A

MOV DPTR,#4102H
MOV A,R3
MOVX @DPTR,A

ACALL DELAY
INC R0
JNB ACC.7,LD1
RL A
MOV R3,A
AJMP LD0
LD1: RET

DISTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DELAY: MOV R7,#02h
DELAY1: MOV R6,#0FFH
DELAY2: DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
END

ORG 0000H //定义程序开始地址
AJMP MAIN //跳转到MAIN标志处执行
ORG 30H // 定义MAIN起始地址为0030H
MAIN: MOV SP, #60H //把立即数0x60植入SP
MOV DPTR, #4100H //送立即数4100H到DPTR
MOV A, #0fH //送立即数0fH到A寄存器
MOVX @DPTR, A //将A中的值送到以DPTR中的内容表示的外部地址中,即外部地址4100H中

MOV 70H,#01H
MOV 71H,#02H
MOV 72H,#03H
MOV 73H,#04H
MOV 74H,#05H
MOV 75H,#06H
MOV 76H,#07H
MOV 77H,#08H //以上均是把后面的立即数送到相对应的地址中

LOOP:ACALL DISPLAY //调用子函数,即DISPLAY标志处的程序段
AJMP LOOP //跳转到LOOP处执行,与上面那条构成循环调用DISPLAY

DISPLAY:
MOV R0,#70H //送立即数到R0寄存器
MOV R3,#0feH //送立即数到R3寄存器

LD0: MOV DPTR, #4102H //送立即数到DPTR寄存器
MOV A, #0FFH //送立即数0FFH到A寄存器
MOVX @DPTR, A //将A中的数0FFH送到以DPTR中的内容所表示的外部地址,即外部4102H地址处。

MOV A,@R0 // 将以R0中的内容所表示的地址中的内容送到A中,即地址(70H)中的数01H送到A中
MOV DPTR,#DISTAB //把DISTAB标志所处的地址送到DPTR中
MOVC A,@A+DPTR //查表。@A+DPTR即是取得(A+DPTR)地址中的内容。然后通过MOV指令送到A中。这条指令结合上面两条,及后面的那个INC R0 指令共同构成遍历DISTAB所表示的表。达到查表。
MOV DPTR,#4101H
MOVX @DPTR,A //与上面一句结合,达到把A中的内容送到外部地址4101H中。

MOV DPTR,#4102H //送立即数4102H到DPTR
MOV A,R3 // 把R3中的内容送到A中
MOVX @DPTR,A //把A中内容送到外部地址4102H中

ACALL DELAY //调用延时子函数DELAY,即跳到DELAY处执行
INC R0 //R0中的内容自增1
JNB ACC.7,LD1 //如果ACC.7这一位不为1,则跳到LD1标志处执行。
RL A //A中内容左移一位
MOV R3,A //送A中的内容到R3中
AJMP LD0 //跳到LD0标志处
LD1: RET //子函数返回指令

DISTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH //定义一个表,相当于C语言中的数组。DB的意思是规定表中每个数占一个字节。

DELAY: //延时子函数
MOV R7,#02h //送立即数02H到R7中
DELAY1: MOV R6,#0FFH//送立即数0FFH到R6中
DELAY2: DJNZ R6,DELAY2 //R6中的数减1后如不为跳转到DELAY2处,本例中即继续执行这句,直到R6中内容为0.
DJNZ R7,DELAY1 //R7中的内容减一,不为零则跳转到DELAY1处
RET//延时子函数返回
END //程序结束

语言表达不好,解释的难免有点不周到,希望能够帮助LZ。
LZ加油!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-09
什么意思

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网