《单片机 数据块传送 软件实.docx》由会员分享,可在线阅读,更多相关《单片机 数据块传送 软件实.docx(4页珍藏版)》请在三一办公上搜索。
1、单片机 数据块传送 软件实实验2:数据块传送程序: 1 数据块传送程序 : ORG 0000H MAIN: MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1: MOV R0, A INC R0 INC A DJNZ R2, A1 注:此时R2=10h,通过djnz之后,r2=09h0,则跳转到A1段 开始重复A1段中之前的语句。R0从40h依次增加至4fh,R2则依次从10h减少至01h,此时,在运行至djnz之后r0=00h,然后顺序执行语句。从而完成了给40h4fh赋值的目的。 MOV R0, #40H MOV DPTR, #9800H MOV R2, #10H
2、 注:此处重新给r0 ,dptr, r2.赋初值 A2: MOV A, R0 MOVX DPTR, A INC R0 INC DPTR DJNZ R2, A2 MOV R0, #50H MOV DPTR, #9800H MOV R2, #10H A2: MOV A, R0 注:=a0h MOVX DPTR, A INC R0 INC DPTR DJNZ R2, A2 注:此时r2=10h,经过djnz语句之后,r2=0fh0h,则语句跳转至A2处,依次执行之后,r2最后变为00h然后顺序执行。此时,实现数据由片内传至片外的目的 MOV R0, #50H MOV DPTR, #9800H MOV
3、 R2, #10H A3: MOVX A, DPTR MOV R0, A INC DPTR INC R0 DJNZ R2, A3 注:此时r2=10h,经过djnz语句之后,r2=0fh0h,则语句跳转至A3处,依次执行之后,r2最后变为00h然后顺序执行。此时,实现数据由片内外回传至片内的目的 2 多字节十进制加法: 注:赋初值(30h)=23h,=41h,=27h,=25h, =13h,(22h)=50,(23h)=12h,(33h)=24h,(24h)=40h,(34h)=37h ORG 0000H MAIN: MOV R0, #30H MOV R1, #20H MOV 2FH,#04H
4、 CLR C DA1: MOV A,R0 ADDC A, R1 注:此时a=23h,=41h,经过addc之后,a=64h DA A 进行2进制到十进制调整 MOV R1, A INC R0 INC R1 DJNZ 2FH, DA1 注:=04h,经过djnz指令之后,=03h0,则程序跳转至da1,直到=0h后,顺序执行 MOV 7FH, C 从而实现分别将与的和经过da调整后,存放到2i中 SJMP $ END 一、 思考题 1若两个数据块都在外部数据存储器中,如何实现数据块的传送? 答:选择R0和DPTR两个指针,用MOVX命令经过A累加器进行数据块传输。 2在调试第一个程序时,若不用程
5、序给40H4FH赋初值,而用键盘在CPU DATA区给40H4FH单元预赋初值,如何做? 答:在存储器窗口d:0x00处键入d:0x40然后键入所需要的初值。 3若把第二个程序改为无符号数的减法,怎样修改程序? 答:将ADDC命令改为SUBB命令,去掉DA命令行 4在第二个程序中,若两数的和存放到从40H开始的单元,如何修改程序? 答 : ORG 0000H MAIN: MOV R0,#30H MOV R1,#20H MOV R3,#40H MOV 2FH,#04H CLR C DA1: MOV A,R0 ADDC A,R1 DA A MOV R3,A INC R0 INC R1 INC R3 DJNZ 2FH,DA1 MOV 7FH,C SJMP $ END 程序修改处如红字。