《单片机原理及应用》课外练习.docx

上传人:b****8 文档编号:9918701 上传时间:2023-02-07 格式:DOCX 页数:17 大小:32.40KB
下载 相关 举报
《单片机原理及应用》课外练习.docx_第1页
第1页 / 共17页
《单片机原理及应用》课外练习.docx_第2页
第2页 / 共17页
《单片机原理及应用》课外练习.docx_第3页
第3页 / 共17页
《单片机原理及应用》课外练习.docx_第4页
第4页 / 共17页
《单片机原理及应用》课外练习.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《单片机原理及应用》课外练习.docx

《《单片机原理及应用》课外练习.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》课外练习.docx(17页珍藏版)》请在冰豆网上搜索。

《单片机原理及应用》课外练习.docx

《单片机原理及应用》课外练习

《单片机原理及应用》------------课外练习题目答案

一:

基础部份:

1:

什么叫单片机?

答:

所谓单片机就是把CPU和一定容量的存储器(RAM和ROM),中断系统,一些并串口电路及定时器/计数器集成在一块芯片上。

2:

什么叫原码?

反码?

补码?

答:

原码:

凡正数的符号位用0表示,负数的符号位用1表示,而数值位保持原样的机器数称为原码。

反码:

正数的反码和原码相同,负数的反码是符号位不变,数值位按值取反。

补码:

正数的补码与正数的原码相同,负数的补码是由它的反码在末位加1得到。

3:

什么叫溢出?

8位符号数X,Y,X=+60,Y=+70,相加是否会溢出。

答:

所谓溢出是指参加运算的操作数或操作结果的绝对值超出计算装置的范围时,就称为溢出。

由于X+Y=130超过了+127所以会溢出。

4:

总线有哪几种类型,各作用又是什么?

答:

总线有以下类型:

1:

数据总线。

 2:

地址总线,3:

控制总线。

数据总线用于传送数据信息。

地址总线用于传送地址信息

控制总线用于传送控制命令。

5:

单片机有哪五个主要部分组成。

答:

1:

运算器2:

控制器3:

 存储器4:

输入设备5:

输出设备

6:

什么叫全双工的传输方式。

MCS-51是不是全双工通信接口。

答:

允许数据同时沿两个方向传送。

MCS-51的通信接口是全双工的通信接口

7:

MCS51有那些中断源,各中断源的中断服务程序入地址在分别在哪.

MCS51有以下5个中断源。

1:

外部中断0入口地址0003h

2:

定时器0中断入口地址000Bh

3:

外部中断1入口地址0013h

4:

定时器1中断入口地址001Bh

5:

串口中断入口地址0023h

8:

如果外部中断零允许中断,怎么初始化。

第一步:

设置外部中断0的中断方式。

第二步:

开外部0中断

9:

如果定时器0工作在中断方式,要怎么初始化,定时器的初值随意。

第一步:

初始化定时器的初值

第二步:

初始化定时器零的工作方式

第三步:

开定时器0的中断

10:

简要说明串口是怎么发送一个数据,是怎么接收一个数据。

答:

初始化串口以后,往SBUF写一个数据,串口会自动把SBUF中的数据发出。

当RI=1时,读SBUF中的数据,就是接收到的串口数据。

 

二:

判断题:

在对的地方打(√),在错的地方打(X)。

1:

MOVA,11H,是直接寻址。

(√)。

2:

MOVA,R0,是寄存器寻址。

(√)。

3:

MOVA,#22H,SUBBA,#11H,Cy=1(x)。

4:

MOVA,@R0是寄存器间接寻址(√)。

5:

MOVA,#11H是立即数寻址(√)。

6:

MOVDPTR,#TABLE

MOVA,#01

RLA

JMP@A+DPTR

TABLE:

AJMPPRG0

AJMPPRG1

AJMPPRG2

AJMPPRG3

程序会执行到这条指令AJMPPRG0(X)。

7:

MOVR4,#5

LOOP:

NOP

DJNZR4,LOOP

MOVA,R4

(A)=0(√)。

8:

已知(CY)=0,

JCLOOP1

NOP

NOP

AJMPLOOP2

LOOP1:

NOP

NOP

LOOP2:

NOP

NOP

程序会执行到LOOP1(X)

9:

MOVA,#11H

ANLA,#FFH

(A)=11H(√)

10:

MOVA,#11H

ORLA,#FFH

(A)=11H(X)

 

三:

填空题:

1:

假定外部数据存储器1000H单元的内容为60H,执行下列指令后,累加器A的内容为(61H)。

MOVDPTR,#1000H

MOVA,#00H

MOVXA,@DPTR

ADDA,#01H

2:

假设外部数据存储器1000H单元的内容为10H,1001H的单元内容为20H,执行下列指令后,累加器A的内容为(30H)。

MOVDPTR,1000H

MOVXA,@DPTR

MOVR1,A

INCDPTR

MOVXA,@DPTR

ADDA,R1

3:

A=8AH,(R1)=B2H,执行指令ADDA,R1后,(A)=,(AC)=,(CY)=,(OV)=。

(A)=3CH,(AC)=0,(CY)=1,(OV)=1.

4:

(R1)=30H,(A)=2BH,(30H)=6AH,执行指令后XCHDA@R1,(R1)=,(A)=,(30H)=。

(R1)=30H,(A)=2AH,(30H)=6BH

5:

设(A)=04H,(CY)=1,

RLA,A=,A=08H

RRA,A=,A=02H

RLCA,A=,A=09H

RRCA,A=。

A=82H

6:

(A)=7AH,(R0)=30H,(30H)=A5H,(CY)=1,写出下列各条指令的结果。

MOVA,R0(A)=30H(R0)=30H

XCHA,R0(A)=30H(R0)=30H

XCHDA,@R0(A)=A5H(R0)=30H(30H)=30H

ADDA,#30H(A)=D5H(CY)=1

ADDCA,30H(A)=06H(CY)=1

SUBBA,#30H(A)=D5H(CY)=1

7:

将真值+1001001写成,原码反码及补码。

原码(01001001)反码(00110110)补码(01001001)

8:

将真值-1001101写成,原码反码及补码。

原码(11001101)反码(10110010)补码(10110011)

9:

将58转化成二进制,十六进制。

二进制(111010)十六进制(3AH)

10:

将200转化成二进制,十六进制。

二进制(11001000)十六进制(C8H)

11:

当串口接收到一个数据,此时RI=

(1),当串口发送完一个数据,此时TI=

(1);

12:

MOVR4,#6

LOOP:

NOP

DJNZR4,LOOP

MOVA,R4

(A)=(00H)。

13:

MOVA,#13H

INCA

INCA

ADDA,#11H

(A)=(26H)。

14:

MOVA,#11H

CJNEA,#11H,LOOP

MOVR1,#22H

AJMPLOOP1

LOOP:

MOVR1,#11H.

LOOP1:

(R1)=(22H)。

15:

MOVSP,#60H

MOVA,#30H

MOVB,#70H

PUSHACC

PUSHB

SP=(62H),61H单元的内容为(30H),62H单元的内容为(70H);

16:

MOVA,#33H

ANLA,#0FH

(A)=(03H);

17:

MOVA,#00H

XRLA,#FFH

(A)=(FFH);

18:

MOVA,#0FH

CPLA

(A)=(F0H)

19MOVA,#01H

RLA

(A)=2

 

20(CY)=1;

MOVA,#01H

RRCA

(A)=(80H);

 

编程部分:

1:

设在外部RAM中有三个连续单元2001H,2002H,2003H,其中2001H和2002H单元中分别存放两个8位无符号二进制数,比较这两个数的大小,然后将大数送到2003H单元。

ORG0000H

ACALLcompare

Wait:

Ajmpwait;

Compare:

movDPTR,#2001h

movxa,@dptr

movr0,a

incdptr

movxa,@dptr

subba,r0

jncloop

mova,r0

incdptr

movx@dptr,a

ret

loop:

incdptr

movx@dptr,a

ret

2:

将内部RAM40H开始的10个单元,搬移到50H开始的10个单元中。

Org0000h

Acallmovedata:

Wait:

Ajmpwait

Movdata:

movr0,#40h

movr1,#50h

movr2,#10

loop1:

mova,@r0

mov@r1,a

incr0

incr1

djnzr2,loop1

ret

3:

设单片机晶振频率为12Mhz,使用定时器0,怎么样在P1.0引脚输出一个周期为1000us等宽的矩形波?

org0000H

AJMPMAIN

ORG000BH

AJMPT0_INT

MAIN:

MOVTH0,0xfe

MOVTL0,0x0b

MOVTMOD,#01H

SETBTR0

SETBET0

SETBEA

WAIT:

AJMPWAIT

T0_INT:

MOVTH0,0xfe

MOVTL0,0x0b

CPLP1.0

RETI

END

4:

设单片机晶振频率为12Mhz,怎么样让一个发光二极管以一秒周期闪烁。

发光二极管的控制脚用P1.3.

org0000H

AJMPMAIN

ORG000BH

AJMPT0_INT

MAIN:

MOVTH0,0xd8

MOVTL0,0xef

MOVTMOD,#01H

SETBTR0

SETBET0

SETBEA

MOV30H,#00H

WAIT:

AJMPWAIT

T0_INT:

MOVTH0,0xd8

MOVTL0,0xef

INC30H

MOVA,30H

CJNEA,#50,LOOP1

CPLP1.3

Mov30H,#00H

RETI

LOOP1:

RETI

END

4:

实现一个4个键盘的方法,画出硬件简略图.怎么实现都可以不限条件。

;键盘为1行四列

;p1.7为输出

;p1.0p1.1p1.2p1.3为输入

;键值放在20h单元

org0000H

mov20h,#00H

wait:

acallkey_input

ajmpwait

key_input:

jnbp1.0,key_0

jnbp1.1,key_1

jnbp1.2,key_2

jnbp1.3,key_3

ret

 

key_0:

acalldelay

jnbp1.0,get_key_0

mov20h,#00h

ret

get_key_0:

mov20h,#30h

ret

 

key_1:

acalldelay

jnbp1.1,get_key_1

mov20h,#00h

ret

get_key_1:

mov20h,#31h

ret

key_2:

acalldelay

jnbp1.2,get_key_2

mov20h,#00h

ret

get_key_2:

mov20h,#32h

ret

key_3:

acalldelay

jnbp1.0,get_key_3

mov20h,#00h

ret

get_key_3:

mov20h,#33h

ret

delay:

movr0,#0ffh;

delay2:

movr1,#22h

delay1:

djnzr1,delay1

djnzr0,delay2

ret

end

 

5:

设在外部RAM中有3个连续单元1000H,1001H,1002H,求这三个单元之和,和结果放在1004H1005H,低位放在1004H,高位放在1005H.

org0000H

;把1004h1005h单元内容清为零

acalladdthree:

wait:

ajmpwait

addthree:

movdptr,#1004h

mova,#00h

mov@dptra

incdptr

mov@dptr,a

;把1001单元内容存到r0

movdptr,#1001h

movxa,dptr

movr0,a

;把1002单元内容存到r1

incdptr

movxa,@dptr

movr1,a

;把1003单元内容存到a

incdptr

movxa,@dptr

;

adda,r0

movdptr,#1004h

movx@dptr,a

jcloop1

adda,r1

movx@dptr,a

jcloop2

ret

loop1:

;高位加1

movdptr,#1005h

mova,#01h

movx@dptr,a

movdptr,#1004h

movxa,@dptr

adda,r1

movx@dptr,a

jcloop2

ret

 

loop2:

;高位加1

movdptr,#1005h

movxa,@dptr

inca

movx@dptr,a

ret

6:

设在内部RAM中50H开始有连续的10个单元,求这10个单元之和,结果放在60H,61H,低位放在60H,高位在61H.

org0000H

acalladdten

wait:

ajmpwait

addten:

movr0,50h

movr1,#10

mova,#00h

mov60h,a

mov61h,a

loop1:

adda,@r0

incr0

mov60h,a

jcloop2

djnzr1,loop1

ret

loop2:

mova,61h;

adda,#01h

djnzr1,loop1

ret

end

7:

怎么让20H单元的内容低四位保持不变,高四位取反。

Org0000h

MovA,20H

XRLA,#f0h

Wait:

Ajmpwait

8:

有一个控制字保存在20H单元中,如果这个控制字的第八位为零,则P1.0端口输出为0,

如果这个控制字的第八位为1,则P1.0输出为1.

Org0000h

ACALLCONTROL:

WAIT:

AJMPWAIT

CONTROL:

Mova,20H

RLCA

JCLOOP

CLRP1.0

RET

LOOP:

SETBP1.0

RET

9:

 求出上面各芯片2764,6264,8255,0832的起始地址?

2764的起始地址为0000H

6264的起始地址为2000H

8255  的起始地址为5FFCH

0832的起始地址为7FFCH

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1