MCS51单片机课后作业解答Word格式.docx
- 文档编号:16132317
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:26
- 大小:463.55KB
MCS51单片机课后作业解答Word格式.docx
《MCS51单片机课后作业解答Word格式.docx》由会员分享,可在线阅读,更多相关《MCS51单片机课后作业解答Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
在程序设计中为何要对SP重新赋值?
只允许数据单端输入输出的一段存储空间。
SP的作用是用来存放堆栈栈顶的地址。
因为SP的初值是07H,后继的是寄存器区和位寻址区,为了便于编程工作,要修改SP.
(8)程序状态字寄存器PSW的作用是什么?
简述各位的作用。
PSW用来存放程序执行状态的信息,
CY—加减运算的进位、借位
AC—辅助进位标志,加减运算的低4位进位、借位
(9)位地址65H与字节地址65H如何区别?
位地址65H具体在片内RAM中什么位置?
位地址65H中是一位0/1的数据,字节地址65H是8位0/1的数据。
位地址65H在片内RAM中2CH单元第5位。
(10)什么是振荡周期、时钟周期、机器周期和指令周期?
如何计算机器周期的确切时间?
振荡周期——为单片机提供信号的振荡源的周期
时钟周期——振荡脉冲2分频的信号
机器周期——完成一个基本操作需要的时间,是振荡周期/12=1T
指令周期——执行1条指令需要的时间1~4T
(11)单片机工作时在运行出错或进入死循环时,如何处理?
复位处理,在单片机的RESET加持续1段时间的高电平
(12)使单片机复位的方法有几种?
复位后单片机的初始状态如何?
分上电复位和手动复位。
复位后PC=0000HALE=0/PSEN=1
(13)开机复位后,单片机使用的是哪组工作寄存器?
它们的地址是什么?
如何改变当前工作寄存器组?
单片机使用的是第0组工作寄存器R0-R7,对应的地址为00H-07H,采用置位复位RS1、RS0,可以改变单片机使用的工作寄存器。
第3章MCS-51单片机的汇编语言指令系统
单片机的指令格式为:
操作码+操作数
[标号:
]操作码助记符[目的操作数][,源操作数][;
注释]
答:
MCS-51单片机有7种寻址方式:
立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。
立即寻址——操作数在指令中直接给出。
直接寻址——操作数存放的地址在指令中给出。
可寻址RAM128B和特殊功能寄存器
寄存器寻址——操作数在寄存器中。
可寻址4组寄存器共32个字节即00H—1FH
寄存器间接寻址——操作数的地址放在寄存器R0、R1、dptr中
@R0、R1可寻址256B@DPTR可寻址64KB
变址寻址——操作数的地址由变址寄存器A和基址寄存器DPTR、PC相加得到。
可寻址64KB的程序区
相对寻址——实现程序的相对转移,地址范围-128~+127
位寻址——按位寻址,操作数的地址为位地址。
可寻址RAM区128bit特殊功能区的128bit
对片内RAM可以用直接寻址和寄存器寻址方式。
对片外RAM可以用寄存器寻址方式-
在对片外RAM单元的寻址中用Ri间接寻址只能寻址当前页的256B,用dptr间接寻址可以直接寻址64KB的内存
(1)立即寻址
(2)直接寻址(3)寄存器间接寻址(4)寄存器寻址(5)MOVCA@A+DPTR
变址寻址(6)相对寻址(7)CLRA立即寻址,CLRC位寻址
这2条指令的操作结果相当,但是前1条指令速度快,指令短
如A=12H(PC)=0FFEH+20H+3=1021H如A=10H(PC)=0FFEH+3=1001H
第4章MCS-51单片机汇编语言程序设计
解:
xequ5AH
YEQU5BH
ORG0100H
START:
CJNEA,#10,START1
START1:
JCSTART_M;
X<
10
CJNEA,#15,START2
START2:
JNCSTART_B;
X>
=15
MOVB,A;
10<
=X<
15
MULAB
ADDA,#8
SJMPSTART_END
START_M:
X<
DECA
START_B:
MOVA,#41
START_END:
MOVY,A
SJMP$
解:
dataequ50h
Numequ08h
Resultequ54h
CAL_AVE:
MOVR0,#DATA
MOVR2,#Num
MOVR3,#0
MOVR4,#0
CLRC
CAL_AVE1:
MOVA,R4
ADDCA,@R0
MOVR4,A
MOVA,R3
ADDCA,#0
MOVR3,A
DJNZR2,CAL_AVE1
MOVR2,#3
CAL_AVE2:
CLRC
RRCA
MOVR3,A
MOVA,R4;
/2
DJNZR2,CAL_AVE2
MOVResult,R3
RET
data1equ40h
Data2equ50h
Resultequ40h
Mult10_DATA:
MOVR0,#DATA1
MOVR1,#DATA2
MOVR2,#10H
Mult10_DATA1:
MOVA,@R0
ADDCA,@R0;
*2
MOV@R0,A
MOV@R1,A
INCR0
INCR1
DJNZR2,Mult10_DATA1
Mult10_DATA2:
*2*2
DJNZR2,Mult10_DATA2
MOVR0,#DATA1
Mult10_DATA3:
*2*2*2
DJNZR2,Mult10_DATA3
MOVR0,#DATA1
Mult10_DATA4:
MOVA,@R0;
ADDCA,@R1;
+*2
DJNZR2,Mult10_DATA4
dataequ2000H
NUMEQU100
EVENEQU30H;
偶数
ODDEQU31H;
奇数
CAL_EVEN_ODD:
MOVDPTR,#DATA
MOVR2,#NUM
CAL_EVEN_ODD2:
MOVXA,@DPTR
JBACC.0,CAL_ODD;
INCEVEN
SJMPCAL_EVEN_ODD1
CAL_ODD:
INCODD
CAL_EVEN_ODD1:
INCDPTR
DJNZR2,CAL_EVEN_ODD2
DATA_ASCEQU2000H
DATA_BCDEQU3000H
NUMEQU10
ASC_TO_BCD:
MOVDPTR,#DATA_ASC
MOVP2,DPH
MOVR0,DPL
MOVDPTR,#DATA_BCD
ASC_TO_BCD1:
MOVXA,@R0
ANLA,#0FH
SWAPA
MOVB,A
INCR0
MOVXA,@R0
ANLA,#0FH
ORLA,B
MOVX@DPTR,A
INCDPTR
DJNZR2,ASC_TO_BCD1
RET
第5章单片机C51程序设计
unsignedinthtoi(unsignedchars[],unsignedintsize)
{
unsignedinttmp[10];
unsignedinti=0;
unsignedintcount=1,result=0;
unsignedintflag=0;
if((s[i]=='
0'
)&
&
(s[i+1]=='
x'
)||(s[i+1]=='
X'
))
flag=2;
for(i=size-1;
i>
=flag;
i--){
if((s[i]>
='
(s[i]<
9'
tmp[i]=s[i]-48;
elseif((s[i]>
a'
f'
tmp[i]=s[i]-'
+10;
A'
F'
else
tmp[i]=0;
result=result+tmp[i]*count;
count=count*16;
}
returnresult;
}
#include<
stdio.h>
string.h>
typedefunsignedcharbool;
boolstrend(unsignedchars[],unsignedchart[]);
intmain()
unsignedchars1[]="
abcdefg"
;
unsignedchars2[]="
ef"
boolflag=strend(s1,s2);
printf("
theresultis%d\n"
flag);
return0;
boolstrend(unsignedchars[],
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 课后 作业 解答
![提示](https://static.bdocx.com/images/bang_tan.gif)