• 260.01 KB
  • 2022-04-22 11:32:59 发布

单片机原理与应用技术 (高惠芳 著) 科学出版社 部分答案 课后答案

  • 10页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网:www.hackshp.cn课后答案网您最真诚的朋友www.hackshp.cn网团队竭诚为学生服务,免费提供各门课后答案,不用积分,甚至不用注册,旨在为广大学生提供自主学习的平台!课后答案网:www.hackshp.cn视频教程网:www.efanjy.comPPT课件网:www.ppthouse.com课后答案网www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn第2章(4)MCS-51单片机的4个I/O口在使用上各有什么功能和特点?答:①P0、P1、P2、P3口都可以作普通的I/O口使用,但P0口要外接上拉电阻,而其它口不需要。②P0口还可以作为低8位地址线使用,以及可以作为8位数据线使用;P2口可以作为高8位地址线使用;P3口有第二功能。③P0口可以驱动8个TTL门电路,P1、P2、P3口可以驱动4个TTL门电路。(5)MCS-51单片机的存储器分哪几个空间?试述各空间的作用。答:从用户的使用角度看,有3个存储器地址空间:片内外统一编址的64K程序存储器地址空间、256字节的片内数据存储器地址空间以及64K字节的片外数据存储器地址空间。程序存储器用于存放应用程序及表格常数;数据存储器包括内部数据存储器和外部数据存储器,用于存放运算的中间结果、标志位以及数据的暂存和缓冲等;256B的内部数据存储器按功能划分为两部分:地址为00~7FH的低128B的基本RAM区和地址为80~FFH的高128B的特殊功能寄存器(SFR)区,基本RAM区分为工作寄存器区,位寻址区,用户RAM区三个部分;特殊功能寄存器可以对各功能模块进行管理、控制、监视。(6)简述片内RAM中包含哪些可位寻址单元?答:①20~2FH之间有16个单元,对这16个单元,既可以作为普通RAM单元使用,进行字节操作,也可以对单元中的每一位进行位操作,因此这16个单元称为位寻址区。位寻址区的16个单元共有16×8位=128位,其位地址为00~7FH。②特殊功能寄存器中有11个寄存器是可以位寻址的(这些寄存器的字节地址都能被8整除),这11个特殊功能寄存器中可寻址位有83个,寻址时既可使用位地址,也可使用位名称。(8)程序状态字寄存器PSW的作用是什么?简述各位的作用。答:程序状态字寄存器PSW是一个8位寄存器,在内部RAM的地址为0D0H,用来存放程序执行的状态信息。①CY或C(PSW.7):课后答案网进位标志位。在进行加法或减法运算时,如果操作结果最高位向上有进位或借位时,CY置1,否则清0。此外,在进行位操作时,CY又作为位累加器使用,在位传送、位与、位或等位操作中,都要使用位标志位。www.hackshp.cn②AC(PSW.6):辅助进位标志位。在加减运算中,如果运算结果低半字节(位3)向高字节有进位或借位,AC置1,否则清0。在BCD码运算时要进行十进制调整,此时也要用到AC位状态进行判断。③F0(PSW.5):用户标志位。用户可以根据自己的需要对F0位赋予一定的含义,可以用指令对其置位或复位,也可以软件测试F0来控制程序的流向。④RS1、RS0(PSW.4、PSW.3):工作寄存器组选择控制位。可用软件对它们置“1”或置“0”,以选择当前工作寄存器的组号,RS1、RS0与工作寄存器组的关系如表2.3所示。表2.3RS1、RS0与工作寄存器组的关系表RS1RS0工作寄存器组00工作寄存器组001工作寄存器组110工作寄存器组2若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn11工作寄存器组3⑤OV(PSW.2):溢出标志位。在带符号数的加减运算中,OV=1表示加减运算结果超出了累加器A所能表示的符号数有效范围(-128~+127),即产生了溢出,表示运算是错误的;反之,OV=0表示运算结果正确,即无溢出产生。在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;反之,OV=0,表示乘积只在A中。在除法运算中,OV=1表示除数为0,除法不能进行;反之,OV=0,除数不为0,除法可正常进行。⑥(PSW.1):保留位。8051未用,8052作为F1用户标志位,同F0。⑦P(PSW.0):奇偶标志位。在每个指令周期,均由硬件来置位或清零,以指出累加器A中1的个数的奇偶性。若1的个数为偶数,P=0;若1的个数为奇数,P=1。此标志位对串行通信中的数据传输校验有重要意义,常用P作为发送一个符号的奇偶校验位,以增加通信的可靠性。(10)什么是震荡周期,时钟周期,机器周期和指令周期?如何计算机器周期的确切时间?答:振荡周期是指为单片机提供脉冲信号的振荡源的周期;振荡脉冲经过二分频后就是单片机的时钟信号,时钟信号的周期称为时钟周期;为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一个基本的操作,如取指令、读存储器、写存储器等。完成一个基本操作所需要的时间称为机器周期。指令周期是指执行一条指令所需要的时间。12机器周期=振荡频率fOSC(12)使单片机复位的方法有几种?复位后机器的初始状态如何?答:复位方法:上电自动复位和按键手动复位两种方式表2.7复位后各特殊功能寄存器的内容特殊功能寄存器复位后状态特殊功能寄存器复位后状态PC课后答案网0000HTMOD00HACC00HTCON00HBwww.hackshp.cn00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0~P30FFHSCON00HIP××000000BSBUF不定IE0×000000BPCON0×××0000B(13)开机复位后,单片机使用的是哪组工作寄存器?它们的地址是什么?如何改变当前工作寄存器组?答:开机复位后,PSW=00H,是0组工作寄存器,地址是00H~07H,改变PSW中RS1、RS0位。若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn第3章作业(6)已知片内RAM中,(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面指令,说明源操作数的寻址方式以及按顺序执行每条指令的结果。MOVA,40H直接寻址方式(A)=(40H)=48HMOVR0,A寄存器寻址方式(R0)=(A)=48HMOVP1,#F0H立即寻址方式(P1)=0F0HMOV@R0,30H直接寻址方式(48H)=38HMOVDPTR,#3848H立即寻址方式(DPTR)=3848HMOV40H,38H直接寻址方式(40H)=(38H)=40HMOVR0,30H直接寻址方式(R0)=(30H)=38HMOVP0,R0寄存器寻址方式(P0)=(R0)=38HMOV18H,#30H立即寻址方式(18H)=30HMOVA,@R0寄存器间接寻址方式(A)=(38H)=40HMOVP2,P1直接寻址方式(P2)=(P1)=0F0H(7)区分下列指令有什么不同?①MOVA,00H和MOVA,#00HMOVA,00H直接寻址,(A)=(00H)MOVA,#00H立即寻址,(A)=00H②MOVA,@R0和MOVXA,@R0MOVA,@R0读内部RAM的内容MOVXA,@R0读外部RAM的内容③MOVA,R1和MOVA,@R1MOVA,R1(A)=(R1)MOVA,@R1(A)=((R1))④MOVXA,@R0和MOVXA,@DPTRMOVXA,@R0课后答案网读外部RAM低256字节MOVXA,@DPTR读外部RAM64K字节⑤MOVXA,@DPTR和MOVCA,@A+DPTRMOVXA,@DPTRwww.hackshp.cn读外部RAM64K字节MOVCA,@A+DPTR读程序存储器的内容,地址为(A)+(DPTR)(8)如果PSW的RS1、RS0为0和1,那么指令MOVA,R0与指令MOVA,08H有何不同?解:选第1组工作寄存器组,R0的地址就是08H2条指令的寻址方式不同,但实质一致,结果相同。(11)写出完成下列要求的指令。①累加器A的低2位清零,其余位不变;②累加器A的高2位置“1”,其余位不变;③累加器A的高4位取反,其余位不变;④累加器A的第0位、2位、4位、6位取反,其余位不变。若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn解:①ANLA,#0FCH②ORLA,#0C0H③XRLA,#0F0H④XRLA,#55H(16)用位处理指令实现P1.4=P1.0∧(P1.1∨P1.2)∨/P1.3的逻辑功能。解:MOVC,P1.0ORLC,P1.2ANLC,P1.0ORLC,/P1.3MOVP1.4,C(17)试编写程序将片内RAM从INBUF开始存放的10个数据传送到片外RAM以OUTBUF开始的区域。解:MOVR0,#INBUFMOVR1,#OUTBUF(MOVDPTR,#OUTBUF)MOVR7,#10LOOP:MOVA,@R0MOVX@R1,AINCR0INCR1(INCDPTR)DJNZR7,LOOPEND课后答案网www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn第5章作业(5)已知“inta=12”,请计算以下表达式运算后a的值:a+=aa=a+a=24a<<=2a=a<<2=48a|=2&3a=a|(2&3)=a|2=1100|0010=1110=0EHa/=a+aa=a/24=0a%=(a%=2)a%=0a+=a-=a*=aa*=a结果144a-=a结果(-132)为0a+=a结果为0a-=(a&0x01)?1:0a-=0a=12(7)简述C51中bit和sbit的区别,unsignedchar和sfr又有何不同?答:bit位变量,值为0或1sbit声明可位寻址空间的一个位bit和sbit在内存中都只占一个二进制位,其值可以是1或0。其中:bit定义的位变量在C51编译器编译时,在不同的时候位地址是可以变化的;sbit定义的位变量必须与单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在一起,在C51编译器编译时,其对应的位地址是不可变化的。unsignedchar类型变量用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其所能表示的数值范围为0~255;sfr是特殊功能寄存器,8位,占一个内存单元,利用它可以访问51单片机内所有的特殊功能寄存器。(8)C51中断函数和普通的C语言函数的区别在哪里?中断函数主要用于什么操作?答:中断函数不能进行参数传递,中断函数没有返回值;在任何情况下都不能直接调用中断函数,当系统中出现中断请求并响应时才执行中断函数,用于处理随机事件。课后答案网www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn15.设某异步通信接口,每帧信息格式为10位,当接口每秒传送1000个字符,其波特率为多少?答:波特率为:1000×10bit/s=10000bit/s19.用汇编语言和C语言编程实现一个双机通信系统,将甲机的片内RAM中30H~3FH的数据块,传送到乙机片外RAM中0030H~003FH中,并画出电路图。解:汇编语言甲机发送程序:ORG0000HLJMPMAINA;跳至主程序入口ORG0023HAJMPSER_T1A;转至串行中断服务程序ORG0100HMAINA:MOVSP,#60H;设置堆栈指针MOVSCON,#40H;串行口置工作方式1MOVTMOD,#20H;定时器1为工作方式2MOVTL1,#n;定时器1计数初值MOVTH1,#n;计数重装值MOVPCON,#00H;波特率不倍增SETBTR1;启动定时器1SETBEA;中断总允许SETBES;串行口开中断MOVDPTR,#30H;发送数据的首地址30H送DPTRMOVR0,#00H;传送字节数初值MOVX课后答案网A,@DPTR;取第一个发送字节MOVSBUF,A;启动串行口发送SJMP$www.hackshp.cn;等待中断SER_T1A:CLRTI;将中断标志清零CJNER0,#0FH,LOOPA;判断128B是否发送完,若没完,则转LOOPA;继续取下一发送数据CLRES;全部发送完毕,禁止串行口中断AJMPENDA;转中断返回LOOPA:INCR0;字节数加1INCDPTR;地址指针加1MOVXA,@DPTR;取发送数据MOVSBUF,A;启动串行口ENDA:RETI;中断返回END若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cn乙机接收程序:ORG0000HLJMPMAINB;转主程序ORG0023HAJMPSER_T1B;转串行口中断服务程序ORG0100HMAINB:MOVSP,#60H;设置堆栈指针MOVSCON,#50H;串行口置工作方式1,允许接收MOVTMOD,#20H;定时器1为工作方式2MOVPCON,#00H;波特率不倍增MOVTL1,#n;设置计数初值MOVTH1,#n;计数重装值SETBTR1;启动定时器1SETBEA;开中断SETBES;串行口开中断MOVDPTR,#0030H;数据缓冲区首地址送DPTRMOVR0,#00H;置传送字节数初值SJMP$;等待中断;中断服务程序SER_T1B:CLRRI;清接收中断标志MOVA,SBUF;取接收的数据MOVX@DPTR,A;接收的数据送缓冲区CJNER0,#0FH,LOOPB;判别接收完没有。若没有,转LOOPB,继续接收CLRES;若接收完,则关串行口中断LJMPENDBLOOPB:INC课后答案网R0;计数指针加1INCDPTR;地址指针加1ENDB:RETI;中断返回ENDwww.hackshp.cnC语言:甲机发送程序:#include/*包含8051单片机的寄存器定义头文件*/unsignedcharxdataADDRA[16];/*在外部RAM区定义16个单元*/unsignedcharnum=0;/*声明计数变量*/unsignedchar*p;/*定义p为指针*/voidmain(void)/*主程序*/{SCON=0x40;/*置串行口工作方式1*/TMOD=0x20;/*定时器1为工作方式2*/PCON=0x00;/*SMOD=0*/若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cnTL1=0xnm;/*置计数初值*/TH1=0xnm;/*计数重装值*/TR1=1;/*启动定时器1*/EA=1;/*开中断*/ES=1;/*串行口开中断*/p=0x30;/*设置发送数据缓冲器区指针*/SBUF=*p;/*发送第一个数据*/while(1);/*等待中断*/}voidSer_T1A(void)interrupt4/*中断号4是串行中断*/{TI=0;/*清发送中断标志*/if(num==0x0F)ES=0;/*判断是否发送完,若已完,则关中断*/else/*否则,修改指针,发送下一个数据*/{num++;/*计数变量加1*/p++;SBUF=*p;}}乙机接收程序:#include/*包含8051单片机的寄存器定义头文件*/unsignedcharxdataADDRB[16];/*在外部RAM区定义128个单元*/unsignedcharnum=0;/*声明计数变量*/unsignedchar*p;/*定义p为指针*/voidmain(void)/*主程序*/{课后答案网SCON=0x50;/*置串行口工作方式1,允许接收*/TMOD=0x20;/*定时器1为工作方式2*/PCON=0x00;www.hackshp.cn/*SMOD=0*/TL1=0xnm;/*置计数初值*/TH1=0xnm;/*计数重装值*/TR1=1;/*启动定时器1*/EA=1;/*开中断*/ES=1;/*串行口开中断*/p=ADDRB;/*设置接收数据缓冲器区指针*/while(1);/*等待中断*/}voidSer_T1B(void)interrupt4/*中断号4是串行中断*/{RI=0;/*清接收中断标志*/num++;/*计数变量加1*/若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn 课后答案网:www.hackshp.cnif(num==16)ES=0;/*判断是否接收完,若已完,则关中断*/else/*否则,接收数据,修改指针*/{*p=SBUFp++;}}课后答案网www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn'