主题:求助~有在玩8051...(解)
以下是小弟注解,请大大指教(有些还未填);并且请大大能说明一下流程与以下码是作何功能[em18] 麻烦加以说明~ 感谢[em2]
-------------------------------------------
ORG 0H --程式由位址:0开始
JMP BEGIN
ORG 03H --:设定外部中断INT0向量位址
JMP INTO
BEGIN:
MOV IE,#10000001B --:允许产生中断
SETB IT0 --:外部中断0致能
MOV SP,#70H --:设定推叠位址
SETB C ---:把进位旗标的内容设定为1
CLR A ---:把累积器的内容清除为0
LOOP:
MOV R3,#08 ---:设定闪烁次数
ROTATELEFT:
RLC A ---:包含进位旗标的左旋转
MOV P1,A ---:输出灯号
MOV R5,#10 ------:设定闪烁次数
CALL DELAY
DJNZ R3,ROTATELEFT --:判断暂存器内容减1,若结果不等于零则跳
MOV R3,#08
ROTATERIGHT:
RRC A ---:包含进位旗标的右旋转
MOV P1,A ---:输出灯号
MOV R5,#10 -----:设定闪烁次数
CALL DELAY
DJNZ R3,ROTATERIGHT --:判断暂存器内容减1,若结果不等于零则跳
JMP LOOP ---:在执行回圈一次
;
INT0: ---:外部中断INT0服务程式
PUSH PSW ---:保存程式状态字语
SETB RS0
CLR RS1
MOV R3,#05
FLASH:
MOV P1,#00000000B
MOV R5,#20
CALL DELAY
MOV P1,#11111111B
MOV R5,#20
CALL DELAY
DJNZ R3,FLASH
POP PSW
MOV P1,A
RETI
DELAY:
MOV R7,#100
DLY1:
MOV R6,#100
DLY2:
DJNZ R6,DLY2
DJNZ R7,DLY1
DJNZ R5,DELAY
RET
END
------------------------------
-------------------------------------------
ORG 0H --程式由位址:0开始
JMP BEGIN
ORG 03H --:设定外部中断INT0向量位址
JMP INTO
BEGIN:
MOV IE,#10000001B --:允许产生中断
SETB IT0 --:外部中断0致能
MOV SP,#70H --:设定推叠位址
SETB C ---:把进位旗标的内容设定为1
CLR A ---:把累积器的内容清除为0
LOOP:
MOV R3,#08 ---:设定闪烁次数
ROTATELEFT:
RLC A ---:包含进位旗标的左旋转
MOV P1,A ---:输出灯号
MOV R5,#10 ------:设定闪烁次数
CALL DELAY
DJNZ R3,ROTATELEFT --:判断暂存器内容减1,若结果不等于零则跳
MOV R3,#08
ROTATERIGHT:
RRC A ---:包含进位旗标的右旋转
MOV P1,A ---:输出灯号
MOV R5,#10 -----:设定闪烁次数
CALL DELAY
DJNZ R3,ROTATERIGHT --:判断暂存器内容减1,若结果不等于零则跳
JMP LOOP ---:在执行回圈一次
;
INT0: ---:外部中断INT0服务程式
PUSH PSW ---:保存程式状态字语
SETB RS0
CLR RS1
MOV R3,#05
FLASH:
MOV P1,#00000000B
MOV R5,#20
CALL DELAY
MOV P1,#11111111B
MOV R5,#20
CALL DELAY
DJNZ R3,FLASH
POP PSW
MOV P1,A
RETI
DELAY:
MOV R7,#100
DLY1:
MOV R6,#100
DLY2:
DJNZ R6,DLY2
DJNZ R7,DLY1
DJNZ R5,DELAY
RET
END
------------------------------