1、单片机习题参考答案0812单片机习题参考答案第四章 P97 6,7,9,10,12,16,17,18,19,23,27,28,296 在80C51片RAM中,已知(30H)38H,(38H)40H,(40H)48H,(48H)90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式与顺序执行每条指令后的结果。机器码(H) 指令 结果 源操作数的寻址方式E540 MOV A,40H ;A=(40H)=48H 直接寻址F8 MOV R0,A ;R0=48H 寄存器寻址7590F0 MOV P1,#0F0H ;P1=0F0H 立即寻址A630 MOV R0,30H ;(48
2、H)= 38H 直接寻址 901246 MOV DPTR,#1246H;DPTR=1246H 立即寻址853840 MOV 40H,38H ;(40H)=40H 直接寻址A830 MOV R0,30H ;R0=38H 直接寻址8890 MOV 90H,R0 ;(90H)=38H 寄存器寻址754830 MOV 48H,#30H ;(48H)=30H 立即寻址E6 MOV A,R0 ;A=40H 寄存器间接寻址8590A0 MOV P2,P1 ;P2=P1=38H 直接寻址7 试说明以下指令的作用,并将其翻译成机器码,执行最后一条指令对PSW有何影响?A的终值为多少?机器码(H) 指令 结果 (
3、1) 7872 MOV R0,#72H ;R0=72HE8 MOV A,R0 ;A=72H,P=0244B ADD A,#4BH ;A=BDH,CY=0,OV=1,AC=0,P=0(2) 7402 MOV A,#02H ;A=02H,P=1F5F0 MOV B,A ;B=02H740A MOV A,#0AH ;A=0AH,P=025F0 ADD A,B ;A=0CH,CY=0,OV=0,AC=0,P=0A4 MUL AB ;A=18H,B=0,CY=0,OV=0,AC=0,P=0(3) 7420 MOV A,#20H ;A=20H,P=1F5F0 MOV B, A ;B=20H25F0 ADD
4、 A,B ;A=40H,CY=0,OV=0,AC=0,P=19410 SUBB A,#10H ;A=30H,CY=0,OV=0,AC=0,P=084 DIV AB ;A=01H,B=10H,CY=0,OV=0,AC=0,P=19 试编程将片外数据存储器60H中的容传送到片RAM 54H单元中。MOV DPTR,#0060HMOVX A,DPTR MOV 54H,A(MOV P2,#0MOV R0,#60H MOVX A,R0MOV 54H,A)10试编程将寄存器R7容传送到R1中去。MOV A,R7MOV R1,A12试说明下段程序中每条指令的作用,并分析当执行完指令后,R0中的容是什么?MO
5、V R0,#0A7H ;R0=A7HXCH A,R0 ;A=A7H,A的容暂存R0SWAP A ;A=7AHXCH A,R0 ;R0=7AH,A的容恢复16试编程将片外RAM中30H和31H单元的容相乘,结果存放在32H和33H单元中,高位存放在33H单元中。MOV P2,#0MOV R0,#30HMOVX A,R0MOV B,AINC R0MOVX A,R0MUL ABINC R0MOVX R0,AINC R0MOV A,BMOVX R0,AMOV DPTR,#30HMOVX A,DPTRMOV B,AINC DPTRMOVX A,DPTRMUL ABINC DPTRMOVX DPTR,AI
6、NC DPTRMOV A,BMOVX DPTR,A17试用三种方法将累加器A中无符号数乘2。(1) CLR C RLC A(2) MOV R0,A ADD A,R0 或 ADD A,ACC(3) MOV B,#2 MUL AB18请分析依次执行下面指令的结果:MOV 30H,#0A4H ;(30H)=A4HMOV A,#0D6H ;A=D6H,P=1MOV R0,#30H ;R0=30HMOV R2,#47H ;R2=47HANL A,R2 ;A=46H,P=1ORL A,R0 ;A=E6H,P=1SWAP A ;A=6EH,P=1CPL A ;A=91H,P=1XRL A,#0FFH ;A=
7、6EH,P=1ORL 30H,A ;(30H)=EEH19求执行以下指令后,累加器A与PSW中进位位CY、奇偶位P和溢出位OV的值。(1)当A5BH时 ;ADD A,#8CH 0101 1011+) 1000 1100 1110 0111 结果:A=E7H,CY=0,OV=0,P=0,AC=1(2)当A5BH时 ;ANL A,#7AH 0101 1011)0111 1010 0101 1010结果:A=5AH,P=0(3)当A5BH时 ;XRL A,#7FH 0101 1011)0111 1111 0010 0100结果:A=24H,P=0(4)当A5BH,CY1时 ;SUBB A,#0E8H
8、 0101 1011 或将减法转换成补码加法 0101 1011 1110 1000 -E8H的补码 0001 1000-) 1 -1的补码 +) 1111 1111 0111 0010 10111 0010 结果:A=72H,CY=1,OV=0,P=0,AC=023执行下述程序后,SP?A?B?解释每一条指令的作用,并将其翻译成机器码。地址(H) 机器码(H) ORG 200H0200 758140 MOV SP,#40H ;SP=40H0203 7430 MOV A,#30H ;A=30H0205 120250 LCALL 250H ;调用250H开始的子程序SP=42H,;(42H)=0
9、2H,(41H)=08H0208 2410 ADD A,#10H ;此句没有执行020A F5F0 MOV B,A ;B=30H020C 80FE L1:SJMP L1 ;ORG 0250H0250 90020A MOV DPTR,#20AH;DPTR=020AH0253 C082 PUSH DPL ;DPL进栈,SP=43H,(43H)=0AH0255 C083 PUSH DPH ;DPH进栈,SP=44H,(44H)=02H0257 22 RET ;返回,此处是利用RET将栈顶容弹出PC=020AH,SP=42H44H02H43H0AH栈区 42H02H41H08H40H执行程序后,SP4
10、2H,A30H,B30H27试编一程序将外部数据存储器2100H单元中的高4位置“1”,其余位清”0”。 MOV DPTR,#2100H MOVX A,DPTR ANL A,#0F0H MOV A,#0F0H ORL A,#0F0HMOVX DPTR,A28试编程将部数据存储器40H单元的第0位和第7位置”1”,其余位变反。MOV A,40HCPL ASETB ACC.0 (或ORL A,#81H)SETB ACC.7MOV 40H,A29请用位操作指令,求下面逻辑方程:MOV C,P2.1ORL C,B.0ANL C,ACC.0ORL C,/P3.2MOV P1.7,CMOV C,P1.3A
11、NL C,ACC.2ORL C,B.5ANL C,/P1.1MOV PSW.5,CMOV C,B.4ANL C,/P1.5ORL C,/ACC.7ANL C,P1.0MOV P2.3,C第五章 P112 1,3,6,7,11,201.编程将片40H60H单元中容送到以3000H为首的片外RAM存储区中方法1: MOV R0,#40H MOV DPTR,#3000HMOV R2,#21HLOOP: MOV A,R0 MOVX DPTR,A INC R0 INC DPTRDJNZ R2,LOOP方法2: MOV R0,#40H MOV DPTR,#3000HMOV R2,#0LOOP: MOV A
12、,R0 MOVX DPTR,A INC R0 INC DPTRINC R2 CJNE R2,#21H,LOOP方法3: MOV R0,#40H MOV DPTR,#3000HLOOP: MOV A,R0MOVX DPTR,A INC R0 INC DPTR CJNE R0,#61H,LOOP补充:编程将ROM中3000H3020H单元的容送片RAM40H60H单元中去。 MOV R0,#40H MOV DPTR,#3000H MOV R2,#21HLOOP: CLR AMOVC A,A+DPTR MOV R0,A INC R0 INC DPTR DJNZ R2,LOOP3.编程计算片RAM区5
13、0H57H 8个单元中数的算术平均值,结果存放在5AH中。解: ORG 2000H MOV R0,#50H CLR A MOV R2,ALOOP: ADD A,R0 JNC DOWN INC R2DOWN: INC R0 CJNE R0,#58H,LOOP MOV R7,#3SHIFT: XCH A,R2 CLR C RRC A XCH A,R2 RRC A DJNZ R7,SHIFT MOV 5AH,A6设有100个有符号数,连续存放在以2000H为首地址的片外RAM存储区中,试编程统计其中正数、负数、零的个数。方法1:CLR A MOV R5,A ;存零的个数 MOV R6,A ;存负数的
14、个数 MOV R7,A ;存正数的个数 MOV R2,#100 MOV DPTR,#2000HLOOP: MOVX A,DPTR JNZ NZERO INC R5 SJMP DOWNNZERO: JNB ACC.7,PLUS INC R6 SJMP DOWNPLUS: INC R7DOWN: INC DPTRDJNZ R2,LOOP方法2: CLR A MOV R5,A ;存零的个数 MOV R6,A ;存负数的个数 MOV R7,A ;存正数的个数 MOV R2,#100 MOV DPTR,#2000HLOOP: MOVX A,DPTR INC DPTR CJNE A,#0,NZERO IN
15、C R5 SJMP DOWNNZERO: JC NEGATIVE INC R7 SJMP DOWNNEGATIVE: INC R6DOWN: DJNZ R2,LOOP7请将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片RAM 30H60H中,并将原数据块区域全部清“0”。解: ORG 1000H MOV DPTR,#1000H MOV R0,#30H MOV R2,#31HLOOP: MOVX A,DPTR MOV R0,ACLR A MOVX DPTR,A INC R0 INC DPTRDJNZ R2,LOOP8试编写一子程序,使间址寄存器R1所指向的2个片外RAM连续单元中
16、的高4位二进制数合并为1个字节装入累加器A中。已知R0指向低地址,并要求该单元高4位放在A的高4位中。#:MOVX A,R1 ANL A,#0F0H MOV B,A INC R1 MOVX A,R1 ANL A,#0F0H SWAP A ORL A,BRET10试编一查表程序,从首地址为1000H、长度为100的数据块中找出ASCII码A,将其地址送到10A0H和10A1H单元中。 MOV DPTR,#1000H MOV R7,#100LOOP: MOVX A,DPTR CJNE A,#A,NXET MOV A,DPL MOV B,DPH MOV DPTR,#10A0HMOVX DPTR,AM
17、OV A,BINC DPTRMOVX DPTR,ASJMP $NEXT: INC DPTR DJNZ R7,LOOPSJMP $11设在200H204H单元中存放有5个压缩BCD码,编程将它们转换成ASCII码,存放到以205H单元为首地址的存储区中。方法1: ORG 1000H MOV P2,#02H MOV R0,#00H MOV R1,#05H MOV R2,#05LOOP: MOVX A,R0 ANL A,#0FH ORL A,#30H MOVX R1,A INC R1 MOVX A,R0 SWAP A ANL A,#0FH ORL A,#30H MOVX R1,A INC R1 IN
18、C R0 DJNZ R2,LOOP方法2: ORG 1000H MOV R2,#02H MOV R3,#00H MOV R4,#05H MOV R7,#05 MOV DPH,R2LOOP: MOV DPL,R3MOVX A,DPTRMOV B,AINC DPTR MOV R3,DPLMOV DPL,R4 ANL A,#0FH ORL A,#30H MOVX DPTR,A INC DPTR MOV A,B SWAP A ANL A,#0FH ORL A,#30H MOVX DPTR,A INC DPTRMOV R4,DPL DJNZ R7,LOOP13试编程实现以下逻辑表达式的功能。设P1.7P
19、1.0为8个变量的输入端,而其中P1.7又作为变量输出端。解:X0 BIT P1.0 X1 BIT P1.1 X2 BIT P1.2 X3 BIT P1.3 X4 BIT P1.4 X5 BIT P1.5 X6 BIT P1.6 X7 BIT P1.7 ORG 2000H MOV C,X0 ANL C,X1 ANL C,/X2 ORL C,/X3 ORL C,X4 ANL C,X5 ANL C,X6 ORL C,/X7 MOV P1.7,C解:ONE BIT 20H ;存第一项逻辑值 TWO BIT 21H ;存第二项逻辑值 X0 BIT P1.0 X1 BIT P1.1 X2 BIT P1.
20、2 X3 BIT P1.3 X4 BIT P1.4 X5 BIT P1.5 X6 BIT P1.6 X7 BIT P1.7 ORG 2000H MOV C,X0 ANL C,X1 CPL CMOV ONE,C MOV C,X2 ANL C,X3 ANL C,X4 CPL C MOV TWO,C MOV C,X5 ANL C,X6 ANL C,X7 CPL C ORL C,TWO CPL C ORL C,ONE MOV P1.7,C20根据图5.6的线路设计灯亮移位程序,要求8只发光二极管每次亮一个,点亮时间为40ms。顺次一个一个地循环右移点亮,循环不止。已知时钟频率为24MHz。解: MOV
21、 A,#01HLOOP: MOV P1,A LCALL D40MS RR A SJMP LOOPD40MS: MOV R2,#160EXTERNAL: MOV R3,#250INTERNAL: DJNZ R3,INTERNALDJNZ R2,EXTERNAL RET第六章 P155 5,6,85已知80C51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲其波形如下:选择T0工作于方式2(8位重置初值)定时50sfosc=24MHz(28-X)0.5S=50s X=156=9CH 方法1: MOV TMOD,#02HMOV TH0,#9CHMOV TL0,#9CHCLR
22、P1.2 ;P1.2=0SETB TR0HIGH: SETB P1.2 ;P1.2=1,输出50s高电平HIGH1: JBC TF0,LOW ;50s到清TF0,转输出低电平AJMP HIGH1 ;50s未到,转HIGH1等待LOW: MOV R7,#7 ;350s=750sCLR P1.2 ;P1.2=0输出350s低电平LOW1: JBC TF0,LOW2 ;50s到清TF0,转LOW2 AJMP LOW1LOW2: DJNZ R7,LOW1 ;7次未到,转LOW1AJMP HIGH ;7次到,转HIGH,输出50s高电平方法2: MOV TMOD,#02H ;设置T0为方式2定时MOV
23、TH0,#9CH ;赋初值MOV TL0,#9CHCLR P1.2SETB TR0 ;启动T0工作L1: SETB P1.2 ;P1.2=1,输出50s高电平 MOV R7,#8 DEL: JBC TF0,REP ;50s到清TF0,转输出低电平AJMP DELREP: CLR P1.2 ;P1.2=0输出350s低电平 DJNZ R7,DEL AJMP L1 方法3: 选择T0工作于方式1定时50s(216-X)0.5S=50s X=65436=FF9CH 选择T0工作于方式1定时350s(216-X)0.5S=350s X=64836=FD44H START: MOV TMOD,#01H
24、;设置T0为方式1定时LP0: MOV TH0,#0FFH ;赋初值定时50sMOV TL0,#9CHCLR P1.2SETB TR0 ;启动T0工作SETB P1.2LP1: JBC TF0,LP2 ;P1.2=1,输出50s高电平 SJMP LP1LP2: CLR P1.2MOV TH0,#0FDH ;赋初值定时350sMOV TL0,#44HLP3: JBC TF0,LP4 ;P1.2=1,输出350s低电平 SJMP LP3LP4: SJMP LP06在80C51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500s的方波。方法1:选择T0工作于方
25、式1定时250sfosc=12MHz(216-X)1S=250s X=65286=FF06HMOV TMOD,#01HMOV TH0,#0FFHMOV TL0,#06HSETB TR0 DEL: MOV R7,#4 ;1ms=4250sD250: JBC TF0,D2 ;250s到清TF0,转移AJMP D250 ;250s未到,等待D2: CPL P1.1MOV TH0,#0FFH ;重装初值MOV TL0,#06H DJNZ R7,D250 ;4次未到,转D500CPL P1.0AJMP DEL ;4次到,转DEL方法2:选择T0工作于方式2定时250s(28-X)1S=250s X=6M
26、OV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB TR0 DEL: MOV R7,#4 ;1ms=4250sD250: JBC TF0,D2 ;250s到清TF0,转移AJMP D250 ;250s未到,等待D2: CPL P1.1 DJNZ R7,D250 ;4次未到,转D250CPL P1.0AJMP DEL ;4次到,转DEL方法3:选择T0工作于方式2定时250s,中断(28-X)1S=250s X=6T1工作于方式1定时1ms,中断(216-X)1S=1000s X=64536=FC18HORG 0000HLJMP MAINORG 000BHLJMP
27、T00ORG 001BHLJMP T11MAIN: MOV TMOD,#12HMOV TH0,#06HMOV TL0,#06HMOV TH1,#0FCHMOV TL1,#18HMOV IE,#8AHSETB TR0SETB TR1SJMP $T00: CPL P1.1 RETIT11: MOV TH1,#0FCHMOV TL1,#18HCPL P1.0 RETI方法4:选择T0工作于方式3定时250s,中断。(28-X)1S=250s X=6T0方式3时TL0占用TR0、TF0,TH0占用TR1、TF1。ORG 0000HLJMP MAINORG 000BHLJMP ITL0ORG 001BHLJ
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2