《单片机作业答案.doc》由会员分享,可在线阅读,更多相关《单片机作业答案.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流单片机作业答案.精品文档.2-1.8051单片机芯片内部包含哪些主要逻辑功能部件?答:一个8位微处理器(CPU);片内数据存储器RAM;片内程序存储器ROM;四个8位并行I/O口P0P3;两个定时器/计数器;五个中断源的中断控制系统;一个UART(通用异步接收发送器)的串行I/O口;片内振荡器和时钟产生电路。2-2、8051存储器分哪几个地址空间?如何区别不同空间寻址?答: 片内、外统一编址的64KB程序存储器; 片内256B数据存储器; 片外64KB数据存储器。硬件:引脚接高电平时CPU从片内0000H单元开始取指令,接低电平时CPU直接访
2、问片外EPROM。软件:MOV指令访问片内数据存储器, MOVX 指令访问片外数据存储器,MOVC指令用于读取程序存储器中的常数。2-4.简述直接位寻址区的空间分配,片内RAM中包含哪些可位寻址单元?答:MCS-51单片机片内RAM中有两个区域可进行位寻址:(1)片内RAM低128字节的位寻址区,地址为20H2FH的16个字节单元共128位,每一位都有相应的位地址,可用位寻址方式对其进行置位、复位、内容传送、逻辑运算等操作,128位的位地址定义为00H7FH。(2)片内RAM高128字节的存储器区,有21个特殊功能寄存器。其中字节地址正好能被8整除的字节单元中的每一位都可以按位寻址、操作。2-
3、6. 8051单片机引脚有何功能?在使用8031时,引脚应如何处理?答:引脚为外部程序存储器地址允许输入端,其电平的高低决定了系统复位后CPU是从片内程序存储器还是片外扩展存储器的0000H字节单元开始取指令。(1) 当引脚接成高电平时,CPU首先从片内0000H字节单元开始取指令执行程序,当指令地址寄存器PC中的内容超过0FFFH后,就自动转向片外扩展的EPROM中取指令执行,这时芯片外部的重叠地址为0000H0FFFH的低4KB EPROM忽略不用。(2) 当引脚接成低电平时,复位后CPU直接从片外EPROM的0000H字节单元开始取指令执行,这时芯片内部0000H0FFFH的4KB单元被
4、忽略不用。在使用8031时,由于其内部没有ROM/EPROM,所以必须使用外部扩展程序存储器,它的引脚应该接成低电平,CPU直接从片外扩展的EPROM中取指令执行。2-8. 内RAM低128B单元划分为哪三个主要区域?各区域主要功能是什么?答:地址范围为00H7FH的128字节单元,按功能特点划分为不同的几个区,分述如下。(1) 工作寄存器区 地址范围为00H1FH的32字节存储器单元,分为四个组,每组有8个工作寄存器字节单元,定名为R0、R1、R2、R3、R4、R5、R6和R7。通过改变程序状态字特殊功能寄存器PSW中RS1,RS0两位的内容,每组工作寄存器均可选作CPU的当前工作寄存器组。
5、(2) 位寻址区 地址为20H2FH的16个字节单元中共128位,每一位都有相应的位地址,可用位寻址方式对其进行置位、复位、内容传送、逻辑运算等操作。(3) 一般数据存储区 地址范围为30H7FH的区域,可用于原始数据及运算结果的存储。值得注意的是,30H7FH中一部分字节单元可以开辟出一块遵守“后进先出”或“先进后出”规则的特殊数据区堆栈。2-9. 单片机系统复位有哪几种方法?复位后特殊功能寄存器初始状态如何?答:使单片机系统复位有两种方法:上电自动复位和按键手动复位系统复位的主要功能就是把PC初始化为0000H,使单片机从0000H单元开始执行程序,另外,系统复位还使一些特殊功能寄存器恢复
6、到复位状态。PC: 0000H ACC: 00H PSW: 00HSP: 07H DPTR:0000H P03: FFHIP: *000000B IE:0*000000B TMOD: 00HTCON: 00H TL0: 00H TH0: 00HTL1: 00H TH1: 00H SCON: 00HSBUF:不定 PCON: 0*0000B2-10. 开机复位后,CPU使用那组工作寄存器作为当前工作寄存器?它们的地址是什么?答:开机复位后,由于(RS1=0,RS0=0),CPU使用第0组工作寄存器作为当前工作寄存器,它的地址为00H07H.2-11. CPU如何确定和改变当前工作寄存器组?答:通
7、过改变程序状态字特殊功能寄存器PSW中RS1,RS0两位的内容,每组工作寄存器均可被选作当前工作寄存器。 RS1 RS0 当前工作寄存器 0 0 第0组 0 1 第1组 1 0 第2组 1 1 第3组2-13 位寻址与字节单元地址7CH如何区别?位地址7CH、具体在片内RAM的什么位置?答:8051采用不同的寻址方式和指令分别对位和字节进行不同的操作,如SETB 20H指的是20H位单元的内容置为1,而MOV 20H,#0FFH指的是内RAM20H字节单元的内容变为FFH。位地址7CH在内RAM低128字节的2FH字节单元的第四位。2-14. 8051单片机时钟周期与振荡周期之间有什么关系?答
8、:8051单片机的时钟周期为振荡周期的两倍。2-16. 什么叫堆栈?堆栈指针SP的作用是什么?8051单片机堆栈容量不能超过多少字节?答:一般在30H7FH的地址范围内,有一部分字节单元可开辟出一块遵守“后进先出”或“先进后出”规则的特殊数据区,就叫堆栈。SP为堆栈指针,它始终存放堆栈顶部字节单元的地址(栈顶指针),数据压栈时,SP首先自动加1,然后数据压入SP内容指示的字节单元中;而数据出栈时,SP内容指示的字节单元中的数据弹出,然后SP自动减1,这样SP始终指向堆栈顶部字节单元的地址。8051单片机堆栈容量最多不能超过128字节。初始化后,(SP)=07H,如果CPU使用工作寄存器1组,那
9、么堆栈和工作寄存器将发生冲突,因此常把堆栈移至307FH区域之中。第三章3-1什么是寻址方式?MCS-51单片机有哪几种寻址方式?对8031内部RAM的128255字节地址的空间寻址要注意什么?答:寻址方式是如何找到存放被操作数据的位置(地址)的方法;MCS-51单片机有七种寻址方式:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址间接寻址、相对寻址和位寻址;8031内部RAM的128255字节为特殊功能寄存器区,只允许使用直接寻址方式。3-6若要完成以下数据传送,如何应用MCS-51指令予以实现?(1) R1的内容传送到R0: MOVA, R1MOVR0, A(2) 外部RAM 20H
10、单元的内容送入R0: MOV P2, #00H;MOVR1, #20HMOVXA, R1MOVR0, A(3)外部RAM 0020H单元的内容送内部RAM 20H单元:MOV P2, #00H;MOVR0, #20HMOVXA, R0MOV20H, A(4)外部RAM 1000H单元内容送内部RAM 20H单元:MOVDPTR, #1000HMOVXA, DPTRMOV20H, A(5)外部ROM 2000H单元内容送R0:MOVA, #00HMOVDPTR, #2000HMOVCA, A+DPTR (MOVCA, DPTR)MOVR0, A(6)外部ROM 2000H单元内容送内部RAM 2
11、0H单元:MOVA, #00HMOVDPTR, #2000HMOVCA, A+DPTRMOV20H, A(7)外部ROM 2000H单元内容送外部RAM 0020H单元:MOVA, #00HMOVR0, #20HMOVDPTR, #2000HMOVCA, A+DPTRMOVXR0, A3-7 (R0)=30H; (A)=(30H)=40H; (R1)=40H; (B)=10H; (P1)=0CAH; (40H)=0CAH; (30H)=20H(原来40H); (10H)=20H;好多:(R0)=40H; (A)=10H; (R1)=10H; (B)=00H; (P1)=0CAH; (30H)=
12、(20H); (10H)=(20H);3-8已知SP=25H,PC=2345H,标号LABEL所在的地址为3456H, 问执行长调用指令LCALL LABEL后,堆栈指针和堆栈的内容发生什么变化?PC值等于什么?答:(SP)=27H,(26H)=48H,(27H)=23H;(PC)=3456H3-9上题中的LCALL指令能否直接换成ACALL指令,为什么?如果使用ACALL指令,则可调用的地址范围是什么?答:不能,因为LABEL所在地址3456H与PC不在同一2 KB范围内,即高5位地址不同。若要使用ACALL指令,可调用的地址范围是2000H27FFH。3-10 有一个16位二进制数,高8位
13、存于21H单元,低8位存于20H单元。执行如下程序段,试问: 程序段功能是什么? 能否用MOV代替程序段中的XCH语句而不改变程序的逻辑功能?写出相应程序段。 两个程序段结果是否相同?差别在哪里? CLR C XCH A,21H RRC A XCH A,21H XCH A,20H RRC A XCH A,20H答: (1)程序段的功能是将此16位二进制数除2后取整 (2)能用MOV代替程序段中的XCH语句而不改变程序的逻辑功能,如下:CLRCMOVA,21HRRCAMOV21H,A MOVA,20H RRCA MOV20H,A两个程序段结果不相同。原程序执行后A的内容为程序运行前A中内容,即此
14、程序没有改变A中内容;MOV语句程序中A 的内容为原20H单元内容右移一位后的内容。3-11 分析以下程序段运行的结果。若将DA A指令取消,则结果会有什么不同?CLRCMOV20H,#99HMOVA,20HADDA,#01HDAAMOV20H,A答:结果为(20H)=00H,CY=1。若取消DA A指令,(20H)=9AH,CY=0。3-12 由于SJMP指令的转移范围是256B,而AJMP指令转移范围是2KB,所以在程序中SJMP指令都可以用AJMP指令来代替。”请问这种说法是否正确,为什么?答:不正确。AJMP转移的目标地址必须在AJMP后面指令的第一个字节开始的同一2KB范围内,不能改
15、变高5位地址,因此,即使相邻很近的两个地址,只要它的高5位发生改变,就不能跳转。而SJMP可以通过几次跳转,最终到任意目标地址。4-1 两个4位BCD码数相加求和。设被加数存于内部RAM的40H、41H单元,加数存于45H、46H单元,要求和数存于50H、51H单元(均前者为低二位,后者为高二位)。请编制加法程序段。解:程序如下:CLR CMOV A, 40HADD A,45HDA A MOV 50H,AMOV A,41HADDC A,46HDA AMOV 51H,ACLR AADDC A,#00HMOV 52H,A好多同学: MOV A, 40HADD A,45HDA A MOV 50H,A
16、MOV A,41HADD A,46HDA AMOV 51H,A4-2 试编写程序,查找在内部RAM 20H-50H单元中出现00H的次数,并将查找的结果存入51H单元。解:程序如下:MOV R0,#20HMOV R7,#31HMOV 51H,#00H(必需的)LOOP1: CJNE R0, #00H, LOOPINC 51HLOOP: INC R0DJNZ R7, LOOP1HERE: SJMP HERE有的同学DJNZ位置放置不同, 此时要注意循环的次数采用其他条件转移指令亦可;采用其他判断方式亦可4-3 晶振频率为12MHz,请用循环转移指令编制延时20ms的延时子程序。解:一个机器周期为
17、1us,延时20ms需要机器周期数20000us/1us=20000延时程序如下: MOV R5, #T1 ;1个机器周期LOOP2: MOV R4,#T2 ;T1个机器周期LOOP1: NOP ;T1*T2个机器周期 NOP ;T1*T2个机器周期 DJNZ R4,LOOP1;2* T1*T2个机器周期 DJNZ R5, LOOP2;2* T1个机器周期 RET ;1个机器周期总计时:1+3T1+4T1T2+1=20000则:T1=202=0CAH, T2=24=18H (答案不唯一,T1与T2的值255)4-4 已知两个八位无符号数a、b存放在BUF和BUF+1单元,编写程序计算5a+b,
18、结果可能大于8位,仍放回BUF和BUF+1单元(BUF+1单元为高字节)。 解:根据题意,编写程序如下:MOV A, BUF MOV B,#05H MUL AB CLR C 可以不要 ADD A, BUF+1MOV BUF,AMOV A,BADDC A,#00H MOV BUF+1,A 4-5 外部数据RAM从2000H到2100H有个数据块,现要将它们传送到从3000H到3100H的区域,试编写有关程序。方法1 MOV DPTR,#3000HPUSH DPL PUSH DPH ;压栈保护目标地址 MOV DPTR,#2000H MOV R2,#01H MOV R3,#01H ;数据长度送R3
19、R2LOOP: MOVX A, DPTR INC DPTR MOV R5,DPH MOV R4,DPL ;源地址加1保护 POP DPH POP DPL ;弹出目标地址 MOVX DPTR,A INC DPTR PUSH DPL PUSH DPH ;目标地址加1 压栈保护 MOV DPH,R5 MOV DPL,R4 ; 取出源地址 CLR C MOV A,R2 SUBB A,#01H MOV R2,A ;数据区长度低8位减1 MOV A,R3 SUBBA,#00H MOV R3,A ;数据区长度高8位减借位位 ORL A, R2 ;(R3)与(R2)相或 JNZ LOOP ;两者全零时,101
20、H个数传送完毕。HERE: SJMP HERE方法2: MOV P2, #20H MOV R0, #00H MOV R2, #00H LOOP: MOVX A, R0 ;P2口即高八位地址 SETB P2.4 ;20H30H MOVX R0, A CLR P2.4 ;30H20H INC R0 DJNZ R2, LOOP MOV DPTR, #2100H MOVX A, DPTR MOV DPTR, #3100H MOVX DPTR, A另外方法:DPH分别赋予20H和30H可行;INC DPL可行另外:MOV R0,#2000H 错误4-9 存放在片内RAM的DAT单元中的自变量X中是一个无
21、符号数,试编写程序求下面函数的函数值并存放到片内RAM的FUNC单元中。解:根据题意设计程序如下:MOV A, DATCJNE A, #32H, LOOPLOOP: JNC DONE CJNE A,#14H,LOOP1LOOP1: JC LOOP2 RL A RL A ADD A, DAT SJMP DONELOOP2: RL ADONE: MOV FUNC,AHERE: SJMP HERE有同学:通过SUBB A,#14H;JC LOOP1亦可以有的同学:一断子程序中有多个Sjmp here有同学在多个程序中实现4-11 已知片内RAM以ADDR为起始地址的区域中存放着24个无符号数,试编写
22、程序找出最小值,并存入MIN单元。 解:根据题意,编写程序如下: MOV R0, #ADDR ;数据区首地址MOV R7, #18H ;数据区长度MOV A, R0 ;读第一个数DEC R7LOOP: INC R0MOV 2AH, R0 ;读下一个数CJNE A,2AH,CHK ;数值比较CHK: JC LOOP1 ;A值小转移MOV A,R0LOOP1: DJNZ R7,LOOP ;继续MOV 2BH,A ;极值送2BH单元HERE: AJMP HERE ;停止6-2 MCS-51提供了哪几种中断源?在中断管理上有什么特点?各中断源中断优先权的高低是如何排列确定的?答:MCS-51单片机设立
23、了5个中断源,其中两个为外部中断源,外部中断0即,外部中断1即,三个为片内中断源 (内部中断源),分别为定时器/计数器T0溢出中断、定时器/计数器T1溢出中断和串行口中断。由特殊功能寄存器TCON和SCON的相应位表示了各中断源的状态。提供2个中断优先级,中断处理程序可实现二级中断嵌套。各中断源可以由中断优先级控制寄存器IP程控为高优先级或低优先级中断。中断源的排列顺序由中断优先级控制寄存器和内部查询电路共同决定,并且各中断源可以由中断允许控制寄存器IE定义为开放或屏蔽状态。6-3 MCS-51响应中断的条件是什么?CPU响应中断时,不同的中断源,其中断入口地址各是多少?答:MCS-51响应中
24、断的基本条件有:1. 有中断源发出中断请求。2. 中断总允许位EA=l,即CPU开中断。3. 发出中断请求的中断源所对应的中断允许位为1,即该中断没有被屏蔽。若上述条件满足,并且不存在任意一种下列情况,则CPU会相应中断:1、 CPU正在执行同级或更高级中断服务程序。2、 当前的指令周期还未结束。这样可保证指令的完整,防止中断返回后出现错误指令。3、 现行指令为RETI或者是访问IE或IP的指令,该指令以及紧接着的另一条指令还未执行完。为了保证CPU能正确返回,CPU在执行RETI或访问IE、IP的指令后,至少需要再执行一条指令,才会响应新的中断请求。若存在上述任何一种情况,则CPU将丢弃中断
25、查询结果,此次中断申请无效,不会再被响应。若没有上述情况,CPU将在紧接着的下一个机器周期内响应中断。各中断源及与之对应的矢量地址略。(入口地址P3.2)?6-4 MCS-51的外部中断有哪两种触发方式?它们对触发脉冲或电平有什么要求?应如何选择和设定?答:MCS-51的外部中断有两种触发方式:边沿触发方式和电平触发方式。对于边沿触发方式,CPU在每一个机器周期S5P2期间采样外部中断l请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断1请求信号为高电平,接着的下一个机器周期采样到外部中断1请求信号为低电平,出现了下跳沿,则使IEl置1。直到CPU响应该中断时,
26、才由硬件使IEl清0。对于电平触发方式,CPU在每一个机器周期S5P2期间采样外部中断1请求引脚的输入电平。若外部中断l请求信号为低电平,则使IE1置1,若外部中断1请求信号为高电平,则使IEl清0。可由TCON中对应的IT0(或IT1)位程控为低电平或下降沿有效。IT0(或IT1)=1时,外部中断0(或1)程控为边沿触发方式。IT0(或IT1)=0时,外部中断0(或1)程控为电平触发方式。6-5 MCS-51单片机的中断系统中有几个优先级?如何设定?答:MCS-51单片机的中断系统中有两个中断优先级。每一个中断请求源均可编程为高优先级中断或低优先级中断,可以实现二级中断嵌套。MCS-51的中
27、断系统中设置了一个中断优先级寄存器IP,可按位寻址。IP中的低5位为各中断源优先级的控制位,可用软件来设定。若某几个控制位为1,则相应的中断源就规定为高级中断;反之,若某几个控制位为0,则相应的中断源就规定为低级中断。6-6 某MCS-51系统用于定时测试压力、温度,定时用T0来实现,压力超限和温度超限的报警信号分别由和输入,中断优先权排列顺序(由高到低)依次为压力超限温度超限定时检测,试确定专用寄存器IE和IP的内容,并编写初始化程序。答:8051对中断源的开放或屏蔽是由中断允许寄存器IE控制的。IE内容为:IE10000111即:IE=87H按照内部查询的顺序,中断优先权的排列顺序依次为:
28、T0,也就是说,定时检测的优先权高于温度超限,这与题目要求不符,因此,应该将和设定为高优先级,将T0设定为低优先级,所以IP为:IP0000101即:IP=05H初始化程序如下:ORG0000HAJMP MAINORG0003H;外中断中断入口地址 AJMP W1ORG000BH;外中断T0中断入口地址 AJMP W2ORG0013H;外中断中断入口地址 AJMP W3ORG0050H;主程序MAIN: MOVIP,#05H;设置中断优先级MOVIE,#87H;选择开放中断源HERE: SJMPHERE;等待中断7-2 设MCS-51单片机的晶振频率为6MHz,若要求定时值分别为0.1ms,1
29、ms,5ms,定时器T0工作在方式0、方式1和方式2时,其定时器初值各应是多少?5ms方式0错误较多:6318H?另外, (8192-x)*2=100 x=8142=1111111001110= ( 8192-x)*2=1000 x=7692=1111000001100=(8192-x)*2=5000 x=5692=10110001 11100B=0B1H 1CH答:定时初值如表6-3:表6-3 定时器初值时间方式0.1ms1ms5msTH0TL0TH0TL0TH0TL0方式00FEH0EH0F0H0CH0B1H1CH方式10FFH0CEH0FEH0CH0F6H3CH方式20CEH0CEH无法
30、一次实现定时,可用0.1ms循环10次无法一次实现定时,可用0.1ms循环50次有的同学方式2按照216-。7-3 MCS-51单片机的晶振频率为12MHz,使用单片机的内部定时方式在P1.0引脚产生频率为10KHz的方波信号。(好多缺乏计算过程)答:(1) 首先选择工作方式:由于是方波,所以高、低电平各占一个周期的一半时间,方波频率为10KHz,周期是:1/(10103)s=100us,则高、低电平的定时时间都是:100us/2=50us,可以选择定时器T0以工作方式2来产生连续方波。(2) 计算初值:机器周期:Tm=121/(12106)s=1us,则定时初值:x=最大计数值-(定时时间t
31、/机器周期Tm)=256-50/1=206=0CEH(3) 确定控制字TMODGATEM1M0GATEM1M000000010即:TMOD=02H(4) 选择P1.0输出方波信号,编写程序如下: ORG 0000HRESET:AJMPMAIN;复位后转主程序 ORG 000BHAJMPIT0P ;转T0中断服务程序 ORG 0100HMAIN:MOV SP, #60HMOV TMOD,#02H ;设置T0的方式2MOV TH0, #0CEH ;设置计数初值MOV TL0,#0CEH SETBET0 ;允许T0中断SETBEA ;CPU开放中断SETB TR0 ;启动定时器MOV IE,#00H
32、(查询方式是正确的)LOOP: SJMP LOOP ;等待中断ORG 0200HIT0P: CPLP1.0;输出方波信号RETI7-4 设MCS-51单片机的晶振频率为6MHz,使用定时器T1的定时方式1,在P1.0输出周期为20us、占空比为60%的矩形脉冲,以查询方式编写程序。(好多缺乏计算过程)答:(1) 题目中指定了定时器T1的定时方式1(2) 计算初值:机器周期Tm=121/(6106)s=2us,周期为20us、占空比为60%的矩形脉冲的高电平持续时间为:2060%=12us,低电平持续时间为:20(1-60%)=8us,则定时初值X高=最大计数值-(定时时间t/机器周期Tm)=2
33、16-(12/2)=65529,所以TH1高=11111111=0FFH,TL1高=11111010=0FAH,同理可求得:所以TH1低=11111111=0FFH,TL1低=1111100=0FCH213-(12/2)= ,TH1高=1111 1111=0F8H,TL1高=11111001=0FAH;213-(8/2)=,TH1高=1111 1111=0F8H,TL1高=11111001=0FCH(3) 确定控制字TMODGATEM1M0GATEM1M000010000即:TMOD=10H(4) 编写程序: ORG 0100HMAIN:MOV SP, #60H MOV TMOD,#10H ;
34、设置T1工作于方式1定时SETB TR1 ;启动定时器(此处为何可以先启动定时?)LOOPH:MOV TH1, #0FFH(#0F8H) ;设置高电平定时初值MOV TL1,#0FAH SETB P1.0 ;输出高电平LOOP: JBC TFl,LOOPl ;查询定时溢出位TFl此处要注意:必须采用JBC AJMP LOOP LOOPl: JB P1.0,LOOPL;判断高、低电平AJMP LOOPHLOOPL:MOV THl,#0F8H (#0FFH) ;设置低电平定时初值 MOV TLl,#0FCH CLR Pl.0 ;输出低电平 AJMP LOOP 7-5 设MCS-51单片机的晶振频率
35、为12MHz,T0用于20ms定时,T1用于100次计数,T0和T1均要求重复工作。(1)外部计数脉冲应从何引脚输入?(2)试根据上述要求编写程序。答:(1)外部计数脉冲应从T1(P3.5)引脚输入。(2)程序设计1) 题目中指定了使用T0做为定时器,由于定时时间较长,我们可以选择它的工作方式1,使用T1做为计数器,选择T1的工作方式22) 计算初值:机器周期Tm=121/(12106)s=1us,则20ms定时的定时初值X=最大计数值-(定时时间t/机器周期Tm)=216-(20103/1)=45536,所以TH0=0B1HH,TL0=0E0H,100次计数的计数初值X=最大计数值-计数个数
36、=256-100=156,所以TH1=TL1=9CH3) 确定控制字TMODGATEM1M0GATEM1M001100001即:TMOD=61H4) 编写程序: ORG 0000HRESET:AJMPMAIN;复位后转主程序 ORG 000BHAJMPIT0P ;转T0中断服务程序 ORG 001BHAJMPIT1P ;转T1中断服务程序 ORG 0100HMAIN: MOV SP, #60HMOV TMOD,#61H ;设置定时器T0方式1,计数器T1方式2MOV TH0, #0B1H ;设置定时初值MOV TL0, #0E0H MOV TH1, #09CH ;设置计数初值MOV TL1,#
37、09CH SETBET0 ;允许T0中断SETBET1 ;允许T1中断SETBEA ;CPU开放中断SETB TR0 ;启动定时器SETB TR1 ;启动计数器LOOP: SJMP LOOP ;等待中断IT0P: T0定时中断服务程序(有同学CLR TR0)MOV TH0,#B1HMOV TL0,#0E0H(CPL P1.0)RETI IT1P: T1计数中断服务程序有的同学: IT1P: T1计数中断服务程序 MOV CLR TR1, SETB TR0, SETB ET0 RETI5-7设有一个8051单片机系统片外扩展了RAM,请编写将片内RAM中从30H单元开始的10个字节单元内容依次移
38、到片外RAM从0100H单元开始的10个字节单元中的程序。解:程序如下: MOV R0, #30H MOV DPTR, #0100H(MOV R1,#0100H) MOV R7, #0AH(MOV RT,#0AH)LOOP: MOV A, R0 MOVX DPTR, A MOVX DPTR,R1 INC R0 INC DPTR DJNZ R7, LOOPHERE: SJMP HERE有同学通过先将01H送P2口,然后用低8位做间接寻址送出也可以5-8、图4-11给出的是8031单片机以总线形式扩展四片8KB8位存储器芯片连线示意图,请计算每片存储器芯片的地址范围。 图4-11 8031扩展4片存储器芯片连接示意图答:根据译码器74LS138的真值表,当四个芯片分别被选中时,计算出四个芯片的地址为:选中的芯片:0000H1FFFH; 选中的芯片:2000H3FFFH选中的芯片:4000H5FFFH; 选中的芯片:6000H7FFFH(有同学:8000H-9FFFH)