湖南大学单片机基础期末考试试题题库
1、.8051单片机芯片包含哪些主要逻辑功能部件?各有什么主要功能? 答: CPU:控制单片机各部份协调工作进行算术和逻辑运算 内部数据存储器:存储数据 内部程序存储器:存储程序 定时器/计数器,并行I/O口 串行口,中断控制系统,时钟电路
2、MCS—51单片机的EA信号有何功能?在使用8031时EA信号引脚应如何处理?
答:访问程序存储器控制信号,EA=0访问外部程序存储器,EA=1访问内部程序存储器。8031无内部程序存储器,所以EA接地。
3、MCS—51 单片机有哪些信号需要芯片引脚以第二功能的方式提供?
答:P3口,ALE/PROG(30脚),EA/VPP(31脚), RST/VPD(9脚)
4、内部RAM低128单片划分为哪3个主要部分?说明各部分的使用特点?
答: 1.寄存器区, 可寄存器寻址 2.位寻址区 ,可位寻址
3.用户RAM区,其单元地址为30H~7FH,一般还把堆栈开辟在用户RAM区
5、程序计数器(PC)作为不可寻址寄存器,它有哪些特点?
答:PC是一个16位的计数器。其内容为将要执行的指令地址,寻址范围达64KB。有以下功能:
A.自动加1功能,从而实现程序的顺序执行。 B.上电复位功能。
C.能接收内部数据总线上来的数据,主要通过转移,调用,返回等指令改变其内容
以实现程序的转移,转移范围216=64K=65536。 PC没有地址,是不可寻址的。
6、堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?
答:堆栈是一种数据结构,堆栈的最大特点就是“后进先出”的数据操作规则。堆栈是为子程序调用和中断操作而设立的。其具体功能有两个:保护断点和保护现场。堆栈指示器SP的作用是指示栈顶地址。程序设计时一般把SP值初始化为30H以后,因为复位时,SP初始化为07H,而这里是寄存器区和位寻址区。
7、MCS—51的4个I/O口在使用上有哪些分工和特点?试比较各口的特点?
答: P1口:只有一种功能通用I/O口 P2口:通用I/O口和地址总线高八位 P3口:一种功能通用I/O口和第二功能状态 P0口:一种功能通用I/O口和AB/DB复用总线
8、MCS—51单片机运行出错或程序进入死循环,如何摆脱困境? 答:按复位键以重新启动。
9、什么是指令周期,机器周期和时钟周期?如何计算机器周期的确切时间?
答:执行一条指令所需的时间称之为指令周期, 机器周期就是振荡脉冲的十二分频,
时钟周期定义为状态(用S表示),2个振荡脉冲。
10、使单片机复位有哪几种方法?复位后机器的初始状态如何? 答:复位操作有上电自动复位和按键手动复位两种方式。按键手动复位有电平方式和脉冲方式两种。 它们的复位状态如下:
PC 0000H TCON 00H ACC 00H TL0 00H PSW 00H TH0 00H SP 07H TL1 00H DPTR 0000H TH1 00H P0~P3 FFH SCON 00H IP xx000000B SBUF 不定 IE 0x000000B PCON 0xxx0000b TMOD 00H
-----------------------------------------------------------------------------------------
------------------
单片机基础编程题答案:第4章
1、把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM 输出缓冲区outbuf进行传送,一直进行到遇见回车符CR或整个字符传送完毕。
ORG 0030H MOV R0,#inbuf
MOV R1,#outbuf MOV R4,#10H
LOOP:MOV A,@R0;从内部RAM取数 CJNE A,#0DH,LL;是否为回车符CR SJMP STOP;是转停止传送 LL: MOVX @R1,A;不是则传送到外部RAM INC R0 INC R1
DJNZ R4,LL;沒传送完则循环 STOP: SJMP $
2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。 ORG 0030H MOV R0,#list
MOV A,@R0;取第一个正数 LOOP: INC R0;指向下一个正数 MOV 3AH,@R0
CJNE A,3AH,CHK;前一个数与后一个数比较 CHK: JC LOOP1;前一个数小,则转
MOV A,@R0;前一个数大,取后一个数 LOOP1: XCH A,3AH
CJNE A,#0FFH,LOOP XCH A,3AH;取最小数 MOV 3BH,A SJMP $
3、求8个数的平均值,这8个数以表格形式存放在从table开始的单元中。
ORG 0030H MOV R0,#table MOV R6,#07H MOV R3,#00H MOV A,@R0 CLR C LOOP:INC R0
ADD A,@R0;累加