版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及接口技术教材习题全部解答第 1 章 绪论1-1 解答:第一台计算机的研制目的是为了计算复杂的数学难题。它的特点是:计算机字长为12 位,运算速度为 5 000 次/s ,使用 18 800 个电子管, 1 500 个继电器,占地面积为150 m2,重达 30 t ,其造价为100 多万美元。它的诞生,标志着人类文明进入了一个新的历史阶段。1-2 解答:单片微型计算机简称单片机。一个完整的单片机芯片至少有中央处理器( cpu ) 、随机存储器 (ram ) 、只读存储器(rom ) 、定时 / 计数器及i/o 接口等部件。1-3 解答:单片机的发展大致经历了四个阶段:第一阶段( 19
2、701974 年) ,为 4 位单片机阶段;第二阶段( 19741978 年) ,为低中档8 位单片机阶段;第三阶段( 19781983 年) ,为高档8 位单片机阶段;第四阶段( 1983 年至今),为 8 位单片机巩固发展阶段及16 位单片机、 32 位单片机推出阶段。1-4 解答:intel公司的 mcs-48系列、 mcs-51系列、 mcs-96系列产品;motorola公司的 6801、6802、6803、6805、 68hc11系列产品;zilog公司的 z8、super8 系列产品;atmel 公司的 at89系列产品;fairchild公司的 f8 和 3870 系列产品;t
3、i 公司的 tms7000系列产品;ns公司的 ns8070系列产品;nec公司的 com87 ( pd7800 )系列产品;national公司的 mn6800系列产品;hitachi公司的 hd6301 、hd63l05 、hd6305 。1-5 解答:(1)8031/8051/8751三种型号, 称为 8051 子系列。 8031 片内没有rom ,使用时需在片外接eprom。8051 片内含有 4kb的掩模 rom , 其中的程序是生产厂家制作芯片时烧制的。8751 片内含有 4kb的 eprom,用户可以先用紫外线擦除器擦除,然后再利用开发机或编程器写入新的程序。(2)8032a/8
4、052a/8752a 是 8031/8051/8751的增强型,称为8052 子系列。其中片内rom和 ram的容量比8051 子系列各增加一倍,另外,增加了一个定时/ 计数器和一个中断源。(3)80c31/80c51/87c51bh 是 8051 子系列的chmos 工艺芯片, 80c32/80c52/87c52 是 8052 子系列的 chmos 工艺芯片,两者芯片内的配置和功能兼容。1-6 解答:8052 子系列片内rom 和 ram 的容量比8051 子系列各增加一倍,另外,增加了一个定时/ 计数器和一个中断源。1-7 解答:at89 系列单片机是美国atmel 公司的 8 位 fla
5、sh 单片机产品。它的最大特点是在片内含有flash存储器, 在系统的开发过程中可以十分容易地进行程序的修改,使开发调试更为方便。at89 系列单片机以 8031 为内核,是与8051 系列单片机兼容的系列。1-8 解答:高档型单片机有at89s51 、 at89s52 、 at89s53和 at89s8252等型号,其中 at89s51有 4kb可下载 flash存储器, at89s52 、at89s8252有 8kb可下载 flash 存储器, at89s53有 12kb可下载 flash 存储器。第 2 章 mcs-51系列单片机的结构及原理2-1 解答:mcs-51 单片机由8 个部件
6、组成:中央处理器(cpu ) ,片内数据存储器(ram ) ,片内程序存储器(rom/eprom) ,输入 / 输出接口( i/o 口,分为 p0 口、 p1 口、 p2口和 p3口) ,可编程串行口,定时/ 计数器,中断系统及特殊功能寄存器(sfr ) 。中央处理器( cpu ) :单片机的核心部分,它的作用是读入和分析每条指令,根据每条指令的功能要求,控制各个部件执行相应的操作。片内数据存储器(ram ) :存放各项操作的临时数据。片内程序存储器(rom/eprom) :存放单片机运行所需的程序。输入 / 输出接口( i/o 口) :单片机与外设相互沟通的桥梁。可编程串行口:可以实现与其它
7、单片机或pc机之间的数据传送。定时 / 计数器:具有可编程功能,可以完成对外部事件的计数,也可以完成定时功能。中断系统:可以实现分时操作、实时处理、故障处理等功能。特殊功能寄存器(sfr ) :反映单片机的运行状态,包含了单片机在运行中的各种状态字和控制字,以及各种初始值。2-2 解答:ea引脚是片内外程序存储器的选择信号。当ea端保持高电平时,访问内部程序存储器,但在pc(程序计数器)值超过0fffh (对于 8051/8751/80c51 )或 1fffh (对于 8052)时,将自动转向访问外部程序存储器。当ea端保持低电平时,不管是否有内部程序存储器,则只访问外部程序存储器。由于 80
8、31 片内没有程序存储器,所以在使用8031 时,ea引脚必须接低电平。2-3 解答:在 mcs-51单片机中,除p3口具有第二功能外,还有3 条控制线具有第二功能。p3 口的第二功能:rxd :串行数据接收端txd :串行数据发送端0int:外部中断0 申请输入端1int:外部中断1 申请输入端t0:定时器 0 计数输入端t1:定时器 1 计数输入端wr:外部 ram 写选通rd:外部 ram 读选通3 条控制线的第二功能:ale prog :片内 eprom 编程脉冲。片内具有eprom 的芯片,在eprom 编程期间,此引脚输入编程脉冲。reset vpd :备用电源。vcc掉电期间,此
9、引脚可接备用电源,以保持内部ram 数据不丢失。ea vpp :片内eprom 编程电源。在对片内具有eprom 的芯片进行编程时,此引脚用于施加21v编程电源。2-4 解答:mcs-51单片机的内部存储空间分为数据存储器和程序存储器。内部数据存储器:共256 字节单元,包括低128 个单元和高128 个单元。低128 字节又分成3 个区域:工作寄存器区(00h1fh ) ,位寻址区( 20h2fh )和用户ram 区( 30h7fh ) 。高 128 字节是供给特殊功能寄存器使用的,因此称之为特殊功能寄存器区。内部程序存储器: 在 8031 片内无程序存储器, 8051 片内具有 4kb掩模
10、 rom , 8751 片内具有 4kbeprom。2-5 解答:mcs-51单片机提供了4 组工作寄存器, 对于当前工作寄存器组的选择,是通过psw 中的 rs1和 rs0来进行选择。具体关系如下表:rs1rs0当前寄存器组00第 0 组工作寄存器01第 1 组工作寄存器10第 2 组工作寄存器11第 3 组工作寄存器2-6 解答:内部 ram 低 128 个单元按用途分成3 个区域:工作寄存器区(00h1fh ) ,位寻址区(20h2fh )和用户 ram 区( 30h7fh ) 。2-7 解答:dptr是数据指针寄存器,是一个 16 位寄存器, 用来存放16 位存储器的地址,以便对外部数
11、据存储器 ram 中的数据进行操作。dptr由高位字节dph和低位字节dpl组成。2-8 解答:所谓堆栈,顾名思义就是一种以“堆”的方式工作的“栈”。堆栈是在内存中专门开辟出来的按照“先进后出,后进先出”的原则进行存取的ram 区域。堆栈的用途是保护现场和断点地址。在8051 单片机复位后,堆栈指针sp总是初始化到内部ram 地址 07h。从 08h 开始就是 8051 的堆栈区,这个位置与工作寄存器组1 的位置相同。因此,在实际应用中,通常要根据需要在程序初始化时对sp重新赋值,以改变堆栈的位置。2-9 解答:程序状态字寄存器psw 是 8 位寄存器,用于存放程序运行的状态信息。cy ()
12、:进位标志位。ac () :辅助进位标志位。f0() 、f1() :用户标志位。rs1 () 、rs0 () :工作寄存器组选择位。ov () :溢出标志位。p() :奇偶标志位。2-10 解答:p0 口由一个所存器、两个三态输入缓冲器、场效应管、控制与门、反相器和转换开关组成;作为输出口时,必须外接上拉电阻才能有高电平输出,作为输入口时,必须先向锁存器写“1” ;作为普通i/o口使用或低8 位地址 / 数据总线使用。p1 口内没有转换开关,但有上拉电阻;只用作普通i/o 口使用。p2 口比 p1口多了一个转换控制开关;作为普通i/o 口使用或高8 位地址线使用。p3 口比 p1口增加了与非门
13、和缓冲器;具有准双向i/o 功能和第二功能。上述 4 个端口在作为输入口使用时,应注意必须先向端口写“1” 。2-11 解答:指令周期:执行一条指令所需要的时间。机器周期: cpu完成一个基本操作所需要的时间。状态:振荡脉冲经过二分频后,得到的单片机的时钟信号。拍:振荡脉冲的周期。当晶振频率为12mhz时,一个机器周期为1s;当晶振频率为8mhz时,一个机器周期为3s。2-12 解答:在时钟电路工作后,只要在单片机的reset 引脚上出现24 个时钟震荡脉冲(两个机器周期)以上的高电平,单片机就能实现复位。复位后, cpu和系统都处于一个确定的初始状态,在这种状态下,所有的专用寄存器都被赋予默
14、认值,除 sp=07h ,p0p3口为 ffh外,其余寄存器均为0。2-13 解答:8051 单片机应用系统的电压检测电路监测到电源下降时,触发外部中断, 在中断服务子程序中将外部 ram 中的有用数据送入内部ram 保存。 (内部 ram 由备用电源供电)80c51单片机应用系统的电压检测电路监测到电源降低时,也出发外部中断,在中断服务子程序中,除了要将外部ram 中有用的数据保存以外,还要将特殊功能寄存器的有用内容保护起来,然后对电源控制寄存器pcon 进行设置。2-14 解答:单片机退出空闲状态有两种方法:中断退出和硬件复位退出。第 3 章 mcs-51系列单片机的指令系统3-1 解答:
15、指令是规定计算机进行某种操作的命令,一台计算机所能执行的指令集合称为该计算机的指令系统。计算机内部只识别二进制数,因此,能别计算机直接识别、执行的指令时使用二进制编码表示的指令,这种指令别称为机器语言指令。以助记符表示的指令就是计算机的汇编语言指令。3-2 解答: 标号: 操作数 ;注释 3-3 解答:mcs-51系列单片机提供了7 种寻址方式:(1)立即寻址:操作数在指令中直接给出,立即数前面有“#” 。(2)直接寻址:在指令中直接给出操作数地址。对应片内低128 个字节单元和特殊功能寄存器。(3)寄存器寻址:以寄存器的内容作为操作数。对应的寄存器有:r0r7 、a、ab寄存器和数据指针 d
16、ptr 。(4)寄存器间接寻址:以寄存器的内容作为ram 地址, 该地址中的内容才是操作数。对应片内ram的低 128 个单元采用r0、r1作为间址寄存器,片外ram 低 256 个单元可用r0、r1作为间址寄存器,整个 64kb空间可用dptr作为间址寄存器。(5)变址寻址:以dptr或 pc作为基址寄存器,以累加器a作为变址寄存器,并以两者内容相加形成的 16 位地址作为操作数地址。对应片内、片外的rom 空间。(6)相对寻址:只在相对转移指令中使用。对应片内、片外的rom 空间。(7)位寻址: 对可寻址的位单独进行操作。对应位寻址区20h2fh单元的 128 位和字节地址能被8整除的特殊
17、功能寄存器的相应位。3-4 解答:直接寻址方式。3-5 解答:寄存器间接寻址方式。3-6 解答:立即寻址方式,直接寻址方式,寄存器寻址方式,寄存器间接寻址方式,位寻址方式。3-7 解答:变址寻址方式3-8 解答:对于 8052 单片机内部ram 的高 128b,必须采用寄存器间接寻址方式进行访问。3-9 解答:外部数据传送指令有6 条:movx a,dptr movx dptr,amovx a,ri movx ri ,amovc a,a+dptr movc a,a+pc(1)movx a,r1 movx a,dptr都是访问片外ram ,但二者寻址范围不同。前 1 条指令是对片外ram 低 2
18、56 个单元的“读”操作。后 1 条指令是对片外ram64kb 空间的“读”操作。(2)movx a,dptr movx dptr,a访问空间相同,但数据传送方向不同。前 1 条指令是对片外ram64kb 空间的“读”操作。后 1 条指令是对片外ram64kb 空间的“写”操作。(3)mov r0 ,a movx r0 ,a二者访问的空间不同。前 1 条指令是对片内ram 低 128 个单元的“写”操作。后 1 条指令是对片外ram 低 256 个单元的“写”操作。(4)movc a,a+dptr movx a,dptr二者访问的空间不同,寻址方式不同。前 1 条指令是变址寻址方式,对rom
19、操作。后 1 条指令是寄存器间接寻址方式,对片外ram 操作。3-10 解答:r0 30h, (r0)=30ha( (r0) ) , (a)=40hr1 ( a) , (r1)=40hb( (r1) ) , (b)=10h(r1)( p1) , ( (r1 ) )=( 40h )=efhp2( p1) , (p2)=efh10h20h, (10h)=20h30h( 10h) , (30h)=20h结果: (r0 )=30h, (a)=40h , (r1 )=40h , (b)=10h, ( 40h )=efh , (p2)=efh , (10h)=20h , (30h)=20h3-11 解答:
20、(1)由于在工作寄存器与工作寄存器之间不能直接传送数据,所以需要借助累加器a。mov a ,r1mov r0 ,a(2)片外 ram 向片内 ram 传送数据, 不能直接进行, 需要借助累加器a 。由于片外ram 是 60h单元,地址小于ffh ,所以间址寄存器使用ri 即可。mov r1,#60hmovx a,r1mov r0,a(3)mov r1,#60hmovx a,r1mov 40h,a(4)片外数据不能直接送入片外单元,需要先将片外数据读入累加器,然后再送到片外。mov dptr ,#1000hmovx a,dptrmov r1,#40hmovx r1 ,a(5)rom 中的数据需要
21、使用查表指令才能读出来,所以此题不能使用一般的传送指令从rom 中读数据。mov dptr ,#2000hmov a,#00hmovc a,a+dptrmov r2,a(6)mov dptr ,#2000hmov a,#00hmovc a,a+dptrmov 40h,a(7)mov dptr ,#2000hmov a,#00hmovc a,a+dptrmov dptr ,#0200hmovx dptr,a3-12 解答:片外 ram 与片内 ram 之间的数据传送不能直接进行,需要借助累加器a。数据交换需要使用数据交换指令 xch 。mov dptr ,#1000hmovx a,dptrxch
22、 a,60hmovx dptr,a3-13 解答:本题需要采用查表指令。org 0200hmov dptr ,#tabmov a,r7movc a,a+dptrorg 0300htab :db 0,1,4, 9,16, 25,36,49,64,813-14 解答:(1)结果:(a)( r1) , (a)=40h, (r1)=5bh , (psw ) =81h(2)结果:(a)( 40h) , (a)=c3h , (40h)=5bh , (psw )=80h(3)结果:(a)(r1 ) ) , (a) =c3h , ( (r1 ) )=(40h) =5bh , (psw )=80h(4)结果:(
23、a)03( (r1) )03, (a)=53h, ( (r1) )=(40h)=cbh , (psw )=80h(5)结果:(a)03( a)47, ( a)=b5h , (psw )=81h(6)结果: a( a)+(r1 ) , (a)=9bh , (psw )=05h(7)结果: a( a)+(40h) , (a) =1eh , ( psw )=80h(8)结果: a( a)+40h, (a)=9bh , (psw )=05h(9)结果: a( a)+(40h)+cy , (a)=1fh , (psw )=81h(10)结果: a( a)- (40h)-cy, (a)=97h, (psw
24、 )=85h(11)结果: a( a)- 40h - cy, (a)=1ah , (psw )=01h3-15 解答:(1)该组指令执行后(a)=00h ,不影响cy位。(2)该组指令执行后(a)=00h ,影响 cy位。说明: 单独执行 inc 指令, 只影响奇偶标志位p,不影响半进位标志位ac和进位位cy位。执行 add指令后,将影响cy 、 ac和 p位。3-16 解答:本题涉及的是16 位数的减法运算,首先应让低8 位相减,然后让高8 位带着借位相减。注意:应在低 8位相减前将进位位cy清空 0。clr cmov a,#56hsubb a,#78hmov r0,amov a,#23hs
25、ubb a,#45hmov r1,a3-17 解答:a( a) 23h, (a)=03h42h( 42h)( a) , (42h)=37ha( a)( (r0) ) , (a) =34ha(a) , ( a)=cbh结果: (a)=cbh3-18 解答:(1)mov dptr ,#1000hmovx a,dptrcpl amovx dptr,a(2)mov r0,#60hmovx a,r0anl a,#3fhxrl a,#03hmovx r0 ,a3-19 解答:da a 指令的作用是对a中刚进行的两个bcd码的加法结果进行修正,即继续使bcd码加法运算的结果保持为bcd码。使用时,da a
26、指令只能使用在加法指令后,即add指令和 addc 指令。3-20 解答:mov dptr ,#1000hmovx a,dptrmov b,#10mul abmov 30h,amov 31h,bmov dptr ,#2000hmovx a,dptrmov b,#32mul abadd a,30hmov 30h,amov a,baddc a,31hmov 31h,a3-21 解答:mov r7,#10mov dptr ,#block1mov r0,#block2loop :movx a,dptrmov r0 ,ainc dptrinc r0djnz r7,loop3-22 解答:mov a,#0
27、1hloop :mov p0,arl alcall delaysjmp loopdelay :mov r7,#00hdelay1 :mov r6,#00hdjnz r6,$djnz r7,delay1ret3-23 解答:orl c,11hmov 11h,cmov c,orl c,10hanl c,11hmov ,c3-24 解答:(1)正确。(2)错误。原因:清零指令只能用于累加器acc和位操作,而本题中e0h只能是字节地址(位地址的范围是00h7fh ) ,所以该条指令错误。(3)错误。原因:acc是直接字节地址,不能用于清零指令。(4)正确。是一个位,可以应用到清零指令中。(5)正确。(
28、6)错误。原因:取反指令只能用于累加器acc和位操作,而本题中e0h只能是字节地址(位地址的范围是00h7fh ) ,所以该条指令错误。(7)错误。原因:acc是直接字节地址,不能用于取反指令。(8)正确。是一个位,可以应用到取反指令中。3-25 解答:anl a,borl a,cmov f,c3-26 解答:指令 ljmp addr16 是长转移指令,指令中提供了16 位目的地址,寻址范围是64kb。指令 ajmp addr11 是绝对转移指令,指令中11 位目的地址,其中a7a0 在第二字节, a10a8 则占据第一字节的高3 位,寻址范围是与pc当前值(本指令所在地址+本条指令所占用的字
29、节数2)在同一个 2k的区域内。3-27 解答:(1)mov p1,#0cah ;p1cah , p1=cah=bmov a,#56h ;a56h , a=56h=01010110bjb ,l1 ;若 =1,则转移至l1jnb ,l2 ;若 =0,则转移至l2l1:l2:执行完本段程序后将转移至l2,因为 =0,=0,所以转至l2。(2)mov a,#43h ;a43h , a=43h=01000011bjb ,l1 ;若 =1,则转移至l1jbc ,l2 ;若 =1,则转移至l2,同时将清零l1:l2:执行完本段程序后将转移至l2,因为 =0,=1,所以转至l2,并且将清零。3-28 解答:
30、(1)mov a,p1cpl aanl a,#0f0hswap amov p1,a(2) :loop :jnb ,l1 ;jnb ,l2 ;jnb ,l3 ;jnb ,l4 ;ljmp loop ;l1:mov p1,#01h ;ljmp loop ;l2:mov p1,#02h ;ljmp loop ;l3:mov p1,#03h ;ljmp loop ;l4:mov p1,#04h ;ljmp loop ;第 4 章 汇编语言程序设计4-1 解答:org 0100hmov a,21hadd a,23hmov 25h,amov a,20haddc a,22hmov 24h,aret4-2 解
31、答:org 0200hmov a,51hmov b,#20mul abmov 53h,amov 52h,bmov a,50hmov b,#3mul abadd a,53hmov 53h,amov a,baddc a,52hmov 52h,aret4-3 解答:org 0300hmov a,datacjne a,#20,lop1lop1 :jc lop3cjne a,#50,lop2lop2 :jc lop4mov b,#1ljmp lop5lop3 :mov b,#2ljmp lop5lop4 :mov b,#5lop5 :mul abmov func ,aret4-4 解答:org 0400
32、hmov a,mun+1jnb ,loopclr cmov a,numsubb a,#01hcpl amov num ,amov a,#num+1subb a,#00hxa暂存a20a502b5b1ba b aafunc 保存结果开始返回ynyn题图 4-1 习题 4-3 流程图cpl amov num+1 ,aloop :ret4-5 解答:org 0500hmov dptr ,#jptabmov a,r2rl ajmp a+dptrjptab :ajmp key0ajmp key1ajmp key2ajmp key15key0 :key1 :key2 :key15 :4-6 解答:org
33、0600hmov r0,#40hmov dptr ,#2000hmov r7,#21hloop :mov a,r0movx dptr,ainc r0inc dptrdjnz r7,loopret4-7 解答:org 0700hmov dptr ,#datamov r7,#10loop :movx a,dptrorl a,#80hmovx dptr,ainc dptrdjnz r7,loopret4-8 解答:org 0800hmov dptr ,#3000hmov r0,#30hmov r7,#7loop :movx a,dptrmov r0 ,ainc dptrinc dptrinc r0d
34、jnz r7,loopret4-9 解答:org 0900hmov dptr ,#1000hmov r1,#30hmov r7,#31hloop :movx a,dptrmov r1 ,aclr amovx dptr,ainc dptrinc r1djnz r7,loopret4-10 解答:org 0a00hmov r1,#dat1mov dptr ,#dat2mov r6,#10hloop1 :mov a,r1cjne a,#0dh , loop2ljmp loop3loop2 :movx dptr,ainc r1inc dptrdjnz r6,loop1loop3 :ret4-11 解答
35、:org 0b00hmov dptr ,#3000hmov r7,#100mov one,#00hmov two,#00hmov three ,#00hlop1 :movx a,dptrjz lop2jnb ,lop3inc threeljmp lop4lop2 :inc twoljmp lop4lop3 :inc onelop4 :inc dptrdjnz r7,lop1ret4-12 解答:org 0c00hmov r0,#50hmov a,#00hmov r7,#10lop :add a,r0inc r0djnz r7,lopmov b,#10div abmov 5ah ,aret4-1
36、3 解答:org 0d00hmov r0,#40hmov a,r0mov r7,#47loop :inc r0mov 30h,r0cjne a,30h,chkchk :jc loop1mov a,r0loop1 :djnz r7,loopmov min,aret4-14 解答:org 0e00hstart :mov r0,#40hmov r7,#19clr 00hloop :mov a,r0mov 30h,ainc r0mov 31h,r0clr csubb a,r0jnc nextmov r0 ,30hdec r0mov r0 ,31hinc r0setb 00hnext :djnz r7,
37、loopjb 00h,startmov r0,#40hmov dptr ,#2000hmov r7,#20lop1 :mov a,r0movx dptr,ainc r0inc dptrdjnz r7,lop1ret4-15 解答:org 0f00hmov dptr ,#2000hmov r7,#100loop1 :movx a,dptrcjne a,#44h, loop2mov 30h,dplmov 31h,dphmov dptr ,#20a0hmov a,30hmovx dptr,ainc dptrmov a,31hmovx dptr,aljmp loop3loop2 :inc dptrdj
38、nz r7,loop1loop3 :ret4-16 解答:org 1000hmov r0,#30hmov r1,#50hmov r7,#20lop1 :mov a,r0cjne a,#0ah , lop2lop2 :jnc lop3add a,#30hljmp lop4lop3 :add a,#37hlop4 :mov r1 ,ainc r0inc r1djnz r7,lop1ret4-17 解答:org 1100hmov r0,#40hmov r1,#60hmov r7,#nlop1 :mov a,r0cjne a,#41h, lop2lop2 :jnc lop3clr csubb a,#3
39、0hljmp lop4lop3 :clr csubb a,#37hlop4 :mov r1 ,ainc r0inc r1djnz r7,lop1ret4-18 解答:org 1200hmov dptr ,#2000hmov r0,#30hmov r7,#5lop1 :movx a,dptranl a,#0fhadd a,#30hmov r0 ,ainc r0movx a,dptranl a,#0f0hswap aadd a,#30hmov r0 ,ainc r0inc dptrdjnz r7,lop1mov dptr ,#2005hmov r0,#30hmov r7,#10lop2 :mov
40、a,r0movx dptr,ainc r0inc dptrdjnz r7,lop2ret4-19 解答:org 1300hmov dptr ,#2000hmov r0,#30hmov r7,#10lop1 :movx a,dptrclr csubb a,#30hmov r0 ,ainc dptrmovx a,dptrclr csubb a,#30hswap aorl a,r0mov r0 ,ainc dptrinc r0djnz r7,lop1mov dptr ,#3000hmov r0,#30hmov r7,#10lop2 :mov a,r0movx dptr,ainc r0inc dptr
41、djnz r7,lop2ret4-20 解答:org 1400hmov a,40hmov b,amul abmov 31h,amov a,30hmov b,amul abclr csubb a,31hmov 30h,aret4-21 解答:org 1500hmov a,#80hloop :mov p1,alcall delrr asjmp loopdel :mov r7,#100del1 :mov r6,#198djnz r6,$djnz r7,del1ret4-22 解答:org 1600hmov a,#55hloop :mov p1,alcall delrl asjmp loopdel :
42、mov r7,#250del1 :mov r6,#198djnz r6,$djnz r7,del1ret第 5 章 定时/ 计数器5-1 解答:51 系列单片机的内部设有两个定时/ 计数器。分别有两种工作方式:定时器方式和计数器方式。由tmod (定时器模式控制寄存器)中的控制位t/c进行选择。定时器方式的脉冲来自于内部时钟脉冲,每个机器周期是计数器的值增1;计数器方式的脉冲来自于外部输入引脚t0()或 t1() 。5-2 解答:51 系列单片机的定时/ 计数器有四种工作模式。分别由tmod 中的 m1和 m0进行选择。特点如下:m1 m0特点 0 0模式 0。 tlx中低 5 位与 thx中
43、的 8 位构成 13 位计数器。计满溢出时,13 位计数器回零。 0 1模式 1。 tlx与 thx构成 16 位计数器。计满溢出时,16 位计数器回零。 1 0模式 2。 8 位自动重装载的定时/ 计数器,每当计数器tlx溢出时, thx中的内容重新装载到tlx中。 1 1模式 3。对定时器0,分成2 个 8 位计数器,对于定时器1,停止计数。5-3 解答:51 系列单片机的t0和 t1 在模式 0 中,使用了 tlx中低 5 位与 thx中的 8 位构成 13 位计数器, tlx中的高 3 位弃之未用。5-4 解答:对于 t1,设置为模式3,将使它停止计数并保持原有的计数值,其作用如同使t
44、r1=0 ,因此,没有什么实质意义。对于 t0,设置为模式3 时, 16 位计数器被分成两个互相独立的8 位计数器tl0 和 th0 ,其中tl0利用了定时 / 计数器 0 本身的一些控制位:t/c、gate 、tr0、0int和 tf0。它既可以按照计数方式工作,也可以按照定时方式工作。而th0被规定只可用作定时器方式,借用了t1 的控制位 tr1和 tf1。5-5 解答:(tmod )=27h=00100111b此时, t1 工作于模式2,定时方式(即波特率发生器方式)。t1 工作于模式3,tl0 和 th0同为计数方式。5-6 解答:单片机系统复位后(tmod )=00h,即 t0 工作
45、在模式0,使用的是tl0 的低 5 位和 th0构成 13 位定时 /计数器,由于(th0)=06h , (tl0)=00h,所以定时的初值为:x=00000b=192假设系统晶振频率为6mhz ,机器周期t=2s,则定时时间为:定时值 =(m-x)t=(213-192) 2s=16000 s=16ms5-7 解答:org 0000hljmp startorg 0200hstart :mov tmod ,#20hmov tl1,#231setb tr1loop :setb mov th1 ,#81lop1 :jbc tf1,lop2sjmp lop1lop2 :clr mov th1 ,#23
46、1lop3 :jbc tf1,loopsjmp lop3end5-8 解答:org 0000hljmp startorg 0300hstart :mov tmod ,#51hloop :clr tr0mov tl1,#18hmov th1 ,#0e0hsetb tr1lop1 :jbc tf1,lop2sjmp lop1lop2 :clr tr1mov tl0,#18hmov th0 ,#0e0hsetb tr0lop3 :jbc tf0,loopsjmp lop3end5-9 解答:tf0 为定时 / 计数器 t0的溢出标志位。tf1 为定时 / 计数器 t1的溢出标志位。tf2 为定时 /
47、 计数器 t2的溢出中断标志位。exf2为定时 / 计数器 t2 的外部触发中断标志位。当定时 / 计数器 t0或 t1 溢出时 tf0 或 tf1 由硬件置1,使用查询方式时,此位做状态位供查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标志位,进入中断服务后被硬件自动清零。当定时 / 计数器 t2 计数溢出或外部触发时,tf2或 exf2置 1,并申请中断,但该两位只能靠软件清除。5-10 解答:rclk为接收时钟选择位,靠软件置位或清除,用以选择定时/ 计数器 2 或 1 做串行口接收波特率发生器。tclk为发送时钟选择位,靠软件置位或清除,用以选择定时/ 计数器 2 或 1
48、 做串行口发送波特率发生器。如果两者都被清零,则t2工作在定时 / 计数器方式。此时当2t/c=0 时, th2和 tl2 计的是机器周期数,做定时器使用;当2t/c=1 时,计数脉冲来自t2()引脚, th2和 tl2 做外部信号脉冲计数用。5-11 解答:52 系列单片机的t0、t1 和 t2对外来脉冲进行计数时,t0的外来脉冲引入引脚为;t1 的外来脉冲引入引脚为;t2的外来脉冲引入引脚为。5-12 解答:2rl/cp为捕获或重装载标志,由软件设置或清除。当2rl/cp=1 时选择捕获功能,这时若exen2=1 ,且 t2ex端的信号负跳变时,发生捕获操作, 即把 th2和 tl2 的内
49、容传递给rcap2h 和 rcap2l ;当2rl/cp=0 时,选择重装载功能, 这时若定时器2 溢出,或在 exen2=1 条件下 t2ex端信号有负跳变,都会造成自动重装载操作,即把rcap2h 和 rcap2l 的内容传送给th2和 tl2。5-13 解答:初值 =65 536 fose/ (波特率 216) =65 536( 2 106)/ (19 200 216) =65 53618 =65518 =ffeeh即 t2 的重复装载常数为:th2=0ffh ,tl2=0eeh第 6 章串行接口61 解答:计算机与外界信息交换的基本方式可分为并行通信与串行通信:并行通信是数据的各位同时
50、传送,并行通信的特点是传送速度快,但不适用长距离传输;串行通信是数据的各位依次逐位传送,串行通信的特点是传送速度较慢,但传输距离较长。并行通信适合近距离的cpu之间或设备之间快速进行数据交换;串行通信适合长距离的cpu之间或设备之间进行数据交换,或近距离的慢速数据交换。62 解答:异步通信依靠起始位、停止位、保持通信同步。特点是数据在线路上的传送不连续,传送时,字符间隔不固定,各个字符可以是连续传送,也可以间断传送,这完全取决于通信协议或约定。 串行异步通信的数据帧格式如图6-1 :一位起始位“ 0”电平;其后是5位、 6位、 7 位或 8 位数据位,低位在前,高位在后;后面是一位奇偶校验位;
51、最后是停止位“1”电平。图 6-1 异步通信的数据帧格式63 解答:串行通信有3 种数据传送形式单工方式:数据传送是单向的。半双工方式:数据传送是双向的,在同一时间只能做一个方向的传送。全双工方式:数据传送是双向的,即可同时发送,又可同时接收。 a b a 单工方式 a b b 半双工方式 a b c 全双工方式图 6-2 串行通信数据传送3 种形式64 解答:波特率表示每秒传输的二进制数据位数。fb 112502750 其波特率应为2750bps。65 解答:mcs-51单片机串行口有4 种工作模式,由串行控制寄存器scon 中的 sm0 、sm1 两位组合来确定。模式 0 是同步位移寄存器
52、方式,用于i/o 口的串、并转换。模式 1 是 8 位异步通信方式,桢格式10 位,波特率可变,用于双机通信。模式 2 是 9 位异步通信方式,桢格式11 位,波特率固定,用于多机通信。模式 3 是 9 位异步通信方式,桢格式11 位,波特率可变,用于多机远距离通信。模式 1、 2、3 的区别主要表现在桢格式和波特率两个方面。66 解答:模式 0 的波特率固定:fosc/12模式 2 的波特率固定:fosc/n (n=64 或 32)模式 1、 3 的波特率可变:t1 溢出率 /n (n=32 或 16)67 解答:定时器 t1 模式 2 是自动装载初值模式,波特率精度高。若已知系统晶振频率、
53、通信选用的波特率,其初值波特率*384)1mod(256sfxosc起始位d0d1d2d3d4d5d6d7奇偶校验位停止位68 解答:mcs-51单片机串行口的模式0 是同步位移寄存器方式,用于i/o 口的串、并转换。扩展并行i/o口时,需要对串行控制寄存器scon 进行初始化设置;串行口需外接移位寄存器,串行口的txd端作为同步时钟端,rxd作为串行数据的i/o 端。69 解答:多机通信时, 主机发送的信息可传送到各个从机,而各从机发送的信息只能被主机接收,利用 scon中的 tb8/rb8和 sm2可实现多机通信。多机通信过程:所有从机在初始化时置sm2=1 ,都处于只能接收主机发送的地址
54、桢(rb8=1 ) 。主机发送地址桢(tb8=1) ,指出接收从机的地址。所有从机接收到主机发送的地址桢后,与自身地址相比较,相同则置sm2=0 ;相异则保持sm2=1不变。主机发送数据桢(tb8=0) ,由于指定的从机已将sm2=0 ,能接收主机发送的数据桢,而其它从机仍置 sm2=1 ,对主机发送的数据桢不予理睬。被寻址的从机与主机通信完毕,重置sm2=1 ,恢复初始状态。610 解答:串行口工作在模式2,确定 smod1。未规定波特率,定时器初值任取,但两机要保持一致。甲机发送子程序:txda :mov tmod , #20h ;置 t1 定时器工作方式2 mov tl1, #0fdh
55、;置初值 mov th1, #0fdh ;置初值 setb tr1 ;启动 t1mov scon, #90h ;置串口方式2,允许接收,且sm2=0mov pcon, #80h ;置 smod=1(smod 不能位操作)clr es ;禁止串行中断mov dptr, #2200h ;指发送数据区首地址mov r2, #51h ;指发送数据长度trsa :movx a, dptr ;读一个数据 mov c,p mov tb8,c ;置校验位mov sbuf, a ;发送jnb ti, $ ;等待一桢数据发送完毕clr ti ;清发送中断标志inc dptr ;指向下一字节单元djnz r2, t
56、rsa ;判数据发完否未完继续ret ;乙机接收子程序:rxdb :mov tmod , #20h ;置 t1 定时器工作方式2 mov tl1, #0fdh ;置初值 mov th1, #0fdh ;置初值 setb tr1 ;启动 t1mov scon, #90h ;置串行方式2,允许接收,且sm2=0mov pcon, #80h ;置 smod=1(smod 不能位操作)clr es ;禁止串行中断mov dptr, #1400h ;置接收数据区首地址mov r2, #51h ;置接收数据长度setb ren ;启动接收setb f0 ;先置出错标志f0 为 1。rdsb :jnb ri
57、, $ ;等待一桢数据接收完毕clr ri ;清接收中断标志mov a, sbuf ;读接收数据movx dptr , a ;存接收数据mov c,rb8anl c,pjc rdsb2 ;都是 1,则正确mov c,rb8orl c,pjnc rdsb2 ;都是 0,则正确ljmp rxdbd ;出错rdsb2 :inc dptr ;指向下一数据存储单元djnz r2, rdsb ;判数据接收完否未完继续clr f0 ;正确接收,则清除出错标志f0rxdbd :ret ;第 7 章中断系统71 解答:mcs-51系统有0int、t0、1int、t1和串行口共五个中断源;0int和1int 的中
58、断标志是ie0 和 ie1 ,在电平方式下,当外部中断输入信号是低电平时,由硬件置 1;在边沿方式下,当外部中断输入信号是下降沿时,由硬件置1;定时计数器溢出中断t0 和 t1的中断标志位是tf0 和 tf1,当定时 / 计数器产生溢出时,该位由硬件置1;串行口中断标志是ti 或 ri,当单片机接收到或发送完一帧数据后,由硬件置1。外部中断0int和1int 的电平方式,无法清除,需采取硬件和软件相结合的方法来清除;边沿方式,在 cpu响应中断后自动清除;定时/ 计数器 0 和 1 的溢出中断,在cpu响应中断后自动清除;串行口中断(包括串行接收中断ri 和串行发送中断ti ) ,由软件清零。
59、0int、t0、1int、t1和串行口中断5 个中断源分别对应的中断入口地址是:0003h、000bh 、0013h、001bh 、0023h。72 解答:mcs-51的中断系统有两个中断优先级:高优先级和低优先级。中断优先级的控制方式是:高优先级中断可以中断正在响应的低优先级中断,反之则不能。优先级中断不能互相中断。即某个中断(不论是高优先级或低优先级)一旦得到响应,与其同级的中断就不能再中断它。同一中断优先级中优先权由高到低的次序是0int、t0、1int、t1 和串行口中断,若有多个中断源同时请求中断,cpu将先响应优先权高的中断,后响应优先权低的中断。通过中断优先级控制寄存器ip 可以
60、选择5 个中断源的优先级别73 解答:mcs-51有 ie0、tf0、ie1 、tf1、ti 和 ri 共 6 个中断标志位。相同之处是这些中断标志位都是由硬件自动产生的,不同之处是外部中断和计数/ 定时器中断标志的清零是由硬件自动完成的,而串行口中断标志(ti 、ri)不会自动清除,必须由用户在串行中断服务程序中用指令对ti 或 ri 清。74 解答 :mov ie, #b ;t0、1int 、串行口允许中断 mov ip, #00010100b ;1int 和串行口中断为高优先级 clr it1 ;1int 电平触发方式75 解答:(1)置定时 / 计数器为工作模式2,且为计数方式,即8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法律资格考试题目及答案
- 一建市政基坑案例题目及答案
- 法学类考试题目及答案
- 养老院老人紧急救援人员职业道德制度
- 养老院老人健康监测人员表彰制度
- 养老院环境清洁制度
- 线上知识问答题目及答案
- 办公室员工出差安全管理制度
- 铁路机务保休制度
- 部门内审制度
- 2026年齐齐哈尔高等师范专科学校单招职业技能测试题库必考题
- 输变电工程安全教育课件
- 物业项目综合服务方案
- 2025-2026学年北京市西城区初二(上期)期末考试物理试卷(含答案)
- 高血压病的中医药防治
- 2024年度初会职称《初级会计实务》真题库汇编(含答案)
- 产科品管圈成果汇报降低产后乳房胀痛发生率课件
- 绿植租赁合同
- 狼蒲松龄原文及翻译
- 2023初会职称《经济法基础》习题库及答案
- 比亚迪Forklift软件使用方法
评论
0/150
提交评论