1.2 除了单片机这一名称之外,单片机还可称为(微控制器)和(嵌入式控制器)。
4、单片机的发展大致分为哪几个阶段?答:单片机的发展历史可分为四个阶段:第一阶段(1974年----1976年):单片机初级阶段。
第二阶段(1976年----1978年):低性能单片机阶段。
第三阶段(1978年----现在):高性能单片机阶段。
第四阶段(1982年----现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段1.8 8051与8751的区别是内部程序存储器的类型不同1.9 在家用电器中使用单片机应属于微型计算机的测量、控制应用在MCS-51 单片机中,如果采用6 MHZ 晶振,1个机器周期为(2微秒)2.5程序存储器的空间里,有5个单元是特殊的,这5个单元对应MCS-51单片机5个中断源的中断入口地址,请写出这些单元的地址以及对应的中断源。
答:中断源入口地址外部中断0 0003H定时器0(T0)000BH外部中断 1 0013H定时器1(T1)001BH串行口0023H判断下列说法是否正确:(A)8031的CPU是由RAM和EPROM所组成。
(错)(B)区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。
(错)(C)在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。
(对)(D)PC可以看成是程序存储器的地址指针。
(对)判断以下有关PC和DPTR的结论是否正确?(A)DPTR是可以访问的,而PC不能访问。
(错)(B)它们都是16位的寄存器。
(对)(C)它们都具有加1的功能。
(对)(D)DPTR可以分为2个8位寄存器使用,但PC不能。
(对)13使用8031单片机时,需将EA引脚接(低)电平,因为其片内无(程序)存储器PC的值是:当前正在执行指令的下一条指令的地址MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为(64)KB。
判断下列说法是否正确?(A)PC是1个不可寻址的特殊功能寄存器(对)(B)单片机的主频越高,其运算速度越快(对)(C)在MCS----51单片机中,1个机器周期等于1微秒(错)(D)特殊功能寄存器SP内装的是栈顶首地址单元的内容(错)判断下列说法是否正确。
(A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。
(√)(B)指令周期是执行一条指令的时间。
(√)(C)指令中直接给出的操作数称为直接寻址。
(×)3.4 MCS-51共有哪几种寻址方式?各有什么特点?答:共有7种寻址方式。
(1)寄存器寻址方式操作数在寄存器中,因此指定了寄存器就能得到操作数。
(2)直接寻址方式指令中操作数直接以单元地址的形式给出,该单元地址中的内容就是操作数。
(3)寄存器间接寻址方式寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。
(4)立即寻址方式操作数在指令中直接给出,但需在操作数前面加前缀标志“#”。
(5)基址寄存器加变址寄存器间接寻址方式以DPTR或PC作基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数的地址,以达到访问数据表格的目的。
(6)位寻址方式位寻址指令中可以直接使用位地址。
(7)相对寻址方式在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址。
在MCS----51中,PC和DPTR都用于提供地址,但PC是为访问(程序)存储器提供地址,而DPTR是为访问(数据)存储器提供地址。
4.6 试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。
解:MOVA,45HANLA,#0FHORL A,#0FH试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。
并将查找到的结果存入41H单元。
ORG 0000HMOVR0,#20HMOVR2,#21HMOV41H,#00HLOOP: MOVA,@R0CJNEA,#00H,NOTEINC41HNOTE: INCR0DJNZR2,LOOPEND能够实现中断处理功能的部件称为中断系统一.简答题AT89S51采用6MHz的晶振,定时2ms,如用定时器方式1时的初值(16进制数)应为多少?(写出计算过程)答:机器周期6×106=2×10-6s=2uS又方式1为16进制定时器.故(216—X)×2×10-6=2×10-3=>216-X=1000=>X=65536-1000=64536 即初值=FC18H2、AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?答:不发生数据冲突的原因是:AT89S51中访问程序存储器和数据存储器的指令不一样。
选通信号也就不一样,前者为PSEN,后者为WR与RD。
程序存储器访问指令为MOVC A,@DPTR;MOVC A,@A+pc。
数据存储器访问指令为:MOVX A,@DPTR;MOVX A,@Ri; MOVX@DPTR,A。
3.说明MCS-51的外部引脚EA的作用?EA*是内外程序存储器选择控制信号。
(1分)当EA*=0时,只选择外部程序存储器。
(1分)当EA*=1时,当PC指针≤0FFFH时,只访问片内程序存储器;当PC指针>0FFFH时,则访问外部程序存储器(1分)4、DPTR是什么寄存器?它由哪些特殊功能寄存器组成?它的主要作用是什么?答:DPTR是16位数据指针寄存器,它由两个8位特殊功能寄存器DPL(数据指针低8位)和DPH(数据指针高8位)组成,DPTR用于保存16位地址,作间址寄存器用,可寻址外部数据存储器,也可寻址程序存储器。
5、举例说明MCS-51指令系统中的任意5种寻址方式。
答:MCS-51指令操作数主要有以下7种寻址方式:寻址方式举例立即寻址 MOVA,#16直接寻址 MOV20H,P1寄存器寻址MOV A,R0寄存器间接寻址MOVX A, @DPTR变址寻址 MOVCA, @A+DPRT相对寻址SJMP LOOP位寻址 ANL C ,70H 6、试分析下面中断优先级的排列顺序(级别由高到低)是否可能?若可能,则应如何设置中断源的中断级别?否则,请简述不可能的理由。
(1) 串行口中断, 外中断INT0 ,定时器T0溢出中断,外中断INT1 ,定时器T1溢出中断 可以,MOV IP,#00010000B (2) 外中断INT0, 定时器T1溢出中断, 外中断INT1, 定时器T0溢出中断, 串行口中断 不能 (3)定时器T0溢出中断,定时器T1溢出中断,外中断INT0 ,外中断INT1 ,串行口中断 可以,MOV IP,#00001010B (4) 串行口中断, 定时器T0溢出中断,外中断INT0 ,外中断INT1 ,定时器T1溢出中断 不能 7、若SP=26H,PC=2356H,标号LABEL 所在的地址为3426H 。
问执行长调用指令“LCALL LABEL ”后,堆栈指针和堆栈的内容发生什么变化?PC 的值等于什么? 答:PC PC+3 所以PC =2356H+3=2359H SP SP+1 所以SP =27H (SP ) PC7-0 所以(26H )=59H SP SP+1 所以SP =28H (SP ) PC15-8 所以(27H )=23H PC LABEL 所以PC =3426H 结果应为:SP =28H ,(26H )=59H ,(27H )=23H ,PC =3426H 。
8、简述MOVX 和MOVC 指令的异同之处。
答:MOVX 和MOVC 指令的相同之处;都是数据传送类指令.不同之处:MOVX 是在A 累加器与片外数据存储器之间双向传送数据的指令;而MOVC 则是将程序存储器中内容读入A 累加器的指令. 9、若SP=60H ,标号LABEL 所在的地址为3456H 。
LCALL 指令的地址为2000H ,执行如下指令: 2000H LCALL LABEL 后,堆栈指针SP 和堆栈内容发生了什么变化?PC 的值等于什么?如果将指令LCALL 直接换成ACALL 是否可以?如果换成ACALL 指令,可调用的地址范围是什么? 答:1)SP=SP+1=61H (61H)=PC 的低字节=03H SP=SP+1=62H (62H)=PC 的高字节=20H 2)PC=3456H 3)可以 4)2KB=2048 Byte 11.写出AT89S51的所有中断源,并说明说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除,为什么? 答: 外部中断INT0* 定时器/计数器中断T0 外部中断INT1* 定时器/计数器中断T1 串行口中断 其中串行口中断TI 与RI 必须用软件清“0”,因为串口中断的输出中断为TI,输入中断为RI,故用软件清“0”。
12.中断服务子程序返回指令RETI 和普通子程序返回指令RET 有什么区别? 答:RETI 指令在返回的同时清除相应的优先级触发器,以允许下次中断 13.AT89S51单片机片内256B 的数据存储器可分为几个区?分别作什么用? 答: (1)通用工作寄存器区,00H – 1FH,共4组,R0-R7,在程序中直接使用 (2)可位寻址区,20H-2FH,可进行位操作,也可字节寻址 (3)用户RAM 区,30H-7FH ,只可字节寻址,用于数据缓冲及堆栈区 (4)特殊功能寄存器区,80H-FFH ,21个特殊功能寄存器离散地分布在该区内,用于实现各种控制功能 14.THX 与TLX (X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满之后才能刷新? 答:THX 与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。
但在读THX 、TLX 的值时,应该先读THX 值,后读TLX ,再读THX 。
若两次读得THX 相同,则可确定读得的内容正确。
若前后两次读得的THX 有变化,再重复上述过程。
二.程序分析 1、 如果(DPTR)=507BH ,(SP)=32H ,(30H)=50H ,(31H)=5FH ,(32H)=3CH,则执行下列指令后: POP DPH; POP DPL; POP SP; 则:(DPH)= __3CH____;(DPL )=___5FH___;(SP )=__50H___; 2.如果(DPTR)=5678H ,(SP)=42H ,(3FH)=12H ,(40H)=34H ,(41H)=50H ,(42H)=80H ,则执行下列指令后: POP DPH POP DPL RET 则:(PCH) =_34H_;(PCL )=_12H__;(DPH )=__80H__;(DPL )=_50H___; 4、假定A=83H ,(R0)=17H ,(17H )=0B5H ,执行以下指令: ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 后,A 的内容为 4BH 。