单片机应用技术思考题及习题_第1页
单片机应用技术思考题及习题_第2页
单片机应用技术思考题及习题_第3页
单片机应用技术思考题及习题_第4页
单片机应用技术思考题及习题_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章思考题与习题1. 什么叫嵌入式系统?与单片机的关系如何?以应用为中心,以计算机技术为基础,软硬件可裁剪,针对具体应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统被称为嵌入式系统。单片机又称嵌入式微控制器,是嵌入式系统应用的主流。2. 单片机主要应用在哪些方面? 单片机主要应用在工业、智能仪表、军事导航、电信、日常生活、办公自动化、汽车电子、消费电子等方面。3. 单片机系统的开发过程分几步进行?单片机的应用开发可分为五个过程,总体方案设计、硬件单元电路设计与制作、应用程序的设计与调试、系统联调、固化(烧写)与脱机运行。4. 下表每一行给出了一种数制的无符号数,试将它转换为

2、其他两种数制,并填入表中。二进制十进制十六进制010110011b1790b3h110010010b402192h11110101b2450f5h01101100b1086ch11111111b2550ffh01110110b11876h5. 试写出下列真值所对应的机器数。(1)+1010011 (2)-1011010(3)+0101110(4)-0111111以8位二进制补码表示为:(1)11010011(2)10100110(3)10101110(4)110000016. 试写出下列机器数所对应的真值。(1)11000000(2)01111111(3)01011011(4)11111111

3、(1)-64(2)+127(3)+91(4)-17. 下表每一行给出原码、反码或补码中的一个值,试求出其它两个码,并填入下表中。原码反码补码01111111b01111111b01111111b10000000b11111111b00000000b10001111b11110000b11110001b01010101b01010101b01010101b10000010b11111101b0feh00000011b00000011b03h8. 将下列有符号数的二进制补码转换为十进制数,并注明它的正负。(1)11111111b(2)01111111b(3)10000011b(4)11111100

4、b(5)00000011b(6)01111100b(1)-1(2)+127(3)-125(4)-4(5)+3(6)+1249. 一个字节的十六进制数最大值相当于多大的十进制数,两个字节的十六进制数最大值相当于多大的十进制数?一个字节十六进制数最大值为0ffh,相当于十进制数255,两个字节的十六进制数最大值为0ffffh,相当于十进制数65535。第二章思考题与习题1. 微型计算机由哪几个功能部件组成?各功能部件的作用如何?微型计算机由cpu、三总线、存储器、i/o接口电路及外围设备组成。cpu作为系统的运算中心和控制中心;三总线用于完成微处理器、内存储器和i/o接口电路之间信息的相互交换;存

5、储器用于程序与数据的存储;i/o接口电路作为cpu与外部设备的联接桥梁,用于信号的标准化;外围设备可实现显示、输入、打印、通信等功能。2. 三总线是指什么?它们的主要功能是什么?三总线是指数据总线(data bus)、地址总线(address bus)和控制总线(control bus)。数据总线(db)的功能是完成微处理器与内存、i/o接口电路之间的数据传送;地址总线(ab)是微处理器向内存和i/o接口电路传送地址信息的通路;控制总线(cb)是微处理器向内存和i/o接口电路发出的命令信息或由外界向微处理器传送状态的信息通路。3. 微型计算机存储器的地址线与存储容量有什么关系?如果存储器的地址

6、线有13根,则存储容量为多大?地址线的多少与存储容量的关系满足:存储容量=2n(n为地址线的数量),如果存储器的地址线有13根,则存储容量为8kb。4. 89s51单片机的存储器从物理结构上分别可划分为几个空间?89s51单片机的存储器在物理结构上有4个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。5. 89s51单片机采用何种方式区分内外程序存储器及内外数据存储器?单片机的程序存储器是在片内存储器还是片外存储器,取决于单片机外围引脚的状态。片内和片外数据存储器采用不同的指令加以区别,在访问片内数据存储器时,可使用mov指令;要访问片外数据存储器可使用movx指令。

7、6. 89s51单片机内部数据存储器分为几个空间?每个空间有何特点?89s51单片机的内部数据存储器分为007fh及80hffh两块空间。片内数据存储区地址为007fh空间划分为工作寄存器区、位寻址区及用户ram区三个空间;80hffh地址空间中只有26个存储空间被特殊功能寄存器(sfr)占用。工作寄存器区共32个存储单元,分为4组,每组由8个地址单元组成通用寄存器r0r7,每组寄存器均可作为cpu当前的工作寄存器。位寻址区共16个字节,每个字节8位,共128位,这128位用位地址编号,范围为00h7fh,位寻址区既可采用位寻址方式访问,也可以采用字节寻址方式访问。用户ram区共80个单元,可

8、作为堆栈或数据缓冲使用。特殊功能寄存器sfr专门用来设置单片机内部的各种资源,记录电路的运行状态,参与各种运算及输入/输出操作。7. 程序状态字psw的作用是什么?常用状态位是哪些?作用是什么?程序状态字psw用来存放与当前指令执行结果相关的状态。常用的状态位有cy、ac、ov、p、rs1、rs0等。cy用于标志运算过程中是否有进位或借位;ac用于标志累加器中d3位向d4位是否存在进位或借位;ov用于标志有符号数运算过程中是否存在超出范围的情况;p用于指示累加器a中操作结果的“1”的个数的奇偶性,在串行通信中做数据校验;rs1、rs0用于选择工作寄存器组别。8. 89s51单片机内部有几个特殊

9、功能存储单元?分别有何用途?89s51单片机内部有26个特殊功能存储单元,各自用途请参见表2-3。9. 89s51单片机复位后,cpu使用的是哪一组工作寄存器?它们的字节地址分别是什么?cpu如何确定和改变当前工作寄存器组?89s51单片机复位后,cpu使用的是第0组工作寄存器,它们的字节地址为00h07h。cpu通过标志寄存器中的rs1、rs0两位状态确定和改变当前工作寄存器组。10. 89s51单片机的4个i/o端口p0p3在结构上有何异同?使用时应注意什么?89s51各端口中p0口既可作地址/数据总线口,又可作通用i/o口。在作地址/数据总线口时,它是真正的双向口,可以直接驱动mos输入

10、,不需要加上拉电阻。当它作通用i/o口时,应注意必须外接上拉电阻才能驱动mos输入。对p1、p2、p3口而言,内部已接有上拉电阻,因此不必外接任何电阻就可驱动mos输入。p0口和p1、p2、p3口作通用i/o口时一样,在输入时分为“读锁存器”和“读引脚”两种操作,这两种操作是用不同的指令区分的。11. 简述89s51中下列各引脚信号的作用:、ale:读信号 :写信号 :读片外部程序存储器选通信号 :片外程序存储器选择信号 ale:地址锁存允许信号12. 什么是时钟周期、机器周期、指令周期?它们之间有何关系?时钟电路产生的最小时序单位称为时钟周期;单片机执行一次基本操作所需要的时间单位为一个机器

11、周期;单片机执行一条指令所需要的时间称为指令周期。1个机器周期=12个时钟周期,1个指令周期,通常由14个机器周期组成。13. “复位”的含义是什么?89s51单片机常用的复位电路有哪些?复位后各内部存储器的值分别为多少?复位就是对单片机进行初始化操作,使单片机内部各寄存器处于一个确定的初始状态。89s51单片机常用的复位电路有上电复位和按钮复位两种。复位后sp为07h,p0p3为0ffh,sbuf不定,除sp、p0p3及sbuf外,其余各寄存器值均为0。第三章思考题与习题1. mcs-51单片机指令格式是怎样的?各有何含义?汇编语言表示的指令格式为:标号:操作码助记符操作数1,操作数2, 操

12、作数3 ;注释 标号:表示该指令所在的地址。操作码:表示该语句要执行的操作内容。操作数:表示操作码的操作对象。注释:为阅读程序方便而加的解释说明。2. mcs-51单片机有几种寻址方式?描述这些寻址方式的执行过程?mcs-5l系列单片机共有7种寻址方式,立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、相对寻址、变址寻址、位寻址。立即寻址:操作数直接由指令给出,寻址时直接到程序存储器中查找操作数。直接寻址:操作数在指令给出的地址单元中,寻址时直接到数据存储器中查找操作数。寄存器寻址:所需查找的操作数在寄存器中。寄存器间接寻址:所要查找的操作数位于以寄存器的内容为地址的单元中。寻址时从寄存器中查找

13、的值做为地址再次查找操作数。相对寻址:不是寻找操作数的地址,而是要得到程序跳转位置对应的目标地址。变址寻址:以16位寄存器(数据指针dptr或程序计数器指针pc)作为基址寄存器,以累加器a作为变址寄存器,并以两者内容相加形成新的16位地址作为操作数所在的地址,查找操作数。位寻址:将位地址中的内容做为操作数。3. 指出在下列各条指令中,30h分别代表什么含义?mova, #30h;为立即数mova, 30h;为直接地址mov30h, #30h;30h为直接地址,#30h为立即数mov30h, 28h;30h为直接地址movc, 30h;为位地址4. 设(a)=0fh,(r0)=30h,内部ram

14、的(30h)=12h,(31h)=0bh,(32h)=0ch, 请指出每条指令中源操作数的寻址方式,并写出执行下列程序段后上述各单元内容的变化结果。mov a, r0;寄存器间接寻址,(a)=12hmov r0, 32h;直接寻址,(30h)=0chmov 32h, a;寄存器寻址,(32h)=12hmov r0, #31h;立即寻址,(r0)=31hmov a, r0;寄存器间接寻址,(a)=0bh5. 用指令实现下列数据传送。(1)内部ram 20h单元内容送内部ram 30h单元。mov30h,20h(2)外部ram 20h单元内容送内部ram 30h单元。movr0,#20hmovxa

15、,r0mov30h,a(3)外部ram 1000h单元内容送寄存器r2中。movdptr,#1000hmovxa,dptrmovr2,a(4)内部ram 20h单元内容送外部ram 1000h单元。mova,20hmovdptr,#1000hmovxdptr,a(5)外部ram 20h单元内容送外部ram 1000h单元。movr0,#20hmovxa,r0movdptr,#1000hmovxdptr,a(6)rom 2000h单元内容送内部ram 30h单元。movdptr,#2000hclramovca,a+dptrmov30h,a(7)rom 2000h单元内容送外部ram 20h单元。

16、movdptr,#2000hclramovca,a+dptrmovr0,#20hmovxr0,a(8)rom 2000h单元内容送外部ram 1000h单元。movdptr,#2000hclramovca,a+dptrmovdptr,#1000hmovxdptr,a6. 设(a)= 5ah,(r0)=20h,(20h)=6bh,(b)=02h,(psw)=80h。写出下列指令执行后的结果及对标志位的影响。(每条指令都以题中规定的原始数据参加操作)。(1)add a,r0;(a)=7ah,(psw)=01h(2)addca,20h;(a)=0c6h,(psw)=44h(3)subb a,#20h

17、 ;(a)=39h,(psw)=00h(4)inc a;(a)=5bh,(psw)=81h(5)mul ab ;(a)=0b4h,(b)=00h,(psw)=00h(6)divab;(a)=2dh,(b)=00h,(psw)=00h(7)anl 20h,#45h ;(20h)=41h,(psw)=80h(8)orla,#32h;(a)=7ah,(psw)=81h(9)xrl 20h,a ;(20h)=31h,(psw)=80h(10)xcha,20h;(a)=6bh,(20h)=5ah,(psw)=80h(11)swapa ;(a)=0a5h,(psw)=80h(12)cpl a;(a)=0a

18、5h,(psw)=80h(13)rr a ;(a)=2dh,(psw)=80h(14)rlc a;(a)=0b5h,(psw)=01h7. 写出执行下列程序段的运行结果。 (1)mova,#20hmov dptr,#2030hmovx dptr,amov 30h,#50hmov r0,#30hmovx a,r0 外部ram(2030h)=20h,(dptr)=2030,(30h)=50h,(r0)=30h,(a)=0ffh(2)mov a,#79hmov 20h,#88hadd a,20hda aswapa内部ram(20h)=88h,(a)=76h,(psw)=0c1h8. 试写出达到下列要

19、求的程序。(1)将外部ram 1000h单元中的低4位清0,其余位不变,结果存回原处。dptr,#1000hmovxa,dptranla,#0f0hmovxdptr,a(2)将内部ram 50h单元中的高3位置1,其余位不变,结果存回原处。orl50h,#0e0h(3)将内部ram 20h单元中的高4位置1,低4位清0,结果存回原处。anl20h,#0f0horl20h,#0f0h(4)将dptr的中间8位取反,其余位不变,结果存回原处。xrldpl,#0f0hxrldph,#0fh9. 用三种方法实现累加器a中的无符号数乘2运算。(1)movr0,aadda,r0(2)movb,#02hmu

20、lab(3)clrcrla10. 编程实现两个16位二进制数8e52h、47a4h相减的运算,结果放在内部ram的20h与21h单元中,前者放低8位,后者放高8位。clrcmova,#52hsubba,#0a4hmov20h,amova,#8ehsubba,#47hmov21h,a11. sjmp 指令和ajmp指令都是两字节转移指令,它们有什么区别?各自的转移范围是多少?能否用ajmp代替sjmp?为什么?两条指令区别在于转移范围不同,sjmp转移范围256b,ajmp转换范围2k,通常可以用ajmp代替sjmp,ajmp的转移范围比sjmp转换范围大,但必须保证地址前5位不变。12. 已知

21、(sp)=35h,(34h)=12h,(35h)=34h,(36h)=56h。问此时执行“ret”指令后,(sp)=? (pc)=?(sp)=33h,(pc)=1234h13. 若(sp)=35h,(pc)=2345h,标号loop所在的地址为3456h。执行长调用指令“lcall loop”后,堆栈指针和堆栈的内容发生什么变化?pc的值为多少?若将上述指令改为“acall loop”是否可以?为什么?(sp)=37h,(36h)=48h,(37h)=23h,(pc)=3456h若将上述指令改为“acall loop”是不行的,因为“acall”指令只能在2k范围内调用。 14. 试编写程序完

22、成将内部ram 30h为首地址的20个数据传送至外部ram以1000h为首地址的区域中。movr0,#30hmovdptr,#1000hmovr7,#20loop:mova,r0movxdptr,aincr0incdptrdjnzr7,loopret15. 试编程实现:若累加器a的内容为正数,则将内部ram 20h单元内容清零,否则置ffh。mov20h,#00hjnbacc.7,loopmov20h,#0ffhloop:ret16. 试编程实现:查找内部ram的20h50h单元中出现00h的次数,并将查找结果存入r1单元。movr0,#20hmovr7,#31hmovr1,#00hloop:

23、mova,r0jnznzeroincr1nzero:incr0djnzr7,loopret第四章思考题与习题1. 汇编语言程序设计分哪几个步骤?汇编语言程序设计一般有以下几步:(1)分析问题,明确任务;(2)确定算法;(3)制订程序流程图;(4)编写源程序;(5)汇编与调试。2. 什么叫“伪指令”?伪指令与指令有什么区别?它们的用途是什么?伪指令是指在单片机的指令系统中为汇编程序提供相关信息的特定指令。与指令不同之处在于,伪指令在汇编时不产生目标代码,不影响程序执行。它们主要用于为汇编程序提供汇编的信息,例如为程序指定起始点和结束点等。3. 基本程序结构有哪几种?各有什么特点?基本程序结构主要

24、有顺序结构、分支结构和循环结构三种。顺序结构是从第一条指令开始依次执行每一条指令,直到执行完毕。分支结构是通过对条件是否满足的判断,产生一个或多个分支以决定程序的流向。循环结构是可对同一组操作重复执行多次的程序结构。4. 试对下列程序进行汇编,并用流程图说明程序的功能。org 0100hmov a,30hjnb acc.7,zhengcpl aadd a,#01horla,#80hzheng:mov 32h,asjmp $end该程序的功能:对30h中的数据进行求补运算,并将结果存入32h单元。5. 子程序调用时,参数的传递方法有哪几种?子程序调用时,参数传递方法有三种:(1)通过工作寄存器或

25、累加器传递参数;(2)通过指针寄存器传递参数;(3)通过堆栈传递参数。6. 设内部ram 50h和51h单元中存放有二个8位有符号数,试编程找出其中的大数,将其存入60h单元中。org0100hmova,50hxrla,51hjbacc.7,loopmova,50hclrcsubba,51hjcloop1mov60h,50hsjmperetloop1:mov60h,51hsjmperetloop:mova,50hjbacc.7,loop1mov60h,50heret:sjmp$end7. 编程将外部ram 2000h202fh单元中的内容,移入内部ram 20h4fh单元中,并将原数据块区域全

26、部清0。org0100hmovdptr,#2000hmovr0,#20hmovr7,#30hchuan:movxa,dptrmovr0,aclramovxdptr,aincr0incdptrdjnzr7,chuansjmp$end8. 编程计算内部ram 50h57h连续8个单元中所有数的算术平均值,将结果存放在5ah中。假设所有数据和不超过255。org0100hmovr0,#50hmovr1,#8clrasum:adda,r0incr0djnzr1,summovb,#8divabmov5ah,asjmp$end9. 设有100个有符号数,连续存放在以2000h为首地址的存储区中,试编程统计

27、其中正数、负数、零的个数,并将其分别存入40h、41h和42h单元中。org0100hmovdptr,#2000hmovr7,#100pd:movxa,dptrjzzerojnbacc.7,zhenginc41hloop:incdptrdjnzr7,pdsjmp$zero:inc42hsjmploopzheng:inc40hsjmploopend10. 编程设计发光二极管的闪烁程序。要求8只发光二极管每隔两只点亮一只,反复循环不止,变换时间为100ms,已知时钟频率为6mhz。若时钟频率为6mhz,则机器周期为2s,100ms延时子程序delay如下:delay:movr6,#100del:m

28、ovr7,#250djnzr7,$djnzr6,delret发光二极管闪烁程序如下(设发光二极管为共阳极,低电平驱动,接p1口):org0100hmova,#0fehloop:movp1,aacalldelayrlarlasjmploopdelay:(略)end11. 编程将外部ram data1单元开始的50个字节数据逐一移至data2单元为起始地址的存储区中。org0100hmovdptr,#data1movr0,#dtepmovr7,#50loop:movxa,dptrmovr0,aincdptrincr0djnzr7,loopmovdptr,#data2movr0,#dtepmovr7

29、,#50loop1:mova,r0movxdptr,aincdptr incr0djnzr7,loop1sjmp$end12. 分别用数据传送指令和位操作指令编写程序,将内部ram位寻址区128个位全部清零。(1)用数据传送指令movr0,#20hmovr7,#10hclraloop:movr0,aincr0djnzr7,loopsjmp$(2)用位操作指令clr00hclr01hclr7fh13. 把长度为10h的字符串从内部ram的输入缓冲区inbuf向位于外部ram的输出缓冲区outbuf进行传送,当遇到字符“cr”或整个字符串传送完毕后停止传送。org0100hmovr7,#10hmo

30、vr0,#inbufmovdptr,#outbufloop:mova,r0cjnza,#0d,jx;0dh为“cr”的ascii码sjmplendjx:movxdptr,aincr0incdptrdjnzr7,looplend:sjmp$end14. 编写一个采用查表法求120的平方数子程序。要求:x在累加器中,1x20,平方数高位存放在r6,低位在r7中。org0100hmovdptr,#tabmovr0,aadda,r0movr7,amovca,a+dptrmovr6,amova,r7incdptrmovca,a+dptrmovr7,asjmp$tab:dw0,1,4,9,16,25,36

31、,49,64,81,100,121,144,169,225dw256,289,324,361,400end15. 从内部ram 30h单元开始,连续存有200字节的补码数,编写程序将它们改变为各自的绝对值。org0100hmovr0,#30hmovr7,#200loop:mova,r0jnbacc.7,zhgsubba,#01hcplazhg:movr0,aincr0djnzr7,loopsjmp$end16. 若单片机的晶振频率为6mhz,试编写一段延时子程序,其延时时间为500ms。若时钟频率为6mhz,则机器周期为2s,500ms延时子程序delay如下:delay:movr6,#250

32、del:movr7,#250del1:nopnopdjnzr7,del1djnzr6,delret17. 在内部ram string单元开始有一个字符串(字符串以00h结尾)。试编写一段程序,统计字符“$”的个数,并将结果存入num单元。org0100hmovr0,#stringmovnum,#00hloop:mova,r0cjnea,#24h,neq;24h为“$”的ascii码incnumneq:incr0cjnea,#00h,loopsjmp$end第五章思考题与习题1. 名词解释:(1)中断 (2)中断源(3)中断系统(4)中断优先权(5)中断嵌套(6)中断屏蔽(1)中断是指在计算机执

33、行程序过程中,由服务对象向cpu发出请求信号,要求cpu暂停当前程序的执行,而转去执行相应的处理程序,当待处理程序执行完后,再返回继续执行原来被中断程序的过程。(2)中断源是指引起中断的原因或触发中断请求的来源。(3)中断系统是指为实现中断而设置的各种硬件和软件。(4)中断优先权是指两个或两个以上中断源同时申请中断时,哪一个中断源被cpu优先响应的权力。(5)中断嵌套是指在一个中断处理还未完成时,优先级更高的中断打断了这个中断的执行过程,即一个中断程序中又有另一个中断在执行的情况。(6)中断屏蔽是指某中断被cpu禁止响应的情况。2. 89s51单片机中各中断源的中断处理程序的入口地址可否自行设

34、定?当中断处理程序的长度大于8个字节时如何处理?89s51单片机中各中断源的中断处理程序的入口地址不能自行设定,当中断处理程序的长度大于8个字节时,应设置一条无条件跳转指令,将中断处理程序写入其他存储区。3. 89s51单片机的中断系统由哪些部件构成?分别有何用处?89s51单片机的中断系统由中断源、中断标志位、中断允许控制寄存器、中断优先级控制寄存器及中断入口地址组成。中断源用于产生中断请求信号;中断标志位用于将中断源产生的中断请求做上标记,以便于cpu能及时查询到中断的请求;中断允许控制寄存器用于设置哪些中断源可以被cpu响应,哪些被禁止;中断优先级控制寄存器的作用是设置各种中断源的优先顺

35、序;中断入口地址用于将中断处理程序的首地址存入pc指针以控制中断服务程序的执行。4. 89s51单片机中断系统有几个中断源?各中断标志如何产生?如何清除?cpu响应中断时,它们的中断入口地址分别是多少?89s51单片机中断系统有五个中断源,是通过tcon、scon中的ie0、ie1、tf0、tf1、ti、ri六个标志位产生的。其中,ie0、ie1、tf0、tf1由硬件清零,ti、ri由软件清零。它们的中断入口地址分别是0003h(外部中断0)、0013h(外部中断1)、000bh(定时器0)、001bh(定时器1)、0023h(串行口)。5. 89s51内部设有几个定时器/计数器?它们是由哪些

36、特殊功能寄存器组成的?89s51内部设有2个定时器/计数器,它们是由tcon、tmod、th1、th0、tl1、tl0组成。6. 89s51单片机定时/计数器t0、t1有哪几种操作模式?它们有什么区别?89s51单片机定时/计数器t0、t1有4种操作模式。方式0为13位定时/计数器,方式1为16位定时/计数器,方式2为自动重装初值的8位定时/计数器,方式3为t0被拆成两个独立的8位定时/计数器。7. 89s51单片机定时/计数器在定时或计数工作方式下,其计数脉冲分别由谁提供?定时时间与哪些因素有关?做计数时,对外界计数脉冲频率有何限制?89s51单片机定时/计数器在定时工作方式下,其计数脉冲由

37、内部机器周期提供;89s51单片机定时/计数器在计数工作方式下,其计数脉冲由外部引脚t0(p3.4)、t1(p3.5)提供。定时时间与定时器工作方式及单片机时钟有关。做计数时,对外界计数脉冲频率必需小于时钟频率的1/24,且高低电平持续时间不得小于一个机器周期。8. 设单片机的fosc=12mhz,若内部ram的30h单元的内容为55h,则定时器的定时时间为30ms;否则定时时间为15ms。试对定时/计数器进行初始化编程。movtmod,#01hmovth0,#0c5hmovtl0,#68hmova,30hcjnea,#55h,stmovth0,#8ahmovtl0,#0cfhst:9. 已知

38、89s51的fosc=6mhz,利用定时/计数器t0编程实现p1.0端口输出矩形波。要求:矩形波高电平宽度为50s,低电平宽度为300s。将t0作为定时器,工作在方式2,定时时间为25s,则初值为256-25=231=e7h,tmod=00000010b=02h。org0000hljmpstartorg000bhljmpintt0org0050hstart:clrp1.0movtmod,#02hmovth0,#0e7hmovtl0,#0e7hsetbpt0movie,#10000010bsetbtr0setbp1.0setbf0movr7,#6ljmp$org0100hintt0:jbf0,g

39、aodjnzr7,iedmovr7,#6gao:cplp1.0cplf0ied:retiend10. 已知 89s51的fosc=12mhz,用定时/计数器t1编程实现p1.0和 p1.1引脚上分别输出周期为2ms和500s的方波。将t1作为定时器,工作在方式2,定时时间为250s,则初值为256-250=6=06h,tmod=00100000b=20h。org0000hljmpstartorg001bhljmpintt1org0050hstart:clrp1.0clrp1.1movtmod,#20hmovth1,#06hmovtl1,#06hsetbpt1movie,#10001000bse

40、tbtr1movr7,#4ljmp$org0100hintt1:cplp1.1djnzr7,iedmovr7,#4cplp1.0ied:retiend11. 什么是串行异步通信?它有哪些特点?串行异步通信是指数据传送时各位分时传送,只需要一根数据线。在传送过程中数据以字符为单位传送,每个字符数据都要加进一些识别信息位和校验位,数据发送和接收端的时钟可以不同步。它的特点是节省传输线路,可实现远距离通信,传输速度相对同步通信慢,异步通信不需要发送端和接收端的时钟严格同步。12. 89s51单片机的串行口由哪些功能部件组成?各有何作用?89s51单片机的串行口由scon、sbuf及若干门电路构成。s

41、con用于设置串行口的工作方式,sbuf用于存储串行通信时要发送的数据或已接收到的数据。13. 89s51的串行数据缓冲器只有一个地址,如何判断是发送还是接收信号?通过不同的传送指令进行区分,如果发送数据则使用“movsbuf,a”,如果接收数据则使用“mova,sbuf”14. 89s51的串行口有几种工作方式?各种方式下的数据格式及波特率有何区别?89s51的串行口有4种工作方式。方式0为同步移位寄存器方式,波特率为fosc/12;方式1为10位异步通信方式,波特率可调;方式2为11位异步通信方式,波特率为fosc/32或fosc/64;方式3为11位异步通信方式,波特率可调。15. 试用

42、查询方式编写一数据块发送程序。数据块首址为内部ram的30h单元,其长度为20个字节,设串行口工作于方式1,传送的波特率为9600bps(fosc=6mhz),不进行奇偶校验处理。设波特率=9600bps。由t1工作于方式2,fosc=6mhz,smod=1,求得th1=tl1=0fdh。org0100hfirst:movtmod,#20hmovth1,#0fdhmovtl1,#0fdhmovscon,#40hmovpcon,#80hsetbtr1movr0,#30hmovr1,#20f:mova,r0movsbuf,ajf:jbcti,ggsjmpjfgg:incr0 djnzr1,fsjm

43、p$end16. 试用中断方式编写一数据块接收程序。接收缓冲区首址为内部ram的20h单元,接收的数据为ascii码,设串行口工作于方式1,波特率设定为1200bps(fosc=11.0592mhz),接收时进行奇偶校验,若出错则删除接收的数据。设波特率=1200bps。由t1工作于方式2,fosc=11.0592mhz,smod=0,求得th1=tl1=0e8h。org 0000h ljmp mainr;转接收主程序 org 0023h ljmp intse2;转中断服务程序 mainr:mov sp,#60h;主程序movtmod,#20hmovth1,#0e8hmovtl1,#0e8hm

44、ov scon,#50h;串行口初始化,允许接收mov pcon,#00h setb ea;开中断 setb essetbtr1 mov r1,#20h;置接收缓冲区首址 sjmp $ intse2:clr ri;清中断标志mov a,sbuf;接收数据jnbpsw.0,rx1;p=0,转rx1jnbrb8,rerr;p=1,rb8=0,转出错处理sjmprx2rx1:jbrb8,rerr;p=0,rb8=1,转出错处理rx2:movr1,a ;保存数据incr1retirerr:clrasjmprx2end第六章思考题与习题1. 在89s51扩展系统中,程序存储器和数据存储器共用了16位地址

45、线和8位数据线,为什么两个存储空间不会发生冲突?两个存储器读写方式不同,读信号接线方式也不同,因此不会发生冲突。2. 为什么当p2作为扩展存储器的高8位地址后,不再适用作i/o口?因为p2被用作高8位地址输出时,若再作i/o口会使数据被修改,则使输出的地址也被修改,此时单片机外部所接存储器地址也会被修改,导致读写数据错误。3. 请用译码器74ls138设计一个译码电路,分别选中4片2864,且列出各芯片所占的地址空间范围。2864的存储容量为8k,每片芯片地址范围0000h1fffh,使用74ls138扩展图如下。则四片2864的地址范围依次是(1)0000h1fffh,(2)2000h3ff

46、fh,(3)4000h5fffh,(4)6000h7fffh。4. 试说明8155的内部结构特点,其定时/计数器与89s51内部的定时/计数器有何异同?8155芯片内部包含2个8位i/o并行接口和1个6位i/o并行接口,一个14位的减1定时/计数器及256字节片内ram。其定时/计数器是14位减计数,而89s51内部的定时/计数器是16位加计数。5. 说明8155工作方式控制字的作用及各位的功能。d7d6d5d4d3d2d1d0tm2tm1iebieapc2pc1pbpapb、pa:控制端口b与a的数据传送方式。pc2、pc1:控制端口工作方式。tm2、tm1:控制定时/计数器工作方式。ieb

47、、iea:控制端口b与a的中断。6. 试对8155进行初始化编程,使其a口作输出口,b口作输入口,并启动定时/计数器,输出连续方波,定时时间为10毫秒,输入时钟频率为500khz。计数初值=5000=1388horg0100h start:mov dptr,#7f00h;dptr指向命令寄存器地址mov a,#01h ;命令字00000001bmovxdptr,a ;初始化8155movdptr,#7f04h;送低8位计数值mova,#88hmovxdptr,a inc dptr ;送高6位计数值 mova,#53h ;设置m2m1=01,输出脉冲为连续方波 movxdptr,a mov dp

48、tr,#7f00h;启动计数器工作mov a,#0c0h;设置工作方式控制字 movxdptr,a7. 用串行口扩展4个led数码管显示电路,编程使数码管轮流显示“abcd”,“efgh”,每秒钟变换一次。org0100hstart:movdptr,#tabmovr0,#50hmovr7,#4abcd:clramovca,a+dptr;查显示码movr0,aincdptrincr0djnzr7,abcdacalldispacalldelaymovr0,#50h movr7,#4efgh:clramovca,a+dptr;查显示码movr0,aincdptrincr0djnzr7,efghaca

49、lldispacalldelayljmpstartdisp:clrp1.4;显示器熄灭setbp1.3;打开移位脉冲输入setbp1.4;打开74ls164movscon,#00h;设置串口工作在方式0movr0,#50h;设置显示缓冲区首址movr2,#04h;设置循环次数loop: mova,r0movsbuf,a;送显示wait:jnbti,wait;发送是否完成clrti;清发送完成标志incr0djnzr2,loop;未发送完继续clrp1.3retdelay:movr6,#10dly1:movr5,#200dly2:movr4,#250dly3:djnzr4,dly3djnzr5,

50、dly2djnzr6,dly1rettab:db88h,83h,0a7h,0a1h,84h,8eh,90h,89hend8. 试说明键盘的工作原理,并说明键盘消抖的作用。如图6-10所示,键盘的工作原理简单的说就是当任意一个按键被按下,都会使相应的端子出现低电平。若没有按键按下,则为高电平。通过单片机检测输入端子的状态就可以判断键盘的按键是否按下。键盘消抖的作用为了保证按键识别的准确性。9. 在一个晶振为12mhz的89s51应用系统中,接有一片dac0832,它的地址为7fffh,输出电压为05v。试编写一个程序,使dac0832输出一个矩形波,波形占空比为1:4。高电平时电压为2.5v,低电平时电压为1.25v。org0100hstart:movdptr,#7fffh;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论