单片机习题及答案 联系客服

发布时间 : 星期日 文章单片机习题及答案更新完毕开始阅读

MOV A,30H JNZ BACK INC 31H BACK:POP RET1

9.利用89C51的P1口控制8个发光二极管LED。相邻的4个LED为一组,使2组每隔0.5S 交替发亮一次,周尔复始。试编写程序。 解: ORG 0100H MOV A,#0FH ABC: MOV P1,A ACALL D05 SWAP A SJMP ABC D05:MOV R6,250 DY: MOV R7,250 DAY:NOP NOP

DJNZ R6,DAY DJNZ R7,DAY RET END

10.设计89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,画出电路图,编出: (1)延时方式; (2)查询方式;

(3)中断方式中的一种程序。

解:IN2的地址为7FFAH,P1.0查询转换结束信号,查询程序如下: ORG 0100H MOV R7,#0AH MOV R0,#50H

MOV DPTR,#7FFAH NEXT: MOVX @DPTR,A JB P1.0,$

MOVX A,@DPTR MOV @R0,A INC R0

DJNZ NEXT SJMP $ 2-1选择题

1、6264芯片是(B)

(A) EEPROM (B)RAM(C)FLASH ROM (D)EPROM 2、MCS-51用串行扩展并行I/O口时,串行接口工作方式选择(A) (A) 方式0 (B)方式1 (C)方式2 (D)方式3 3、使用8255可以扩展出的I/O口线是(B)

(A) 16根 (B)24根 (C)22根 (D)32根

4、当8031外部扩展程序存储器8KB时,需使用EPROM 2716(C) () 2片 (B)3片 (C)4片 (D)5片

5、某种存储器芯片是8KB*4/片,那么它的地址线根数是(C) (A) 11根 (B)12根 (C)13根 (D)14根

6、MCS-51外扩ROM,RAM和I/O口时,它的数据总线是(A) (A) P0 (B)P1 (C)P2 (D)P3

7、当使用快速外部设备时,最好使用的输入/输出方式是(C) (A)中断 (B)条件传送 (C)DMA (D)无条件传送 8、MCS-51的中断源全部编程为同级时,优先级最高的是(D) (A) INT1 (B)TI (C)串行接口 (D)INT0

9、MCS-51的并行I/O口信息有两种读取方法:一种是读引脚,还有一种是(A) (A)读锁存器(B)读数据库 (C)读A累加器(D)读CPU 10、MCS-51的并行I/O口读-改-写操作,是针对该口的(D) (A)引脚 (B)片选信号 (C)地址线 (D)内部锁存器 2-2判断题

1、MCS-51外扩I/O口与外RAM是统一编址的。(对) 2、使用8751且EA=1时,仍可外扩64KB的程序存储器。(错)60KB 3、8155的复位引脚可与89C51的复位引脚直接相连。(对)

4、片内RAM与外部设备统一编址时,需要专门的输入/输出指令。(错)统一编址的特点正是无需专门的输入输出指令。

5、8031片内有程序存储器和数据存储器。(错)无程序存储器 6、EPROM的地址线为11条时,能访问的存储空间有4K。(错)2K. 7、8255A内部有3个8位并行口,即A口,B口,C口。(对)

8、8155芯片内具有256B的静态RAM,2个8位和1个6位的可编程并行I/O口,1个14位定时器等常用部件及地址锁存器。(对)

9、在单片机应用系统中,外部设备与外部数据存储器传送数据时,使用MOV指令。(错)用MOVX指令。

10、为了消除按键的抖动,常用的方法有硬件和软件两种方法。(对) 2-3简答题

1 8031的扩展存储器系统中,为什么P0口要接一个8位锁存器,而P2口却不接? 答:这是因为P0口是扩展储存器系统的多路低8位地址和数据总线,在访问外部存储器时,P0口分时用作输出外部储存器低8位地址和传送数据,为了在整个访问外部存储器期间,对外部存储器存在着有效的低8位地址信号,所以P0口需要外接一个地址锁存器。ALE信号就是用来把P0口输出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储器的低8位地址。而P2口只用作扩展存储器系统的高8位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。

2 在8031扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突? 答:这是因为外部程序存储器和外部数据存储器所使用的控制信号不同。对外部程序存储器的选读通是用PSEN控制线,而对外部数据存储器的读/写控制是用RD和WR读、写控制线,所以不会发生地址冲突。

3 8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?

答:8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。

4 试将8031单片机外接一片2716 EPROM和一片6116 RAM组成一个应用系统,请画出硬件连线图,并指出扩展存储器的地址范围。 答:2716是2K×8位的EPROM,6116是2K×8位的静态RAM,两者都仅需要11根地址线。由于没有规定地址范围,故可按最简单的方式来连接,即省去地址译码器,程序存储器的地址必须从0开始,基本地址为0000H—07FFH。数据存储器的地址为0000H—07FFH。控制线的连接为/PSEN控制EPROM的读出,/RD和/WR控制RAM的读写,两个芯片的片选端都固定接地,连线图如图所示。

5 简述可编程并行接口8255 A的内部结构?

答:8255 A的内部结构由三部分组成:总线接口部分,内部逻辑部分,外部接口部分。 (1) 总线接口部分 其中有数据总线驱动器,读/写控制逻辑 (2) 内部逻辑部分 由A组和B组控制电路。

(3) 外部接口部分 该部分有3个8位并行I/O端口,即A口、B口和C口。 2-4编程题

1 试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/计数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的 解:算得初值=5000 =1388H

MOV DPTR,#7F04 ;定时器低八位寄存器地址 DPTR MOV A,#88H ;低8位初值 A

MOVX @DPTR,A ; 低8位初值 低8位寄存器 INC DPTR ;DPTR指向定时器高8位 MOV A,#13H ;高8位初值 A

MOVX @DPTR,A ;高8位初值 高8位寄存器 MOV DPTR,#7F00H ;8155命令寄存器地址 DPTR MOV A,0C5H ;命令字 A

MOVX @DPTR,A ;命令字 命令寄存器

2 设单片机采用8051,未扩展片外ROM,片外RAM采用一片6116,编程将其片内ROM从0100H单元开始的10B的内容依次外接到片外RAM从100H单元开始的10B中去。 解: MOV R2,#00H ;源数据缓冲器地址偏移量00H A MOV R3,#0AH ;字节长度 R3

MOV DPTR,#0100H ;源数据缓冲区首地址 DPTR MOV A,R2 ;源地址偏移量 A MOVC A,@A+DPTR ;传送一个数据 MOVX @DPTR,A

INC DPTR ;源地址(目的地址)加1

DJNZ R3,L1 ;数据全部传送完?没传送完,转L1继续传送 SJMP $ ;结束

3 8031扩展8255A,将PA口设置成输入方式,PB口设置成输出方式,PC口设置成输出方式,给出初始化程序。

解: 根据题目要求,A口输入,B口输出,二者均采用工作方式0,则控制字为98H。编程如下:

MOV A,#98H ;方式控制字 A

MOV DPTR,#7FFFH ;选通控制寄存器

MOVX @TPTR,A ;方式控制字送入8255A MOV DPTR,#7FFCH

MOVX A,@DPTR ;读PA口数据 MOV DPTR,#7FFDH ;

MOVX @DPTR,A ;送PB口数据 4 设计一个2×2行列式键盘电路并编写键盘扫描子程序。 解: (1)2×2行列式键盘电路如图所示。 (2)键盘扫描子程序:

KEY1: ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下,转LK1 AJMP KEY1 ;无键按下,返回

LK1: ACALL T12MS ;调延时12ms子程序 ACALL KS1 ;查有无键按下

JNZ LK2 ;若有,则为键确实按下,转逐列扫描 AJMP KEY1 ;无键按下,返回 LK2: MOV R4,#00H ;首列号 R4 MOV R2,#FEH ;首列扫描字 R2 LK4: MOV A,R2 ;列扫描字 P1口 MOV P1,A ;使第一列线为0 MOV A,P1 ;读入行状态

JB ACC.0,LONE;第0行无键按下,转查第一行

MOV A,#00H ;第0行有键按下,该行首键号#00H A AJMP LKP ;转求键号

LONE: JB ACC.1,NEXT ;第一行无键按下,转查下一列 MOV A,#02 ;第一行有键按下,该行首键号#02 A LKP: ADD A,R4 ;键号=首行号+列号 PUSH ACC ;键号进栈保护 LK3: ACALL KS1 ;等待键释放 JNZ LK3 ;未释放,等待 POP AC ;键释放,键号 A RET ;键扫描结束

NEXT: INC R4 ;列号加1,指向下一列 MOV A,R2 ;列扫描字 A

JNB ACC.1,KND ;判断2列全扫描完?扫描完,转KND RL A ;没扫描完,扫描字左移一位,形成下一列扫描字 MOV R2,A ;扫描字 R2 AJMP LK4 ;扫描下一列

AJMP KEY1 ;全扫描完,返回

MOV A,#FCH ;全扫描字11111100B A MOV P1,A ;全扫描字 所有行 MOV A,P1 ;读取列值

CPL A ;取正逻辑,高电平表示有键按下