单片机3
- 格式:doc
- 大小:177.50 KB
- 文档页数:8
第1章 基础知识1、80C51与87C51的区别在于 A A 、内部程序存储器的类型不同 B 、内部数据存储器的类型不同 C 、内部程序存储器的容量不同 D 、内部数据存储器的容量不同2、80C51与8051的区别在于 B A 、内部ROM 的类型不同 B 、半导体工艺的型式不同 C 、内部寄存单元的数目不同 D 、80C51使用EEPROM ,而8051使用EPROM3、在下列单片机芯片中使用掩膜ROM 作为内部程序 存储器的是 B A 、8031 B 、80C51 C 、8032 D 、87C51第2章 单片机基本原理1、堆栈有哪些功能?堆栈指示器(SP )的作用是什么?在程序设计时,为什么还要对SP 重新赋值?2、PC 的值是 C A 、当前指令前一条指令的地址 B 、当前正在执行指令的地址 C 、下一条指令的地址 D 、控制器中指令寄存器的地址3、为寻址程序状态字的F0位,可使用的地址和符号有 (D5H )、(F0)、(PSW.5)和(D0H.5)。
PSW :4、若原来工作寄存器0组为当前寄存器组,现要改1组为当前寄存器组,不能使用的指令是 C A 、SETB PSW.3 B 、SETB D0H.3 C 、MOV PSW.3,1 D 、CPL PSW.3第3章 单片机汇编程序设计1、假定累加器A 的内容为30H ,执行指令: 1000H :MOVC A ,@A+PC后,把程序存储器(1031H )单元的内容送累加器A 中。
2、假定DPTR 的内容为8100H ,累加器A 的内容为40H ,执行指令: 1000H :MOVC A ,@A+DPTR后,送入A 的是程序存储器(8140H )单元的内容。
3、假定(SP )=60H ,(ACC )=30H ,(B )=70H ,执行下列指令: PUSH ACC位序 B 7 B 6 B 5 B 4 B 3 B 2 B 1 B 0位符号 C Y A C F 0 R S 1 R S 0 O V F 1PPUSH B后,SP 的内容为(62H ),61H 单元的内容为(30H ),62H 单元的内容为(70H )。
4、假定(SP )=62H ,(61H )=30H ,(62H )=70H 。
执行下列指令: POP DPH POP DPL后,DPTR 的内容为(7030H ),SP 的内容为(60H )。
5、假定(A )=85H ,(20H )=0FFH ,(CY )=1,执行指令: ADDC A ,20H后,累加器A 的内容为(85H ),CY 的内容为(1),AC 的内容为(1),OV 的内容为(0)。
6、假定标号qaz 的地址为0100H ,标号qwe 值为0123H 。
应执行指令: qaz :SJMP qwe该指令的相对偏移量为(21H )。
7、假定addr11=00100000000B ,标号qaz 的地址为1030H 。
执行指令: qaz :AJMP addr11后,程序转移到地址(1100H )去执行。
8、在相对寻址方式中,寻址的结果体现在(A )。
A 、PC 中 B 、累加器A 中 C 、DPTR 中 C 、某个存储单元中9、在相对寻址方式中,“相对”两字是指相对于( C )。
A 、地址偏移量rel B 、当前指令的首地址 C 、当前指令的末地址 D 、DPTR 值 10、执行以下程序段 MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A 后,实现的功能是( D )。
A 、把立即数data 循环左移3次 B 、把立即数data 乘以10 C 、把data 单元的内容循环左移3次 D 、把data 单元的内容乘以10第5章 MCS-51单片机内部资源及编程1、当计数器产生计数溢出时,该位作为TF0(TF1)位置“1”。
对计数器溢出的处理,在中断方式时,该位作为(中断请求标志)位使用;在查询方式时,该位作(查询的状态)位使用。
2、在定时器工作方式0下,计数器的宽度为13位,如果系统晶振频率为3MHz ,则最大定时时间为( )。
s32768312213μ=⨯3、响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把(PC)的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送(PC),使程序执行转向(ROM)中的中断地址区。
4、执行中断返回指令,要从堆栈弹出断点地址,以便去执行被中断了的主程序。
从堆栈弹出的断点地址送给CA、AB、CYC、PCD、DPTR5、在中断流程中有“关中断”的操作,对于外部中断0,要关中断应复位中断允许寄存器的 BA、EA位和ET0位B、EA位和EX0位C、EA位和ES位D、EA位和EX1位6、与定时工作方式1和0比较,定时工作方式2不具备的特点是 BA、计数器溢出后能自动重新加载计数初值B、增加计数器位数C、提高定时精度D、适于循环定时和循环计数应用7、对于8031单片机应用系统,中断响应并自动生成长调用指令LCALL后,应 AA、转向外部程序存储器去执行中断服务程序B、转向内部数据存储器去执行中断服务程序C、转向外部数据存储器去执行中断服务程序D、转向内部程序存储器去执行中断服务程序8、在XTAL频率是12MHz的标准8051器件上,用Timer1产生10kHz定时器滴答中断。
#include<reg51.h>/*T1中断服务程序:每100个时钟周期执行1次*/static unsigned long overflow_count=0;void timer1_ISR(void) interrupt 3 {overflow_count++; //溢出计数器加1}/*main C 函数:置T1为8位定时器重装(方式2),定时器计数到255时溢出,用156重装并产生中断*/void main(void){TMOD=(TMOD&0x0F)|0x20; //设置方式(带重装8位定时器)TH1=256-100; //重装TL1来计数100个时钟周期TL1=TH1;ET1=1; //允许T1中断TR1=1; //启动T1运行EA=1; //全部中断允许while(1); //不做什么(无限循环):T1的中断每100个时钟周期将出现1次,由于8051CPU 运行在12MHz,故中断以10kHz的频率发生}说明:每次定时器滴答中断都会使变量overflow_count加1;main函数在while(1)循环中将定时器T1初始化为无限循环9、采用10MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号。
分析:采用定时器T0。
对于10MHz晶振,使用定时器最大定时为几十ms。
取10ms定时,则周期2.5s 需250次(2500ms=2.5s)中断,占空比为20%,高电平应为50次(500ms)中断。
10ms定时,晶振fosc=10MHz。
需定时器计数次数=10×103×10/12=8 333中断服务程序名为time0.c。
#include<reg51.h>#define uchar unsigned charuchar time;uchar period=250;uchar high=50;timer0( ) interrupt 1 using 1{ /*T0中断服务程序*/TH0=(65536-8333)/256; /*重载计数初值*/TL0=(65536-8333)%256;if (++time= =high) P1.0=0; /*高电平时间到变低*/else if(time= =period) { /*周期时间到变高*/time=0;P1.0=1;}}main( ){TMOD=0x01; /*T0方式1*/TH0=(65536-8333)/256; /*预置计数初值*/TL0=(65536-8333)%256;EA=1;ET0=1;TR0=1;do{ } while(1);}10、定时器:从60秒到0秒的倒记时。
#include “reg51.h”unsigned charLED_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char LED_bit[2]={0x01,0x02};unsigned LED_buf[2]={0,0};sbit P1_0=P1^0;#define count 921 //单片机的晶振频率是11.0592MHzunsigned char a=60;void time_isp(void) interrupt 1{ unsigned char k;TH0=(65536-count)/256;TL0=(65536-count)%256;k++;if(k==1000) {a--;k=0;}else if(a==0) a=60;P1_0=~P1_0;}void convert (unsigned int n){unsigned char j;unsigned char i=0;for(j=0;j<=1;j++){LED_buf[j]=0;}while(n){ LED_buf[i]=(unsigned char)(n%10);n=n/10;i++;}}void delay(int n){int i;for(i=0;i<n;i++){ }}void main(void){unsigned char i;TMOD=0x01;TH0=(65536-count)/256;TL0=(65536-count)%256;EA=1;ET0=1;TR0=1;while(1){convert(a);for(i=0;i<=1;i++){P2=LED_seg[LED_buf[i]];P0=LED_bit[i];delay(100);}}11、单片机用内部定时方法产生频率为100kHz等宽矩形波,假定单片机的晶振频率为12MHz,请编程实现。
分析:T=1µs,t=1/100kHz=10µs,定时5µs12、有晶振频率为6MHz的MCS-51单片机,使用定时器0以定时方法在P1.0输出周期为400µs,占空比为1:10的矩形脉冲,以定时工作方式2编程实现。
分析:实现基本定时40µs;TMOD:02HTH0=TL0=0ECH13、三态缓冲器的输出应具有三种状态,其中不包括A、高阻抗状态B、低阻抗状态C、高电平状态D、低电平状态14、在接口电路中的“口”一定是一个A、已赋值的寄存器B、数据寄存器C、可编址的寄存器D、既可读又可写的寄存器15、下列理由中,不能说明MCS-51的I/O编址是统一方式而非独立方式的理由是A、没有专用的I/O指令B、没有区分存储器和I/O的控制信号C、使用存储器指令进行I/O控制信号D、P3口线具有第二功能16、如果把8255的A1、A0分别与80C51的P0.1、P0.0连接,则8255的A、B、C口和控制寄存器的地址可能是A、××00H~××03HB、00××H~03××HC、0×××H~3×××HD、×00×H~×03×H17、专用寄存器“串行数据缓冲寄存器”,实际上是(串行发送数据缓冲)寄存器和(串行接收数据缓冲)寄存器的总称。