SHANDONGUNIVERSITY OF TECHNOLOGY
《单片机原理与接口技术》专题报告
单片机间双向通信
学 院: 农业工程与食品科学学院
专 业: 农业工程
学生姓名: 王佳文
学 号: Y1303072
指导教师: 印祥
一、题目:单片机间双向通信
二、设计内容与目的
本设计主要依据MS-51系列单片机STC89C51,设计两个单片机间双向通信。通过本次试验来掌握单片机之间的双向通信工作原理及编程方法。设计内容为主机向从机发送数字,从机进行加一再后返回主机。本试验在Proteus 环境下完成本实验时, 需要安装Proteus软件。
三、设计方案
单片机间双向通信设计方案如下图所示:
本设计主要由单片机最小系统、开关控制电路、LED显示电路构成。甲单片机通过串口通信电路将信号送入向乙单片机内,乙单片机进行加一后再通过串口通信电路返回甲单片机内。同时甲单片机机和乙单片机接受到的数字通过LED数码管进行显示。
四、单片机芯片
4.1单片机的选用
本设计中选用的单片机是STC89C51单片机,这里对STC89C51单片机进行简单的介绍。
STC89C51单片机学习板是一款基于8位单片机处理芯片STC89C52RC的系统。其功能强大。其功能强大,具有报警、跑马灯、串行通信(max232)、段码液晶(msm0801LCD)和字符液晶显示(LCD1602)、电机控制(L298)、A/D转换(TLC2543)、D/A转换(TLC5615)、温度采集(DS18B20)、数字信号合成(AD9851)、实时时钟电路(DS1302)、4—20mA输出、PWM输出(UC3842)、红外检测(KSM-603LM)控制等十七种功能,学习、开发者可以根据需要选配多种常用模块,达到实验及教学的目的。
主CPU电路选用STC89C52RC系列单片机,STC89C52RC是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟/ 机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/ 精简指令集结构,内部集成MAX810 专用复位电路。
STC89C51的外观如图所示
STC89C51具有如下特点
(1)增强型1T 流水线/ 精简指令集结构8051 CPU
(2)工作电压:3.4V-5.5V (5V 单片机)/ 2.0V-3.8V (3V 单片机
(3)工作频率范围:0 -35 MHz,相当于普通8051 的0~420MHz.实际工作频率可达48MHz.
(4)用户应用程序空间12K / 10K / 8K / 6K / 4K / 2K 字节
(5)片上集成512 字节RAM
(6)通用I/O 口(27/23个),复位后为:准双向口/ 弱上拉(普通8051 传统I/O 口)
可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏
每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过55mA
(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器
可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片
(8)EEPROM 功能
(9)看门狗
(10)内部集成MAX810 专用复位电路(外部晶体20M 以下时,可省外部复位电路)
(11)时钟源:外部高精度晶体/ 时钟,内部R/C 振荡器。用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟。常温下内部R/C 振荡器频率为:5.2MHz ~6.8MHz。精度要求不高时,可选择使用内部时钟,因为有温漂,请选4MHz ~8MHz
(12)有2个16 位定时器/ 计数器
(13)外部中断2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒
(14)PWM( 4 路)/ P C A(可编程计数器阵列),也可用来再实现4个定时器或4个外部中断(上升沿中断/ 下降沿中断均可支持)
(15)STC89Cc516AD具有ADC功能。10 位精度ADC,共8 路
(16)通用异步串行口(UART)
(17)SPI 同步通信口,主模式/ 从模式
(18)工作温度范围:0 -75℃/ -40 -+85℃
(19)封装:PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封状,定货)
4.2LED数码管的选用
设计需要采用两个一位的LED数码管显示器,所选型号为SM110561R。该型号数码管为共阳极的。其引脚如下图所示:
五、硬件设计部分
5.1Proteus仿真电路图
5.2LED显示电路
5.3开关控制电路
六程序设计部分
6.1C语言程序源代码
甲机发送程序
//*********************发送*******************
#include<AT89c51.H>
#include<STRING.H>
#define _SEND_STRING_ "EADY"/发送的字符串
#define _RECV_STRING_ "OK" //接收的字符串
#define _MAX_LEN_ 16 //数据最大长度
void put_string(unsigned char *str); //串口发送字符串
void get_string(unsigned char *str); //串口接收字符串
void Beep(); //蜂鸣表示成功接收到返回信号
/*----------------------------------程序初始化部分--------------------------------------------*/
void main()
{
char buf[ _MAX_LEN_];
/*系统初始化*/
TMOD = 0x20; //定时器T1使用工作方式2
TH1 =250; //设置初值
TL1 = 250;
TR1 = 1; //开始计时
PCON = 0x80; //SMOD = 1
SCON = 0x50; //工作方式1,波特率9600bit/s,允许接收
EA = 0; //关闭全部中断
strcpy(buf, _SEND_STRING_); //设置发送字符串
/*-----------------------发送数据-----------------------------------*/
put_string(buf);
buf[0] = 0; //清空缓冲区
/*----------------------接收数据-----------------------------------*/
while(strcmp(buf, _RECV_STRING_)!=0)
{
get_string(buf);
}
beep();
while(1); //反复循环
}
/*------------------------------子函数--------------------------------------*/
/*发送字符,参数str为待发送子符串*/
void put_string(unsigned char *str)
{
do
{
SBUF = *str;
while(!TI); //等待数据发送完毕
TI=0; //清发送标志位
str++; //发送下一数据
}
while(*(str-1)==’\0’); //发送至字符串结尾则停止
}
/*接收字符串,参数str指向保存接收子符串缓冲区*/
void get_string(unsigned char *str)
{
unsigned char count = 0;
*str = 0; //清缓冲区
do
{
while(!RI); //等待数据接收
*str = SBUF; //保存接收到的数据
RI=0; //清接收标志位
str++; //准备接收下一数据
count++;
if(count > _MAX_LEN_) //如果接收数据超过缓冲区范围,则只接收部分字符
{
*(str-1) = 0;
break;
}
while(*(str-1)==’\0’); //接收至字符串结尾则停止
}
}
#define _SEND_STRING_ “READY” //
#include<STRING.H>
#define _SEND_STRING_ “READY” //
乙机接收程序
//*********************接收*******************
#include <reg51.h>
unsigned char a;
unsigned char b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void init(void)
{
SCON = 0x50; // 串行口工作方式1,允许接收
PCON = 0x00; // 波特率不倍增
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 =0xf4 ;
TL1 =0xf4; // T1赋初值,波特率2400
TR1 = 1; // 启动定时器1
EA=1;
ES=1;
}
void main(void)
{
init();
while(1)
{
P2=b[a];
}
}
void zd() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
SBUF=a+1; //加1后,在返回到主机
}
else TI=0;
}
6.2 Keil程序调试
发送程序调试
接收程序调试
七、程序调试及产生的问题
7.1程序结构
7.2 实物连接
实物连接过程中我选择了电路板做底板利用电烙铁和焊锡对电路板及各电子元器件进行焊接。
7.3检测各元器件的焊接情况
(1)单片机座的焊接
本设计采用单片机座,防止单片机在焊接时因高温损毁,以及保证单片机在其他电路中仍可以继续被使用。
(2)各元器件在电路板的焊接
1.首先要了解在电路板上进行焊接的注意事项,
2.在了解了各元器件后,按照原理图在电路板上连接电路。
3.利用焊锡和电烙铁将单片机座、开关、数码管、电容、极性电容、电阻、指示灯等元器件焊接在电路板上、并检测其连接是否正确,是否能正确工作。
7.4程序调试
系统调试包括硬件调试和软件调试,而且这两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。
硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。
软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。
7.5实物图
7.6产生的问题
1. 数码管一个引脚没有焊接好,导致数码管显示不正确,重新焊接后数码管才显示正常
2.刚开始对数码管的引脚连线不是很清楚,上网查了相关资料后才确定如何连接数码管各引脚
3.经过Proteus软件进行仿真后得了想要的实验结果,但对电路板进行焊接后发现开关不起作用,数码管显示的数字不变。
八、课程设计与专题总结
通过此次课程设计,我重新认识到了对书本上的知识要独立运用的道理。在抢答器设计过程中,发现了很多细节性的问题,也出现了很多错误,经过和同学们研究、商讨最后都解决,感觉团队协作能力是非常有必要的!通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识和C语言的编程,也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我将继续努力。
通过这次课程设计,我更加深入理解了单片机与单片机之间的双向通信过程。通过硬件的焊接与调试,增强了动手能力,懂得如何焊接好电路板,避免短路,将自己从课本上学习到的知识应用于实践。当在调试过程中出现问题时,学会了如何对出现的错误进行排除。通过这次课设让我了解怎样进行调试,怎样使实验达到最好的效果,也学会了如何使用现有的手段查询到自己需要的资料进行自学,更加深入的了解一些课堂上掌握不好的知识。很多知识,是需要通过自己动手的实践过程才能理解的更加深刻,很多实践经验也是通过动手才能积累。
同时这学期的《单片机原理与接口技术》也使我有机会重新复习了以前所学的《电子技术》和《C语言编程》等课程,融汇了各学科的知识。
最后,在此衷心感谢印祥老师在这一年来为我提供的帮助,以及悉心的教导。
第二篇:单片机原理及接口技术试题
单片机试题带答案
一、填空题(每空格1分,共10分)
1.MCS—51布尔处理机的存储空间是_______。
2.P2口通常用作_______,也可以作通用的I/O口使用。
3.若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为______。
4.8051的堆栈区一般开辟在_______。
5.所谓寻址,其实质就是_______。
6.存储器映象是_______。
7.定时器中断请求发生在_______。
8.中断响应时间是指______。
9.通过CPU对I/O状态的测试,只有I/O已准备好时才能进行I/O传送,这种传送方式称为_______。
10.在中断服务程序中现场保护和现场恢复期间,中断系统应处在____状态。
二、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共10分)
1.MCS-51单片机复位操作的主要功能是把PC初始化为( )。
A.0100H B.2080H C.0000H D.8000H
2.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为( )。
A.500 B.1000 C.216-500 D.216-1000
3.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到( )引脚。
A.P3.2 B.P3.3 C.P3.4 D.P3.5
4.当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持( )。
A.1个机器周期 B.2个机器周期
C.4个机器周期 D.10个晶振周期
5.MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应( )。
A.外部中断0 B.外部中断1
C.定时器0中断 D.定时器1中断
6.定时器若工作在循环定时或循环计数场合,应选用( )。
A.工作方式0 B.工作方式1 C.工作方式2 D.工作方式3
7.MCS-51单片机的外部中断1的中断请求标志是( )。
A.ET1 B.TF1 C.IT1 D.IE1
8.下列标号中,正确的标号是( )。
A.1BT: B.BEGIN: C.ADD: D.STAB31:
9.串行口每一次传送( )字符。
A.1个 B.1串 C.1帧 D.1波特
10.要想把数字送入DAC0832的输入缓冲器,其控制信号应满足( )。
A.ILE=1,=1,=0
B.ILE=1, =0, =0
C.ILE=0, =1, =0
D.ILE=0,=0, =0
三、简答题(每小题4分,共20分)
1.如何正确使用P3口?
2.简述累加器的ACC的作用。
3.简述寄存器间接寻址方式及其寻址范围。
4.简述MCS-51单片机的中断入口地址。
5.简述串行数据传送的特点。
四、读程序题(每小题4分,共20分)
1.执行下列程序段后,(P1)=_______。
MOV P1,#5DH
CPL P1.1
CPL P1.2
CLR P1.6
SETB P1.7
2.执行下列程序段后,(A)=_______,(CY)=____。
MOV A,#C5H
RL A
3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。
MOV R0,#7EH
MOV 7EH,#0FFH
MOV 7FH,#40H
1NC @R0
1NC R0
1NC @R0
4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。
5.阅读下列程序,说明其功能。
MOV R0,#data
MOV A,@R0
RL A
MOV R1,A
RL A
RL A
ADD A,R1
MOV @R0,A
RET
五、编程题(每小题4分,共20分)
1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。
2.请使用位操作指令实现下列逻辑操作:
BIT=(∨P1.0)∧(11H∨CY)
3.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。
Y=
4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。
5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。
六、综合应用题(每小题10分,共20分)
1.已知如图,8155的PA口用于输出,PB口用于输入,PC口用于输出,请:
(1)写出8155的各I/O口的口地址和存储器的地址范围。
(2)编写出8155初始化程序。B155命令字格式:
2.已知如图并给出下列程序,请在读图并理解程序后回答下列问题:
(1)程序功能为_______。
(2)ADC0809的口地址为_______。
(3)EOC的作用是_______。
(4)程序运行结果存于_______。
ADC:MOV DPTR,#7FFOH
MOV R0,#0A0H
MOV R2,#8
MOV A,#0
LOOP:MOVX @DPTR,A
JB P3.3,$
MOVX A,@DPTR
MOVX @R0,A
1NC DPTR
1NC R0
DJNZ R2,LOOP
AJMP ADC
单片机试题3
1、填空(每空 2 分,共 40 分)
1、MCS-8051系列单片机字长是 8 位,有 40 根引脚,96系列字长是 16 位。单片机的特点有 体积小、价格低、功能全 。
2、8051单片机的存储器的最大特点是 指令存储器与数据存储器分开编址 ,Px并行口的地址是与 数据 存储器统一编址的,或者说属于该存储器。
3、8051最多可以有 4 个并行输入输出口,最少也可以有1个并行口,即 P1 。P3常需复用作 串行通信、外部中断、外部计数脉冲 和读写控制信号。
4、ALE信号的作用是 低8位地址锁存 。
5、8051复位后,PC= 0 H。若希望从片内存储器开始执行,EA脚应接 高 电平,PC值超过 0FFF H时,8051会自动转向片外存储器继续取指令执行。
6、8051的C/T是 加 (加或减)计数的。
7、8051的中断向量表在 3 H、 0B H和13H、1BH、23H。
8、MOV A,40H 指令对于源超作数的寻址方式是 直接 寻址。
9、指令JB 0A7H,ABC的作用是 若P2口的第7位为1则跳转到ABC 。(0A7H是P2.7的地址)
10、将CY与A的第0位的非求或的指令是 ORL C,/ACC.0 ,若原A=0,执行后A= 0 。
2、已知A = 0F8H,当执行ADD A,#0A9H指令后,PSW中的OV、CY、AC、P各为多少?若是有符号数,A中的结果用十进制表示是多少?(共 5 分)
[解答] OV:0、CY:1、AC:1、P:1 A:-95
3、在两个8051间用模式2进行串行通信,A机并行采集外部开关的输入,然后串行传输给B机;B机接收后并行输出控制LED发光。画出连接示意图,写出完整的程序。(共 15 分)
4、将8051外部扩展2K EPROM,同时扩展16K RAM作数据存储器,采用的2716是2K的EPROM芯片,6264是8K的RAM芯片,74LS373是8位锁存器。请画出连接示意图。要求画出8051的数据、地址、ALE、PSEN、RD、WR信号;锁存器的数据入D、数据出Q、锁存控制G、OE;2716的A、数据O、片选CE、输出使能OE;6264的A、D、CE、OE、WE。最后写出各片的地址范围。(共 12 分)
数据线8根从P1直接到2716的O、两片6264的D;
地址线低8位从P0经锁存器后到各片内地址口,高8位从P2出0-2三位直接到2716的地址口,
0-4五位直接到两片6264内P2.5接一片6264的CE,经非门后接另一片6264;
ALE接锁存器的G,锁存器OE接地,PSEN接2716的OE,WR接6264的WE,RD接OE。
2716:0-7FFH,6264:0-1FFFH,2000H-3FFFH
5、编写一段子程序,将二位压缩的BCD码转换为二进制数,入口、出口均是A。若是非法的BCD码,则A返回值为255。(共10分)
6、用8051输出控制8个LED从LED1到LED8、再到LED1…,每次一个LED发光,并不断循环。一个开关控制引起中断,电平触发,中断后8个LED一起闪5下,然后恢复前面的循环。画出连接示意图,写出完整的程序。(软件延时用循环5*126*200次控制)(共10分)
7、简单叙述8051的C/T0的四种工作模式和串行通信的四种工作模式。(共 8 分)
机制08级 《单片机原理及应用》补考试题
一.填空题(10分)。
1十进制数5621.575,转化为二进制数为______________.
2.引脚的名称为_________________。8031单片机较8051相比,内部不含_____________。
3.CPU是一个8位二进制数的中央处理单元,主要由__________、__________和寄存器阵列构成。
4.在8051单片机RAM中,共有______个位地址可以进行直接寻址。
5.外部中断的触发请求方式有 和 。
6.对于多片存贮器的扩展和寻址,常用的片选方法有______________和______________。
二 选择题(10分)
1、MCS-51单片机程序存储器最多能扩展到:( )
A.64K B.32K C.4K D.256K
2、MCS-51单片机有片内RAM工作寄存器区,该区共多少个寄存器?( )
A.4 B.8 C.16 D.32
3、MCS-51单片机在执行MOVC A,@A+DPTR指令时,下列说法哪个正确?( )
A.RD(读)引脚有效 B.访问程序存储器 C.访问内部RAM
D.访问外部数据存储器或外部接口
4、下面说法对的是:( )
A.74LS373可用于数据锁存器,或地址锁存器 B.74LS373只能用于地址锁存器
C.74LS373只能用于数据锁存器 D.ALE是低电平有效
5、 下面表示的位地址哪个不对?( )
A.P1.0 B.20.0 C.20H.0 D.20H
6、MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应( )
A外部中断0 B外部中断1 C定时器0中断 D定时器1中断
7、定时器若工作在循环定时或循环计数场合,应选用( )。
A.工作方式0 B.工作方式1 C.工作方式2 D.工作方式3
8.当串行口向单片机的CPU发出中断请求时,若CPU允许并接受中断请求时,程序计数器PC的内容将被自动修改为( )。
A.0003H B.0013H C.001BH D.0023H
9.单片机复位后,SP、PC、I/O口的内容为( )
A.SP = 07H PC = 00H P0 = P1 = P2 = P3 = FFH
B.SP = 00H PC = 0000H P0 = P1 = P2 = P3 = 00H
C.SP = 07H PC = 0000H P0 = P1 = P2 = P3 = FFH
D.SP = 00H PC = 00H P0 = P1 = P2 = P3 = 00H
10、当8031外扩程序存储器为32KB时,需使用EPROM2764( )。
A、1片 B、2片 C、4片 D、8片
三 简答题
(1)8051单片机从用户使用的角度上,地址空间分为几类?8051指令系统是如何区分的?并用图框表示出片内RAM的具体情况。(10分)
(3)外部中断的两种触发方式的有效中断的条件是什么?简述8051单片机中断响应的条件?(
四. 编程题。
(1)外部ROM3000H单元内容送外部RAM30H。(4分)
(2)试用3种方法将累加器A中的无符号数乘2. (6分)
(3)外部RAM1000H单元与外部RAM2000H单元内容交换。(8分)
(4)将片内数据存储器20H~40H单元内容传送到片外数据存储器3000H~3020H单元。(8分)
(5) P1.0、P1.1经7407驱动LED交替发光并以每2秒一次的频率闪烁。硬件连接见下图(采用6MHz晶振)。(10分)
六、画出一个8031可扩展1片2764和2片6264的连接图,并说明2764、6264的有效地址范围。(14分)
数控06级考试题
一.填空题(10分)。
1、十进制数5621.575,转化为二进制数为______________,十六进制数为____________。
2、引脚的名称为_________________。8031单片机较8051相比,内部不含_____________。
3、CPU是一个8位二进制数的中央处理单元,主要由__________、__________和寄存器阵列构成。
4、定时器/计数器的工作方式3是指的将 拆成两个独立的8位计数器。而另一个定时器/计数器此时通常只可作为 使用。
5、在8051单片机RAM中,共有______个位地址可以进行直接寻址。
6、一个机器周期包含_______状态、_______时钟周期。
7、在R7初值为00H的情况下,DJNZ R7,rel指令将循环执行( )次。
8、_____________是串行通信的重要指标,用于表征数据传输的速度。
9、对于串行中断,CPU在响应中断后不能由硬件电路自动撤出该中断,应通过软件将该中断请求撤除,这两条指令为______________和______________。
10、对于多片存贮器的扩展和寻址,常用的片选方法有______________和______________。
11、外部中断的触发请求方式有 和 。
12、在异步通信中,数据的帧格式定义一个字符由4部分组成,即:起始位 、______________、奇偶校验位和停止位。
二 选择题(10分)
1、MCS-51单片机程序存储器最多能扩展到:( )
A.64K B.32K C.4K D.256K
2、MCS-51单片机有片内RAM工作寄存器区,该区共多少个寄存器?( )
A.4 B.8 C.16 D.32
3、MCS-51单片机在执行MOVC A,@A+DPTR指令时,下列说法哪个正确?( )
A.RD(读)引脚有效 B.访问程序存储器 C.访问内部RAM
D.访问外部数据存储器或外部接口
4、下面说法对的是:( )
A.74LS373可用于数据锁存器,或地址锁存器 B.74LS373只能用于地址锁存器 C.74LS373只能用于数据锁存器 D.ALE是低电平有效
6、 下面表示的位地址哪个不对?( )
A.P1.0 B.20.0 C.20H.0 D.20H
6、MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应( )
A外部中断0 B外部中断1 C定时器0中断 D定时器1中断
7.串行口的移位寄存器方式为( )。
(A)方式0 (B)方式1 (C)方式2 (D)方式3
8.当串行口向单片机的CPU发出中断请求时,若CPU允许并接受中断请求时,程序计数器PC的内容将被自动修改为( )。
A.0003H B.0013H C.001BH D.0023H
9.单片机复位后,SP、PC、I/O口的内容为( )
A.SP = 07H PC = 00H P0 = P1 = P2 = P3 = FFH
B.SP = 00H PC = 0000H P0 = P1 = P2 = P3 = 00H
C.SP = 07H PC = 0000H P0 = P1 = P2 = P3 = FFH
D.SP = 00H PC = 00H P0 = P1 = P2 = P3 = 00H
10、当8031外扩程序存储器为32KB时,需使用EPROM2764( )。
A、1片 B、2片 C、4片 D、8片
三、读程题(8分)
1. 设(40H)=10H, (57H)=20H,执行
PUSH 40 H
PUSH 57 H
POP 40 H
POP 57 H
(57H)= (40H)=
2. (A)=30H,执行地址3000H处的指令:
1000H:MOVC A,@PC+A
(PC)=
3. 设(40H)=38H,(41H)=39H,执行以下指令后结果:
ANL 40H,#0FH
MOV A, 41H
ANL A,#0FH
SWAP A
ORL 40H,A
(40H)= (A)=
4. 设(A)= 0CAH,(R1)=0BCH,分别执行以下指令:
XRL A,R1; (A)=
5 已知(A)=7AH,(R0)=30H,(B)=32H,(30H)=A5H,(PSW)=80H,问执行下列各指令的结果(每条指令相互独立)。
(1)ADDC A,30H;(A)=
(2)SUBB A,30H;(A)=
四 简答题
(1)8051单片机的存储器在物理结构上分为几个?从用户使用的角度上,地址空间分为几类?8051指令系统是如何区分的?并用图框表示出片内RAM的具体情况。(7分)
(2) 简述PSW程序状态字各位的含义(7分)
(3)外部中断的两种触发方式的有效中断的条件是什么?简述8051单片机中断响应的条件?(6分)
四. 编程题(40)
(1)外部RAM1000H单元与外部RAM2000H单元内容交换。
(2)试编程将片内40H~70H单元中的内容传送到以2500H为起始地址的存储区。
(3)在30H单元中有一个带符号8位的二进制数x。编一程序,按以下关系计算y值,送40H单元。
Y=
(4)将片外数据存储器中1040H的内容拆成两段,其高4位存入1041H单元的低4位,其低4位存入1042H单元的低4位。
(5) P1.0、P1.1经7407驱动LED交替发光并以每秒一次的频率闪烁。硬件连接见下图(采用6MHz晶振)。
六、画出一个8031可扩展2片2764、一片6264和一片8255A芯片的连接图,并说明2764、6264的有效地址范围和8255A的A口、B口、C口及控制口地址。(12分)
单片机试题参考答案
一、填空题(每空1分,共10分)
1.00H~7FH
2.高8位地址线
3.08~0FH
4.用户RAM区
5.如何确定操作数的单元地址
6.存储器在整个存储空间的地址范围
7.定时时间到
8.从查询中断请求标志位到转向中断区入口地址所需的机器周期数
9.程序查询方式
10.关中断
二、单项选择题(每小题1分,共10分)
1.C 2.C 3.D 4.A 5.A
6.C 7.D 8.D 9.A 10.B
三、简答题(每小题4分,共20分)
1.要点:
(1)说明P3口有第一功能和第二功能的使用。
(2)P3口的第二功能各位线的含义。
(3)使用时应先按需要选用第二功能信号,剩下的口线才作第一功能I/O线用。
(4)读引脚数据时,必需先给锁存器输出“1”。
2.(1)8位专用寄存器。
(2)运算时存放一个操作数。
(3)运算后存放运算结果,所以称它为累加器。
3.(1)寄存器中存放的是操作数的地址,操作数是通过寄存器间接得到,这种寻址方式称为寄存器间接寻址方式。
(2)寻址范围:
①内部RAM低128单位,形式@Ri(i=0,1)。
②外部RAM64K使用DPTR作间址寄存器,形式为@DPTR。
4.中断入口地址为中断响应后PC的内容即中断服务的入口地址。
它们是:外部中断0 0003H
定时器T0中断 000BH
外部中断1 0013H
定时器T1中断 001BH
串行口中断 0023H
5.(1)传送按位顺序进行,速度慢。
(2)传输线少,成本低。
(3)传送距离远,可达几公尺到几千公里。
四、读程序题(每小题4分,共20分)
1.(P1)=9BH
2.(A)=8BH(或10001011B)
(CY)=不影响
3.(R0)=7FH
(7EH)=00H
(7FH)=41H
4.(PC)=0345H
(61H)=25H
(62H)=01H
5.(data)×10操作
五、编程题(每小题4分,共20分)
1.SQR:1NC A
MOVC A,@A+PC
RET
TAB:DB 0,1,4,9,16
DB 25,36,49,64,81
2.ORL C,11H
MOV 12H,C
MOV C,P1.0
ORL C,/10H
ANL C,12H
MOV BIT,C
RET
3. MOV A,VAR
CJNE A,#0,COMP
SJMP RES ;x=0,Y=0
COMP:JNC POSI ;x>0,Y=1
MOV A,#0FFH ;x<0,Y=-1
SJMP RES
POSI:MOV A,#01H
RES:MOV FUNC,A
RET
4.MOV R0,#SUM
MOV A,R2
ANL A,#OFH
MOV @R0,A ;存低字节BCD
MOV A,R2
ANL A,#0F0H
SWAP A
1NC R0
MOV @R0,A ;存高字节BCD
RET
5. MOV DPTR,#8000H
MOV R0,#10H
MOV R2,#50H
LOOP:MOVX A,@DPTR ;取数
MOVX @R0,A ;存数
1NC DPTR
1NC R0
DJNZ R2,LOOP
RET
六、综合应用题(每小题10分,共20分)
1.(1)
(2)初始化程序:
MOV DPTR,#0100H
MOV A,#0DH
MOVX @DPTR,A
2.(1)巡回采集8个通道的数据
(2)ADC0809口地址为7FF0H~7FF7H(或7FF8~7FFFH)
(3)EOC为A/D转换结束信号,用来引起中断或查询,以便读取A/D的转换结果。
(4)结果存入外部RAM的A0H~A7H。