单片机程序说明解释(最好能详细到每一步,学渣求教)

ORG 0 SJMP STAR ORG 3 LJMP INT0S ORG 0030H STAR:MOV IE,#81H MOV TCON,#1 MOV A,#0FEH MOV P3,#0FEH ST1:MOV P2,A ACALL DELAY RL A SJMP ST1 INT0S:PUSH ACC MOV R2,#8 LOOP:CLR A MOV P2,A ACALL DELAY MOV A,#0FFH MOV P2,A ACALL DELAY DJNZ R2,LOOP POP ACC RETI DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET END

第1个回答  2019-06-23
ORG
0
SJMP
STAR
;程序启动跳转到主程序入口
ORG
3
LJMP
INT0S
;跳转到外部中断0入口
ORG
0030H
STAR:MOV
IE,#81H
;开启外部中断0和总中断
MOV
TCON,#1
;外部中断0沿触发
MOV
A,#0FEH
;累加器复制为FEH
MOV
P3,#0FEH
;P3口初始值为FEH
ST1:MOV
P2,A
;累加器送P2
ACALL
DELAY
;延时
RL
A
;累加器循环左移
SJMP
ST1
;转移到ST1
INT0S:PUSH
ACC
;累加器入栈
MOV
R2,#8
;R2赋值为8
LOOP:CLR
A
;A清零
MOV
P2,A
;A送P2
ACALL
DELAY
;延时
MOV
A,#0FFH
;A赋值FFH
MOV
P2,A
;A送P2
ACALL
DELAY
;延时
DJNZ
R2,LOOP
;R2减1不为0转LOOP
POP
ACC
;A弹出
RETI
;这个中断完成P2口8次00和FF数据变换,应该是LED灯闪烁8次。
DELAY:MOV
R7,#250
;R7送250
D1:MOV
R6,#250
;R6送250
D2:DJNZ
R6,D2
;R6减1不为0循环
DJNZ
R7,D1
;R7减1不为0循环
RET
;大概延时125毫秒。
END