版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 思考题及习题参考答案1写出下列二进制数的原码、反码和补码(设字长为8位)。(1)001011(2)100110(3)-001011 (4)-111111答:(1)原码:00001011 反码:00001011 补码:00001011(2)原码:00100110 反码:00100110 补码:00100110(3)原码:10001011 反码:11110100 补码:11110101(4)原码:10111111 反码:11000000 补码:110000012已知X和Y,试计算下列各题的X+Y补和X-Y补(设字长为8位)。(1) X=1011Y=0011(2) X=1011Y=0111
2、(3) X=1000Y=1100 答:(1)X补码=00001011 Y补码=00000011 Y补码=11111101X+Y补=00001110 X-Y补=00001000(2)X补码=00001011 Y补码=00000111 Y补码=11111001X+Y补=00010010 X-Y补=00000100(3)X补码=00001000 Y补码=00001100 Y补码=11110100X+Y补=00010100 X-Y补=111111003微型计算机由那几部分构成?微机系统由那几部分构成?答:微型计算机由微处理器、存储器、I/O接口电路和系统总线构成。 微型计算机系统是在微型计算机的基础上
3、,配上必要的外设(如键盘、光驱等)、电源以及必要的软件而构成的系统。4 什么叫单片机?它有何特点? 答:单片机就是在一块硅片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O口(如并行、串行及A/D变换器等)的一个完整的微机处理系统。单片机主要特点有:品种多样,型号繁多;存储容量大;频率高,速度快;控制功能强,集成度高;功耗低;配套应用软件多。5 单片机有哪几种供应状态?答:片内无ROM,片内掩模ROM,片内EPROM, 片内PROM,片内FLASH和铁电存储技术(FRAM)存贮器配置。第2章 思考题及习题参考答案2.1.说明ROM、EPROM、EEPROM和FLASH之间的主要区别解
4、:ROM为只读存储器,在一般情况下只能读出所存信息,而不能重新写入。信息的写入是通过工厂的制造环节或采用特殊的编程方法进行的,一旦写入,就能长期保存。EPROM芯片一般允许用户多次编程和擦除。擦除时,通过向芯片窗口照射紫外光的方法来进行。 EEPROM,也称E2PROM。该类芯片允许用户多次编程和擦除。擦除时,可采用加电方法在线进行。FLASH是一种新型的大容量、速度快、电可擦除可编程只读存储器。2.2.EPROM、PROM、动态RAM、静态RAM等存储器中,哪几类是可以随时读写的?解:动态RAM、静态RAM这几类是可以随时读写的。2.3 某ROM芯片中有12根地址输入端和8个数据输出端,该芯
5、片的存储容量是多少位?解:芯片的存储容量是4K*8位。2.4.说明动态RAM和静态RAM的主要区别,使用时应如何选用?解:静态(static)RAM,即SRAM。它以触发器为基本存储单元,所以只要不掉电,其所存信息就不会丢失。该类芯片的集成度不如动态RAM,功耗也比动态RAM高,但它的速度比动态RAM快,也不需要刷新电路。在构成小容量的存储系统时一般选用SRAM。在微型计算机中普遍用SRAM构成高速缓冲存储器。 动态(Dynamic)RAM,即DRAM。一般用MOS型半导体存储器件构成,以单个M0S管为基本单元,以极间的分布电容是否持有电荷作为信息的存储手段,其结构简单,集成度高。但是,如果不
6、及时进行刷新,极间电容中的电荷会在很短时间内自然泄漏,致使信息丢失。所以,必须为它配备专门的刷新电路。动态RAM芯片的集成度高、价格低廉,所以多用在存储容量较大的系统中。目前,微型计算机中的主存几乎都是使用动态RAM。 2.5.说明NOR FLASH与NAND FLASH的主要区别,使用时应如何选用?解:NOR Flash具有以下特点:(1) 程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行;(2) 可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行重新
7、编程之前需要对块或整片进行预编程和擦除操作。但是NOR Flash的擦除和编程速度较慢,块尺寸又较大,因此擦除和编程操作所花费的时间很长,在纯数据存储和文件存储的应用中,NOR技术显得力不从心。NAND Flash具有以下特点:(1) 以页为单位进行读和编程操作,1页为256或512B(字节);以块为单位进行擦除操作,1块为4K、8K或16KB。具有快编程和快擦除的功能,其块擦除时间是2ms;而NOR技术的块擦除时间达到几百ms。(2) 数据、地址采用同一总线,实现串行读取。随机读取速度慢且不能按字节随机编程。(3) 芯片尺寸小,引脚少,是位成本(bit cost)最低的固态存储器,将很快突破
8、每兆字节1美元的价格限制。(4) 芯片包含有失效块,其数目最大可达到335块(取决于存储器密度)。失效块不会影响有效块的性能,但设计者需要将失效块在地址映射表中屏蔽起来。NOR Flash具有可靠性高、随机读取速度快的优势,在擦除和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用,如PC的BIOS固件、移动电话、硬盘驱动器的控制存储器等。 NAND Flash结构的闪速存储器适合于纯数据存储和文件存储,主要作为SmartMedia卡、CompactFlash卡、PCMCIA ATA卡、固态盘的存储介质,并正成为闪速磁盘技术的核心。 2.6.现有2K8位的RAM芯片若干片,若用
9、线选法组成存储器,有效的寻址范围最大是多少KB?若用3-8译码器来产生片选信号,则有效的寻址范围最大又是多少?若要将寻址范围扩展到64KB,应选用什么样的译码器来产生片选信号?解:以8086为例,8086有20条地址线,用11条地址线寻址一片2K8位的RAM,余下的9条地址线做线选法的线,故可以并联9个芯片,故寻址最大范围是20KB,若用3-8译码器来产生片选信号,9条地址线可以控制3个3-8译码器这样就可以控制24个芯片最大范围是50KB. 若要将寻址范围扩展到64KB可选用4-16地址译码器来产生片选信号。2.7.什么是地址重叠区?它对存储器扩展有什么影响?解:基本地址和前面全译码连接的地
10、址范围是相同的,但两者还是有区别的。区别在于全译码连接时各芯片的地址是唯一的,而部分译码连接时各芯片地址不是唯一的,也就是可以由若干个地址都选中同一芯片的同一单元,既所谓的地址重叠区。由于存在的地址重叠,影响了地址区的有效使用,也限制了存储器的扩展。因此,在选用部分译码时,也要尽可能多选一些高位地址线来作为译码器的输入。2.8如图2-22若用1K8位片子来扩展3K8位RAM,试核算各片的地址范围为多少?图2-22 1K8位片子扩展的3K8位RAM系统解:A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址G1 A B C 1 0 1 0 0 0
11、0 0 0 0 0 0 0 0 0 0 片1:A000H1 0 1 0 0 0 11 1 1 1 1 1 1 1 1 片1:A3FFHA15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址G1 A B C 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 片2:B000H1 0 1 1 0 0 11 1 1 1 1 1 1 1 1 片2:B3FFHA15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址G1 A B C 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 片3:B
12、400H1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 片3:B7FFH所以各片地址范围为:片1:A000H-A3FFH, 片2:B000H-B3FFH, 片3:B400H-B7FFH2.9. 现有8K8位RAM多片,1片3-8译码器,要构成容量为16K8位的存储器,请用线译码、部分译码、全译码3种方式分别设计,画出连接图,并指出寻址范围。解:线译码法: 寻址范围:2000H5FFFH部分译码寻址范围:0000H3FFFH全译码:寻址范围:0000HFFFFH2.10.如何检查扩展的RAM工作是否正常?试编一个简单的RAM检查程序,要求此程序能记录有多少个RAM单元工作有错?且
13、能记录出错的单元地址。解:TEST_CONST EQU 5AHTEST_RAM EQU 03HORG 0000HLJMP INITIAL ORG 0050HINITIAL: MOV R0,#253MOV R1,#3HTEST_ALL_RAM: MOV R2,#0FFHTEST_ONE_RAM: MOV A, R2MOV R1,ACLR AMOV A,R1CJNE A,2H, ERROR_DISPLAYDJNZ R2, TEST_ONE_RAMINC R1DJNZ R0, TEST_ALL_RAMOK_DISPLAY:MOV P1, #11111110BWAIT1: SJMP WAIT1ERRO
14、R_DISPLAY: MOV A, R1MOV P1,AWAIT2: SJMP WAIT2END第3章 思考题及习题参考答案1. 80C51单片机的P0P3口在通用I/O口时操作要注意哪些?P0P3口不做通用I/O口时是什么功能?在使用上有何特点? P0P3驱动能力如何?答:(1)作为通用I/O口时,P0P3都是准双向口,输入引脚信息时都必须先向其锁存器写“1”,作为输出口时P0口需结上拉电阻。(2)P0可以作为地址/数据总线;P2口可以作为地址线的高8位;P3口是双功能口,每条口线还具有不同的第二功能。(3)P0口的驱动能力为8个TTL负载,而其它口仅可驱动4个TTL负载。2、MCS-51单
15、片机运行出错或程序进入死循环,如何摆脱困境?答:通过复位电路复位3、单片机的复位(RST)操作有几种方法,复位功能的主要作用是什么?答:单片机的复位操作方式有:1、上电复位;2、手动复位。复位功能的主要作用是:复位时,PC初始化为0000H,使MCS-51单片机从0000H开始执行程4、简述程序状态寄存器PSW寄存器中各位的含义。答:程序状态字寄存器PSW,8位。其各位的意义为:CY:进位、借位标志。有进位、借位时CY=1,否则CY=0;AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位);F0:用户标志位,由用户自己定义;RS1、RS0:当前工作寄存器组选择位,共有四组:00、01、
16、10、11;OV:溢出标志位。有溢出时OV=1,否则OV=0;P:奇偶标志位。存于累加器ACC中的运算结果有奇数个1时P=1,否则P=0.5、80C51单片机的当前工作寄存器组如何选择?答:由特殊功能寄存器中的程序状态寄存器PSW的RS1、RS0来决定,当RS1、RS0为00时,选择0组;为01时,选择1组;为10时选择2组,为11时选择3组。6. 80C51单片机的控制总线信号有哪些?各信号的作用如何?答:80C51单片机的控制总线信号有以下4个,各信号的作用为:RST/VPD: 复位信号输入引脚/备用电源输入引脚;ALE/PROG: 地址锁存允许信号输出引脚/编程脉冲输入引脚;EA/Vpp
17、 : 内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。7、8051单片机中EA引脚的作用是什么?答:访问内部或外部程序存储器的选择端当EA接高电平的时候程序从内部ROM开始执行,当EA为低电平的时候,从外部ROM开始执行8、 程序计数器PC的作用是什么?答:程序计数器PC是一个16位的计数器,他总是存放着下一个要取的指令的16位存储单元地址。用来存放下一条指令的地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指今
18、的地址。此后经过分析指令,执行指令,完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。9、堆栈有哪些功能?堆栈指示器( SP)的作用是什么?在程序设计时,为什么要对 SP重新赋值?答:堆栈在中断过程中用来保护现场数据,复位后SP=07H,而堆栈一般设置在通用ROM区(30H-7FH),在系统初始化时要从新设置。10、内部 RAM低 128单元划分为哪 3个主要部分?说明各部分的使用特点。 答:80C51内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下:00H1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元
19、,每个单元作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。20H2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H7FH。当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。(3)30H7FH为堆栈、数据缓冲区。11、简述MCS-51单片机存储区的划分。答:1)MCS-51单片机的存储器从物理结构上分为:片内和片外数据存储器,
20、片内和片外程序存储器。2)从逻辑上分别可划分为:片内统一寻址的64KB程序存储器空间(0000HFFFFH);64KB的片外数据存储器空间(0000HFFFFH);256B的片内数据存储器空间(00HFFH)。12、MCS-51基本型单片机的中断入口地址各为多少。答:外部中断0 中断入口地址 0003H定时/计数器0 中断入口地址 000BH外部中断1 中断入口地址 0013H定时/计数器1 中断入口地址 001BH串行接口 中断入口地址 0023H13、什么是指令周期、机器周期和状态周期?答:指令周期:指令的执行时间;机器周期:CPU完成一个最简单的指令所需要的时间;状态周期:晶振信号周期的
21、2倍。14、已知一MCS51单片机系统使用6MHZ的外部晶体振荡器,计算:该单片机系统的状态周期与机器周期各为多少?解:由于晶振为6MHz,所以机器周期为2us,因为一个机器周期由6个状态周期组成,所以状态周期1/3us第4章 思考题及习题参考答案1. 寻址方式是什么?答:寻址方式是寻找操作数或操作数地址的方式。2. 89C51指令系统有哪几种寻址方式?答:89C51的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。3、访问特殊功能寄存器SFR可以采用哪些寻址方式?答:直接寻址和位寻址方式。4、访问RAM单元可以采用哪些寻址
22、方式?访问外部RAM单元有哪些指令?答:直接寻址、寄存器间接寻址和位寻址方式。访问外部RAM单元的指令有4条:MOVX A,DPTR MOVX A,Ri MOVX DPTR,A MOVX Ri,A 5、访问外部程序存储器可以采用哪些寻址方式?访问外部程序存储器有哪些指令?答:立即寻址、变址寻址和相对寻址方式。访问外部程序存储器的指令有2条MOVC A,A+DPTR MOVC A,A+PC 6、试写出完成以下每种操作的指令序列。 (1)将R0的内容传送到片内RAM 20H;(2)将R1的内容传送到R0; (3)内部RAM单元10H的内容传送到外部RAM单元1000H; (4)外部RAM单元100
23、0H的内容传送到R5; (5)外部ROM单元1000H的内容传送到R5; (6)外部RAM单元2000H的内容传送到外部RAM单元2001H。答:(1)MOV 20H,R0(2) MOV A,R1MOV R0,A(3)MOV A,10HMOV DPTR,#1000HMOVX DPTR,A(4)MOV DPTR,#1000HMOVX A,A+DPTRMOV R5,A(5) MOV DPTR,#1000HMOV A,#00HMOVC A,A+DPTRMOV R5,A(6) MOV DPTR,#2000HMOVX A,DPTRINC DPTRMOVX DPTR,A7. 设内部RAM (30H)=60
24、H, (60H)=10H, (10H)=20H, (R1)=22H,(P1)=0AH, 分析以下程序执行后(30H)=?, (60H)= ?, (10H)= ?,(A)= ?,(B)= ?,(P2)= ?每条指令的机器码为多少? MOV R0, 30H MOV A, R0 MOV R1, A MOV B, R1 MOV R1, P1 MOV P2, P1 MOV 10H, 90H 答: MOV R0, 30H ; (R0)= 30H , 78 30 MOV A, R0 ; (A) =60H , E6 MOV R1, A ; (R1) =60H , F9 MOV B, R1 ; (B) = 10
25、H , 87 F0 MOV R1, P1 ; (60H) =0AH , A7 90 MOV P2, P1 ; (P2) =0AH , 85 90 A0 MOV 10H, 90H ; (10H) =90H , 75 10 90 (30H)= 60H, (60H)= 0A H, (10H)= 90H,(A)= 60H,(B)= 10H,(P2)= 0AH8. 设外部RAM (2030H)=0FH, 分析以下指令执行后(DPTR)=?, (30H)=?, (2030H)=?(A)=?每条指令的机器码为多少? MOV DPTR, 2030H MOVX A, DPTR MOV 30H, A MOV A,
26、 3FH MOVX DPTR, A 答:MOV DPTR, 2030H ; (DPTR) = 2030H , 90 20 30 MOVX A, DPTR ; (A) =0FH , E0 MOV 30H, A ; (30H) =0FH , F5 30 MOV A, 3FH ; (A) =3FH , 74 3F MOVX DPTR, A ; (2030H)=3FH , F0 执行结果为: (DPTR)=2030H, (30H)=0FH, (2030H)=3FH ,(A)=3FH。 9、编写指令实现下列位操作。 (1)使累加器的最高2位清零; (2)屏蔽(清零)20H的高4位; (3)将E0H的低4
27、位取反,高4位不变;(4)将P0的低2位置1。(5)将10H的内容取补后存放到20H答:(1)CLR ACC.7 CLR ACC.6(2) ANL 20H,#0FH(3) XRL E0H,#0FH(4)ORL P0,#03H(5) XRL 10H,#0FFHINC 10HMOV 20H,10H10. 在外部程序存储器中, 从1020H单元开始依次存放09的平方值: 0、 1、 4、 9、 、81, 要求依据累加器A中的值(09)来查找所对应的平方值, 试设计程序实现。 答:MOV DPTR, 1020H MOVC A, A+DPTR 11. 设(R0)=20H, (20H)=40H, (A)=
28、58H, 则: 执行 XCH A, R0 后 (A)=?, (20H)=? 若执行 XCHD A, R0 后 (A) =?, (20H) =?答:执行 XCH A, R0 后 (A)=40H, (20H)=58H若执行 XCHD A, R0 后 (A) =50H, (20H) =48H12、试编写程序序列,完成两个16位数的减法:(30H)(31H)(10H)(11H) (30H)(31H)。答:CLR CMOV A,31HSUBB A,11HMOV 31H,AMOV A,30HSUBB A,10HMOV 30H,A13、试编写程序,将R0中的低4位数与R1中的高4位数合并成一个8位数,并将其
29、存放在R0中。答:MOV A,R0ANL A,#0FHMOV B,AMOV A,R1ANL A,#0F0HORL A,BMOV R0,A14. 设计双字节无符号数加法程序实现(R0 R1)+(R2 R3) (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节,假设其和不超过16位。答:MOV A, R1 ADD A, R3 MOV R5, A MOV A, R0 ADDC A, R2 MOV R4, A 15. 设计双字节无符号数相减程序实现(R0 R1)(R2 R3) (R4 R5)。R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放
30、低字节, 答: MOV A, R1 CLR C SUBB A, R3 MOV R5, A MOV A, R0 SUBB A, R2 MOV R4, A 17. 设2个BCD码数存在外部RAM的2000H和内部RAM的20H。设计程序实现2个BCD码相加,其结果的十位和个位送到外部 RAM的2000H单元, 结果的百位值送F0位。答: MOV DPTR,#2000H MOVX A,DPTR ADD A, 20H DA A MOVX DPTR, A MOV F0H,CY18. 设变量X存放在片内10H单元中, 函数Y存放在片内20H单元。 编写程序实现如下函数功能。 80H X0 Y= 50 X=
31、0 FFH X0则转移到POSI MOV A, 0FFH ; 若X0 时A=80H COMP: MOV 20H, A ; 存函数Y值 SJMP $ ; 等待19. 利用位逻辑指令, 模拟下图硬件逻辑电路功能。试编写程序实现。答:MOV CY,P1.0ANL CY,P1.1CPL CYMOV F0,CYMOV CY,P1.1ORL CY,P1.2ANL CY,F0CPL CY MOV F0,CY20.若(CY)=0,(P1)=10110111B,试指出执行下列程序段后,CY、P1口内容的变化情况。 MOV P1.2,C MOV C, P1.4 JBC P1.7 ,SS ORL C, P1.6SS
32、:CPL P1.3 ANL C, /P1.3 MOV P1.0,C答:(CY)=0,(P1)=0011 1010B第5章 思考题及习题参考答案1、80C51单片机汇编语言有何特点?答:优点:源程序结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。缺点:由于它是面向机器的语言,所以它缺乏通用性,编程复杂繁琐,但应用相当广泛。2、利用80C51单片机汇编语言进行程序设计的步骤如何?答:(1).需要对单片机应用系统预先完成的任务进入深入的分析,明确系统的设计任务、功能要求、技术指标。(2).要对系统的硬件资源和工作环境进行分析和熟悉.(3).利用数学方法或数学模型
33、来对其进行描述,从而把一个实际问题转化成由计算机进行处理的问题。(4).对各种算法进行分析比较,并进行合理的优化。3、常用的程序结构有哪几种?特点如何?答:常用的程序结构有以下几种: (1)顺序程序结构:顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序进行,直到某一条指令为止;比如数据传送与交换、查表程序和查表程序的设计等;在顺序结构中没有分支,也没有子程序,但它是组成复杂程序的基础和主干; (2)分支程序结构:它的主要特点是程序执行流程中必然包含有条件判断指令,符合条件要求的和不符条件合要求的有不同的处理程序; (3)循环程序结构 :它在本质上只是分支程序中的一个特殊形式,它由循环初始化
34、、循环体、循环控制和结束部分构成;在循环次数已知情况下,采用计数循环程序,其特点是必须在初始部分设定计数的初始值,循环控制部分依据计数器的值决定循环次数;根据控制循环结束的条件,决定是否继续循环程序的执行。 (4)子程序:它的主要特点是,在执行过程中需要由其它的程序来调用,执行完后又需要把执行流程返回到调用该子程序的主程序。4、子程序调用时,参数的传递方法有哪几种?答:在80C51单片机中,子程序调用时,参数的传递方法由三种:(1)、利用累加器A或寄存器;(2)、利用存储器;(3)、利用堆栈。5、什么是伪指令?常用的伪指令功能如何?答:伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令
35、。常用的伪指令有: (1)起始地址设定伪指令ORG,该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址; (2)汇编结束伪指令END,该指令的功能是汇编程序遇到END伪指令后立即结束汇编; (3)字节数据定义伪指令DB,该指令的功能是从标号指定的地址单元开始,在程序存储器中定义字节数据; (4)字数据定义伪指令DW,该指令的功能是从标号指定的地址单元开始,在程序存储器中定义字数据; (5)空间定义伪指令DS,该指令的功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数存储单元作为备用空间,并都填以零值; (6)赋值伪指令EQU,该指令的功能是将表达式的值或特定
36、的某个汇编符号定义为一个指定的符号名; (7)位地址符号定义伪指令BIT,该指令的功能是将位地址赋给指定的符号名。6:把外部RAM的2000-20FFH RAM空间置零程序如下: ORG 0000H MOV R0,#00H MOV DPTR,#2000H ;空间首地址送DPTRLOOP: MOV A,#00H MOVX DPTR,A;清零 INC DPTR;DPTR加1 INC R0;字节数加1 CJNE R0,#00H,LOOP;连续清256个字节LOOP1: SJMP LOOP1 END软件仿真时为了更好地看到结果,把清零改为了赋值55H。7、录入并调试一个排序子程序,其功能为用冒泡法将内
37、部RAM中从50H开始的十个单字节无符号正整数,按从小到大的次序重新排列。程序如下:用冒泡法进行数据排序ORG 0000HMOV R3,#50HLOOP0:MOV A,R3MOV R0,A;指针送R0MOV R7,#0AH;长度送R7CLR 00H ;标志位为0MOV A,R0LOOP1:INC R0MOV R2,ACLR CMOV 22H,R0CJNE A,22H,LOOP2;相等吗?SETB CLOOP2:MOV A,R2JC LOOP3;小于或等于不交换SETB 00HXCH A,R0DEC R0XCH A,R0INC R0;大于交换位置LOOP3:MOV A,R0DJNZ R7,LOO
38、P1JB 00H,LOOP0;最后一次循环中有交换继续LOOP:SJMP LOOP;无交换退出END8、设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位数相加的程序。答: ORG 0000HCLR CMOV A,21HADDC A,23HMOV 25H,AMOV A,20HADDC A,22HMOV 24H,ASJMP $END9、编写一段程序,把外部RAM中1000H1030H单元的内容传送到内部RAM的30H60H单元中。答: ORG 0030H MOV R1,#49 MOV R0,#30H MOV DPTR,#10
39、00HLOOP: MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R1,LOOP SJMP $ END 10、编写程序,实现双字节无符号数加法运算,要求(R1R0)+(R7R6)(61H60H)。答: MOV A,R0 ADD A,R6 MOV 60H,A MOV A,R1 ADDC A,R7 MOV 61H,A SJMP $11、用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加数,字节存放到R2中作计数初值。答:主程序:JAFA: MOV R0,#20H ;指向加数最低字节MOV R1,#29H ;指向另一加数最低字节MOV
40、 R2,#04H ;字节数作计数值ACALL JASUB ;调用加法子程序AJMP $ RET 多字节加法子程序:JASUB: CLR CJASUB1: MOV A,R0 ;取出加数的一个字节(无符号数加数)ADDC A,R1 ;加上另一数的一个字节MOV R0,A ;保存和数INC R0 ;指向加数的高位INC R1 ;指向另一加数的高位DJNZ R2,JASUB1 ;全部加完了吗?RET12、在内部RAM的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大数存入BIG单元。答:START: MOV R7,30H DEC R7 MOV R0,#21HMOV A,R0 LO
41、OP:INC R0 CLR C SUBB A,R0 JNC NEXT MOV A,R0NEXT:DJNZ R7,LOOP MOV BIG, A SJMP $ END13、求双字节补码程序 设双字节数放在内部RAM的30H和31H单元(高字节在低地址),将其取补后存入40H(存放高字节)和41H(存放低字节)单元答:START:MOV A,31H CPL A ADD A,#01H MOV 41H,A MOV A,30H CPL A JNC DONE ADD A,#01HDONE:MOV 30H,A SJMP $14、编程统计累加器A中“1”的个数。答: MOV R1,#0 PUSH ACCLOO
42、P1:JZ DONE CLR C RLC A JNC LOOP1 INC R1 SJMP LOOP1DONE:POP ACC SJMP $ END15、编程序实现1+2+3+100?答:汇编代码如下: H_Byte EQU R4 ;保存结果,高8位L_Byte EQU R5 ;保存结果,低8位Max_Adder EQU 100 ;最大的加数 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#1 ;加数 MOV R4,#0 MOV R5,#0 START: MOV A,#Max_Adder CLR CY SUBB A,R2 JC RESULT MOV A,R
43、2 ADD A,L_ByteMOV L_Byte,A ;保存低位MOV A,H_ByteADDC A,#0MOV H_Byte,A ;保存高位 INC R2 JMP START RESULT: SJMP $ ;只用于调试 END C语言代码如下: #include at89x51.h /由于这里只是计算结果,所以这行代码可以去掉 void main(void) unsigned char i=1; unsigned int result=0; for(i=1;ic & b=c (False) (2) a|b+c&b-c (True) (3)!(ab) & !c| 1 (True)(4)!(a+
44、b)+c-1&b+c/2 (True)6.7用分支结构编程实现,输入”1”时显示“a”,输入”2”时显示“b”,输入”3”时显示“c”,输入”4”时显示“d”,输入”5”时结束。 答:#include #include #define uchar unsigned char#define uint unsigned intuchar i;void main()printf(please input the numbern);scanf(%d,&i);switch (i)case 1: printf(a);break;case 2: printf(b);break;case 3: printf(
45、c);break;case 4: printf(d);break;case 5: break; default: printf(Error!);while(1); 6.8 输入3个无符号数据,要求按由大到小的顺序输出。解:#include #include #define uchar unsigned char#define uint unsigned intuint a,b,c;void main() uint max, min, med; scanf(%d,%d,%d, &a , &b, &c); if (ab & bc) max=a; med=b; min=c; else if (ab
46、& bc) max=a; med=c; min=b; else if (ab & bc & aa & ba & bc & ac) max=b; med=a; min=c; else max=b; med=c; min=a; printf(%d%d%dn, max, med, min);6.9 用循环结构编写程序实现输出1-10的平方和解:#include #include #define uchar unsigned char#define uint unsigned intuint sum=0;void main( ) uchar i; for (i=1;i=10;i+) sum = sum
47、 +i*i;printf(sum=%d,sum);6.10设fsoc=12MHz,8051定时器0的方式0、方式1、方式2的最大定时间隔分别是多少?答:fsoc=12MHz,故计数周期为1us,所以:方式0最大计数为213=8192,T0=8192us;方式1最大计数为216=65536,T1=65536us;方式2最大计数为28=256,T1=256us; 6.11用单片机内部定时器来产生矩形波, 设单片机时钟频率为l2MHz。要求在p1.0引脚上输出频率为1kHz。试写出有关的程序。答:用定时器0的方式1编程,采用中断方式。#include sbit P10=P10;void time0(
48、void) interrupt 1 using 1 P10=P10; TH0=(65536-500)/256; TL0=(65536-500)%256;void main(void) TMOD=0 x01; TH0=(65536-500)/256; TL0=(65536-500)%256; EA=1; ET0=1; TR0=1; while (1); 6.12设fosc=12MHz,用延时程序要求在P0口上输出频率为1Hz的流水灯,试写出有关的程序,并给出Proteus硬件仿真结果。答:(1)建立文件夹LED。(2)在桌面点击Keil uVision4图标,启动Vision4,弹出界面如图6.
49、9(左)所示。(3)新建一个项目工程:选择ProjectNew uVision Project选项,弹Creat new Project对话框如图6.9(右)所示,找到第一步新建的文件夹LED,并在文件名中给定一个项目工程名,不建议用中文,如sw。点击保存进入到Select Device for Target界面,并从器件库中选择一个单片机芯片,如Atmel公司的AT89C51,如图6.10(左)所示,点击OK回到界面6.9(左)。(4)建立C文件:选择FileNew,建立text1文件。再选择FileSave As弹出对话框如图6.10(右)所示,在文件名中输入led.c,然后在文件中输入下
50、列程序代码。# include void delay(x,y) int i,j; for(i=0;ix;i+) for(j=0;jy;j+); void main()int a=200;int b=200;char LED=1;while (1) char i;for(i=0;i8;i+) P0=(LED(8-i);/循环左移i位delay(a,b); (5)在项目工程中添加源文件:点击Target1会出现Source Group1图标,右击Source Group1,在弹出的快捷菜单中选择Add File to GroupSource Group1选项,进入到Add File to Grou
51、pSource Group1界面,选择第四步建立的程序文件(led.c),点击Add按钮,将源文件添加到项目中。(6)设置项目工程参数:在Project菜单的下拉选项中,单击Options for TargetTarget 1选项,完成以下设置:单片机工作频率设置为12MHz;Output标签下的Create HEX File前小框中要打钩;表示可以生成HEX目标代码;在Debug标签下选择Use Simulator(默认项)。(7)编译项目工程:选择ProjectRebuild all Target file选项完成汇编,也可以用工具栏中的快捷方式,编译界面如图6.11所示。(8)软件调试:
52、编译成功后在Debug菜单选项中单击Start/Stop Debug Session进入调试状态。在Debug菜单下选择Step(单步)运行方式,可以实时观察程序运行状态,单步运行调试界面如图6.12所示;如果选择Run,则程序进入到连续运行方式。(9)打开Proteus软件:双击桌面上的Proteus 8 Professional图标或者单击开始程序Proteus 8 ProfessionalProteus 8 Professional命令,出现如图6.13所示屏幕,表明进入Proteus集成环境主页Home page,点击蓝色ISIS图标(Schematic Capture),进入到ISI
53、S仿真界面。(10)添加元件,绘制原理图:单击对象选择器按钮,弹出“Pick Devices”页面,在“Keywords”输入AT89C51,将单片机选中放入电路图中,然后将LED添加进来。(11)添加电源、地和示波器:点击中的第一个按钮,在元件列表中选择GROUND、POWER(电源和地);单击最后一个按钮,在元件列表中选择OSCILLOSCOPE(示波器)。(12)加载可执行二进制文件:选择单片机AT89S51,用鼠标左键单击,在弹出图6.14对话框的Program File后面加载Keil软件生成的*.HEX文件,单击“OK”按钮即可。(13)运行,得到仿真结果。第7章思考题及习题参考答
54、案1. 什么是中断、中断源、中断服务程序、中断程序入口地址?答: 当有中断源申请中断,并允许响应时,当前执行的程序会转去执行中断服务子程序,此时被中断的原程序的位置就成为断点,断点是完成中断服务子程序,返回原程序继续执行的位置。导致中断产生的事件和原因统称为中断源。处理暂停主程序后转去执行的,用来处理中断事件的程序成为中断服务子程序。中断程序入口地址是指的中断服务子程序的第一条指令所在的地址。2. 80C51单片机的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?答:80
55、C51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。3. 保护断点是保护什么,怎么保护的,中断返回后的下一步到到哪里去? 答:保护断点是保护主程序暂停时的下一条将要执行的指令的地址。保护方法是将下一条指令的地址值入栈。中断返回后,断点地址从堆栈中弹出到程序计数器或指令指针寄存器,继续执行主程序。4.保护现场有什么作用?在80C51中保护现场和保护断点有什么区别?答:当响应中断时,执行的中
56、断服务子程序很可能和主程序使用同一个寄存器,当执行完中断服务子程序后,这些共用的寄存器值发生改变,那么返回主程序后,会导致主程序出错。为了预防这点,所以需要保护现场。在80C51中,保护断点全部是由硬件自动完成,而保护现场必须由用户自己编写处理,保护的内容根据中断服务子程序中使用到的寄存器进行保存。5. 80C51各中断源对应的中断服务程序的入口地址是否能任意设定? 如果想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置?请举例加以说明答:各中断源的入口地址已经在中断地址区中被定义了,不能任意设定。 如果要将中断服务程序放置在程序存储区的任意区域,在程序中要通过在中断地址区的对
57、应地址上设置跳转指令才可实现对中断服务程序的执行。 例如:外部中断0的中断服务程序INT0P放置在程序存储区的任意区域,此时,通过以下方式,可实现对中断服务程序的执行: ORG0003H LJMP INTOP6. 简述子程序调用和执行中断服务程序的异同点答:相同点:均能中断主程序执行本程序,然后再返回断点地址继续执行主程序。不同点:1)中断服务程序入口地址是固定的,子程序调用入口地址是用户自己设定的。 2)中断服务子程序返回指令除具有子程序返回指令所具有的全部功能之外,还有清除中断响应时被置位的中断请求标志位的功能。 3)中断服务子程序是在满足中断申请的条件下,随机发生的;而子程序调用是用户主
58、程序事先安排好的。7. 80C51单片机开中断总允许的指令是_,初始化时一般在什么时候开总中断允许?答: SETB EA或者EA=1.一般在初始化的后面或者最后开总中断允许,防止单片机启动时产生意外的中断。8 当80C51某个中断源有中断请求时,处理器响应这个中断的条件是什么? 答:1)相应的中断使能控制位为1 2)全局使能控制位EA=1 3)当前没有在执行同优先级中断或更高优先级中断的中断服务子程序。9.简述80C51的各个中断源是如何撤销中断申请的?答: 80C51各中断源的中断申请撤销方法是:定时/计数器中断:在中断被响应后,由硬件自动清零中断申请标志位;串口中断:由软件清零中断申请标志
59、位;下降沿触发时的外部中断:中断被响应后,由硬件自动清零中断申请标志位;低电平电平触发的外部中断:需要设计专门的电路,通过软件编程通知外部中断源,由外部中断源撤销申请。10 80C51单片机的定时/计数器可选择_个时钟源,当选择外部时钟源时,通常作为_,当选择内部时钟源时,通常用为_。答: 2,计数器,定时器11. 80C51单片机的定时功能和计数功能本质上有区别吗?为什么?答:定时/计数器的计数和定时功能其本质上都是通过计算时钟信号的下降沿个数来实现的,两者之间没有本质上的区别。只是选择内部时钟源时,由于频率固定,只能做为定时器,当选择外部时钟源时,即可作为定时器也可作为计数器。12 80C
60、51单片机中的定时/计数器选择外部时钟源有什么限制?为什么? 答:当选择外部时钟源时,由于时钟信号的下降沿有效,而采样一个下降沿需要两个机器周期,因此外部时钟信号的最高频率为fosc/24。13. 当80C51单片机中的门控位GATE为0时,怎么启动定时/计数器?当门控位GATE为1时,又怎么启动定时/计数器?答:当GATE为0时,外部中断输入引脚(x=1或0)的电平状态对定时/计数器不产生影响,这时只需要使TRx(x=0或1)为1就可以启动定时/计数器。而当GATE为1时,此时,除了使TRx(x=0或1)为1外,还需要相应的外部中断输入引脚(x=1或0)为高电平,才能启动定时/计数器。14.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年版企业破产重整合同
- 2024年度无息个人婚礼筹备借款协议书下载3篇
- 2025年日喀则货运资格证模拟考试
- 2024年停薪留职期间员工社会保险及福利协议合同3篇
- 2025购房合同的范本 购房合同样本
- 2025年柳州货运从业资格证考试卷
- 洛阳理工学院《内科护理学2》2023-2024学年第一学期期末试卷
- 2024年墓地环境优化协议3篇
- 汽车俱乐部喷泉建设合同
- 学生校外住宿国际奖学金
- 【MOOC】法理学-西南政法大学 中国大学慕课MOOC答案
- 辽宁省普通高中2024-2025学年高一上学期12月联合考试语文试题(含答案)
- 储能运维安全注意事项
- 2024蜀绣行业市场趋势分析报告
- 电力法律法规培训
- 2024年世界职业院校技能大赛“智能网联汽车技术组”参考试题库(含答案)
- 【课件】校园安全系列之警惕“死亡游戏”主题班会课件
- 化工企业冬季安全生产检查表格
- 2024年工程劳务分包联合协议
- 蜜雪冰城员工合同模板
- 广东省深圳市龙岗区2024-2025学年三年级上学期11月期中数学试题(含答案)
评论
0/150
提交评论