单片机原理及应用 复习全部作业答案Word文档下载推荐.docx
《单片机原理及应用 复习全部作业答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用 复习全部作业答案Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
![单片机原理及应用 复习全部作业答案Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/28/fd7b2003-686a-43ab-952d-475c8adc1ad9/fd7b2003-686a-43ab-952d-475c8adc1ad91.gif)
至少可存放211个二进制数,每个二进制数有4位,地址范围是00000000000B-11111111111B,即为0000H-07FFH。
若要把每个二进制数增加到8位,则应加大数据线数目到8个。
1-14
程序计数器PC的作用是用来存放将要执行的指令所在的存储器地址,PC有自动加1功能,从而实现程序的顺序执行,在8位机中PC通常有二进制16位。
第二章
2-4
MCS-51单片机中执行程序的地址放在PC寄存器中,是16位二进制数,最大寻址范围是0000H-0FFFFH,PC是一个特殊功能寄存器。
2-6
内部RAM单元的低128字节划分为3个主要部分,分别是
1:
通用寄存器区(00H-1FH)
此区域重要是作为CPU就近存取数据使用,可提高单片机的运算速度。
共32字节,分成四组;
00-07H为0组,08-0F为1组,10H-17H,18-1FH为2和3组。
同时只能使用其中一组,具体使用哪一组,可通过设置PSW寄存器中的RS0,RS1来选定。
2:
位寻址区(20-2FH)
共16个单元,每个单元的每一位可以单独寻址,总共128个位(从00H编号到7FH)这些位地址可以按该位在相应单元的位置来寻址,如20H的0为,可表示为20H.0,也可以直接用00H表示。
3:
用户寄存器区(30H-7FH)
可以用来存放用户数据,前两个区域虽然也可以存放用户数据,但通常要作为位寻址或通用寄存器用。
2-11
SP表示堆栈指针(StackPointer),有8位,作用是用来指示栈顶的位置,系统复位后,SP=07H,为避免使用通用寄存器和位地址区,通常将其重新赋值为30H开始到7FH的区域中某个值(如50H)。
2-13
MCS-51的寻址范围是0000000000000000B-1111111111111111B,写成16进制为:
0000H-0FFFFH,可最多配置64KB的外部RAM和外部ROM。
3-4
(1)MOVA,#30H(其中30H代表立即数)
(2)MOV30H,@R1(其中30H代表直接地址)
3-5
(1)
MOVA,#2;
A=2(7402)
MOVR1,#030H;
R1=30H(7930)
MOV@R1,A;
(30H)=A=2;
(F7)
MOV35H,R1;
(35H)=R1=30H(8935)
XCHA,R1;
A=30H(00110000B)H,R1=2;
(C9H)
PSW(ProgramStatusWord)(Cy,,,,,,,,,,,P)=00H
P:
当A中1的个数为奇数时,P为1,否则为0
3-6(3)MOVP1,25H
或者:
MOVA,25H;
MOVP1,A
(7)从外部ROM区域读数据的指令只有:
MOVCA,@A+DPTR或者是MOVCA,@A+PC
读写外部RAM单元(需要一个16位地址)的指令也只有两条:
MOVXA,@DPTR;
以及MOVX@DPTR,A
MOVXA,@Ri(i=0,1)以及MOVX@Ri,A(使用前应该把P2口赋值成高八位地址。
Ri指向低八位地址。
、
MOVA,#0
MOVDPTR,#4000H;
MOVCA,@A+DPTR
MOVX@DPTR,A或者
MOVR0,#00H;
MOVP2,#40H;
MOVX@R0,A
3-9(3)MOVA,50H;
(4)MOVA,50H
XRLA,#E0HORLA,#F0H;
MOV50H,A;
ANLA,#F0H
MOV50H,A
3-12(37FEH)ACALL3A00H(双字节)
(3800H)
1先做:
SP=55H(SP)=38H;
(54H)=00H
2转向:
PC=3A00H
ACALL3A00H
(3A00H)SUBT:
第四章作业
4-1从20H单元开始存放一组带符号数,其个数已在1FH单元中。
要求统计出大于0,小于0和等于0的个数并存于ONE、TWO、THREE三个单元中。
ORG1000H
ONEDATA30H
TWODATA31H
THREEDATA31H
MOVR0,1FH;
计数个数放在R0
MOVR1,20H;
;
取第一个数
LOOP:
MOVA,@R1
CJNEA,#0,L1;
先作A-0运算,不等于零则转移
INCTHREE
SJMPL3
L1:
JBACC.7,L2;
<
0则转移
INCONE
L2:
INCTWO;
L3:
DJNZR0,LOOP
SJMP$
END
4-3外部RAM从2000H-2100H有一数据块,请编写程序将它们传递到外部RAM3000H-3100H区域。
ORG1000H
MOVDPTR,#2000H
MOVR0,#0
MOVP2,#30H;
MOVR2,#0;
个数(256个)
LOOP:
MOVX,A,@DPTR;
从外部RAM取数
MOVX@R0,A;
存外部RAM
INCR0
INCDPTR
DJNZR2LOOP
MOVDPTR,#2100H;
还剩一个没有传递
MOVXA,@DPTR
MOVDPTR,#3100H;
MOVX@DPTR,A
END;
4-5在128分支程序里,试用LJMP代替AJMP指令,修改后的程序有何特点?
(答案略)最多可实现多少分支?
(2K/3)
4-7设一个加数放在50-52H单元中,另一个加数放在53-55H中,进位放在位地址00中,试编程实现多字节加法程序设计(P121)
程序如下:
PUSHPSW
CLRC
MOVR0,50H;
加数指针
MOVR1,53H;
被加数指针
MOVR2,#3;
字节长度
ADDD10:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR2,ADD10:
是否结束?
否则继续循环
MOV00,C
END;
4-10使用连续除10的方法实现8位无符号二进制数到BCD码表示的十进制数的转换。
(见例4-4,略)
4-11试用除法指令将20H单元的两位BCD码变成ASCII码后存入21H和22H单元
MOVA,20H
MOVB,#16;
DIVAB
ADDA,#30H商即等于高四位
MOV21H,A;
MOVA,B;
余数等于低四位
ADDA,#30H
MOV22H,A
第五章
5-2什么叫接口?
I/O接口的作用是什么?
5-4I/O接口有哪四种传输方式,各自的应用场合是什么?
5-8什么叫中断源,MCS-51有哪几种源,各有什么特点?
5-13中断允许寄存器IE的各位定义是什么,如何设定?
5-19哪些中断可以随着中断响应被自动撤消?
,哪些需要用户自己撤消?
如何撤消?
INT1,INT0,T/C1,T/C0在中断响应后被自动撤除中断标志(但要注意在电平触发方式下的INT0,INT1可能由于信号在响应中断后继续存在而被再次响应,因此需要用户自己通过软硬件结合的方式撤除中断源的电平)。
RITI需要用户在中断服务程序里清除该标志,使用指令如CLRRI或CLRTI撤销标志RI或TI。
5-20试写出INT0为边沿触发方式的中断初始化程序
SETBEA
SETBEX0
SETBIT0
第六章
6-2读引脚与‘读-修改-写’操作有什么不同?
读引脚指令如MOVA,P1,是直接从P1引脚的电平读数据。
注意在读之前要先向P1口送全1,即:
MOVA,#0FFH;
MOVP1,A;
MOVA,P1;
‘读-修改-写’指令如ORLP1,A是先读取锁存器的数据状态,与A逻辑或操作后再输出到P1口引脚上。
6-6定时器/计数器用作定时时,定时时间与那些因素有关,用作计数时,对输入信号频率有哪些限制?
定时时间与定时器初值,定时器工作模式(终值),系统晶体震荡器频率有关。
计数脉冲频率不大于系统晶体震荡器频率的1/24。
6-9以T/C1进行外部事件计数。
每计满2000个后,转为20ms定时方式工作,定时时间到后又转为计数模式,如此循环不止。
假定单片机晶振频率为6MHz,请使用模式1编程。
机器周期为T=12/fosc=2us
计数方式下TMOD:
01010000=50H
计数初值C=216-2000=0F830HTH1=0F8H,TL1=030H;
当转换为定时方式时,TMOD:
00010000=10H;
则需要20ms/T=10000次计数后溢出
定时初值C=216-10000=d8f0h;
th1=d8HTL1=0F0H
程序
AJMPMAIN
ORG000BH
AJMPTC1INT
ORG2000H
MAIN:
MOVSP,#6FH;
MOVTMOD,#50H
MOVTH1,#0F8H
MOVTL1,#030H
SETBET1
SETBTR1;
START
MOVA,#0;
0isforCOUNTER,1isforTIMER
SJMP$;
在此等待
ORG3000H
TC1INT:
CLRTR1
JZCOUNTER;
如果当前是Counter方式则,转COUNTER
DECA;
否则是TIMER
MOVTMOD,#50H;
changetocounter
MOVTH1,#0F8H;
MOVTL1,#30H;
SJMPENDINT
COUNTER:
INCA;
changetotimer
MOVTMOD,#10H
MOVTH1,#0D8H
MOVTL1,#0F0H
ENDINT:
SETBTR1;
RETI
6-14已知8051单片机的fosc=12MHz,用T/C1定时,试编写由P1.0和P1.1分别输出周期为2ms和500us的方波的程序;
参看例6-2。
定时250=500/2us,每次时间到,在中断服务程序里可将P1.1取反。
每隔4次中断,将P1.0取反。
TMOD=0000000=00H,
机器周期=12/fosc=1us
计数个数=250us/1us=250;
定时初值C=213-250=1F06H
第七章7-4扩展三片2764EPROM和一片6264RAM芯片
注意图上圆圈部分是ROM和RAM扩展时的控制线不同之处,PSEN连接到ROM芯片的OE,而RD,WR连接到RAM芯片的OE和WR端。
各芯片的存储单元地址从左到右分别是:
1号2764:
(0000-1FFFH),2号(2000-2FFFH),3(3000-3FFFH)4号为6264(4000-4FFFH)。
实际上由于6264是RAM,扩展时,它与2764EPROM占用不同的地址空间,可以直接将其CS端接地,即(注意最右端的红色圆圈),此时1号2764:
(0000-1FFFH),2号(2000-2FFFH),3(3000-3FFFH)而6264的地址范围也是0000-1FFFH。
另外,当芯片较少,可以不使用74HC138译码器,直接将P2.7,P2.6等高地址线连接到芯片的片选端CS,参考第七章PPT。