单片机实验全集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.
将片内30H~40H及片外0010H~0100H清零,然后将片内41H~47H的内容移到片外0041H~0047H,判断
1、若(0041H)<15,则求平方存放到0050H中,并将位00H置1
2、若(0041H)=15,则加15存放到0050H中,并将位01H置1
3、若(0041H)>15,则减15存放到0050H中,并将位02H置1
汇编程序:
ORG 0000H;设置初始地址
MOV R0,#30H;对片内30H~40H清零
MOV R1,#11H
CLR A
CON1:MOV @R0,A
INC R0
DJNZ R1,CON1
MOV DPTR,#0010H;对片外0010H~0100H清零
MOV R1,#0F1H
CLR A
CON2:MOVX @DPTR,A
INC DPTR
DJNZ R1,CON2
MOV R1,#07H;移动内容
MOV R0,#41H
MOV DPTR,#0041H
LOOP:MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,LOOP
MOV DPTR,#0041H
MOVX A,@DPTR
CJNE A,#0FH,NEXT1;不相等跳转
ADD A,#0FH;相等情况
MOV DPTR,#0050H
MOVX @DPTR,A
SETB 01H
CLR 00H
CLR 02H
SJMP OUT
NEXT1:JC NEXT2;<跳转
SUBB A,#0FH;>情况
MOV DPTR,#0050H
MOVX @DPTR,A
SETB 02H
CLR 00H
CLR 01H
SJMP OUT
NEXT2:MOV B,A;<情况
MUL AB
MOV DPTR,#0050H
MOVX @DPTR,A
SETB 00H
CLR 01H
CLR 02H
OUT:SJMP $
2
有两个长度为10H的数,分别放到30H和40H为首地址的存储器中(低字节),求其对应之和,放在50H为首地址的存储器中(处理进位位),然后按升序排列,放在70H为首地址的存储器中
汇编程序:
ORG 0000H;设置初始位置
START:MOV R0,#30H
MOV R1,#50H
MOV R3,#10H
CF:MOV A,@R0;将30H的数放在50H
MOV @R1,A
INC R0
INC R1
DJNZ R3,CF
MOV R0,#50H
MOV R1,#40H
MOV R3,#10H
CLR C
JIA:MOV A,@R0;将两个数求和
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R3,JIA
CLR A;查看最后一个数是否有进位位
ADDC A,#00H
MOV 60H,A
MOV R0,#50H;将50H的数放到70H
MOV R1,#70H
MOV R3,#10H
ZY:MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R3,ZY
MOV DPL,#0FH;用DPL计数
AA:MOV R0,#70H
MOV R1,#71H
PUSH DPL;保护DPL
BB:CLR C
MOV A,@R0
SUBB A,@R1
JC CC;第一个数小于第二个数跳转
MOV A,@R0
XCH A,@R1
MOV @R0,A
CC:INC R0
INC R1
DJNZ DPL,BB;减一不等于零跳转(内循环)
POP DPL
DJNZ DPL,AA;减一不等于零跳转(外循环)
SJMP $
END
3.
设一表格,表中数为: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;将片内00H中的值拆分放入片外相应位置
MOV R1,#00H
ANL A,#0FH
MOVX @DPTR,A
MOV A,@R1
ANL A,#0F0H
SW AP 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;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