资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
微机原理与接口技术作业答案第2章 P52280C51单片机引脚有哪些第二功能?【答】80C51单片机的P0、P2和P3引脚都具有第二功能。第一功能第二变异功能P0口地址总线A0A7/数据总线D0D7P2口地址总线A8A15P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 (外部中断0)P3.3 (外部中断1)P3.4 T0 (定时器/计数器0的外部输入)P3.5 T1 (定时器/计数器0的外部输出)P3.6 (外部读写存储器或I/O的写选通)P3.7 (外部读写存储器或I/O的读选通)480C51单片机的存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内RAM和片外RAM的指令格式有何区别?【答】80C51单片机采用哈佛(Haryard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达64KB。在物理上设有4个存储器空间l 片内程序存储器;l 片外程序存储器;l 片内数据存储器;l 片外数据存储器。在逻辑上设有3个存储器地址空间l 片内、片外统一的 64 KB程序存储器地址空间。l 片内256B(80C52为384 B)数据存储器地址空间。 片内数据存储器空间,在物理上又包含两部分: 对于80C51型单片机,从0127 字节为片内数据存储器空间;从128255 字节为特殊功能寄存器(SFR)空间(实际仅占用了20多个字节)。l 片外64 KB的数据存储器地址空间。在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。访问片内RAM采用MOV指令,访问片外RAM则一定要采用MOVX指令,因为MOVX指令会产生控制信号或,用来访问片外RAM。访问程序存储器地址空间,则应采用MOVC指令。680C51单片机片内RAM低128个存储单元划分为哪4个主要部分?各部分主要功能是什么? 【答】80C51片内RAM的低128个存储单元划分为4个主要部分:l 寄存器区:共4组寄存器,每组8个存储单元,各组以R0R7作为单元编号。常用于保存操作数及中间结果等等。R0R7也称为通用寄存器,占用00H1FH共32个单元地址。l 位寻址区:20H2FH,既可作为一般RAM单元使用,按字节进行操作,也可以对单元中的每一位进行位操作,称为位寻址区。寻址区共有16个RAM单元,共计128位,位地址为00H7FH。l 堆栈区:设置在用户RAM区内。l 用户RAM区:在内部RAM低128单元中,除去前面3个区,剩下的所有单元。13程序存储器指令地址、堆栈地址和外接数据存储器地址各使用什么指针?为什么?【答】程序存储器指令地址使用程序计数器PC指针,PC中存放的是下一条将要从程序存储器中取出的指令的地址。程序计数器PC变化的轨迹决定程序的流程。PC的最基本的工作方式是自动加1。在执行条件转移或无条件转移指令时,将转移的目的地址送入程序计数器,程序的流向发生变化。在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送入PC,程序流向发生变化。堆栈地址使用堆栈指示器SP,SP在80C51中存放当前的堆栈栈顶所指存储单元地址,是一个8位寄存器,对数据按照“先进后出”原则进行管理。外接数据存储器地址使用数据指针DPTR,是一个16位的特殊功能寄存器,主要功能是作为片外数据存储器或I/O寻址用的地址寄存器,这时会产生或控制信号,用于单片机对外扩的数据存储器或I/O的控制。数据指针DPTR也可以作为访问程序存储器时的基址寄存器,这时寻址程序存储器中的表格、常数等单元,而不是寻址指令。第3章P939MOV、MOVC、MOVX 指令有什么区别,分别用于那些场合,为什么?【答】MOV指令用于对内部RAM的访问。MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。MOVX指令执行时,在P3.7引脚上输出有效信号或在P3.6引脚上输出有效信号,可以用作外部数据存储器或I/O的读或写选通信号,与单片机扩展电路有关。15已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。MOV A,#55HANL A,#0FFHORL20H,AXRL A,R1CPLA【答】各指令执行结果如下:MOV A,#55H;(A)=55HANL A,#0FFH;(A)=55HORL20H,A;(20H)=FFHXRL A,R1;(A)=AAHCPLA;(A) =55H执行完程序段后,A的内容为55H。16阅读下列程序,说明其功能。MOVR0,#30H MOVA,R0 RLA MOVR1,ARLARLAADDA,R1MOVR0,A ;【答】对程序注释如下:MOVR0,#30H ;(R0)=30HMOVA,R0 ;取数RLA ;(A)2MOVR1,ARLA;(A)4RLA;(A)8ADDA,R1;(A)10MOVR0,A ;存数 功能:将30H中的数乘以10以后再存回30H中。条件:30H中的数不能大于25,2510=250仍为一个字节。若30H中的数大于25,则应考虑进位。21读下列程序,请完成下列任务:画出P1.0P1.3引脚上的波形图,并标出电压V时间t坐标。 对源程序加以注释。 ORG0000HSTART:MOVSP,#20HMOV30H,#01HMOVP1,#01HMLP0:ACALLD50msMOVA,30HCJNEA,#08H,MLP1MOVA,#01H MOVDPTR,#ITABMLP2MOV30H,AMOVCA,A+DPTRMOVP1,ASJMPMLP0MLP1:INCASJMPMLP2ITAB:DB0,1,2,4,8 DB8,4,2,1D50ms:RET【答】程序功能:P1.0P1.3引脚上的波形图如图3-2所示。图3-2P1.0P1.3引脚上的波形图注释见源程序右边所述。ORG0000HSTART:MOVSP,#20HMOV30H,#01HMOVP1,#01H ;P1.0P1.3引脚输出波形MLP0:ACALLD50ms;软件延时50msMOVA,30HCJNEA,#08H,MLP1;判表格中数据是否取完?MOVA,#01H ;取完,从表头开始取MOVDPTR,#ITAB;表格首地址MLP2MOV30H,AMOVCA,A+DPTR;取表格中数据MOVP1,ASJMPMLP0MLP1:INCA;表格中数据未取完,准备取下一个SJMPMLP2ITAB:DB0,1,2,4,8;表 DB8,4,2,1D50ms:;软件延时50ms子程序RET第4章P13210. 把长度为10H的字符串从内部RAM的输入缓冲区INBUF向设在外部RAM的输出缓冲区OUTBUF进行传送,一直进行到遇见字符“CR”时停止,如字符串中无字符“CR”,则整个字符串全部传送。加上必要的伪指令,并对源程序加以注释。【答】程序如下:ORG 0000HAJMP MAIN ORG 0030HMAIN:MOV R7,#10H ;数据长度 MOV R0,#INBUF ;源数据首地址 MOV DPTR,#OUTBUF;目的数据首地址LOOP: MOV A,R0 ;把源数据的值赋给ACJNEA,#0DH,LOOP1;是“CR”(ASCII码值为0DH) ?SJMPEND1;是“CR”,则结束传送LOOP1:MOVX DPTR,A ;把A的值赋给目的数据 INC R0 ;源数据下一个地址值 INC DPTR ;目的数据下一个地址值 DJNZ R7,LOOP ;判数据传送是否完毕?END1:SJMP END114. 80C51单片机从内部RAM的31H单元开始存放一组8位带符号数,字节个数在30H中。请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。加上必要的伪指令,并对源程序加以注释。【答】分析:带符号数以字节最高位D7的值来区分是正数(包括零)和负数。D7=1,则该带符号数为负数。程序如下: POS_NUM EQU 20H;正数个数 ZERO_NUM EQU 21H ;零个数 NEG_NUM EQU 22H ;负数个数ORG 0000HAJMP MAINORG 0030HMAIN: MOV POS_NUM,#0;计数单位初始化为0MOVZERO_NUM,#0MOVNEG_NUM,#0 MOVR1,30H ;数据长度MOVR0,#31H ;数据首地址LOOP: MOVA,R0 JBACC.7, INC_NEG;符号位为,该数为负数,跳转加1CJNEA,#0,INC_POS INCZERO_NUM ;该数为0,0个数加1AJMP LOOP1INC_NEG: INCNEG_NUM;负数个数加1AJMP LOOP1INC_POS: INCPOS_NUM;该数为正数,正数个数加1LOO
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号