برنامه ساعت ديجيتال به زبان اسمبلي

iran-TEC

Member
سلام خدمت دوستان من يك برنامه ساعت ديجيتال دارم كه براي ميكروكنترلرها نوشته شده است اين برنامه رو مي خوام تبديل به برنامه اسمبلي تحت داس كنم لطفا كمك كنيد
كد برنامه :
$MOD51
ORG 0000
JMP MAIN
;-------------------------------
ORG 000BH
JMP XX
;------------------------------
ORG 30H
MAIN:
CALL LCD_DLY
CALL LCD_SET
;-------------------------------
MOV R3,#02H
MOV R4,#02H
CALL H
MOV A,#88H
CALL LCD_CMD
MOV A,#':'
MOV R7,A
CALL LCD_SHO1
MOV R3,#02H
MOV R4,#05H
CALL M
MOV A,#8bH
CALL LCD_CMD
MOV A,#':'
MOV R7,A
CALL LCD_SHO1
MOV R0,#00H
CALL SS1
;-------------------------------
MOV R5,#0H
MOV R0,0H
MOV R1,#25H
MOV R2,#22H
s1: MOV TMOD,#00000001B
MOV TL0,#0H
MOV TH0,#0H
MOV IE,#82H
SETB TR0
;--------------------------------
;--------------------------------
XX:
INC R5
CJNE R5,#10H,HH
MOV R5,#0H
CJNE R0,#59H,SS1
MOV R0,#0
CALL SS2
;------------------------------------
CJNE R1,#59H,MM1
MOV R1,#0
CALL MM2
;-----------------------------------
CJNE R2,#24H,HH1
MOV R2,#0H
CALL HH2
; MOV A,R2
; MOV R7,A
; CALL LCD_SHO
HH:
RETI
;-----------------------------------
SS1:
MOV A,R0
ADD A,#1
DA A
MOV R0,A
CALL SS2
JMP HH
;------------------------------------
MM1:
MOV R0,#0H
CALL SS2
MM11:
MOV A,R1
ADD A,#1
DA A
MOV R1,A
CALL MM2
JMP HH
;-----------------------------------
HH1:
MOV R1,#0H
CALL MM2
MOV A,R2
ADD A,#1
DA A
MOV R2,A
CALL HH2
JMP HH
;-----------------------------------
SS2:
MOV A,R0
ANL A,#11110000B
SWAP A
MOV R3,A
MOV A,R0
ANL A,#00001111B
MOV R4,A
CALL S
RET
;------------------------------------
MM2:
MOV A,R1
ANL A,#11110000B
SWAP A
MOV R3,A
MOV A,R1
ANL A,#0FH
MOV R4,A
CALL M
RET
;--------------------------------
HH2:
MOV A,R2
ANL A,#11110000B
SWAP A
MOV R3,A
MOV A,R2
ANL A,#0FH
MOV R4,A
CALL H
RET
;--------------------------------
H:
MOV A,#86H
CALL LCD_CMD
JMP SSS
M:
MOV A,#89H
CALL LCD_CMD
JMP SSS
S:
MOV A,#8cH
CALL LCD_CMD
SSS:
MOV A,R3
MOV R7,A
CALL LCD_SHO
MOV A,R4
MOV R7,A
CALL LCD_SHO
RET
;-------------------------------
;;;;;;;;;;;;;;;;;;;;\\\\\\\\\\\\
LCD_SET:
MOV A,#38H
CALL LCD_CMD
MOV A,#0CH
CALL LCD_CMD
MOV A,#06H
CALL LCD_CMD
RET
;--------------------------------
LCD_SHO:
MOV A,R7
ORL A,#30H
MOV P2,A
SETB P1.0
CLR P1.1
SETB P1.2
CLR P1.2
CALL LCD_DLY
RET
;--------------------------------
LCD_DLY:
MOV R6,#50
HERE2: MOV R7,#50
HERE1: DJNZ R7,HERE1
DJNZ R6,HERE2
RET
;-------------------------------
LCD_CMD:
CALL LCD_DLY
MOV P2,A
CLR P1.0
CLR P1.1
SETB P1.2
CLR P1.2
CALL LCD_DLY
RET
;--------------------------------
LCD_SHO1:
MOV A,R7
MOV P2,A
SETB P1.0
CLR P1.1
SETB P1.2
CLR P1.2
CALL LCD_DLY
RET
;-------------------------------
DELAY:
MOV 66H,#4
D3: MOV 64H,#63H
D1: MOV 65H,#49H
D2: DJNZ 65H,D2
DJNZ 64H,D1
DJNZ 66H,D3
RET
;-------------------------------
LCD_SET1:
MOV A,#38H
CALL LCD_CMD
MOV A,#0CH
CALL LCD_CMD
MOV A,#01H
CALL LCD_CMD
RET
;------------------------------
;;;;;;;;;;;;;;;;;;;\\\\\\\\\\\\\
;----------------------------
ORG 300H
NOM_1: DB '1','2','3'
NOM_2: DB '4','5','6'
NOM_3: DB '7','8','9'
NOM_4: DB '*','0','#'
;------------------------------
END
 

جدیدترین ارسال ها

بالا