单片机模拟试题以及测验答案教学教材_第1页
单片机模拟试题以及测验答案教学教材_第2页
单片机模拟试题以及测验答案教学教材_第3页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 单片机硬件结构测试1、AT89S51 单片机都集成了哪些功能部件?答: AT89S51 单片机的片内都集成了如下功能部件:(1)1 个 8 位微处理器( CPU );(2)数据存储器( 128B RAM )单元 ;(3)4KB Flash 程序存储器( ROM );(4) 4 个 8 位可编程并行 10 口( P0 口、 P1 口、P2 口、P3 口);( 5 )1 个全双工串行口;( 6 )2 个 16 位定时器 /计数器;( 7 )1 个看门狗定时器;( 8 )一个中断系统, 5个中断源, 5个中断向量、 2个优先级;( 9 )26 个特殊功能存放器(SFR )2、AT89S51

2、单片机存储器的结构特点?答: 80C51 单片机采用将数据存储器和程序存储器分开,分别寻址的结构 ,称为Harvard 结构。 在物理上有四个存储器空间 : 片内程序存储器,片外程序存储器, 片内数据存储器和片外数 据存储器。在逻辑上有三个存储器空间: 片内外统一的 64KB 程序空间, 128B 片内数据空间, 64KB 片外 数据空间。访问格式:访问片内 RAM 采用 M0V 格式,访问片外 RAM 采用 M0VX 格式。单片机内部程序存储器是 ( 4KB 的 Flash 存储器),地址范围是( 0000H )( 0FFFH ); 数 据存储器是( 128B 的 RAM ),地址范围是(

3、00H )( 7FH ) 。3、程序存储器可外扩至(64K) B,地址范围是 (0000H ) ( FFFFH ),通过引脚 (EA非), 区分访问的片内,片外存储器。如何区分?如何区分:当 EA 脚为高电平时,单片机读片内程序存储器( 4K 字节 Flash )中的内容,但 在 PC 值超 过 0FFFH (即超出 4K 字节地址范围)时,将自动转向读外部程序存储 器内( 1000H-FFFFH ) 的程序;当 EA 脚为低电平时,单片机只对外部程序存储器 的地址为0000HFFFFH中的内容 进行读操作,单片机不理会片内的4K字节的Flash 程序存储器4、程序存储器中5 个中断入口地址分

4、别是多少?中断源 中断入口地址外部中断 00003H定时器 / 计数器T0000BH外部中断 10013H定时器 / 计数器T1001BH串行口中断0023H 5、数据存储器可外扩至(64K) B,地址范围是(0000H ) (FFFFH ),访问片外数据存储 器时,地址使用( DPTR )和( Ri )表示。6、 AT89S51 的 4 个并行 I/0 口,分别是 ( P0 )、( P1)、( P2 )、( P3 )。从电路特点, 驱 动能力, 作用简单描述他们的特点。作用:任何一个口想要获得较大的驱动能力,只能采用低电平输出7、单片机最小系统包括哪些根本电路?分别可以使用什么方法实现?时钟

5、电路:一种是内部时钟复位电路:复位电路采用上8、时钟周期,机器周期和指令周期的关系指令周期是执行一条指令所需的时间。答:一个机器周期包括12 个时钟周期单字节指令需要一个机器周期, 双字节位 2 个机 器方式,通过晶振频率的上下控制 另一种是外部时钟方式,用现成的外部振荡器产生脉冲信号 电自动复位和按钮复位两种方式周期,复杂指令那么需要多个机器周期第三章测试1、把片外 RAM 6000H 单元数据送到片内 RAM 50H 单元中 MOV DPTR,#6000HMOVX A,DPTR MOV 50H,A2、假设有一表: ORG 3000HDB 00H,01H,04H,09H,10H,19H,24

6、H,31H,40H,51H 请通过查找表指令将表中的第 7 个元素的值送值 累加器 R1 ORG 0000HMAIN:MOV DPTR,#DBMOV A,#6MOVC A,A+DPTRMOV R4,A RET DB 00H,01H,04H,09H,10H,19H,24H,31H,40H,51H 3、请使用两种方法将累加器 A 和存放器 R3 中的内容互换 1XCH A,R3 2MOV R0,AMOV A,R3MOV R3,R0 3PUSH Acc PUSH R3 POP Acc POP R34、请使用指令完成以下要求,未涉及位的内容不能改变:1将 ACC.2 , ACC.6 , ACC.7 清

7、 0 ANL A,#100111012将 ACC.4 , ACC.5 置 1ORL A,#18H第 5 章 - 中断测试1、AT89S51 中断源有几个?入口地址分别是多少?中断源 中断入口地址外部中断 00003H定时器 / 计数器T0000BH外部中断 10013H定时器 / 计数器T1001BH2、与 AT89S51中断相关的存放器有哪些?分别是什么作用?定时器控制存放器 - TCON用于选择外部中断 0 或 1,并且选择外部中断的请求触发方式跳沿触发或者电平触发中断允许存放器 IE 用于开中断或关中断中断优先存放器 IP 可控制和改变中断源的优先级 串行通信控制存放器 SCON 低 2

8、 位所存串行口的发送中断和接收中断请求标志 TI 和 RI 3、各个中断的触发方式是什么?对应的撤销方式是什么?IT1=0 ,电平触发方式,引脚上低电平有效,并把IE1 置“ 1。转向中断效劳程序时,由硬件自动把 IE1 清“ 0。IT1=1 ,跳沿触发方式,加到引脚上的外部中断请求输入信号电平从高到低的负跳变有效, 并把 IE1 置“ 1。转向中断效劳程序时,由硬件自动把IE1 清“ 01定时器 / 计数器中断请求的撤销硬件会自动把中断请求标志位( TFO或TF1 )清0,自动撤销。2.外部中断请求的撤销( 1)跳沿方式外部中断请求的撤销 包括两项:中断标志位清 0 和外中断信号的撤销。中断

9、标志位清 0 是在中断响应后由硬件自动完成的。 外中断请求信号的撤销,由于跳沿信号过后 也就消失了,自动撤销 。(2)电平方式外部中断请求的撤销电平方式外中断请求的撤销, 其中中断请求标志自动撤销 ,但中断请求信号的低电平可能继 续 存在,为此, 除了标志位清“ 0之外,还需在中断响应后把中断请求信号输入引脚从低 电平强制改变为高电平(3) 串行口中断请求的撤销响应串行口的中断后, CPU 无法知道是接收中断还是发送中断, 还需测试这两个中断标志位, 以 判定是接收操作还是发送操作,然后才去除。所以串行口中断请求的撤销只能使用软件的方法,在中断效劳程序中进行,即用如下指令在中断效劳程序中对串行

10、口中断标志位进行去除:CLR TI;清 TI 标志位CLR RI;清 RI 标志位4、 设计中断程序时由主程序和中断效劳子程序两局部构成,主程序的作用?中断效劳子程序作用? 请写出含有外部中断 0 和外部中断 1 主程序结构和中断效劳子程序的结构。 主程序:设置中断源 的入口地址、进行中断的初始化子程序:完成中断需要执行的内容INT:CLR EA执行内容SETB EARETI5、 请写出由外部中断1 控制的单个发光二极管闪烁5 次(连在 P1.5 上)的程序# include <reg51.h>sbit d1=P1A5;void delay(x)uchar t;while(x-)

11、for(t=0;t<120;t+);void int1() interrupt 2 EA=0;for(i=0;i<=10;i+)d1=d1;delay(100);EA=1;main()d1=1;IT1=1;EX1=1;EA=1;while(1);第六章测试1、定时器的启动方式有几种?分别由哪个引脚决定?两种: 1. 只受定时器控制存放器 TCON 中的运行控制位 TRx 的控制 ( 即由单片机内部决定 )2. 由内部和引脚 INT0 ( P3.4 ) 、INT1 ( P3.5 ) 决定是执行 1 还是 2 取决于 GATE (门空位 ),当 GATE=0 执行 1, GATE=1

12、执行 22、定时器的 4 种工作方式分别有什么特点?假设系统时钟为 12MHz ,请问, 4 种工作方式最长 定时分别是多少? ( 写出计算表达式 )方式 0:为 13 位定时器 / 计数器 方式 1:为 16 位定时器 / 计数器方式 2: 8 位的常数自动重新装载的定时器 / 计数器方式 3:仅适用于 T0 ,此时 T0 分成两个 8 位计数器, T1 停止计数4种方式最长定时位:初值=2八13- (t*12*10八6 ) /12最长时间位 (2八n-0)*10八(-6)3、当 T0(P3.4) 引脚发生负跳变时,作为 P1.0 引脚产生方波的启动信号。开始从 P1.0 脚上 输出 一个周

13、期为 1ms 的方波。#include<reg51.h> #include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar t=0;sbit p仁 P1A0; void main() TMOD=0x26; TH0=0xFF;TL0=0xFF;TH1=(65536-50000)/256; TL1=(65536-50000)%256;EA=1;TR0=1;ET0=1;P1=0; F0=0;while(1)if(F0=1) TR1=1;ET1=1;void timer1() interru

14、pt 3 p1=p1;void timer() in terrupt 1TR0=0;F0=1;4、时钟频率是12MHz ,写出采用方式1,在P1.5引脚输出周期为2s的方波程序。#include<reg51.h>#i ncludevi ntri ns.h>#defi ne uint un sig ned int#defi ne uchar un sig ned charuchar Timer=0;sbit p1=P1A5;uchar code table=0xC0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90; void main(

15、)uchar i=9;TMOD=0x10;TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA=1;ET1=1;TR 1=1;p1=1;while(1)if(Timer=100)Timer=0;P2=P2;p1=p1;void timer1() in terrupt 3TH1=(65536-10000)/256;TL1=(65536-10000)%256;Timer; 第七章测试1、单片机AT89S51串行口传数据的帧格式是一个起始位(0),8个数据位,1位停止位组成,请画出发送字符B的帧格式。当串行口每分钟发送1800个字符时,波特率是多少?起始位D0

16、D1D2D3D4D5D6D7停止位1800*60=108000bit/s2、假设晶体振荡器为 11.0952Hz,串口工作在方式1,波特率为4800bit/s,写出用T1作为波 特率发生器的方式控制字和计数初值。选用T1的工作方式2, SMOD=0.X=256- fosc* SMOD+1/ 384* 波特率=3、使用串行口发送中断效劳子程序完成以下功能:1 发送字符 x' ; 2 点亮发光二极管#include<reg51.h>Sbit LED=P1八6;Void INT interrupt 4ifTITI=0;SBUF= ' X' ;LED=0;4、使用串

17、行口接收中断效劳子程序完成以下功能: 1 接收字符; 2发光二极管 P 1 .6 闪烁一次Void INT interrupt 4IfRIRI=0;P0=SUBF;LED=1;DELAY ;LED=0;DELAY ;LED=1;第十一章测试1 、 D/A 芯片的衡量指标? n 位的转换芯片,其分辨率是多少? 指标:分辨率、建立时间、转换精 度。分辨率:输出电压满刻度/2八n2、DAC0832 的 Vref=5V ,输入数字量为 0x80 时,输出 Vn 是多少? V0=|-B*Vref/256 |=2.5V B=0x803、A/D 转换芯片的衡量指标是什么? ADC0809 是几位的转换芯片,

18、其分辨率是多少? 1 转换 时间和转换速率2 分辨率:输出电压满刻度/2A8 ADC0809是8位转换芯片3转换精度4、 DAC0832 的连接方式有几种?请写出单缓冲方式下的三角波、阶梯波、方波程序,设地址为 0xFFFE 。有三种:单缓冲、双缓冲、直通方式。三角波:#include<reg51.h>#include <absacc.h>#define DAC0832 XBYTE0XFFFE#define uchar unsigned char#define uint unsigned intvoid delay_msuint suchar t;while(s-)fo

19、r (t=0;t<120;t+);void main() uchar flag=0;uchar i;while(1)if(flag=0)i+; DAC0832=i; delay_ms(1); if(i=0xff)flag=1;elsei-;DAC0832=i; delay_ms(1); if(i=0)flag=0;方波:#include<reg51.h>#include <absacc.h>#define DAC0832 XBYTE0XFFFE#define uchar unsigned char#define uint unsigned intvoid dela

20、y_ms(uint s)uchar t;while(s-)for (t=0;t<120;t+);void main()while(1) DAC0832=0xff; delay_ms(100);DAC0832=2;delay_ms(110);阶梯波:Void main()Uchar f=0;i=0;While(1)DAC0832=f; delayms(); i+;if(i<10)f=f+10;elsef=0;i=0;5、假设 DAC0809 芯片对其 IN3 通道数据转换后送至内部 RAM 的 30H 单元。 IN3 通道地址为 0X7FFB. 1采用查询的方式, EOC 与单片机

21、P1.5 连接 2采用中断的方式。双向来回的流水灯:1、在 keil 中编写程序实现以下功能, 将 P2 口接 8 只 LED ,实现来回流水灯效果。 #include <reg51.h> #include <intrins.h>void delay(int a);void main() int i;P2=0x01;while(1)/ 向左循环点亮 LED for(i=0; i<7; i+)P2=_crol_(P2,1); / 左移一位,点亮下一位 LED delay(100);/ 向右循环点亮 LED for(i=0; i<7; i+)P2=_cror_(

22、P2,1); / 右移一位,点亮上一位 LED delay(100);/ 延时函数,延时 a 毫秒void delay(int a)int x,y;for(x=a;x>0;x-) for(y=110;y>0;y-);题 2 :ORG 1000HTAB1 EQU 1234HTAB2 EQU 3000HDB “MAIN DW TAB1 , TAB2 ,70H请画出从 1000H 开始的存储单元的内容?3 )将内部 RAM 中的 45H 单元的高 4 位清 0,低 4 为置 1。实验:通过开关控制 8 个发光二极管的点亮,熄灭。 ( 预习题 )2、按下开关 K1 , 8 个发光二极管点亮

23、与熄灭循环交替3、按下开关K2,前4个发光二极管与后 4个发光二极管交替点亮K1、K2分别由外部中断TO、T1 引入。#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar flag=3;void delay(uchar n)uchar i,j;i=n;while(i-)for(j=0;j<120;j+);void main()uchar a;EA=1;IT0=1;EX0=1;EX1=1;IT1=1;P2=0x01;while(1)i

24、f(flag=0)delay(1000);P2=_crol_(P2,1); / ooo? o? £ ? £ ? Q dde? o?LEDdelay(1000);if(flag=1)P2=0XF0;delay(1000);P2=0x0f;delay(1000);void int0() interrupt 0flag=0;void int1() interrupt 2flag=1;实验内容:按键控制流水灯 ( 8 只 LED)1 、初始状态: D1D8 轮流点亮2、当按下按键 SKEY1 时( 使用 INT0 ) ,停止轮换, LED0LED4 与 LED5LED7 交换点亮一

25、次3、当按下按键 SKEY2 时( 使用 INT1 ) ,8 只灯全亮全灭一次,再轮流点亮 #include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid delay(uchar n)uchar j,i;j=n;while(j-)for(i=0;i<120;i+);void main()EA=1;EX0=1;IT0=1;EX1=1;IT1=1;P2=0x01;delay(1000);while(1)P2=_crol_(P2,1); delay(

26、1000);void int0() interrupt 0delay(1000);P2=0x0f;delay(1000);P2=0xf0;delay(1000);P2=0X01;delay(1000);void int1() interrupt 2P2=0XFF; delay(1000);P2=0X00;delay(1000);P2=0X01;delay(1000);实验内容:按键声光报警实验D1D8和 使得发光二极 管利用外部硬件中断 ( 使用 INT0) ,按键 skey1, 按下一次产生一次外部中断, 蜂鸣器的鸣响次数和计数器的数值一致。计数范围是 110 。#include<re

27、g51.h> #include<math.h> #define uchar unsigned char #define uint usigned int sbit speak=P1A1;sbit display=P2;uchar a=0;uchar code table=0xC0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90; void delay(uchar n)uchar i,j;i=n;while(i-) for(j=0;j<120;j+);void main()EA=1;EX0=1;IT0=1;speak=1;P2=t

28、able0;P0=0;while(1);void int_0() interrupt 0uchar i;a+;if(a=9)a=1;P0=0;P2=tablea;P0=P0+pow(2,a-1);for(i=0;i<a;i+)speak=speak; delay(1000); 实验:通过开关控制数码管的显示( 使用汇编语言、 C 语言完成 ) 按下“计数按键时,中断程序累加计数,通过数码管显示; 按下“清零按键时,数码管清零;#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define

29、 uint unsigned intsbit k1=P3A6;sbit l1=P3A4;uint i;uchar code DSY_CODE=0xC0,0xF9,0xA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90; voidDeleayMS(uint x)uchar t;while(x-) for(t=0;t<120;t+);void main()EA=1;EX0=1;IT0=1;l1=1;P0=P1=P2=0XFC0;while(1) while(k1=0) / 有键按下吗? ( k1=0 ? ) while(k1=0) / 确实是有键按下,那么: l1=0;i=0;P0=P1=P2=0XC0;while(!k1); / 等待按键放开void int0_0() interrupt 0i+;if(i<10)P0=DSY_CODEi%10; P1=DSY_CODE0,P2=DSY_CODE0;if(i>=10&&i<100) P0=DSY_CODEi%10,P1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论