哪位大哥幫忙一行行解析一下,謝謝!!!!!!!
一個數字時鐘的匯編程序.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.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |