实验一数据传送实验实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET:AJMP MAINORG 003FHMAIN:MOV R0,#40HMOV R2,#10HMOV A,#0A0HA1:MOV @R0,AINC R0INC ADJNZ R2, A1MOV R1,#40HMOV R0, #50HMOV R2, #10HA3: MOV A, @R1MOV @R0, AINC R0INC R1DJNZ R2, A3LJMP 0000H思考题:1. 按照实验内容补全程序。
2. CPU 对8031内部RAM存储器有哪些寻址方式?直接寻址,立即寻址,寄存器寻址,寄存器间接寻址。
3. 执行程序后下列各单元的内容是什么?内部RAM 40H~4FH ___0A0H~0AFH______________________内部RAM 50H~5FH___0A0H~0AFH_______________________实验二多字节十进制加法实验实验内容:多字节十进制加法。
加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET: AJMP MAINORG 0100HMAIN: MOV SP, #60HMOV R0, #31HMOV @R0, #22HDEC R0MOV @R0, #33HMOV R1, #21HMOV @R1, #44HDEC R1MOV @R1, #55HMOV R2, #02HACALL DACNHERE: AJMP HEREDACN: CLR CDAL: MOV A, @R0ADDC A, @R1DA AMOV @R1, AINC R0INC R1DJNZ R2,DALCLR AMOV ACC.0 , CRET思考题:1. 按照实验内容补全程序。
2. 加数单元、被加数单元和结果单元的地址和内容为?3130H,2120H,6688H3. 如何检查双字节相加的最高位溢出?看psw.3 的溢出标志位ov=1 则溢出4. 改变加数和被加数,测试程序的执行结果。
实验三数据排序实验实验内容:将内部RAM 50H—59H中的数据按从小到大的次序排列。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的数据是否为排序状态。
源程序清单:ORG 0000HRESET: AJMP MAINORG 0100HMAIN: MOV SP, #60HMOV R0, #50HMOV @R0, #6FHINC R0MOV @R0, #6EHINC R0MOV @R0, #6AHINC R0MOV @R0, #6CHINC R0MOV @R0, #6DHINC R0MOV @R0, #5BHINC R0MOV @R0, #67HINC R0MOV @R0, #69HINC R0MOV @R0, #68HINC R0MOV @R0, #64HACALL QUEHERE: AJMP HEREQUE: CLR 00HMOV R7, #09HMOV R0, #50HMOV A , @R0L2: INC R0MOV R2, ASUBB A, @R0MOV A, R2JC L1SETB 00HXCH A, @R0DEC R0XCH A, @R0INC R0L1: MOV A, @R0DJNZ R7, L2JB 00H, QUERET思考题:1. 按照实验内容补全程序。
2. 检查程序执行结果。
5BH,64H,67H,68H,69H,6AH,6CH,6DH,6EH,6FH 3. 修改程序,按从大到小次序排序。
ORG 0000HRESET: AJMP MAINORG 0100HMAIN: MOV SP, #60HMOV R0, #50HMOV @R0, #6FHINC R0MOV @R0, #6EHINC R0MOV @R0, #6AHINC R0MOV @R0, #6CHINC R0MOV @R0, #6DHINC R0MOV @R0, #5BHINC R0MOV @R0, #67HINC R0MOV @R0, #69HINC R0MOV @R0, #68HINC R0MOV @R0, #64HACALL QUEHERE: AJMP HEREQUE: CLR 00HMOV R7, #09HMOV R0, #50HMOV A , @R0L2: INC R0MOV R2, ASUBB A, @R0MOV A, R2JNC L1SETB 00HXCH A, @R0DEC R0XCH A, @R0INC R0L1: MOV A, @R0DJNZ R7, L2JB 00H, QUERET实验四双字节乘法实验实验内容:[(R3)(R2)*(R5)(R4)]→R0指出的四个单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET: AJMP MAINORG 0100HMAIN; MOV SP, #60HMOV R2, #0FFHMOV R3, #0FHMOV R4, #0FFHMOV R5, #0FHMOV R0, #33HMOV R7, #04HML0: MOV @R0, #00HDJNZ R7, ML1ACALL M2HERE: AJMP HEREML1: DEC R0AJMP ML0M2: MOV A, R2MOV B, R4MUL A BACALL ADDMMOV A, R2MOV B, R5MUL A BDEC R0ACALL ADDMMOV A, R4MOV B, R3MUL A BDEC R0DEC R0ACALL ADDMMOV A, R5MOV B, R3MUL A BDEC R0ACALL ADDMRETADDM: ADD A, @R0MOV @R0, AMOV A, BINC R0ADDC A, @R0MOV @R0, AINC R0MOV A, @R0ADDC A, #00HMOV @R0, ARET思考题:1. 程序结果存放在哪几个单元中?33H~30H2. 乘积为多少?0FFE001H实验五电子钟实验实验内容:熟悉单片机在线仿真调试方法。
将仿真头插入实验板的CPU插座中,再打开电源,输入程序进行调试。
程序运行时,按下S0键,蜂鸣器发出响声,两个数码管开始从零显示时间,定时器定时时间为一分钟,定时时间到,蜂鸣器再次发出响声,重新按下S0键,重复上述过程。
源程序清单:ORG 0000HSTART:AJMP MAINORG 000BHAJMP PIT0ORG 0100H MAIN:MOV SP,#60HMOV 50H,#00HMOV 51H,#00HACALL DISPLAYMOV TMOD,#01HMOV TL0,#0B0HMOV TL1,#3CHACALL KEYCLR P2.7ACALL LONGDELAYSETB P2.7SETB 00HSETB TR0SETB EASETB ET0MOV 30H,#20 ML0:ACALL DISPLAYMOV C,00HJC ML0CLR P2.7ACALL LONGDELAYSETB P2.7AJMP MAINPIT0:PUSH PSWPUSH ACCSETB PSW.3MOV TL0,#0B0HMOV TH0,#3CHMOV A,30HDEC AMOV 30H,AJNZ RET0MOV 30H,#20MOV R0,#51HACALL DAAD1MOV A,R2XRL A,#60HJNZ RET0ACALL CLR0CLR 00HRET0:POP ACCPOP PSWRETIDAAD1:MOV A,@R0DEC R0SWAP AORL A,@R0ADD A,#01HDA AMOV R2,AANL A,#0FHMOV @R0,AMOV A,R2INC R0ANL A,#0F0HSWAP AMOV @R0,ARETCLR0:CLR AMOV @R0,ADEC R0MOV @R0,ARETDISPLAY:MOV A,50HMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,AMOV A,51HMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ACLR P0.7LCALL DELAYRETKEY:MOV C,P3.0JC KEYACALL DELAYKEY1:MOV C,P3.0JNC KEY1ACALL DELAYRETDELAY:MOV R1,#250LOOP:DJNZ R1,LOOPRETLONGDELAY:MOV A,R0PUSH ACCMOV A,R1PUSH ACCMOV R1,#250LOOP1:MOV R0,#250LOOP2:NOPNOPNOPNOPNOPDJNZ R0,LOOP2DJNZ R1,LOOP1POP ACCMOV R1,APOP ACCMOV R0,ARETTABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END思考题:1程序中哪部分为显示程序?DISPLAY:MOV A,50HMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,AMOV A,51HMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ACLR P0.7LCALL DELAYRET2程序中如何实现一秒钟的定时?用T/C0定时50ms。
共20次。
3写出各段子程序的作用。
MAIN:主程序,PIT0:中断服务子程序LONGDELAY和DELAY:延时的子程序ADDA1是非压缩的BCD码和压缩的BCD码的转化程序。