哪位大哥帮忙一行行解析一下,谢谢!!!!!!!
一个数字时钟的汇编程序.AT89C52的单片机
AJMP MAIN
ORG 03H
MOV P3,#0FFH
AJMP AJ2
RETI
ORG 13H
MOV P3,#0FFH
AJMP AJ1
RETI
ORG 1BH
MOV TH1,#0ECH
MOV TL1,#78H
DJNZ R6,BACK
MOV R6,#200
AJ: MOV R0,#35H ;秒
INC @R0
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#34H
INC @R0
CJNE @R0,#6,$+3
JC BACK
MOV @R0,#0
AJ1: MOV R0,#33H ;分
INC @R0
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#32H
INC @R0
CJNE @R0,#6,$+3
JC BACK
MOV @R0,#0
AJ2: MOV R0,#31H ;时
INC @R0
CJNE @R0,#4,$+3
JC BACK
CJNE @R0,#5,$+3
JC S24
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#30H
INC @R0
BACK: RETI
S24: DEC R0
CJNE @R0,#2,$+3
JC BACK
MOV @R0,#0
MOV 31H,#0
RETI
MAIN: MOV R1,#30H
MOV @R1,#0
INC R1
CJNE R1,#36H,MAIN+2
MOV P3,#0FFH
MOV P0,#0
MOV DPTR,#SEGPT
MOV R6,#200
MOV TMOD,#10H
MOV TH1,#0ECH
MOV TH1,#78H
SETB IT0
SETB IT1
MOV IP,#15H
MOV IE,#9FH
SETB TR1
LOOPO: MOV R1,#30H
MOV R7,#20H
LOOPI: MOV P2,#0
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
MOV P2,R7
INC R1
MOV A,R7
RR A
MOV R7,A
CJNE R7,#80H,LOOPI
SJMP LOOPO
SEGPT: DB 40H,79H,24H,30H,19H,12H,2,78H,0,18H
END
谁可以帮忙啊.小弟谢谢了
ORG 1BH
MOV TH1,#0ECH
MOV TL1,#78H
DJNZ R6,BACK
MOV R6,#200
AJ: MOV R0,#35H ;秒
INC @R0
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#34H
INC @R0
CJNE @R0,#6,$+3
JC BACK
MOV @R0,#0
AJ1: MOV R0,#33H ;分
INC @R0
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#32H
INC @R0
CJNE @R0,#6,$+3
JC BACK
MOV @R0,#0
AJ2: MOV R0,#31H ;时
INC @R0
CJNE @R0,#4,$+3
JC BACK
CJNE @R0,#5,$+3
JC S24
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#30H
INC @R0
;BACK: RETI
S24: DEC R0
CJNE @R0,#2,$+3
JC BACK
MOV @R0,#0
MOV 31H,#0
RETI
MAIN: MOV R1,#30H
MOV @R1,#0
INC R1
CJNE R1,#36H,MAIN+2
MOV P3,#0FFH
MOV P0,#0
MOV DPTR,#SEGPT
MOV R6,#200
MOV TMOD,#10H
MOV TH1,#0ECH
MOV TH1,#78H
SETB IT0
SETB IT1
MOV IP,#15H
MOV IE,#9FH
SETB TR1
LOOPO: MOV R1,#30H
MOV R7,#20H
LOOPI: MOV P2,#0
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
MOV P2,R7
INC R1
MOV A,R7
RR A
MOV R7,A
CJNE R7,#80H,LOOPI
SJMP LOOPO
SEGPT: DB 40H,79H,24H,30H,19H,12H,2,78H,0,18H
END
ORG 1BH 中断源入口地址:1BH
MOV TH1,#0ECH T1的高位为0ECH
MOV TL1,#78H T1的低位为78H
DJNZ R6,BACK 判断R6-1=0? ≠0则跳转到BACK =0向下运行
MOV R6,#200
AJ: MOV R0,#35H ;秒
INC @R0
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#34H
INC @R0
CJNE @R0,#6,$+3
JC BACK
MOV @R0,#0
AJ1: MOV R0,#33H ;分
INC @R0
CJNE @R0,#10,$+3
JC BACK
MOV @R0,#0
MOV R0,#32H
INC @R0
CJNE @R0,#6,$+3
JC BACK
MOV @R0,#0
AJ2: MOV R0,#31H ;时 R0=31H
INC @R0 (31H)中的内容+1
CJNE @R0,#4,$+3 =?4 ≠往下
JC BACK C为1转移BACK
CJNE @R0,#5,$+3 =?5 ≠往下
JC S24 为24转移S24
CJNE @R0,#10,$+3 =?10 ≠往下
JC BACK C为1转移BACK
MOV @R0,#0 给@R0赋值为0
MOV R0,#30H R0=30H
INC @R0 @R0+1
BACK: RETI 返回
S24: DEC R0 R0-1
CJNE @R0,#2,$+3 =?2 ≠往下
JC BACK C为1转移到BACK
MOV @R0,#0 再将@R0=0
MOV 31H,#0 将31H=0
RETI 返回
MAIN: MOV R1,#30H 最初始:R1=31H
MOV @R1,#0 @R1=0H
INC R1 将R1+1
CJNE R1,#36H,MAIN+2 =?36 ≠往下
MOV P3,#0FFH P3赋值0FFH
MOV P0,#0 P0为0
MOV DPTR,#SEGPT 16位数据指针寄存器赋值,在SEGPT中找
MOV R6,#200 R6=200
MOV TMOD,#10H
MOV TH1,#0ECH
MOV TH1,#78H
SETB IT0
SETB IT1
MOV IP,#15H
MOV IE,#9FH
SETB TR1
LOOPO: MOV R1,#30H
MOV R7,#20H
LOOPI: MOV P2,#0
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
MOV P2,R7
INC R1
MOV A,R7
RR A
MOV R7,A
CJNE R7,#80H,LOOPI
SJMP LOOPO
SEGPT: DB 40H,79H,24H,30H,19H,12H,2,78H,0,18H
END
没空了 自己弄吧
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |