




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 汇编语言程序设计1、编程将片内40H60H单元中的内容送到以3000H为首的存储区内。答:MOVR1,#40HMOVR2,#21HMOVDPTR,#3000HL1:MOVA,R1MOVXDPTR,AINCR1INCDPTRDJNZR2,L12、编程计算下列算式的程序(1)23H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABHXCHA,B;溢出处理ADDCA,#00HXCHA,BADDA,#03H;A中为结果低位,B中为高位(2)CDH+15H-38H-46H=MOVA,#0CDHADDA,#15HSUBBA,#38HSUBBA,#46H(3)1234H
2、+8347H=MOVA,#34HADDA,#47HMOV30H,AMOVA,#12HADDCA,#83HMOV31,A;30H存结果低位,31H存结果高位(4)AB123H-43ADCH=CLRCMOVA,#23HSUBBA,DCHMOV30H,AMOVA,#0B1HSUBBA,#3AHMOV31H,AMOVA,#0AHSUBBA,#04HMOV32H,A;30H为低位,32H为高位3、设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中(低位在低字节,高位在高字节)。答:MOVA,22HADDA,32HMOV42H,AMOVA,23
3、HADDCA,33HMOV43H,A4、略5、编程计算片内RAM区50H59H单元中数的平均值,结果存放在5AH中。答:MOVR0,#8MOVR1,#50HMOVA,#00HL1:ADDA,R1INCR1DJNZR0,L1MOVB,#8DIVABMOV5AH,A6、编写计算下式的程序。设乘积和平方结果均小于255。a 、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。(1) MOVDPTR,#3001HMOVXA,DPTRMOV30H,A;a暂存30H单元INCDPLMOVXA,DPTRCJNEA,30H,L1;是否a=bMOVA,#25SJMPSAVEL1:JNC
4、L2MOVB,30HMULABSJMPSAVEL2:MOVB,AMOVA,30HDIVABSAVE:MOVDPTR,#3000HMOVXDPRT,A(2) MOVDPTR,#3001HMOVXA,DPTRMOV30H,AINCDPTRMOVXA,DPTRADDA,30HMOVB,AMULAB; (ab)2MOV31H,ACJNEA,#10,L1SJMPSAVEL1:JCL2CLRCSUBBA,#10SJMPSAVEL2:ADDA,#10SAVE:MOVDPTR,#3000HMOVCDPTR,A7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之和
5、,结果存放到以220H为首地址的存储区中。答:MOVDPH,#02HMOVR1,#15MOVR2,#00H; 数组1首地址低位MOVR3,#10H; 数组2首地址低位MOVR4,#20H; 和首地址低位L1:MOVDPL,R2MOVXA,DPTRMOVR1,AMOVDPL,R3MOVXA,DPTRADDA,R1MOVDPL,R4MOVXDTPR,AINCR2INCR3INCR4DJNZR1,L1SJMP$8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。答:MOV30H,#00H;正数计数器MOV31H,#00H;负数计数器MOV32H,#00
6、H;零计数器MOVDPTR,#2000HMOVR1,#100L4:MOVXA,DPTRINCDPTRCJNEA,#0,L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1,L4SJMP$9、将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片内RAM 30H60H中,并将原数据块区域全部清零。答:MOV R0,#30HMOV R2,#31HMOV DPTR ,#1000HLP:MOVX A,DPTRMOV R0,AAND A,#00HMOVX DPTR,AINC R0INC DPTRDJNZ R2,LPSJMP$10、试编写一子程序
7、,是R1、R0指向的两个片外RAM连续单元中的高4位二进制数,合并成一个字节,装入累加器A中。已知R0指向低地址,并要求该单元高四位放在A中高四位。答:MOVXA,R1ANLA,#0F0HSWAPAMOVR2,AMOVXA,R0ANLA,#0F0HORLA,R211、试编程把以2040H为首地址的连续50个单元的无符号数按降序排列,存放到以3000H为首地址的存储区中。答:MOVR2,#50MOVR3,#20HMOVR4,#40H;源地址MOVR5,#30HMOVR6,#00H;目的地址SEND:MOVDPH,R3;SEND将2040H数据块移入3000H存储区MOVDPL,R4MOVXA,D
8、PTRINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,SENDMOVR2,#49;重复次数CMP1:MOVDPTR,#3000HMOVR3,#49;比较次数CMP2:MOVXA,DPTRMOVB,AINCDPTRMOVXA,DPTRCJNEA,B,L1L1:JCNOMOVEMOV30H,ACLRCMOVA,DPLSUBBA,#01HMOVDPL,AMOVA,30HMOVXDPTR,AINCDPTRMOVA,BMOVXDPTR,ANOMOVE:DJNZR3,CMP2;50个数
9、重复一遍?DJNZR2,CMP1;排序结束?LJMP$12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送到20A0H和20A1H单元中。答:MOVDPTR,#2000HMOVR2,#100GO_ON:MOVXA,DPTRCJNEA,#41H,IFENDMOVA,DPHMOVB,DPLMOVDPTR,#20A0HMOVXDPTR,AINCDPTRXCHA,BMOVXDPTR,ASJMPOVERIFEND:INCDPTRDJNZR2,GO_ONOVER:SJMPOVER13、设在200H204H单元中,存放5个压缩BCD码,编程将他们转换成ASCII
10、码,存放到以205H单元为首地址的存储区。答:MOVR2,#05HMOVR3,#02HMOVR4,#00HMOVR5,#02HMOVR6,#05HCHLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVB,ASWAPAANLA,#0FHORLA,#30HMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVA,BANLA,#0FHORLA,#30HMOVXDPTR,AMOVR5,DPHMOVR6,DPLDJNZR2,CHLP14、有一无符号数据块长度在30H单元中,其首地址为31H单元,求出数据块中最大值,
11、并存入40H中。答:MOVR0,#31HMOVR1,30HMOV40H,#00HLOOP:MOVA,R0CJNEA,40H,L1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40H,AAGAIN:INCR0DJNZR1,LOOPSJMP$15、略16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的09之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存在3000H3009H单元中。答:MOVR2,#10MOVR3,#20HMOVR4,#00HMOVR5,#30HMOVR6,#00HLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRAN
12、LA,#0FHSWAPAXCHA,BINCDPTRMOVXA,DPTRANLA,#0FHORLA,BINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,LPSJMP$17、试编程实现下列逻辑表达式功能。设P1.7P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。;输入端定义X0EQUP1.0X1EQUP1.1X2EQUP1.2X3EQUP1.3X4EQUP1.4X5EQUP1.5X6EQUP1.6X7EQUP1.7(1)MOVC,X0ANLC,X1ANLC,/X2O
13、RLC,X3MOV00H,CMOVC,X4ANLC,X5ANLC,X6ORLC,/X7ORLC,00HMOVP1.7,C(2)MOVC,X0ANLC,X1CPLCMOV00H,CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,O1HCPLCORLC,00HMOVP1.7,C18、略 19、略20、试编写延时1s、1min、1h子程序。;单片机时钟fosc=12MHz,计算为近似值;1s延时子程序DLY_1S:MOVR0,#10L3:MOVR1,#200L2:MOVR2,#250L1:DJNZR2,L1DJNZR1,L
14、2DJNZR0,L3RET;延时1minDLY_1M:MOVR3,#60L4:LCALLDLY_1SDJNZR3,L4RET;延时1hDLY_1H:MOVR4,#60L5:LCALLDLY_1MDJNZR4,L5RET21、用程序实现c=a2+b2。设a、b均小于10,a存在31H单元中,b存在32H单元中,c存33H单元。答:ORG1000HSR:MOVA,31HACALLSQRMOVR1,AMOVA,32HACALLSQRADDA,R1MOV33H,ASJMP$;求平方子程序如下(采用查平方表的方法)SQR:INCAMOVCA, A+PC RETTABLE:DB 0, 1, 4, 9, 1
15、6DB 25,36,49,64,81END22、如何实现将内存单元40H60H的数逐个对应传到片外2540H2560H单元中?答:MOVR0,#40HMOVDPTR,#2540HMOVR2,#21HL1:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR2,L1SJMP$23、参考21题24、参考21题25、参考实验程序26、参考实验程序第五章 定时/计数器1、89S51单片机内部有几个定时/计数器,他们有哪些专用寄存器组成?答:89S51单片机内部有两个16位定时/计数器,为定时器0(T0)和定时器1(T1)。在定时器/计数器的16位的计数器是由两个8位的专用寄存器TH0、
16、TL0,TH1、TL1组成。2、89S51单片机的定时/计数器有哪几种工作方式,各有什么特点?答:定时器/计数器有四种工作方式:方式0,方式1,方式2,方式3。其中,方式3只适用于T0。以T0为例:方式0,16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位组成一个13位计数器;方式1,和方式0的工作相同,唯一的差别是TH0和TL0组成一个16位计数器;方式2,把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中;方式3,将使TL0和TH0成为两
17、个相互独立的8位计数器,TL0利用T0本身的一些控制,它的操作与方式0和方式1类似。而TH0被规定为只用作定时器功能,对机器周期计数,并借用了T1的控制位TR1和TF1。在这种情况下TH0控制了T1的中断。这时T1还可以设置为方式02,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。3、定时/计数器用作定时方式时,其定时时间与哪些因素有关?作为计数时,对外界计数频率有何限制?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。定时/计数器作计数时,由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数
18、脉冲的最高频率为系统振荡器频率的1/24。4、当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭?答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位C/T切换其定时或计数器工作方式。当设置好工作方式时,定时器T1自动开始运行,若要停止,只需送入一个置定时器T1为方式3的方式字。5、已知89S51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲。矩形波高电平宽度50µs,低电平宽度350µs。答:ORG 1000HMOV TMOD,02H ;设置工作方式MOV TH0,09CH;设置定时器初值MOV TL
19、0,09CHSETB TR0;启动定时器LOOP:SETBP1.2;P1.0输出高电平MOVR0,07HDEL:JBC TF0,REP;定时是否到?AJMP DELREP:SETBP1.2;P1.0输出低电平DJNZR0,DELAJMP LOOPEND6、在89S51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500s的方波。答:选择方式2,用定时器T1MOVTMOD,#20HMOVTH1,#06HMOVTL1,#06HSETBTR1L1:MOVR2,#04HL2:JNBTF1,$CLRTF1,CPLP1.1DJNZR2,L2CPLP1.0LJMPL17
20、、设系统时钟为24MHz,试用定时器T0做外部计数器,编程实现每计到1000个脉冲,是T1开始2ms定时,定时时间到后,T0又开始计数,循环往复。答:MOVTMOD,#15H;T1定时方式1,T0计数方式1L1:MOVTH0,#0FCHMOVTL0,#18HSETBTR0JNBTF0,$CLRTR0CLRTF0MOVTH1,# HMOVTL1,# HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略第六章 80C51的串行接口1、什么是串行异步通信?他有哪些特点?有哪几种帧格式?答:串行通信即所传输数据的各位按顺序一位一位的发送或接收。串行通信分为同步和异步两种方式。在异
21、步通信中数据或字符是一帧一帧地传送的。帧定义为一个字符的完整的通信格式,通常也称为帧格式。它的主要特点:由于异步通信每传送一帧有固定的格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;此外它还能利用校验位检测错误。帧格式的一般形式是先用一个起始位“0”表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。2、某异步通信接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。答:设每个字符由1个起始位、8个数据位、1个可编程位和1个结束位组成,其传送波特率为: 11b×3600/60s=660bps3、80C51单片
22、机的串行口由哪些基本功能部件组成?答: 80C51单片机的串行口基本功能部件主要有:两个数据缓冲寄存器SBUF,一个串行口控制寄存器SCON,一个输入移位寄存器。4、80C51单片机的串行口有几种工作方式?几种帧格式?如何设置不同方式的波特率?答:80C51单片机的串行口有四种工作方式,由串行口控制寄存器中的SM0、SM1控制。80C51单片机的串行通信有8位、10位、11位三种帧格式。波特率设置:4种工作方式波特率的计算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,均由定时器T1的溢出率控制。具体计算如下:方式0:波特率固定为时钟频率的1/12,不受SMOD的
23、影响。(SMOD为波特率倍增位)方式1的波特率=2SMOD/32×定时器T1的溢出率 方式2的波特率=2SMOD/64×fosc方式3的波特率=2SMOD/32×定时器T1的溢出率5、为什么定时器T1用作串行口波特率发生器时,常采用工作方式2?答:在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。串口有四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,有定时器T1的溢出率控制。定时器T1用作串行口波特率发生器时,因为工作方式2是自动重装载方式,因而定时器T1作波特率发生器常采用工作方式2.6、已知定时器T1设
24、置成方式2,用作波特率发生器,系统时钟频率为24MHz,求可能产生的最高和最低的波特率是多少?答:最高波特率:TH1=0FFH,TL1=0FFH波特率最高=2/32×24M/(12×(256255)bps=0.125Mbps最低波特率:TH1=00H,TL1=00H波特率最低=1/32×24M/(12×(2560)bps=244bps7、略(参见教材相关例题)8、利用AT89S51串行口控制8个发光二极管工作,要求发光二极管每隔1S交替的亮灭,画出电路并编写程序。答:电路如下图所示实验程序如下:CLRP1.0;清输出SETBP1.0;允许串行移位MOVS
25、CON,#00HMOVA,#55H;显示初值AGAIN:MOVSBUF,AJNBTI,$CLRTILCALLDLY_1SRRALJMPAGAINDLY_1S:MOVR1,#20L3:MOVR2,#200L2:MOVR3,#250L1:DJNZR3,L1DJNZR2,L2DJNZR1,L3RET9、串行口异步通信时,ASCII码“3”的字符格式(10位)如何?答:串行口异步通信时,10位的数据帧结构为:一个起始位(0),8个数据位(先低位后高位),一个停止位(1)。故ASCII码“3” 的字符格式为:0110011001B。10、若选用定时器T1作波特率发生器,设fosc=6MHz,计数初值为0
26、FDH,SMOD=1,求波特率是多少?答:若选用定时器T1作波特率发生器,波特率由下式确定:波特率=(定时器T1溢出率)/n公式中:n为32或16,取决于特殊功能寄存器PCON中的SMOD位的状态。若SMOD=0,则n=32。若SMOD=1,则n=16。定时器T1溢出率=定时器T1的溢出次数/秒。由题可知:fosc=6MHz,计数初值为0FDH,SMOD=1,故第七章 中断系统1、什么是中断?在单片机中中断能实现哪些功能?答:中断是通过硬件来改变CPU程序运行方向。计算机在执行程序过程中,由于CPU以外的原因,有必要尽快终止当前程序的执行,而去执行相应的处理程序,待处理结束后,在回来继续执行被
27、终止的原程序。这种程序在执行过程中由于外界的原因而被中间打断的情况成为“中断”。中断能实现的功能:(1)能实现中断及返回。(2)能实现优先权的排队。(3)能实现中断的嵌套。2、什么是中断优先级?中断优先级处理的原则是什么?答:通常,在系统中会有多个中断源,有时会出现两个或更多个中断源同时提出中断请求的情况,这就要求计算机能区分各个中断源的请求,有能确定首先为哪一个中断源服务。为了解决这一问题,通常给各中断源规定了优先级别,称为优先权或中断优先级。中断优先级处理原则:两个或两个以上的中断源同时提出中断申请时,计算机首先为中断优先权最高的中断服务,服务结束以后,再响应级别较低的中断源。3、80C5
28、1有几个中断源,各中断标志如何产生的,又如何清“0”的?CPU响应中断时,中断入口地址各是多少?答:8051单片机有5个中断源,分别是:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断。中断标志产生与清“0”:(1)外部中断:外部中断由外部原因引起,可以通过两个固定的引脚()输入信号。一旦输入信号有效,则向CPU申请中断并使IE0(或IE1)=1。硬件复位。(2)定时器中断:定时器中断是为了满足定时或计数溢出处理的需要而设置的。当定时/计数器的计数结构发生计数溢出时,即表明定时时间到或计数次数到,此时就以计数器溢出信号作为中断请求,去置一个溢出标志位(TF0或TF1=1)。使
29、用中断时通过硬件复位,在查询方式下可由软件复位。(3)串口中断:串行中断请求是在单片机内部产生的。当发送完数据或接收完数据后,就会置相应标志位(TI或RI=1)。一旦响应中断,必须由软件进行复位。 中断入口地址:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断的入口地址依次为:0003H,000BH,0013H,001BH,0023H。4、中断响应时间是否确定不变的?为什么?答:中断响应时间不是确定不变的。由于CPU不是在任何情况下都可以中断请求予以响应,不同情况对中断响应的时间也是不一样的。中断信号会在每个机器周期的S5P2时刻对相应中断标志位进行置位,若CPU在下一个机器
30、周期才能查询到中断请求,如果满足中断响应的条件,下一条指令将是一硬件长调用指令,使程序转入中断矢量入口,调用本身需要2个机器周期,因此响应中断至少需要3个机器周期。如遇正在执行的指令,或有同级、更高级的中断服务正在进行,则需更长时间。若系统中只有一个中断源,则响应时间为38个机器周期。5、用定时器T1定时,要求在P1.6口输出一个方波,周期为1min,晶振为12MHz,请用中断方式实现,并分析采用中断后的优点。答:使用定时器T1,工作在方式1,定时50msORG0000HLJMPMAINORG001BHLJMPT1_SERORG0100HMAIN:MOVTMOD,#10HMOV R0,#20;
31、1s定时次数MOVR1,#30;定时30sMOVTH1,#3CHMOVTL1,#0B0HSETBET1SETBEASETBTR1SETBP1.6SJMP$0RG0200HT1_SER:MOVTH1,#3CHMOVTL1,#0B0HDJNZR0,L1MOVR0,#20DJNZR1,L1MOVR1,#30CPLP1.6L1:RETI6、中断响应过程中,为什么通常要保护现场?如何保护?答:因为一般主程序和中断服务程序都可能会用到累加器、PSW及其他寄存器。CPU在进入中断服务程序后,用到上述寄存器时,就会破坏原来存在寄存器中的内容,一旦中断返回,就会造成主程序的混乱。因此在进入中断服务程序后,一般要先保护现场,然后在执行中断处理程序,在返回主程序之前再恢复现场。保护方法一般是把累加器、PSW或其他相关寄存器数据压入堆栈。在保护现场时,一般规定此时CPU不响应新的和中断请求,这就要求在编写中断服务程序时,注意在保护现场或恢复现场时要关闭中断。7、试用中断法设计秒、分脉冲发生器。答:利用定时器T0定时,P1.0作为秒发生器输出端,P1.1作为分脉冲发生器的输出端。设晶振为12MHz。片内50H和51H单元分别用于秒、分计数。使用T0方式1定时50ms。ORG0000HLJMPMAINORG0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齿轮技术员岗位面试问题及答案
- 智能教学设备运维师岗位面试问题及答案
- 知识图谱工程师岗位面试问题及答案
- 湖南省邵东三中2025届高一下化学期末监测试题含解析
- 2025届新疆昌吉市第九中学高一化学第二学期期末学业水平测试试题含解析
- 第六单元名著导读《水浒传》基本知识点梳理+2025-2026学年统编版语文九年级上册
- 中子星吸积现象-洞察及研究
- 桐庐退役警犬管理办法
- 北京社区规约管理办法
- 材料安装合同管理办法
- 2025全员安全生产责任制范本
- 林业行政执法培训
- 电大考试试题及答案商法
- 广西壮族自治区柳州市上进联考2024-2025学年高一下学期6月期末联合考试数学试题(含答案)
- 高中英语必背3500单词表完整版
- 大连农商银行2024年招聘172人管理单位遴选500模拟题附带答案详解
- 安徽省工伤职工停工留薪期分类目录
- 2019-2020学年湖南长沙长郡中学高一入学分班考试数学卷(常用)
- 职业安全卫生知识竞赛题
- SLAP损伤的治疗课件
- 广东省外语艺术职业学院后勤服务项目检查评分标准
评论
0/150
提交评论