文档库 最新最全的文档下载
当前位置:文档库 › PIC单片机应用开发典型模块_第六章程序

PIC单片机应用开发典型模块_第六章程序

PIC单片机应用开发典型模块_第六章程序
PIC单片机应用开发典型模块_第六章程序

(1)位置式PID

#include "math.h"

struct PID_Data

{

struct

{

float uc; //输入命令值

float y; //实际测量值

float u; //实际控制器输出值

float v; //控制器输出的一个比较值}Signals;

struct

{

float P; //比例控制器输出值

float I; //积分器输出值

float D; //微分器输出值

float yold; //y[(k-1)t]的值

float Si; //积分分离算法时误差的判断点}States;

struct

{

float K; //比例增益

float Ti; //积分时间常数

float Td; //微分时间常数

float N; //最大位分增益

float ulow; //控制器输出最小值

float uhigh; //控制器输出最大值

float T; //采样周期

float Ki,ar,bd,ad; //中间变量

}Par;

}pid_data;

//PID初始化子函数

void PID_Init(struct PID_Data * data)

{

data->States.I = 0;

data->States.D = 0;

data->States.yold = 0;

data->Par.K = 4.4;

data->Par.Ti = 0.4;

data->Par.Td = 0.2;

data->Par.N = 10;

data->Par.ulow = -1;

data->Par.uhigh = 1;

data->Par.T = 0.03;

data->Par.Ki = (data->Par.K) * (data->Par.T) / (data->Par.Ti); //计算Ki

data->Par.bd = (data->Par.K) * (data->Par.N) * (data->Par.Td) /

(data->Par.Td + data->Par.N * data->Par.T);

data->Par.ad = data->Par.Td / (data->Par.Td + data->Par.N * data->Par.T);

}

void PID_CalculateOutput(struct PID_Data * data)

{

//比例控制器输出

data->States.P = data->Par.K * (data->Signals.uc - data->Signals.y);

//微分控制器输出

data->States.D = data->Par.ad * data->States.D-

data->Par.bd * (data->Signals.y - data->States.yold);

//积分控制器的输出

data->States.I = data->States.I + data->Par.Ki*(data->Signals.uc - data->Signals.y);

//计算控制器的输出

data->Signals.v = data->States.P + data->States.I + data->States.D;

//判断实际控制器的输出

if(data->Signals.v < data->Par.ulow)

{

data->Signals.u = data->Par.ulow;

}

else if(data->Signals.v > data->Par.uhigh)

{

data->Signals.u = data->Par.uhigh;

}

else

{

data->Signals.u = data->Signals.v;

}

data->States.yold = data->Signals.y;

}

void PID_Main()

{

PID_Init(&pid_data);

while(1)

{

PID_CalculateOutput (&pid_data);

}

}

(2)增量式PID控制算法

struct PID_Data

{

struct

{

float uc; //输入命令值

float y; //实际测量值}Signals;

struct

{

double u; //实际控制器输出值

double deta_u;

double u_1; //u[(k-1)t]

double u_2; //u[(k-2)t]

double y_1; //y[(k-1)t]

double y_2; //y[(k-2)t]

double error;

double error_1;

double error_2;

double kp;

double ki;

double kd;

}States;

struct

{

double x1;

double x2;

double x3;

}Par;

}pid_data;

//PID参数初始化

void PID_Init(struct PID_Data * data)

{

data->Signals.uc = 5;

data->States.deta_u = 0;

data->States.u_1 = 0;

data->States.u_2 = 0;

data->States.y_1 = 0;

data->States.y_2 = 0;

data->States.kp = 0.05;

data->States.ki = 0.000;

data->States.kd = 0.000;

data->States.error_1 = 0;

data->States.error_2 = 0;

data->Par.x1 = 0;

data->Par.x2 = 0;

data->Par.x3 = 0;

}

//增量式PID算法控制输出计算

void PID_CalculateOutput(struct PID_Data * data)

{

int k = 0;

data->Signals.y = QepCNTB/10000.0;

//控制器输出增量值

data->States.deta_u =

data->States.kp*data->Par.x1 + data->States.ki*data->Par.x2 + data->States.kd*data->Par.x3;

//计算控制器输出

data->States.u = data->States.u_1 + data->States.deta_u;

//判断实际控制器输出

if(data->States.u > 0.32)

{

data->States.u = 0.32;

}

else if(data->States.u < -0.32)

{

data->States.u = -0.32;

}

else

{

data->States.u = data->States.u;

}

data->States.error = data->Signals.uc-data->Signals.y;

data->States.u_2 = data->States.u_1;

data->States.u_1 = data->States.u;

data->States.y_2 = data->States.y_1;

data->States.y_1 = data->Signals.y;

data->Par.x1 = data->States.error-data->States.error_1;

data->Par.x2 = data->States.error-2*data->States.error_1+data->States.error_2;

data->Par.x3 = data->States.error;

data->States.error_2 = data->States.error_1;

data->States.error_1 = data->States.error;

}

(3)单神经元自适应控制PID算法

#include "math.h"

struct PID_Data

{

struct

{

double uc; //输入命令值

double y; //实际测量值

double u; //实际控制器输出值

double u_1; //u(k-1)

double v; //控制器输出的一个比较量}Signals;

struct

{

long xiteP;

long xiteI;

long xiteD;

long yold; //y[(k-1)t]的值

long error; //e(k)

long error_1; //e(k-1)

long error_2; //e(k-2)

}States;

struct

{

int K; //总比例系数

long wkp_1;

long wki_1;

long wkd_1;

long wkp;

long wki;

long wkd;

}Par;

}pid_data;

void PID_Init(struct PID_Data * data)

{

data->Signals.u_1=0;

data->States.xiteP=40;

data->States.xiteI=35;

data->States.xiteD=40;

data->States.yold=0;

data->States.error_1=0;

data->States.error_2=0;

data->Par.wkp_1=10;

data->Par.wki_1=10;

data->Par.wkd_1=10;

data->Par.K=0.5;

}

void PID_CalculateOutput(struct PID_Data * data)

{

long x1,x2,x3;

long wadd;

long w11,w22,w33;

data->States.error=data->Signals.uc-data->Signals.y;

data->Par.wkp=data->Par.wkp_1+data->States.xiteP*data->States.error*

data->Signals.u_1*(2*data->States.error-data->States.error_1);

data->Par.wki=data->Par.wki_1+data->States.xiteI*data->States.error*

data->Signals.u_1*(2*data->States.error-data->States.error_1);

data->Par.wkd=data->Par.wkd_1+data->States.xiteD*data->States.error*

data->Signals.u_1*(2*data->States.error-data->States.error_1);

x1=data->States.error-data->States.error_1;

x2=data->States.error;

x3=data->States.error-2*data->States.error_1+data->States.error_2;

wadd=fabs(data->Par.wkp)+fabs(data->Par.wki)+fabs(data->Par.wkd);

w11=data->Par.wkp/wadd;

w22=data->Par.wki/wadd;

w33=data->Par.wkd/wadd;

data->Signals.v=data->Signals.u_1+data->Par.K*(x1*w11+x2*w22+x3*w33)/100;

if(data->Signals.v>10)

data->Signals.u=10;

else if(data->Signals.v<-10)

data->Signals.u=-10;

else

data->Signals.u=data->Signals.v;

data->States.error_2=data->States.error_1;

data->States.error_1=data->States.error;

data->Signals.u_1=data->Signals.u;

}

单片机简答题

简答题 1、简述借用定时/计数器溢出中断作为外部中断的具体方法? 2、简述8051片内RAM的空间地址分配。 3、MCS-51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么? 4、简述直接位寻址区的空间分配,片内RAM中包含哪些可位寻址单元? 5、8051单片机的存储器在结构上有何特点?在物理和逻辑上各有哪几种地址空间?访问不同空间的指令格式有何区别? 6、8051单片机在片内有哪些主要逻辑功能部件?每个逻辑部件的主要功能是什么? 7、写出MCS-51的所有中断源,并说明说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除?它们的中断程序入口地址分别为什么? 8、8031的扩展存储器系统中,为什么P0口要接一个8位锁存器,而P2口却不接? 9、8051在什么条件下可响应中断? 10、什么是中断矢量?若某个中断源的中断服务程序的字节数超过8个单元,应如何处理?程序题: 1. 若要完成以下数据传送,如何应用MCS-51指令予以实现? (1)外部RAM 0020H单元内容送内部RAM 20H单元: (2)外部ROM 2000H单元内容送内部 RAM 20H单元: 2.编写程序段,用三种方法实现累加器A与寄存器B的内容交换。 3.编程将片内20H单元开始的30个数传送到片外RAM 3000H开始的单元中。 解: MOV R7 , #30 ;传送字节数给R7 ;R0指向片内20H单元 ;DPTR指向片外3000H单元 LOOP ;取数 ;将数据转存入片外RAM ;R0指向片内下一单元 ;DPTR指向片外下一单元 DJNZ R7,LOOP ;数据传送完否? 4.编程,从串行口接受一个字符。 答: START: ;定时器T1工作于模式2 MOV TL1 , # 0E8H ;设置波特率为1200b/s MOV TH1,#0E8H ;启动T1 MOV SCON,#50H ;串行口工作于方式1,允许接收 L1: JNB RI , L1 ;等待接收数据,未接收到数据,继续等待 ;接收到数据,清RI

单片机分析程序

四、分析程序并填空() 1.执行下列程序段后,(P1)=___9BH____。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7 2.执行下列程序段后,(A)=__8BH_____,(C Y)=__不影响__。 MOV A,#C5H RL A 3.下列程序段执行后,(R0)=___7FH____,(7EH)=__00H__,(7FH)=_41H______。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H INC @R0 INC R0 INC @R0 4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=__0345H_,(61H)=___25H____,(62H)= __01H__。 5.阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A RET ; (data)×10操作 6.改错 1.MUL RoRl 乘法指令应使用A、B寄存器操作 2.MOV A,@R7 间接寄存器使用R7有误,间址寄存器只能使用R0、R1 3.MOV A,#3000H 8位累加器A不能接受16位数据 4.MOVC @A+DPTR,A MOVC指令为对程序存储区操作指令,累加器的内容不可通过变址方式送入程序存储器,两操作数写反了。 5.UMP #1000H 长转移指令中的操作数为16位转移地址,不能用立即数的形式来表达。 7. 说明MCS—51单片机的下列各条指令中源操作数的寻址方式(可直接在每条指令后面书写) 1.ANL A,20H 直接寻址 2.ADDC A,#20H 立即寻址

单片机简答题汇总

单片机简答题汇总 1、计算机经历了几个时代? 电子管、晶体管、集成电路、大规模集成电路和超大规模集成电路、智能计算机。 2、冯诺依曼设计思想? a.计算机包括运算器、存储器、输入/输出设备。 b.内部采用二进制表示指令和代码。 c.将编号的程序送入内存储器中,然后启动计算机工作,能够顺序逐条取出指令和执 行指令。 3、MCS-51的内部结构? 8位CPU、8位并行I/O口、128个字节的内部RAM、21个SFR、4KB的内部ROM、一个全双工串行I/O口、2个16位定时器/计数器、5个中断源,2个中断优先级、 4、ROM和RAM ROM:片内4KB,地址范围0000H – 0FFFH 片外扩展64KB 地址范围0000H - FFFFH 片内外统一编址方式复位后PC为0 RAM:片内256字节地址范围00H – FFH 低128字节为一般RAM区00H-7FH 00H – 1FH 工作寄存器区,4组通用寄存器区,一组8个寄存器 20H - 2FH 位寻址区,也可字节寻址 30H – 7FH堆栈区和数据缓冲区 高128字节为SFR地址范围为80H- FFH 实现各种控制功能 5、堆栈?堆栈指针? 一种按照“先进后出”为原则的线性表数据结构。 存放堆栈的栈顶地址的寄存器(8位),系统复位后SP为07H。 6、单片机正常工作的条件? a.电源正常 b.时钟正常 c.复位正常 7、C51外扩的ROM和RAM可以有相同的地址空间,但不会发生数据冲突,为什么? 访问外扩的ROM和RAM的指令不同,所发出的控制信号也不同。读外部RAM时,RD/信号有效,写外部RAM时,WR/有效,读外部ROM时,PSEN/有效。在程序执行的过程中只能有一个信号有效,因此即使有相同的地址也不会发挥数据冲突。 8、C51外部引脚EA/的作用? EA/是内外部RAM的选通信号 EA/ = 0 时,只选择外部ROM EA/ = 1 时,PC<0FFFH时,选择内部ROM PC>0FFFH时,选择外部ROM 9、位寻址区? 内部RAM的20H – 2FH为位寻址区,位寻址范围为00H – 7FH SFR中地址能被8整除的字节地址单元,地址范围是80H – FFH 10、中断?中断响应和中断返回? 由于内部或外部的某种原因,CPU必须终止当前的程序,转去执行中断请求的那个外设

单片机原理复习简答题答案

一、简述题 1.MCS-51单片机芯片包含哪些主要逻辑功能部件?(习题2-1) (1)中央处理器(CPU):运算器--用于实现算术和逻辑运算;控制器:产生计算机所需的时序,控制程序自动执行 (2)内部数据存储器:用于存放可读写的数据 (3)内部程序存储器:用于存放程序的机器代码和常数 (4)并行I/O口:实现数据的输入/输出 (5)定时/计数器:用于实现定时和计数功能 (6)串行口:一个全双工的口,可实现数据的串行传送 (7)中断控制:实现单片机的中断判优、中断响应、中断查询等控制 (8)时钟电路:为单片机提供时钟脉冲序列 2.程序计数器PC的作用是什么?什么情况下会使用PC的值?(习题2-4) 程序计数器PC是位于片内的一个16位的寄存器,它专门用来存放当前要执行的指令地址,且能够自动加1,具有特殊功能。是一个不可寻址的特殊功能寄存器。其低8位地址经P0口输出,高8为地址经P2口输出。 3.MCS-51单片机设置有四组工作寄存器,这样做的目的是什么?请举例说明。?? 如何选择MCS-51单片机的当前工作寄存器组?(习题2-7) MCS-51的当前工作寄存器组是由程序状态寄存器PSW中的RS1、RS2位的状态决定的。工作寄存器区的选择: RS1,RS0=00 则选择了工作寄存器组0区R0~R7对应的单元地址:00H~07H RS1,RS0=01 则选择了工作寄存器组1区R0~R7对应的单元地址:08H~0FH RS1,RS0=10 则选择了工作寄存器组2区R0~R7对应的单元地址:10H~17H RS1,RS0=11 则选择了工作寄存器组3区R0~R7对应的单元地址:18H~1FH 4.简述MCS-51单片机的位寻址空间。(习题2-11) MCS-51单片机的位寻址空间由两部分构成:一部分为内部RAM位寻址区的20-2FH的16个单元的128位,位地址范围:00~7FH;另一部分为单元地址尾数为0和8的SFR中的位构成的位寻址区,共83位,位地址范围是80~0FFH。 MCS-51单片机位寻址空间共有211个位,位地址范围:00H~0FFH 5.什么是时钟周期、机器周期、指令周期?如何计算机器周期?晶振频率为12M时,计 算时钟周期、机器周期。(习题2-9) 时钟信号的周期称为S状态,它是晶振周期的两倍,即一个时钟周期(TS)包含2个晶振周期;指令周期(TI):执行一条指令所用的时间; 机器周期(TM):CPU完成一个基本操作所用的时间。(每12个时钟周期为1个机器周期)当晶振频率为12MHz时,时钟周期TS=2/f=0.17μs,机器周期TM=12/f=1μs 6.简单说明MCS-51单片机PSW寄存器各标志位的含义。(习题2-15) CY(PSW.7) 进位/借位标志位;AC(PSW.6)半进位/借位标志位;F0(PSW.5) 用户标志位;RS1(PSW.4)、RS0(PSW.3) 工作寄存器组选择位;OV(PSW.2) 溢出标志位; PSW.1 未定义;P(PSW.0) 奇偶标志位

单片机简答题整理

1.MSC-51单片机内部包含哪些主要逻辑功能部件? (1)一个8位微处理器CPU。 (2)数据存储器RAM和特殊功能寄存器SFR。(3)内部程序存储器ROM。(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。(6)一个串行端口,用于数据的串行通信 内部结构特点: 1.内部程序存储器(ROM)和内部数据存储器(RAM)容量(如表2-1所示)。2.输入/输出(I/O)端口。 3.外部程序存储器和外部数据存储器寻址空间。4.中断与堆栈。5.定时/计数器与寄存器区。6.指令系统。 2.片机的EA,AL,PS EN信号个自动功能是什么? EA:为片外程序存储器选用端,该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器。ALE:地址索存有效信号输出在访问片外程序存储器期间,ALE以每机器周期两次进行信号输出,其下降沿用于控制锁存P0输出的低8位地址;在不访问片外程序存储器期间,ALE端仍以上述频率(振荡频率f os c的1/6)出现,可作为对外输出的时钟脉冲或用于定时目的.端,PSEN:片外程序存储器读选通信号输出端,低电平有效. 3.80C51系列单片机有哪些信号需要芯片引脚以第二功能方式提供? ●p1.0:定时计数器2的计数脉冲输入端T2P1.1:定时计数器2的外部控制端T2EXP3.0:PxD串行口输入端P3.1:T xD 串行口输出端P3.2:INT0外部中断0请求输入端,低电平有效P3.3:INT1外部中断1请求输入端,低电平有效P3.4:T0定时/计数器0技术脉冲输入端P3.5:T1定时/计数器1技术脉冲输入端P3.6:W R外部数据存数器写选通信信号输出端,低电平有效P3.7:RD外部数据存数器读选通信信号输出端,低电平有效.4.51系列单片机的程序状态字PSW中存放 什么信息?其中的OV标志位在什么情况下 被置位?置位是表示什么意思? ●PSW是一个8位标志寄存器,它保存指令 执行结果的特征信息,以供程序查询和判别。 ●1)做加法时,最高位,次高位之一有进位 则OV被置位2)做减法时,最高位,次高 位之一借位则OV被置位3)执行乘法指令 MULA B,积大于255,OV=14)执行处罚 指令DIV AB,如果B中所放除数为0,OV=1 ●0V=1,置位反映运算结果超出了累加器的 数值范围. 5.MCS-51系列单片机的存储器可划分为几 个空间?其地址范围和容量是多少?在使用 上有什么不同? 1)MCS-51单片机的存储器从物理结构上分 为:片内和片外数据存储器,片内和片外程 序存储器。2)从逻辑上分别可划分为:片内 统一寻址的64K程序存储器空间 (0000H---FFFFH);64KB的片外数据存储 器空间(0000H---FFFFH);256B的片内数 据存储器空间(00H---FFH)。 6.片内RA M低128单元划分为哪几个区 域?应用中怎么样合理有效的使用? ●工作寄存器区,位寻址区,数据缓冲区① 工作寄存器区用于临时寄存8位信息,分成4 组,每组有8个寄存器,每次只用1组,其他 各组不工作②位寻址区(20H~2FH),这16 个单元的每一位都赋予了一个位地址,位地 址范围为00H~7FH,位寻址区的每一位都可 能当作软件触发器,由程序直接进行位处理。 ③由于工作寄存器区,位寻址区,数据缓冲 区统一编址,使用同样的指令访问,因此这 三个区的单眼既有自己独特的功能,又可统 一调度使用,前两个已未使用的单元也可作 为一般的用户RAM单元。 7.51系列单片机的堆栈与通用微机中的堆栈 有何异同?在程序设计时,为什么要对堆栈 指针sp重新赋值? ①堆栈是按先进后出或后进先出的远侧进行 读/写的特殊RAM区域51单片机的堆栈区 时不固定的,可设置在内部RAM的任意区 域内。 ②当数据压入堆栈时,s p的内容自动加1, 作为本次进栈的指针,然后再存取数据sp 的值随着数据的存入而增加,当数据从堆栈 弹出之后,sp的值随之减少,复位时,sp 的初值为07H,堆栈实际上从08H开始堆放 信息,即堆栈初始位置位于工作寄存器区域 内,所以要重新赋值。 8.MCS-51单片机有4个并行口,在使用上如 何分工?试比较各口的特点,并说明“准双 向口”的含义? 一般P0做数据口和地址的低八位。P2做地 址的高八位。如果没有外部扩展存储器可以 作为一般的I/O使用。P1一般作为普通I/O 用。P3有第二功能,所以一般做特殊情况使 用,比如串行通信,按键中断,定时中断等。 “准”就是“基本上的意思”,也就是“准双 向口”不是真正的双向口。正常的双向口通 过方向寄存器设置后要作输出可以直接向数 据寄存器写,做输入可以直接读。而51的结 构造成他不能正样用,输出直接用就可以了, 输入必须先写全1然后再读。 9.定时器/计数器定时与计数的内部工作有 何异同? 定时工作模式和技术工作模式的工作原理相 同,只是计数脉冲来源有所不同:处于计数 器工作模式时,加法计数器对芯片端子 T0(P3.4)或T1(P3.5)上的输入脉冲计数;处 于定时器工作模式时,加法计数器对内部机 器周期脉冲计数。

51单片机C语言程序设计经典案例

项目三 C51程序设计语言基础 任务1 C51程序的识读 1.C51程序结构 例3-1 P_test /********************* ,标准的MCS-51单片机头文件为””,STC89系列单片机头文件为””

4.C51的常量和变量 1)常量 常量就是在程序运行过程中,其值不能改变的数据,包括整型常量、字符常量、字符串常量、实数常量、位标量等。 (1)整型常量:可以用二进制、八进制、十进制、十六进制表示。 无符号整数常量在一个数字后面加上“u”或“U”表示。长整数型常量在后面加上“l”或“L”,无符号长整数型常量在数字后面加上“ul”或“UL”,实数型常量在后面加“f”或“F”。 (2)字符常量:单引号内的字符,不可以显示的控制字符在前加“\”组成专用转义字符。(3)字符串常量:双引号内的字符,当双引号内没有字符时是空字符串。在C语言中,字

符串常量是作为字符类型数组来处理的,在存储字符串时,系统在字符串尾部加上转义字符“\o”,作为该字符串的结束符。 (4)实数常量:有十进制和指数两种表示形式。指数表示的实数为“[±]数字[.数字]e[±]数字”,[ ]中的内容为可选项 (5)位标量:位标量的值是一个二进制数。 2)变量 变量就是在程序运行过程中,其值可以被改变的数据。必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义变量的格式: [ < 存储模式 > ] < 类型定义 > [ 存储器类型 ] < 标识符 >; 类型定义和标识符是必要的。存储模式有四种,自动(auto)、外部(extern)、静态(static)和寄存器(register),默认类型为自动(auto)。 表3-3 C51存储类型与MCS-51单片机存储空间的对应关系及其大小 如果在变量定义时省略了存储类型标识符,则编译器会自动选择默认的存储类型。默认的存

单片机简答题

简答题: 1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少? 答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。 2.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤) 答:定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是1388H TMOD的值是00000001B,TH0=13H;TL0=88H。 3.MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。 答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。 1.如何正确使用P3口? 1.要点: (1)说明P3口有第一功能和第二功能的使用。 (2)P3口的第二功能各位线的含义。 (3)使用时应先按需要选用第二功能信号,剩下的口线才作第一功能I/O线用。 (4)读引脚数据时,必需先给锁存器输出“1”。 2.简述累加器的ACC的作用。 2.(1)8位专用寄存器。 (2)运算时存放一个操作数。 (3)运算后存放运算结果,所以称它为累加器。 3.简述寄存器间接寻址方式及其寻址范围。 3.(1)寄存器中存放的是操作数的地址,操作数是通过寄存器间接得到,这种寻址方式称为寄存器间接寻址方式。 (2)寻址范围: ①内部RAM低128单位,形式@Ri(i=0,1)。 ②外部RAM64K使用DPTR作间址寄存器,形式为@DPTR。 4.简述MCS-51单片机的中断入口地址。 4.中断入口地址为中断响应后PC的内容即中断服务的入口地址。 它们是:外部中断0 0003H 定时器T0中断000BH 外部中断1 0013H 定时器T1中断001BH 串行口中断0023H 5.简述串行数据传送的特点。 5.(1)传送按位顺序进行,速度慢。

51单片机考试常见试题简答题,整理版

51单片机考试常见试题简答题,整理版 简答题部分 1、什么叫堆栈? 2、进位和溢出? 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 5、MCS-51单片机通常内部包含哪些 主要逻辑功能部件? 6、MCS-51单片机的存储器从物理结构上可 划分几个空间? 7、存储器中有几个保留特殊功能的单元用做入口地址?分别 作什么作用? 8、MCS-51单片机片内256B的数据存储器可分为几 个区?分别起什么作用? 8、MCS-51单片机的P0~P3四个I/O端口在结构上有何异同? 使用时应注意的事项? 9、存储器空间在物理结构上可划分为几 个部分? 10、开机复位后,CPU使用是的哪组工作寄存器?它们的地址 是什么?CPU如何确定和改变当前工作寄存器组? 11、MCS-51的时钟周期、机器周期、指令周期的如何分配 的?当振荡频率为8MHz时,一个单片机时钟周期为多少微秒? 12、程序状态存储器PSW的作用是什么?常用状态标志有哪 几位?作用是什么? 13、EA/VPP引脚有何功用?8031的引脚应 如何处理?为什么?

14、单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中? 15、什么是指令?什么是程序?简述程序在计算机中的执行过程。 16、什么叫寻址方式?MCS51有几种寻址方式? 17、 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。 18、中断服务子程序与普通子程序有哪些异同之处? 19、MCS-51响应中断的条件是什么?CPU响应中断后,CPU要进行哪些操作?不同的中断源的中断入口地址是什么? 20、单片机对中断优先级的处理原则是什么? 21、MCS-51的外部中断有哪两种触发方式?他们对触发脉冲或电平有什么要求? 22、什么是中断和中断系统?其主要功能是什么? 23、MCS-51有哪些中断源? 24、说明外部中断请求的查询和响应过程 25、MCS-51响应中断的条件?。 26、简述MCS-51单片机的中断响应过程。 27、在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求? 28、MCS-51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求? 29、什么是中断优先级?中断优先级处理的原则是什么? 1

51单片机基础知识及期末复习

51单片机简答题部分(经典) 1、什么叫堆栈? 答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。 2、进位和溢出? 答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 答:单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固 化,用户不能修改ROM中的程序。掩膜ROM单片机适合于 大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法 将程序制作在芯片的ROM。 (2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM 中,也可以将EPROM中的信息全部擦除。擦去信息的芯片 还可以再次写入新的程序,允许反复改写。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接 程序存储器的容量。这种单片机扩展灵活,但系统结构较复 杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用 (5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程 序存储器中,程序写入后不能再改写。这种芯片的价格也较 低。 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周

单片机简答题与答案

1、MCS-51单片机的时钟周期与振荡周期之间有什么关系?一个机器周期的时序如何划分? 答:时钟周期是单片机最基本的时间单位。机器周期则是完成某一个规定操作所需的时间。一个机器周期为6个时钟周期,共12个振荡周期性,依次表示为S1P1、S1P2、……S6P1、S6P2。 2、MCS-51单片机有几种复位方法?应注意的事项? 答:上电复位和开关复位。上电复位要求接通电源,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。 3、MCS-51单片机内部包含哪些主要逻辑功能部件? 答:(1)一个8位微处理器CPU。 (2)数据存储器RAM和特殊功能寄存器SFR。 ROM。(3)内部程序存储器(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。 (5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。(6)一个串行端口,用于数据的串行通信。 4、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU在操作中要使用两组工作寄存器,你认为SP的初值应为多大? 答:堆栈是一种按照“先进后出”或者“后进先出”规律存取数据的RAM区域由于程序中没有表识,所以要对SP重新赋值对指针SP重新赋值是因为堆栈空间有限,要给他赋首地址。要使用两组工作寄存器,SP的值应该设置为10H。 5、MCS-51单片机的P0~P3四个I/O端口在结构上有何异同?使用时应注意的事项? 答:80C51单片机的4个I/O端口在结构上时基本相同的,但又各具特点。在无片外扩展存储器的系统中,这4个端口的每1位都可以作为I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。在系统扩展片外存储器时, P2口作为高8位地址,P0口分时作为低8位地址和双向数据总线。 它们的主要不同点如下: (1)P0口的每一位可驱动8个LSTTL负载。P0口即可作I/O端口使用,也可作地址/数据总线使用。当它作通用口输出时,只有外接上拉电阻,才有高电平输出,作地址/数据总线时,无需外接电阻,此时不能再作I/O端口使用。 (2)P1-P3口输出级接有内部上拉电阻,每位可驱动4个LSTTL负载,能向外提供上拉电流负载,所以不必再外接上拉电阻。 6、简述8051汇编指令格式。 。]原操作数[,]目的操作数 [答:操作码助记符 7、MCS—51指令集中有无“程序结束”指令?上机调试时怎样实现“程序结束”功能。 答:没有这样的指令。但实现“程序结束”至少可以借助4种办法: (1)用原地踏步指令 SJMP $ 死循环。 (2)在最后一条指令后面设断点,用断点执行方式运行程序。 (3)用单步方式执行程序。 (4)在末条指令之后附加一条LJMP监控显示器程序首地址或LJMP 0000H,返回监控状态。8、80C51有几种寻址方式?各涉及哪些存储器空间? 答:80C51有七种寻址方式: 1、立即寻址,寻址空间为ROM; 2、直接寻址,寻址空间为片内RAM的低128B和特殊功能寄存器; 3、寄存器寻址,寻址空间为A、B、DPTR、CY、通用工作寄存器等; 4、寄存器间接寻址,片内RAM低128B、片外RAM;

51单片机考试常见试题简答题,整理版

简答题部分 1、什么叫堆栈 2、进位和溢出 3、在单片机中,片内ROM勺配置有几种形式各有什么特点 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期它们之间是什么关系 5、MCS-51单片机通常内部包含哪些主要逻辑功能部件 6、MCS-51单片机的存储器从物理结构上可划分几个空间 7、存储器中有几个保留特殊功能勺单元用做入口地址分别作什么作用 & MCS-51单片机片内256B的数据存储器可分为几个区分别起什么作用 & MCS-51单片机的P0~P3四个I/O端口在结构上有何异同使用时应注意的事项 9、存储器空间在物理结构上可划分为几个部分 10、开机复位后,CPU使用是的哪组工作寄存器它们的地址是什么CPU如何确定和改变当前工作寄存器组 11、MCS-51的时钟周期、机器周期、指令周期的如何分配的当振荡频率为8MHz时,一个单片机时钟周期为多少微秒 12、程序状态存储器PSW勺作用是什么常用状态标志有哪几位作用是什么 13、EA/VPP引脚有何功用8031的引脚应如何处理为什么 14、单片机有哪几个特殊功能寄存器各在单片机的哪些功能部件中 15、什么是指令什么是程序简述程序在计算机中的执行过程。 16、什么叫寻址方式MCS5侑几种寻址方式17、SJMP (短转移)指令和AJMP(绝对转移)指令的主要区 另阮 18、中断服务子程序与普通子程序有哪些异同之处

19、MCS-51响应中断的条件是什么CPU响应中断后,CPU要进行哪些操作不同的中断源的中断入口地址是什么 20、单片机对中断优先级的处理原则是什么 21、MCS-51的外部中断有哪两种触发方式他们对触发脉冲或电平有什么要求 22、什么是中断和中断系统其主要功能是什么 23、MCS-51有哪些中断源 24、说明外部中断请求的查询和响应过程 25、MCS-51响应中断的条件。 26、简述MCS-51单片机的中断响应过程。 27 、在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求在什么情况下不能响应新的中断请求 28、MCS-51单片机外部中断源有几种触发中断请求的方法如何实现中断请求 29、什么是中断优先级中断优先级处理的原则是什么 30、中断响应过程中,为什么通常要保护现场如何保护 31、MCS-51定时器有哪几种工作模式有何区别 32、串行数据传送的主要优点和用途是什么 33、简述串行接口接收和发送数据的过程。 34、MCS-51串行接口有几种工作方式 35、MCS-51 中SCON勺SM2 TB& RB8有何作用 36、简述单片机多机通信的原理。 37、串行通信的总线标准是什么有哪些内容 38、简述单片机系统扩展的基本原则和实现方法。 39、8255 有哪几种工作方式怎样选择其工作方式

51单片机经典教程

单片机经典教程 目录
第一课 第二课 第三课 第四课 第五课 第六课 第七课 第八课 第九课 第十课 第十一课 第十二课 第十三课 第十四课 第十五课 第十六课 第十七课 第十八课 第十九课 第二十课 第二十一课 第二十二课 第二十三课 第二十四课 单片机的概述 单片机的硬件结构与开发过程 单片机的内部结构 一 半导体存储器 单片机的内部结构 二 工作寄存器 单片机的内部结构 三 时序与时钟 单片机的内部结构 四 并行口 单片机的内部结构 五 数据与地址 单片机的内部结构 六 特殊功能存储器 单片机的工作方式 单片机的寻址 单片机的指令 一 数据传递类指令 单片机的指令 二 数据传递类指令 单片机的指令 三 算术逻辑运算类指令 单片机的指令 四 控制转移类指令 单片机的指令 五 位及位操作指令 单片机的程序设计方法 单片机的定时 计数器 单片机的中断系统 单片机的定时/中断实验 一 单片机的定时/中断实验 二 键盘接口及编程方法 一 独立式按键 键盘接口及编程方法 二 矩阵式按键 单片机显示器接口及编程方法 数码管的静态扫描与编程方法 6 9 11 15 18 20 24 27 29 32 35 38 42 47 51 55 64 68 73 78 81 87 90 94
4

第一课 单片机的概述
因为我们的主要课程是单片机的应用 本来不想讲解单片机的历史与发展 这话说现状更确切 些 但为了兼顾大多数朋友 我还是简单的介绍一下这方面的相关知识 一 单片机的由来 单片机 专业名称—Micro Controller Unit(微控制器件) 它是由大名鼎鼎的 INTEL 公司发明的 最早的系列是 MCS-48 后来有了 MCS-51 我们经常说的 51 系列单片机就是 MCS-51 micro controller system 它是一种 8 位的单片机 8 位是什么意思 我们以后再讲 后来 INTEL 公司把它的核心技术转让给了世界上很多的小公司 不过 再小也有几个亿的销售/ 年哦 所以世界上就有许多公司生产 51 系列兼容单片机 比如飞利浦的 87LPC 系列 华邦的 W78 系列 达拉斯的 DS87 系列 现代的 GSM97 系列等等 目前在我国比较流行的就是美国 ATMEL 公司的 89C51 它是一种带 Flash ROM 的单片机 至于什么是 Flash ROM 我在这儿先不作介绍 等以后大家学到相 关的知识时自然就会明白 我们的讲座就是以该型号的单片机来作实验的 讲到这里 也许有的人会 问 我平时在各种书上看到全是讲解 8031 8051 等型号的单片机 它们又有什么不同呢 其实它们同 属于一个系列 只是 89C51 的单片机更新型一点(事实上,89C51 目前正在用 89S51 代替 我们的实验系 统采用就是 89S52 的 兼容 89C52) 这里随便说一下 目前国内的单片机教材都是以 8051 为蓝本的 尽管其内核也是 51 系列的 但毕竟 8051 的单片机已经属于淘汰产品 在市场上也很少见到了 所以由 此感叹 国内的高等教育是如此的跟不上时代的发展需要 这话可能会引起很多人的不满,所以大家别 说是我讲的哦 二 主要单片机的分类 接着上面的话题 再给大家介绍一下我们经常在各种刊物上看到的 AVR 系列和 PIC 系列单片机是 怎么回事 以便让大家对单片机的发展有一个较全面的认识 在没有学习单片机之前 这是一个令很多 初学者非常困惑的问题 这么多的单片机我该先学哪一种呢 AVR 系列单片机也是 ATMEL 公司生产的一种 8 位单片机 它采用的是一种叫 RISC 精简指令集单 片机 的结构 所以它的技术和 51 系列有所不同 开发设备也和 51 系列是不通用的 它的一条指令的 运行速度可以达到纳秒级 即每秒 1000000000 次 是 8 位单片机中的高端产品 由于它的出色性能 目前应用范围越来越广 大有取代 51 系列的趋势 所以学完了 51 系列的 看来必须学会 AVR 的才行 可叹知识爆炸 人生苦短 说完了 AVR 的 再来说说另一种--PIC 系列单片机 它是美国 MICROCHIP 公 司 唉 又是老美 叫微芯公司的生产的另一种 8 位单片机 它采用的也是 RISC 的指令集 它的指令 系统和开发工具与 51 系列更是不同 但由于它的低价格和出色性能 目前国内使用的人越来越多 国 内也有很多的公司在推广它 不过它的影响力远没有 51 系列的大 所以作为初学者 51 系列当然是首 选 以上几种只是比较多见的系列 其实世界上还有许多的公司生产各种各样的单片机 比如 MOTOROLA 的 MC68H 系列 老牌的单片机 TI 的 MSP430C 系列 极低功耗的单片机 德国的西门子 SIEMENS 等等 它们都有各自的结构体系 并不与 51 系列兼容 为了不搞大家的脑筋 这里就不介绍了 等大 家入了门以后自己去研究它吧 我们还是回来了解一下 51 系列单片机到底是个什么东西 它有那些部 分组成 请接着往下看 三 单片机的结构及组成 单片机到底是一种什么 DD 它究竟能做什么呢 其实它就是一种能进行数学和逻辑运算 根据不 同使用对象完成不同控制任务的面向控制而设计的集成电路 此话好象有点绕口 没关系 大家都应该 知道我们经常使用的电脑吧 在电脑上 我们可以用不同的软件在相同的硬件上实现不同的工作 比如 我们用 WORD 可以打字 用 PROTEL 可以设计图纸等等 单片机其实也是如此 同样的芯片可以根据我们 不同的要求做出截然不同的产品 只不过电脑是面向应用的 而单片机是面向控制的 比如控制一个指
6

最经典的51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序 END ;结束程序

单片机期末考试简答题

★MCS-51单片机的EA信号有何功能?在使用8031时EA信号引脚应如何处理? 答:EA用于控制PC对内部还是外部程序存储器的访问。使用8031时引脚接低电平。 ★内部RAM低128单元划分为哪几个主要部分?说明各部分的使用特点。 答:三个主要部分:工作寄存器区、位寻址区和用户RAM区。特点略。 ★堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?答:堆栈可以将数据、调用子程序和中断的断点地址。因为MCS-51的堆栈是向上生成,为了用户能确切使用RAM空间,所以要重新赋值。 ★使单片机复位有几种方法?复位后机器的初始状态如何? 答:上电复位和手动复位。复位后SFR有一个起始的状态。 ★简述MCS-51单片机的三大总线的构成。 答:数据总线控制总线和地址总线. ★单片机内部的并行接口有哪些?并分别说明起作用。 答:P0,P1,P2,P3 ★MCS-51单片机的堆栈类型是什么?那些操作涉及到堆栈操作? 答:堆栈可以将数据、调用子程序和中断的断点地址。因为MCS-51的堆栈是向上生成,为了用户能确切使用RAM空间,所以要重新赋值。 ★单片机为什么需要复位?复位后机器的初始状态如何? 答:上电复位和手动复位。复位后SFR有一个起始的状态。 ★设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何? MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH MOV 40H,#20H;(40H)=20H MOV 30H,40H ;(30H)=20H 解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。 ★MCS-51指令系统主要有哪几种寻址方式?试举例说明。 答:MCS-51指令操作数主要有以下7种寻址方式: 立即寻址 MOV A,#16 直接寻址 MOV 20H,P1 寄存器寻址 MOV A,R0 寄存器间接寻址 MOVX A, @DPTR 变址寻址 MOVC A, @A+DPRT 相对寻址 SJMP LOOP 位寻址 ANL C,70H ★定时器T0和T1各有几种工作方式?答:T0有4种工作方式,T1有3种工作方式。 方式0;适用定时器:T0,T1;13位的定时器/计数器。 方式1;适用定时器:T0,T1;16位的定时器/计数器。 方式2;适用定时器:T0,自动重新装入计数初值的8位的定时器/计数器 方式3;适用定时器:T0;分为两个8位计数器TLO和THO。TLO可工作于定时或计数状态,THO则固定为定时状态。方式3对T1则停止计数。 ★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线可用了。 ★8051的振荡周期、机器周期、指令周期是如何分配的?当晶振频率为6MHz时,一个机器周期为多少微秒?(7分) 答:8051单片机每条指令的执行时间(即指令周期)为1~4个机器周期,有单字节单周期指令、两字节单周期指令、单字节两周期指令、两字节两周期指令、三字节两周期指令以及单字节四周期指令。一个机器周期有6个状态:S1~S6每个状态又包含两个振荡周期,分为两拍:P1和P2。因此,一个机器周期包含12个振荡周期,表示为:S1P1、S1P2、S2P1、……S6P1、S6P2。当Fosc=MHz时,机器周期为:(1/6)×12=2(μs) ★简述可编程并行接口8255 A的内部结构? 答:8255 A的内部结构由三部分组成:总线接口部分,内部逻辑部分,外部接口部分。 总线接口部分其中有数据总线驱动器,读/写控制逻辑 内部逻辑部分由A组和B组控制电路。 外部接口部分该部分有3个8位并行I/O端口,即A口、B口和C口。 ★8051单片机内部包含哪些主要逻辑功能部件? 答:8051单片机是个完整的单片微型计算机。芯片内部包括下列硬件资源: 8位CPU;4KB的片内程序存储器ROM。可寻址64KB程序存储器和64KB外部数据存储器;128B内部RAM;21个SFR;4个8位并行I/O口(共32位I/O线);一个全双工的异步串行口;两个16位定时器/计数器;5个中断源,两个中断优先级;内部时钟发生器。 ★8051单片机存储器的组织结构是怎样的? 答:8051存储器包括程序存储器和数据存储器,从逻辑结构上看,可以分为三个不同的空间: <1>64KB的程序存储器地址空间:0000H~FFFFH,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM地址空间; <2>256B的内部数据存储器地址空间,00H~FFH,分为两大部分,其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域; <3>64KB的外部数据存储器地址空间:0000H~FFFFH,包括扩展I/O地址空间。 ★片内数据存储器分为哪几个性质和用途不同的区域? 答:8051内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下: <1>00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元作为一个工作寄

相关文档