求高手 帮忙把下面汇编语言转换成C语言!! 20
清零程序ORG0000HLJMPMAINMAIN:MOVR0,#40H清40H~53H共20个存储器单元MOVR1,#14HCLEAR:MOV@R0,#00HINCR0D...
清零程序
ORG 0000H
LJMP MAIN
MAIN: MOV R0,#40H 清40H~53H共20个存储器单元
MOV R1,#14H
CLEAR: MOV @R0,#00H
I NC R0
DJNZ R1,CLEAR
MOV 20H,#00H 清20H,为判断信号做位操作用
MOV P1,#00H 清P1口
MOV P2,#00H 清P2口
设置位选码
MOV 40H,#80H 选通第一位
MOV 41H,#90H 选通第二位
MOV 42H,#0A0H 选通第三位
MOV 43H,#0B0H 选通第四位
设置段选码
MOV 44H,#01H 显示数字1
MOV 45H,#02H 显示数字2
MOV 46H,#03H 显示数字3
MOV 47H,#04H 显示数字4
主程序
START: MOV P2, #0fH
MOV A, P2
MOV 20H, A 把信号送位操作地址
JNB 00H, DISPLAY1 如果(00H)=0,则跳转到DISPLAY1
JNB 01H, DISPLAY2 如果(01H)=0,则跳转到DISPLAY2
JNB 02H, DISPLAY3 如果(02H)=0,则跳转到DISPLAY3
JNB 03H, DISPLAY4 如果(03H)=0,则跳转到DISPLAY4
LCALL DISPLAY5
LJMP START
显示程序
显示程序1
DISPLAY1:
CLR P3.7
MOV A,44H
MOV R2,40H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序2
DISPLAY2:
CLR P3.7
MOV A,45H
MOV R2,41H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序3
DISPLAY3:
CLR P3.7
MOV A,46H
MOV R2,42H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序4
DISPLAY4:
CLR P3.7
MOV A,47H
MOV R2,43H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序5
DISPLAY5:
MOV A,#80H
MOV P1,A
LCALL DL1MS
MOV A,#90H
MOV P1,A
LCALL DL1MS
MOV A,#0A0H
MOV P1,A
LCALL DL1MS
MOV A,#0B0H
MOV P1,A
LCALL DL1MS
RET 返回主程序
延时程序
延时子程序,执行一次时间为1MS
DL1MS: MOV R3,#0AH
LOOPA: MOV R4,#30H
LOOPB: DJNZ R4,LOOPB
DJNZ R3,LOOPA
RET
延时子程序,执行一次时间为10MS
DL10MS: MOV R0,#0AH
LOOPC: LCALL DL1MS
DJNZ R0,LOOPC
RET
延时子程序,执行一次时间为125MS
DL125MS: MOV R0,#7DH
LOOPD: LCALL DL1MS
DJNZ R0,LOOPD
RET
延时子程序,执行一次时间为1S
DL1S: MOV R5,#08H
LOOPE: MOV R6,#0FAH
LOOPF: MOV R7,#0FAH
LOOPG: DJNZ R7,LOOPG
DJNZ R6,LOOPF
DJNZ R5,LOOPE
RET
3S延时子程序(调用3次1S延时子程序)
DL3S: MOV R4,#03H
LOOPH: LCALL DL1S
DJNZ R4,LOOPH
RET
5S延时子程序(调用5次1S延时子程序)
DL5S: MOV R4,#05H
LOOPI: LCALL DL1S
DJNZ R4,LOOPI
RET
END 展开
ORG 0000H
LJMP MAIN
MAIN: MOV R0,#40H 清40H~53H共20个存储器单元
MOV R1,#14H
CLEAR: MOV @R0,#00H
I NC R0
DJNZ R1,CLEAR
MOV 20H,#00H 清20H,为判断信号做位操作用
MOV P1,#00H 清P1口
MOV P2,#00H 清P2口
设置位选码
MOV 40H,#80H 选通第一位
MOV 41H,#90H 选通第二位
MOV 42H,#0A0H 选通第三位
MOV 43H,#0B0H 选通第四位
设置段选码
MOV 44H,#01H 显示数字1
MOV 45H,#02H 显示数字2
MOV 46H,#03H 显示数字3
MOV 47H,#04H 显示数字4
主程序
START: MOV P2, #0fH
MOV A, P2
MOV 20H, A 把信号送位操作地址
JNB 00H, DISPLAY1 如果(00H)=0,则跳转到DISPLAY1
JNB 01H, DISPLAY2 如果(01H)=0,则跳转到DISPLAY2
JNB 02H, DISPLAY3 如果(02H)=0,则跳转到DISPLAY3
JNB 03H, DISPLAY4 如果(03H)=0,则跳转到DISPLAY4
LCALL DISPLAY5
LJMP START
显示程序
显示程序1
DISPLAY1:
CLR P3.7
MOV A,44H
MOV R2,40H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序2
DISPLAY2:
CLR P3.7
MOV A,45H
MOV R2,41H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序3
DISPLAY3:
CLR P3.7
MOV A,46H
MOV R2,42H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序4
DISPLAY4:
CLR P3.7
MOV A,47H
MOV R2,43H
ORL A,R2
MOV P1,A
LCALL DL3S
SETB P3.7
LJMP START 返回主程序
显示程序5
DISPLAY5:
MOV A,#80H
MOV P1,A
LCALL DL1MS
MOV A,#90H
MOV P1,A
LCALL DL1MS
MOV A,#0A0H
MOV P1,A
LCALL DL1MS
MOV A,#0B0H
MOV P1,A
LCALL DL1MS
RET 返回主程序
延时程序
延时子程序,执行一次时间为1MS
DL1MS: MOV R3,#0AH
LOOPA: MOV R4,#30H
LOOPB: DJNZ R4,LOOPB
DJNZ R3,LOOPA
RET
延时子程序,执行一次时间为10MS
DL10MS: MOV R0,#0AH
LOOPC: LCALL DL1MS
DJNZ R0,LOOPC
RET
延时子程序,执行一次时间为125MS
DL125MS: MOV R0,#7DH
LOOPD: LCALL DL1MS
DJNZ R0,LOOPD
RET
延时子程序,执行一次时间为1S
DL1S: MOV R5,#08H
LOOPE: MOV R6,#0FAH
LOOPF: MOV R7,#0FAH
LOOPG: DJNZ R7,LOOPG
DJNZ R6,LOOPF
DJNZ R5,LOOPE
RET
3S延时子程序(调用3次1S延时子程序)
DL3S: MOV R4,#03H
LOOPH: LCALL DL1S
DJNZ R4,LOOPH
RET
5S延时子程序(调用5次1S延时子程序)
DL5S: MOV R4,#05H
LOOPI: LCALL DL1S
DJNZ R4,LOOPI
RET
END 展开
3个回答
展开全部
多此一举
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都是参加比赛的吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询