单片机原理接口及应用李群芳版习题解答参考Word文档格式.docx
《单片机原理接口及应用李群芳版习题解答参考Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理接口及应用李群芳版习题解答参考Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
![单片机原理接口及应用李群芳版习题解答参考Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/11/d36ba6f0-585b-420e-95af-49d93b78cb4d/d36ba6f0-585b-420e-95af-49d93b78cb4d1.gif)
83A0H
FC60H
0.4机器数真值分别为:
27,233,-128,-8,14717,31467,-27824,-12478
0.5
(1)33H+5AH=8DH,OV=1,CY=0。
(2)-29H-5DH=7AH,OV=0,CY=1。
(3)65H-3EH=27H,OV=0,CY=1。
(4)4CH-68H=E4H,OV=0,CY=0。
0.6
压缩BCD数
非压缩BCD数
ASCII码
38
38H
0308H
3338H
255
255H
020505H
323535H
483
483H
040803H
343833H
764
764H
070604H
373634H
1000
1000H
01000000H
1025
1025H
01000205H
0.7ASCII码表示的十六进制数分别为:
105H,7CAH,2000H,8A50H
基础篇
第1章、MCS-51单片机结构
1.1单片微型计算机(即单片机)是包含CPU、存储器和I/O接口的大规模集成芯片,即它本身包含了除外部设备以外构成微机系统的各个部分,只需接外设即可构成独立的微机应用系统。
微机处理器仅为CPU,CPU是构不成独立的微机系统的。
1.2参见教材1.1.1节
1.3参见教材第6页表格
1.4参见教材表1.4
1.5参见教材表1.1和表1.2
1.6当PSW=10H表明选中的为第二组通用寄器R0~R7的地址为10H~17H
1.7程序存储器和数据存储器尽管地址相同,但在数据操作时,所使用的指令不同,选通信号也不同,因此不会发生错误。
1.8内部数据程序外部数据程序
1.9振荡周期=0.1667μs机器周期=2μs指令周期=2~8μs
1.10A=0,PSW=0,SP=07,P0~P3=FFH
第2章、51系列单片机的指令系统
2.1参见教材2.1节
2.2因为A累加器自带零标志,因此若判断某内部RAM单元的内容是否为零,必须将其内容送到A,JZ指令即可进行判断。
2.3当A=0时,两条指令的地址虽然相同,但操作码不同,MOVC是寻址程序存储器,MOVX是寻址外部数据存储器,送入A的是两个不同存储空间的内容。
2.4目的操作数源操作数
寄存器直接
SP间接寻址直接
直接直接
直接立即
寄存器间址直接
寄存器变址
寄存器间址寄存器
2.5Cy=1,OV=0,A=94H
2.6√×
√×
×
×
√√
√
√
2.7A=25H(50H)=0(51H)=25H(52H)=70H
2.8SP=(61H)(SP)=(24H)
SP=(62H)(SP)=(10H)
SP=(61H)DPL=(10H)
SP=(60H)DPH=(24H)
执行结果将0送外部数据存储器的2410单元
2.9程序运行后内部RAM(20H)=B4H,A=90H
2.10机器码源程序
7401LA:
MOVA,#01H
F590LB:
MOVP1,A
23RLA
B40AFACJNE,#10,LB
80F6SJMPLA
2.11ANLA,#0FH
SWAPA
ANLP1,#0FH
ORLP1,A
SJMP$
2.12MOVA,R0
XCHA,R1
MOVR0,A
2.13
(1)利用乘法指令
MOVB,#04H
MULAB
(2)利用位移指令
RLA
RLA
MOV20H,A
ANLA,#03H
MOVB,A
MOVA,20H
ANLA,#0FCH
SJMP$
(3)用加法指令完成
ADDA,ACC
MOVR0,A;
R0=2A
MOVA,#0
ADDCA,#0
MOVB,A;
B存2A的进位
MOVA,R0
ADDA,ACC
MOVR1,A;
R1=4A
MOVA,B
ADDCA,B;
进位×
2
存积高位
MOVA,R1;
存积低位
2.14XRL40H,#3CH
SJMP$
2.15MOVA,20H
ADDA,21H
DAA
MOV22H,A;
存和低字节
ADDCA,#0
MOV23H,A;
存进位
2.16MOVA,R0
JZZE
MOVR1,#0FFH
ZE:
MOVR1,#0
2.17MOVA,50H
MOVB,51H
MULAB
MOV53H,B
MOV52H,A
2.18MOVR7,#0AH
WOP:
XRLP1,#03H
DJNZR7,WOP
2.19单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进下一单元的最低位,必须用大循环移位指令移位4次。
ORG0
CLRC
MOVA,20H
RLCA
MOVA,21H
RLCA
MOV21H,A
MOVA,22H
MOV22H,A
MOV23H,A
第3章、MSC-51单片机汇编语言程序设计
3.1因为是多个单元操作,为方便修改地址使用间址操作。
片外地址用DPTR指示,只能用MOVX指令取数到A,片内地址用R0或R1指示,只能用MOV指令操作,因此循环操作外部数据存贮器→A→内部部数据存贮器。
ORG0000H
MOVDPTR,#1000H
MOVR0,#20H
LOOP:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
CJNER0,#71H,LOOP
3.2要注意两高字节相加应加低字节相加时产生的进位,同时要考虑最高位的进位。
ADDA,R6
MOV50H,A
MOVA,R7
ADDCA,R1
MOV51H,A
ADDCA,ACC
3.3A中放小于14H(20)的数,平方表的一个数据占2个字节,可用BCD码或二进制数存放.(如A中放的是BCD码,则要先化成二进制数再查表。
)
MOVDPTR,#TAB
ADDA,ACC;
A*2
PUSHACC
MOVCA,@A+DPTR
MOVR7,A
POPACC
INCA
MOVCA,@A+DPTR
MOVR6,A
TAB:
DB00,00,00,01,00,04,00,09,00,16H,……
DB………04H,00
3.4先用异或指令判两数是否同号,在同号中判大小,异号中正数为大.
ORG0
XRLA,21H
ANLA,#80H
JZCMP
JB20H.7,BG
AG:
MOV22H,20H
BG:
MOV22H,21H
SJMP$
CMP:
MOVA,20H
CJNEA,21H,GR
GR:
JNCAG
MOV22H,21H
SJMP$
3.5fosc=6MHZ
机器周期数
DELAY:
MOVR1,#0F8H1
LOOP:
MOVR3,#0FAH1
DJNZR3,$2
DJNZR1,LOOP2
RET2
(1+(1+2*0xFA+2)*0xF8+2)*12/6MHz
=(1+(1+2*250+2)*248+2)*2us
=249.494ms
3.6将待转换的数分离出高半字节并移到低4位加30H;
再将待转换的数分离出低半字节并30H,安排好源地址和转换后数的地址指针,置好循环次数。
ORG0000HMOVA,@R0
MOVR7,#05HANLA,#0FH
MOVR0,#20HADDA,#30H
MOVR1,#25HMOV@R1,A
NET:
MOVA,@R0INCR0
ANLA,#0F0HINCR1
SWAPADJNZR7,NE
ADDA,#30HSJMP$
MOV@R1,AEND
INCR1
3.7片内RAM间址寄存器只能有R0和R1两个,而正数、负数和零共需3个寄存器指示地址,这时可用堆栈指针指示第三个地址,POP和PUSH在指令可自动修改地址。
R0指正数存放地址和R1指负数存放地址,SP指源数据存放的末地址,POP指令取源数据,每取一个数地址减1。
ORG0000H
MOVR7,#10H
MOVA,#0MOV@R0,A
MOVR4,AINCR0
MOVR5,AAJMPDJ
MOVR6,ANE:
INCR5
MOVR0,#40HMOV@R1,A
MOVR1,#50HINCR1
MOVSP,#3FHAJMPDJ
NEXT:
POPACCZER0:
INCR6
JZZER0DJ:
DJNZR7,NEXT
JBACC.7,NESJMP$
INCR4END
3.8可直接用P标志判断(JBP,ret)
ORG0000H
MOVA,40H
JBP,EN;
奇数个1转移
ORLA,#80H;
偶数个1最高位加“1”
EN:
3.9取补不同于求补码,求补码应区别正、负数分别处理,而取补不分正、负,因正、负数均有相对于模的补数。
用取反加1求补也可用模(00H)减该数的方法求补。
MOVR7,#03H