单片微型计算机原理和接口技术习题解答赖修琳.docx

上传人:b****3 文档编号:6040915 上传时间:2023-05-09 格式:DOCX 页数:31 大小:47.85KB
下载 相关 举报
单片微型计算机原理和接口技术习题解答赖修琳.docx_第1页
第1页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第2页
第2页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第3页
第3页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第4页
第4页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第5页
第5页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第6页
第6页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第7页
第7页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第8页
第8页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第9页
第9页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第10页
第10页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第11页
第11页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第12页
第12页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第13页
第13页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第14页
第14页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第15页
第15页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第16页
第16页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第17页
第17页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第18页
第18页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第19页
第19页 / 共31页
单片微型计算机原理和接口技术习题解答赖修琳.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片微型计算机原理和接口技术习题解答赖修琳.docx

《单片微型计算机原理和接口技术习题解答赖修琳.docx》由会员分享,可在线阅读,更多相关《单片微型计算机原理和接口技术习题解答赖修琳.docx(31页珍藏版)》请在冰点文库上搜索。

单片微型计算机原理和接口技术习题解答赖修琳.docx

单片微型计算机原理和接口技术习题解答赖修琳

<1.1>

单片机是指单一集成电路芯片,是集成的微型计算机,其包含中央处理器CPU、内存MEM和输入输出I/O三部分。

而个人计算机至少包含显示器和键盘,其核心部分也包含CPU、MEM和I/O,也可以用单片机制作个人计算机。

注:

个人计算机强调人机交互操作,而单片机主要应用于自动控制。

现代的个人计算机内存容量比较大,一般都超过1MBRAM,难以集成到单片机中,所以个人计算机的内存MEM都采用独立的MEM芯片。

<1.2>

单片机由于集成在单一芯片上,所以高可靠性是其最主要的特点。

单片机由于CPU、MEM和I/O的差别,种类繁多,能适应各种各样的要求,性价比极高。

<1.3>

1)民用智能家电;2)个人移动电子设备:

电子表,手机,MP3;3)工业智能测控;4)农业,医疗,军事;5)计算机网络设备

<1.4>

1)CPU;2)I/O:

定时计数器、普通I/O、串行通信;3)MEN:

FLASH+RAM

<1.5>

第13页。

计算机各组成部分的信息传输的一组公共线路。

总线分为片总线,内总线,和外总线。

采用总线方便系统的功能扩充。

<1.6>

CPU读存储器的过程:

1)送出地址2)读信息有效3)存储器对应单元的数据输出到总线4)CPU取得数据5)结束读信号地址。

CPU写存储器的过程:

1)送出地址,选择存储器对应单元2)送出数据3)输出有效写信号4)结束写信号5)结束数据和地址信号。

<1.7>

B、D、H;十进制。

<1.8>

该题目的意思应该是8位二进制数。

无符号书0~255,带符号数通常是补码:

-128~127;BCD码是指压缩BCD码:

00~99。

<1.9>

这是一个7位二进制书,补码是-110111B=-37H=-(48+7)=-55。

无符号二进制数是49H=4*16+9=73。

‘A’的ASCII码是41H,49H既是字母‘I’,BCD码是49.

<1.10>

电脑型电饭锅,电子表。

<1.11>

第15页,1)程序地址指针寄存器(PC或AR)的内容输出到地址总线,选择程序存储器单元;2)控制单元输出读信号;3)存储器输出指令内容到数据总线;4)CPU将指令内容存入CPU指令寄存器;5)PC指针加一;6)指令译码;7)执行指令。

<1.12>

1)24+23+22+21+20+2-2=16+8+2+1+0.25=27.25

2)256-43+2-1=100H-2BH+2-1=.1B=0D5.8H

3)126=128-2=80H-02H=7EH

4)111=128-17=80H-11H=6FH=01101111B

5)7542

6)5923H=0101100100100011B

7)-(100H-85H)=-7BH=-(7*16+11)=-123

8)-112=100H-70H=90H

9)84H=-(100H-84H)=-7CH=-124

<2-1>

(1)8位CPU

(2)程序存储器8KFlash

(3)256B内部RAM

(4)4个8位I/O端口

(5)3个16位定时/计数器

(6)6个中断源

(7)1个串行接口

<2-2>

(1)4*8=32根I/O线

(2)P0是数据线和低8位地址线的分时复用总线

P2是高8位地址总线

P3.6和P3.7是外扩RAM的读写信号线

(3)地址总线16位,数据总线8位

<2-3>(35页)

(1)难记可以列举。

最多128个通用PSW,A,B,SP,DPH,DPL

T0:

TH0,TL0

T1:

TH1,TL1

中断:

IE,IP

I/O:

P0,P1,P2,P3

串口:

SCON,SBUF

电源:

PCON

T2:

TH2,TL2;RCAP2H,RCAP2L;T2CON,T2MOD;

难点:

WDTRST;AUXR;AUXR1;DP0L,DP0H;DP1L;DP1H

(2)问题是分组的方法:

可按

(1)的方式分组

(3)内容太多,不列举。

<2-4>

(1)内部RAM:

00~FFHSFR:

80H~FFH

RAM又分成:

寄存器区00~1FH

位寻址区20H~2FH

通用RAM30H~FFH

(2)各区域寻址方式有差别

<2-5>

RESET:

高电平复位;

ALE:

外部低8位地址有效

PSEN:

取代码有效(外部);

EA:

选择内外程序存储器

INT0,INT1,T0,T1,RD,WR,X0/X1晶振

<2-6>

节电是CPU无时钟而停止工作,其它部分正常。

掉电是所有部分无时钟,振停。

因为电池容量有限,要延长便携设备的工作时间,节电尤其重要。

<2-7>

通常有冷启动上电复位,热启动手动复位,以及看门狗复位。

冷启动复位后,程序指针PC的值是确定的(PC)=0000H,其次是中断允许EA=0;P0=P1=P2=P3=0xFF。

RAM的值是随机值,一般还有堆栈指针(SP)=0x07;(PSW)=00H.

而热启动和看门狗复位时,除RAM保持复位前的值外,其它寄存器的值同上。

<2-8>

AT89S52采用的是哈佛结构,程序和数据存储是独立的,它们共用地址数据总线,但是通过分时共享,PSEN信号有效时取程序空间,而WR和RD有效时取数据空间,PSEN,WR和RD三个信号任何时刻最多仅一个有效。

<2-9>

后进先出或先进后出的队列称为堆栈。

AT89S52的堆栈设在内部RAM数据区;SP是堆栈指针;存取数据的原则是先将SP增一再存入数据,取数时根据SP取数后将SP减一。

<2-10>

DPTR是数据指针寄存器。

用于存取外部数据RAM和程序空间的数据,由DPH和DPL组成。

<2-11>

PC:

16位,但不在SFR区域中。

见page38最后一段。

<2-12>

有4组工作寄存器;8个;PSW寄存器中的RS1和RS0位。

<3-1>

假设晶体频率为12MHZ,任何时候只有一个灯亮,每延时一定时间换一盏灯。

由于没学过51的汇编,可用C语言实现。

#include

VoidDelay(void)

Voidmain(void)

inti;

P1=0xFF;

P2=0xFF;

While

{

P1=0xFE;Delay();//p1.0灯亮

P1=0xFD;Delay();//p1.1灯亮

.

.

.

P1=0xFF;//p1所有灯灭

P2=0xFE;Delay();//p2.0灯亮

.

.

.

P2=0x7E;Delay();//p2.7灯亮

P2=0xFF;//p2所有灯灭

}

}

VoidDelay(void)//延时

{

inti,j;

for(i=0;i<1000;i++)

for(j=0;j<1000;j++)

}

<3-2>

在p3.0引脚上设一键,按下为0,开机后判断p3.0的状态决定流水方向。

if(p3&0x01)//只判p3最低位

LoopUpDown();

else

LoopDownUp();

<3-3>

书中没有介绍数码管的工作原理,自己查资料完成。

<3-4>同上

<3-5>同上

提示:

自学5.2.3,习题集中应预习相关内容。

<4-1>

汇编指令中存取数据的方式或数据所在地址的方式(见page74:

表4-1)

(1)立即数:

程序空间

(2)直接地址:

RAM:

00~7FH,SFR:

80H~FFH

(3)间接地址:

RAM:

00~FFH,外部RAM

(4)变址:

程序

(5)寄存器:

A,DPTR,R0~R7,乘除法中得B,位寻址的C

(6)相对:

程序

(7)位寻址:

内部RAM:

20~2FH;SFR中被8整除的字节

<4-2>

255条(111条不科学)page74

(1)移动;

(2)算术;(3)逻辑;(4)位操作;(5)控制

每类包括的指令不好记忆

指令[操作数1[操作数2[操作数3]]]

CJNEA,#55,NEXT

控制指令,累加器A中得内容不是55时转移到NEXT

<4-3>

MOVR2,#5

MOVR0,#30H

MOVDPTR,#100H

LOOP:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,LOOP1

MOVR2,#10

MOVDPTR,#2000H

MOVR0,#40H

LOOP2:

MOVXA,@DPTR

MOV@R0,A

INCDPTR

INCR0

DJNZR2,LOOP2

<4-4>

MOVR2,#6

MOVDPTR,#1000H

MOVR0,#0

LOOP:

MOVP2,#20H

MOVXA,@R0

MOVP2,#30H

MOVX@R0,A

CLRA

MOVCA,@A+DPTR

MOVP2,#20H

MOVX@R0,A

INCR0

INCDPTR

DJNZR2,LOOP

<4-5>

CLRC

MOVA,51H

SUBBA,41H

MOV31H,A

MOVA,50H

SUBBA,40H

MOV30H,A

<4-6>

MOVDPTR,#1000HINCDPTR

MOVA,30HMOVA,31H

ADDA,40HADDCA,41H

DAADAA

MOVX@DPTR,AMOVX@DPTR,A

<4-7>

设低8位存R6,高8位存R5

MOVA,R3

MOVB,R4

MULAB

MOVR5,B

MOVR6,A

<4-8>

MOVA,20H

ANLA,21H

ORLA,22H

XRLA,23H

ADDA,ACC

CPLA

MOV25H,A

<4-9>

MOVR0,#30H

MOVR2,#20

MOVB,#0

LOOP:

CJNZ@R0,#‘W’,NEXT

INCB

NEXT:

INCR0

DJNZR2,LOOP

MOVA,B

JZNEXT2

MOVA,#‘Y’

SJMPNEXT3

NEXT2:

MOVA,#‘N’

NEXT3:

NOP

<4-10>

MOVA,30H

MOVB,#10H

DIVAB//拆分BCD码,分别存入A,B

MOLAB

DAA

MOV31H,A

MOVB,#10

DIVA,B

SWAPA

ORLA,B

SWAPA

<4-11>

当在30H区域找到一个最小值时,将相应单元置成FFH。

从小到大找完后,再移动到50H区域。

B保存最小值

MOVR3,#10

LOOP2:

MOVR1,#40H

MOVR2,#10

MOVR0,#30H

MOVA,#0FFH

LOOP1:

MOVB,@R0

CJNEA,B,$+3

JNC

MOVA,@R0

MOVDPH,R0;记忆地址

INCRO

DJNZR2,LOOP1

MOV@R1,A

MOVR0,DPH

MOV@R0,#0FFH

INCR1

DJNZR3,LOOP2:

倒转40H区域到50H区域

MOVR2,#10

MOVR0,#40H

MOVR1,#50+9

LOOP3:

MOVA,@R0

MOV@R1,A

INCR0

DECR1,LOOP

<4-12>

MOVA,30H

MOVB,#10

DIVA,B

MOV40H,A

MOVA,B

MOVB,#10

DIVA,B

MOV41H,A

MOV42H,B

<4-13>

MOVR2,#10

MOVR0,#40H

MOVR1,#50H

LOOP:

MOVA,@R0

ADDA,#’0’

MOV@R1,A

INCR0

INCR1

DJNZR2,LOOP

<4-14>

MOVR2,#16

MOVR0,#30H

MOVR1,#40H

LOOP:

MOVA,@R0

CJNEA,#0AH,$+3

JNCNEXT1

ADDA,#’0’

SJMPNEXT2

NEXT1:

ADDA,#‘A’-0AH

NEXT2:

MOV@R1,A

INCR0

INCR1

DJNZR2,LOOP

<4-15>

MOVR2,#30H

MOVDPTR,#2000H

MOVP2,#10H

MOVR0,#00H

MOVR1,#30H

LOOP:

MOVA,@DPTR

MOV@R1,A

MOVX@R0,A

CLRA

MOVX@DPTR,A

INCDPTR

INCR1

INVR0

DJNZR2,LOOP2

<5-1>

由于p0~p3是准双向口,作为输入时首先应输出高电平。

<5-2>

(1)本题的LED应该指数码管,多个LED可以静态,也可以动态显示。

(2)该题中的“基本原理”不明确,应该指动态数码管的显示原理。

其原理是分时动态扫描每支LED,所有LED每秒至少要显示25次,利用人眼的视觉特性实现同时显示的现象。

(3)静态显示不存在该问题,所以此处仍指动态显示方式。

其他操作是指无法保证LED的扫描显示,可以理解应用定时中断实现动态扫描?

<5-3>

题目不明确,何为“简易键盘”?

应给出连线图。

(1)独立按键:

中断,查询

(2)矩阵键盘:

扫描

<5-4>

P0要外接上拉电阻(通常情况,保证与P1~P3相同)

<5-5>

P0是数据总线与低8位地址总线的复用总线,当ALE为高时,P0为A0~A7,当ALE为低时P0为D0~D7,P2是高8位地址总线。

<5-6>

P3.0:

RXD串行口接收信号输入

P3.1:

TXD串行口发送信号输出

P3.2:

INT0外部中断输入0

P3.3:

INT1外部中断输入1

P3.4:

T0计数器的输入时钟

P3.5:

T1计数器的输入时钟

P3.6:

WR外部扩展RAM的写信号

P3.7:

RD外部扩展RAM的读信号

<5-7>

由于有6位数,静态方式要较多的硬件,所以采用动态方式。

采用共阴数码管,P1接段选,P2接字选即可。

如果亮度不够,可在P1接上拉电阻,增加驱动电流。

ORG0000H

LOOP:

MOVP1,#(1的代码)

MOVP2,#11111110B

LCALLDELAY

.

.

.

MOVP1,#(2的代码)

MOVP2,#11011111B

LCALLDELAY

LJMPLOOP

DELAY:

MOVR6,#100

DELAY1:

MOVR7,#100

DJNZR6,DELAY1

RET

END

<5-8>

在P1接静态数码管(共阴)。

在P2和P3接10个独立按键。

ORG0000H

MOVP2,#0FFH

MOVP3,#0FFH

LOOP:

JBP2.0,LOOP1

MOVP1,#(0代码)

LJMPLOOP

LOOP1:

JBP2.1,LOOP2

MOVP1,#(1代码)

JMPLOOP

.

.

.

JBP3.0

MOVP1,#(8...)

LJMPLOOP

JBP3.1

MOVP1,#(9...)

LJMPLOOP

END

<5-9>

1ms=800us+200us=200us*(4+1)

ORG0000H

LOOP:

SETBP1.0

LCALLDELAY200

LCALLDELAY200

LCALLDELAY200

LCALLDELAY200

CLRP1.0

LCALLDELAY200

SJMPLOOP

DELAY:

MOVR2,#100

DJNER2,DELAY

RET

END

修正时R2值可以改为98

<5-10>

大题,超难。

字符‘B’应改为‘b’

P1段选,P0字选,共阴动态

P2和P3独立按键

4位数存入30H~33H/40H~43H

ORG000H

MOVR0,#30H

MOVR2,#4

LCALLKeyIn;显示

LCALLCompare;得证不重复

JZ

MOV@R0

INCR0

DJNER2

K设置显示

同上输入40H~43H

比较30H~33H/40H~43H,求得A参数

求得B参数

显示A、B参数

A参数不为4

结束

<5-11>

在P1和P2端口上接两个共阴数码管(静态),酒瓶通过信号接到P3.2,输出脉冲接P3.3。

当有酒瓶通过时,光线被遮挡,光敏三极管截止,P3.2为高电平,否则P3.2为低电平。

30H单元存酒瓶计数值。

设晶体频率为12MHz

ORG0000H

Start:

MOV30H,#0;开始0瓶

Loop:

LCALLSHOW

JNBP3.2,$

JBP3.2,$

INC30H

LCALLSHOW

MOVA,30H

CJNEA,#12,Loop

SETBP3.3

MOVR7,#100

Loop1:

MOVR6,#100

Loop2:

MOVR5,#50

DJNER5,$

DJNER6,Loop2

DJNER7,Loop1

CLRP3.3

LJMPStart

END

<6-1>

处理器在执行正常程序过程中,发生某一事件,需要处理器暂停当前的程序,转而去处理突发事件。

这种现象称为中断。

中断的主要功能是解决突发事件的处理能力。

<6-2>

6个中断源

X0:

0003H

T0:

000BH

X1:

0013H

T1:

001BH

RS:

0023H

T2:

002BH

补充说明:

中断向量通常是可改变的地址,放在之指定位置表中,中断入口是固定不变的。

本题应该是中断入口,而非中断向量。

<6-3>

当处理器在处理某中断事件时,又再次被另一个中断事件中断,也就是新事件的中断级比之前的中断高。

这种处理器中则支持不同级别的中断,这就是中断优先级别的问题。

单片机中存在同级别的自然优先权问题和不同优先级问题高级别的中断将中断低级别中断,发生中断嵌套现象。

<6-4>

MOVIP,#0

SETBPT2

SETBEX0

SETBEX1

SETBET2

SETBES

SETBEA

<6-5>

TF0,TF1,IE0,IE1,TF2,RI,TI,TF0,TF1在中断服务返回时自动清零。

IE0,和IE1都工作在下降沿方式时,中断返回时自动清零。

而TF2,RI,TI必须通过软件清零。

<6-6>

产生了中断请求

允许了该中断

允许CPU中断,即EA=1

当前CPU没有在中断服务或正在服务的中断级别比该中断级别低

执行完了一条制定,如果是RETI指令或是处理中断IE,IP允许的指令,必须还要执行一条指令。

<6-7>

中断请求

CPU响应中断

保护现场

中断服务

恢复现场

中断返回

<6-8>

将X0或X1置为电平中断方式,扩展中断源相与输入,同时各扩展源通过I/O并口输入查询

将T0,T1,T2改为计数器方式中断,计数值为-1

<6-9>

RETI

操作IE和IP的指令

<6-10>?

之前计算机智能按指令批量处理,不能实现人机交互工作。

中断概念的提出,才让计算机能解决实时事件。

<6-11>

烧水设一气阀,烧开时触发一开关,变换成电压信号低电平,接P3.2产生中断,单片机响应中断后关电源或燃气阀,同时输出报警信号。

<6-12>?

降低了系统的效率和实际性

<6-13>

可屏蔽中断是指通过指令可关闭被开放的中断,而非屏蔽中断,是指一但开放后,无法通过指令关闭的中断,非屏蔽中断常用于一些非处理不可的突发事件,比如掉电要保护当前数据等。

<6-14>

两者都让CPU执行指定地址的指令。

但复位时CPU内很长寄存器被置为固定值。

而中断在执行指定地址的指令前,会将当前的PC值压栈,而且不影响硬件。

<6-15>

中断入口是指某中断产生中断请求后,CPU响应中断直接转入到固定地址,该地址即为中断入口。

而中断矢量是指CPU响应中断时,CPU从某向量表中取得一运行地址,该地址通常可通过软件修改设置。

<6-16>

电平中断适用那些通过软件方式可以清除的中断。

而边沿中断适合事件记录,即使CPU响应中断后该中断信号已消失,但这种中断能记忆曾经发生过的中断。

<6-17>

如果首先出现的中断还没消失,而又产生了第二个中断,且在CPU响应中断之前所有中断都消失了,这样采用边沿中断,但无法查出某个扩展中断产生过。

<7-1>

有3个,T0,T1,T2

T0有4中工作方式。

方式0为13位非重载;方式1为16为非自动重载;方式2为8为自动重载;方式3为双8为两计数器。

T1有3中工作方式,无T0的方式3。

T2有16位重载方式或工作在捕获模式。

<7-2>

此题目有问题。

T1无方式3。

T0工作在方式3时,T1通常工作在方式2作为串口的速率发生器。

此时T0的TH08位计数器将使用T1的TR1,TF1标志控制位,工作于定时器模式。

<7-3>

通过T2CON中的RCLK和TCLK进行设置,为1时用T2产生波特率,否则用T1产生波特率,只要两者不同,就可以用T1和T2分别产生收发速率,从而实现串口收发速率不相同的功能。

<7-4>

初始化时让T1工作在计数器方式1,而T0工作在定时器方式1,初始值分别为-1000和-2000.首先启动T1,当T1产生溢出后启动T0,到T0产生溢出时,重复上述过程即可。

ORG0000H

Loop:

MOVTCON,#0

MOVTMOD,#01010001B

MOVTH1,#high(-1000)

MOVTL1,#low(-1000)

MOVTH0,#high(-2000)

MOVTL0,#low(-2000)

SETBTR1

JNBTF1,$

SETBTR0

JNBTF0,$

LJMPLoop

END

<7-5>

由于对精度没有要求,可用T0工作在定时方式1,实现计时,每次定时2.5ms

ORG0000H

MOVTCON,#01H

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2