微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 实验三 查表、多分支(80C51单片机汇编语言编程)

实验三 查表、多分支(80C51单片机汇编语言编程)

时间:11-23 来源:互联网 点击:
设一表格,表中数为:00H、11H、22H……FFH,将片内00H单元中的低4位放到片外0000H中(0000H中的高4位为0),高4位放到片外0001H中(0001H中的高4位为0),根据0000H中的数取出表中相应的值存到片内30H中;根据0001H中的数跳到相应的处理程序中,在处理程序中,把相应的位地址置1。
ORG 0000H
START:MOV DPTR,#0000H;
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#00H;将片内00H中的值拆分放入片外相应位置
MOV R1,#00H
MOV A,@R1
ANL A,#0FH
MOVX @DPTR,A

MOV A,@R1
ANL A,#0F0H
RR A
RR A
RR A
RR A
INC DPTR
MOVX @DPTR,A

MOV DPTR,#0000H;相应值赋给30H
MOVX A,@DPTR
MOV DPTR,#TABLE;指向表格的首地址
MOVC A,@A+DPTR
MOV 30H,A

MOV DPTR,#0001H;散转
MOV 20H,#00H;置位前先将20H清零
MOVX A,@DPTR
MOV R1,A;LJMP;A变为3倍
RL A
ADD A,R1
MOV DPTR,#TAB
JMP @A+DPTR

TAB: LJMP PM0
LJMP PM1
LJMP PM2
LJMP PM3
LJMP PM4
LJMP PM5
LJMP PM6
LJMP PM7
LJMP PM8
LJMP PM9
LJMP PMA
LJMP PMB
LJMP PMC
LJMP PMD
LJMP PME
LJMP PMF
PM0:SETB 00H
JMP AA
PM1:SETB 01H
JMP AA
PM2:SETB 02H
JMP AA
PM3:SETB 03H
JMP AA
PM4:SETB 04H
JMP AA
PM5:SETB 05H
JMP AA
PM6:SETB 06H
JMP AA
PM7:SETB 07H
JMP AA
PM8:SETB 08H
JMP AA
PM9:SETB 09H
JMP AA
PMA:SETB 0AH
JMP AA
PMB:SETB 0BH
JMP AA
PMC:SETB 0CH
JMP AA
PMD:SETB 0DH
JMP AA
PME:SETB 0EH
JMP AA
PMF:SETB 0FH
JMP AA
TABLE:DB 00H,11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH
AA:SJMP $
END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top