当前位置:文档之家› 单片机c51部分

单片机c51部分

单片机c51部分
单片机c51部分

3.2 单片机的C51程序设计

3.2.1 C51基础知识

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。

一、C51的特点

C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等。

C语言程序本身不依赖于机器硬件系统,基本上不作修改或仅做简单修改就可将程序从不同的单片机中移植过来直接使用。

C语言提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。

二. 单片机的C51与汇编ASM—51相比,有如下优点:

(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步了解;

(2)寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;(3)程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;(4)提供的库包含许多标准子程序,具有较强的数据处理能力;

(5)由于具有方便的模块化编程技术,使已编好程序容易移植;

3.2.2 C51的基本数据类型

当给单片机编程时,单片机也要运算,而在单片机的运算中,这个“变量”数据的大小是有限制的,不能随意给一个变量赋任意的值,因为变量在单片机的内存中是要占据空间的,变量大小不同,所占据的空间就不同。所以在设定一个变量之前,必须要给编译器声明这个变量的类型,以便让编译器提前从单片机内存中分配给这个变量合适的空间。单片机的C语言中常用的数据类型如下表所

3.2.3 C51的基本运算

C语言的运算符分以下几种:

1、算术运算符

顾名思义,算术运算符就是执行算术运算的操作符号。除了一般人所熟悉的

程序范例:

main()

{

int A,B,C,D,E,x,y;

x=8;

y=3;

A=x+y;

B=x-y;

C=x*y;

D=x/y;

E=x%y;

}

程序结果

A=11、B=5、C=24、D=2、E=2

2、关系运算符

关系运算符用于处理两个变量间的大小关系,如下表所示。

程序范例:

main()

{

Int A,B,C,D,E,F,x,y;

x=9;

y=4;

A=(x==y);

B=(x!=y);

C=(x>y);

D=(x

E=(x>=y);

F=(x<=y);

}

程序结果:

A=0、B=1、C=1、D=0、E=1、F=0 3、逻辑运算符

程序范例:

main()

{

int A,B,C,x,y,z;

x=9;

y=8;

z=10;

A=(x>y)&&(y

B=(x==y)||(y<=z);

C=!(x>z);

}

程序结果:

A=0、B=1、C=1

4、位运算符

位运算符与逻辑运算符非常相似,它们之间的差异在于位运算符针对变量中的每

程序范例:

main()

{

char A,B,C,D,E,F,x,y;

x=0x25;/*即0010 0101*/

y=0x62; /*即0110 0010*/

A=x&y;

B=x|y;

C=x^y;

D=~x

E=x<<3;

F=x>>2

}

程序结果:

x: 0010 0101 x: 0010 0101 x: 0010 0101 x: ~ 0010 0101 y: &0110 0010 y: |0110 0010 y: ^0110 0010 1101 1010 0010 0000 0110 0111 0100 0111

即A=0x20 即B=0x67 即C=0x47 即D=0xda

将x的值左移三位的结果为:

0 0 1 0 0 1 0 1

0 0 1 0 0 1 0 1 0 0 0

移出的三位“001”丢失,后面三位用0填充,因此运算后的结果是00101000B,

即E=0x28。

将x的值右移两位的结果为:

0 0 1 0 0 1 0 1

0 0 0 0 1 0 0 1 0 1

移出去的两位“01”丢失,前面两位用“0”填充;因此,运算后的结果是00001001B,

即F=0x09。

6、递增/减运算符

递增/减运算符也是一种很有效率的运算符,其中包括递增与递减两种操作

程序范例:

main()

{

int A,B,x,y;

x=6;

y=4;

A=x++;

B=y--;

}

程序结果:

A=7,B=3

3.2.4 C51的流程控制语句

C51中的基础语句

1、while循环语句的格式如下:

While (表达式)

{

语句;

}

特点:先判断表达式,后执行语句。

原则:若表达式不是0,即为真,那么执行语句。否则跳出while 语句往下执行。程序范例:

while(1)//表达式始终为1,形成死循环

{

语句;

}

2、for循环语句

for语句是一个很实用的计数循环,其格式如下:

格式:for(表达示1;表达示2;表达示3)

{

语句;

}

执行过程:

(1)求解一次表达式1。

(2)求解表达式2,若其值为真(非0 即为真),则执行for中语句。然后执行第3步。否则结束for 语句,直接跳出,不再执行第3步。

(3)求解表达式3。

(4)跳到第2步重复执行。

程序范例1:a=0;

for(i=0;i<8;i++)//控制循环执行8次

{

a++;

}

程序执行结果:a=8

程序范例2:a=0;

for(x=100;x>0;x--)//控制循环执行100次

{

a++;

}

程序执行结果:a=100

3、if选择语句

if-else语句提供条件判断的语句,称为条件选择语句,其格式如下:

if(表达示)

{

语句1;

}

else

{

语句2;

}

在这个语句里,将先判断表达式是否成立,若成立,则执行语句1;若不成立,则执行语句2。如下图所示:

其中else部分也可以省略,写成如下格式,流程图如下所示:

if(表达示)

{

语句;

}

其它语句;

3.2.5 C51的函数

1、无返回值、不带参数的函数的写法

【例1】写出一个完整的调用子函数的例子,用单片机控制一个LED灯闪

烁发光。用P1口的第一个引脚控制一个LED灯,1秒钟闪烁一次。

#include //头文件

#define uint unsigned int //宏定义

sbit D1=P1^0; //声明单片机P1口的第一位

uint x,y;

void main()

{

while(1) //大循环

{

D1=0; //点亮第一个发光二极管

for(x=500;x>0;x--)

for(y=110;y>0;y--);

D1=1; //关闭第一个发光二极管

for(x=500;x>0;x--)

for(y=110;y>0;y--);

}

}

在上面的程序中,可以看到在打开和关闭发光二极管的两条语句之后,是两个完全相同的for嵌套语句,for(x=500;x>0;x--)

for(y=110;y>0;y--);

在C语言中,如果有些语句不止一次用到,而且语句的内容都相同,那么就可以把这样的一些语句写成一个不带参数的子函数,当在主函数中需要这些语句时,直接调用这些语句就可以了。上面的for嵌套语句就可以写成如下子函数的形式:

void delay() //延时子程序延时约z毫秒

{

for(x=500;x>0;x--)

for(y=110;y>0;y--);

}

其中void表示这个函数执行完后不返回任何数据,即它是一个无返回值的函数,delay是函数名,一般写成方便记忆和读懂的名字,也就是一看到函数名就知道此函数实现的内容是什么,但注意不要和C语言中的关键字相同。紧跟函数名的是一个空括号,这个括号里没有任何数据或符号(即C语言中的参数),因此这个函数是一个无参数的函数。接下来的两个大括号中的语句是子函数中的

语句。这就是无返回值、无参数函数的写法。

需要注意的是,子函数可以写在主函数的前面或是后面,但是不可以写在主函数的里面。当写在后面时,必须要在主函数之前声明子函数。声明方法是:将返回值特性、函数名及后面的小括号完全复制,如果无参数,则小括号里面为空;若是带参数函数,则需要在小括号里依次写上参数类型,只写参数类型,无须写参数,参数类型之间用逗号隔开,最后在小括号的后面加上分号“;”。当子函数写在主函数前面时,不需要声明,因为写函数体的同时就已经相当于声明了函数本身。通俗地讲,声明子函数的目的是为了编译器在编译主程序的时候,当它遇到一个子函数时知道有这样一个子函数存在,并且知道它的类型和带参情况等信息,以方便为这个子函数分配必要的存储空间。

例2就是调用不带参数子函数的例子,通过调用子函数代替for嵌套语句,这样程序看起来简单。

【例2】

#include //头文件

#define uint unsigned int //宏定义

sbit D1=P1^0; //声明单片机P1口的第一位

void delay(); //声明子函数

void main()

{

while(1) //大循环

{

D1=0; //点亮第一个发光二极管

delay(); //延时500毫秒

D1=1; //关闭第一个发光二极管

delay(); //延时500毫秒

}

}

void delay() //延时子程序延时约500毫秒

{

uint x,y;

for(x=500;x>0;x--)

for(y=110;y>0;y--);

}

2、带参数函数的写法及调用

有了前面第一节的铺垫,这一节会容易得多。对于前面讲的子函数delay(),调用一次延时500ms,如果我们要延时300ms,那么就要在子函数里把x的值赋为300,要延时200ms就要把x的值赋为200,这样会很麻烦,如果会使用带参数的子函数会让问题简单化。将前面的子函数改为如下:

void delay(unsigned int z)

{

uint x,y;

for(x=z;x>0;x--) //x=z即延时约z毫秒

for(y=110;y>0;y--);

}

上面代码中delay后面的括号中多了一句“unsigned int z”,这就是这个函数所带的一个参数,z是一个unsigned int型变量,又叫这个函数的形参,在调用此函数时用一个具体真实的数据代替此形参,这个真实数据又被称为实参,在子函数里面所有和形参名相同的变量都被实参代替。使用这种带参数的子函数会使问题方便很多,如要调用一个延时300ms的函数就可以写成“delay(300);”,要延时200ms可以写成“delay(200);”例3是一个调用带参数函数的例子。

【例3】写出一个完整的调用子函数的例子,用单片机控制一个LED灯闪烁发光。用P1口的第一个引脚控制一个LED灯,让它亮500ms,灭800ms。

#include //头文件

#define uint unsigned int //宏定义

sbit D1=P1^0; //声明单片机P1口的第一位

void delay(uint z); //声明子函数

void main()

{

while(1) //大循环

{

D1=0; //点亮第一个发光二极管

delay(500); //延时500毫秒

D1=1; //关闭第一个发光二极管

delay(800); //延时800毫秒

}

}

void delay(unsigned int z) //延时子程序延时约500毫秒

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

3.3电子钟设计制作

3.3.1工作任务与工作计划

工作任务:

制作一个24小时的电子钟,利用按键可以调整时间。

利用8位数码管分别显示小时、分钟、秒。三个按键分别为“功能键”、“加键”、“减键”,“功能键”用来选择要调整小时、分钟还是秒钟,按下一次可以调节秒钟,第一个LED灯点亮;按下两次调节分钟,第二个LED灯点亮;按下三次可以调节小时,对应第三个LED灯点亮。第四次按下时回到正常走时状态。选好要调整的是哪一位后,按一次“加键”数码管的值加1,按一次“减键”数码管的值减1。

3.3.2硬件电路与软件程序设计

硬件电路设计:

1、数码管显示部分

采用八位共阴极的数码管,使用共阴极的数码管,在P0口通过上拉电阻增加趋动电流,公共端低电平扫描。

2、LED灯指示部分

如图所示,LED的阴极接I/O口,阳极通过限流电阻和电源相连。

放光二极管(LED)具有单向导电性,通过5mA左右的电流即可以发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般将电流控制在3mA~

20mA之间。在这里,给放光二极管串联一个电阻的目的示为了限制通过发光二极管的电流不要太大,因此这个电阻又称为“限流电阻”。

当发光二极管发光时,测量它两端的电压约为1.7V,这个电压叫做发光二极管的“导通压降”。关于“限流电阻”大小的选择:欧姆定律是大家熟悉的:U=IR,当放光二极管正常导通时,其两端的电压为1.7V,发光二极管的阴极为低电平,即0V,阳极串接一电阻,电阻的另一端为V CC,为5V,因此电阻两端的电压为5V-1.7V=3.3V,通过发光二极管的电流限制在3~20 mA之间,那么限流电阻的范围在165~1000欧姆之间。如下图的仿真采用330欧姆的电阻。

3、按键电路部分

按键的连接方法很简单,如下图所示,按键一侧的端口与单片机的任一I/O 口相连。按键按下时,其触电电压如图所示。从图中可以看出,理想波形和实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动现象,抖动时间的长短和按键的机械特性有关,一般为5~10ms。通常手动按下键后立即释放,这个动作中稳定闭合的时间超过20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖电路,也有专用的去抖芯片,但通常用软件延时的方法就能很容易解决抖动问题,而没有必要再添加多余的硬件电路。

软件程序设计:

/*24小时时钟电路,三个按键分别是:功能键、加键、减键*/

#include

#define uint unsigned int

#define uchar unsigned char

char miao,fen,shi;

/*定义按键*/

sbit s1=P3^0; //功能键,选择调节时钟位

sbit s2=P3^1; //加键

sbit s3=P3^2; //减键

sbit led1=P1^0; //调整秒钟的指示灯

sbit led2=P1^1; //调整分钟的指示灯

sbit led3=P1^2; //调整小时的指示灯

sbit wei0=P2^0; //定义八个数码管的位选

sbit wei1=P2^1;

sbit wei2=P2^2;

sbit wei3=P2^3;

sbit wei4=P2^4;

sbit wei5=P2^5;

sbit wei6=P2^6;

sbit wei7=P2^7;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x40}; //共阴极数码管编码

void delay(uint z) //延时函数

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void start() //定时器初始化

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void display() //显示子程序,分别显示秒、分、小时{

wei7=0;

P0=table[miao%10];

delay(1);

wei7=1;

wei6=0;

P0=table[miao/10];

delay(1);

wei6=1;

wei5=0;

P0=table[16];

delay(1);

wei5=1;

wei4=0;

P0=table[fen%10];

delay(1);

wei4=1;

wei3=0;

P0=table[fen/10];

delay(1);

wei3=1;

wei2=0;

P0=table[16];

delay(1);

wei2=1;

wei1=0;

P0=table[shi%10];

delay(1);

wei1=1;

wei0=0;

P0=table[shi/10];

delay(1);

wei0=1;

}

void keyscan() //键盘扫描子程序{

uchar s1num;

if(s1==0)//功能键

{

delay(5);

if(s1==0) //确认功能键被按下

{

while(!s1);

s1num++; //功能键按下次数记录

if(s1num==1) //功能键第一次按下调整"秒钟"

{

TR0=0; //关闭定时器

led1=0; //点亮第一个指示灯

}

if(s1num==2) //功能键第二次按下调整"分钟"

{

led2=0; //点亮第二个指示灯

led1=1; //关闭第一个指示灯

}

if(s1num==3) // 功能键第三次按下调整"小时"

{

led3=0; //点亮第三个指示灯

led1=1; //关闭第一个指示灯

led2=1; //关闭第二个指示灯

}

if(s1num==4) // 功能键第四次按下

{

led1=1; //将三个指示灯都关闭

led2=1;

led3=1;

s1num=0; //记录按键数清零

TR0=1; //启动定时器开始走

}

}

}

if(s1num!=0) //只有功能键被按下后,增大和减小键才有效

{

if(s2==0)//加键

{

delay(5);

if(s2==0) //确认加键被按下

{

while(!s2); //释放确认

switch(s1num)

{

case 1: //若功能键第一次被按下

miao++; // 则调整秒加1

if(miao==60) //若满60后清零

miao=0;

break;

case 2: //若功能键第二次被按下

fen++; // 则调整分钟加1

if(fen==60) //若满60后清零

fen=0;

break;

case 3: //若功能键第三次被按下

shi++; // 则调整小时加1

if(shi==24) //若满24后清零

shi=0;

break;

}

}

}

if(s3==0)//减键

{

delay(5);

if(s3==0) //确认减键被按下

{

while(!s3); //释放确认

switch(s1num)

{

case 1: //若功能键第一次被按下

miao--; // 则调整秒减1

if(miao<0) //若减到负数则将其重新设置为59

miao=59;

break;

case 2: //若功能键第二次被按下

fen--; // 则调整分减1

if(fen<0) //若减到负数则将其重新设置为59

fen=59;

break;

case 3: //若功能键第三次被按下

shi--; // 则调整分减1

if(shi<0) //若减到负数则将其重新设置为23

shi=23;

break;

}

}

}

}

}

void main()

{

start(); //调用初始化函数

while(1) //进入主程序大循环

{

keyscan(); //调用键盘扫描程序

display(); //调用数码管显示子程序

}

}

void my_timer0() interrupt 1 //中断服务程序

{

uchar aa;

TH0=(65536-50000)/256; //重新装定时器初值

TL0=(65536-50000)%256;

aa++; //中断累加次数

if(aa==20) //20次50ms为1秒

{

aa=0;

miao++;

if(miao>=60) //秒加到60则进位分钟

{

miao=0; //同时秒数清零

fen++;

if(fen>=60) //分钟加到60则进位小时

{

fen=0;

shi++;

if(shi>=24) //小时加到24则清零

{

shi=0;

}

}

}

}

}

3.3.3调试运行

第一次按下“功能键”。调整秒钟的指示灯亮,按下“加键”和“减键”可以调整秒表的时间。如图所示。

第二次按下“功能键”。调整分钟的指示灯亮,按下“加键”和“减键”可以调整分钟的时间。如图所示。

第三次按下“功能键”可以调整小时。

第四次按下后正常走时。

知识梳理与总结

用定时器T0定时,程序中有按键检测模块,数码管动态显示模块。综合利用这些模块,可以锻炼程序编写和调试能力。

习题6:试在此24小时程序中修改,实现整点提示功能。

单片机原理及应用课后习题参考答案~章

《单片机原理及应用》习题答案 第一章计算机基础知识 1-1 微型计算机主要由哪几部分组成?各部分有何功能? 答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接。 CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。 存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。 输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。 总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。 1-3 什么叫单片机?其主要由哪几部分组成? 答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。 1-4 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用? 答:单片机片内ROM的配置状态可分四种: (1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产; (2)片内EPROM型单片机(如8751),适合于研制产品样机; (3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;

(4)EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。 1-5 写出下列各数的另两种数制的表达形式(二、十、十六进制) 1-6 写出下列各数的BCD参与: 第二章MCS-51单片机的硬件结构 2-1 8052单片机片内包含哪些主要逻辑功能部件? 答:8052单片机片内包括: ①8位中央处理器CPU一个 ②片内振荡器及时钟电路 ③256B数据存储器RAM。 ④8KB片内程序存储空间ROM ⑤21个特殊功能寄存器SFR ⑥4个8位并行I/O端口(32条线) ⑦1个可编程全双工串行口 ⑧可寻址64KB的外部程序存储空间和外部数据存储空间 ⑨3个16位的定时器/计数器

C51单片机编程基本知识

C51单片机编程基本知识 全文选段:该控制指令将C文件编译生成汇编文件(.SRC),该汇编文件可改名后,生成汇编.ASM文件,再用A51进行编译。 第三节 Keil C51软件包中的通用文件 在C51\LiB目录下有几个C源文件,这几个C源文件有非常重要的作用,对它们稍事修改,就可以用在自己的专用系统中。 1. 动态内存分配 init_mem.C:此文件是初始化动态内存区的程序源代码。它可以指定动态内存的位置及大小,只有使用了init_mem( )才可以调回其它函数,诸如malloc calloc,realloc等。 calloc.c:此文件是给数组分配内存的源代码,它可以指定单位数据类型及该单元数目。 malloc.c:此文件是malloc的源代码,分配一段固定大小的内存。 realloc.c:此文件是realloc.c源代码,其功能是调整当前分配动态内存的大小。 全文内容: 本章讨论以下内容: l 绝对地址访问 l C与汇编的接口 l C51软件包中的通用文件 l 段名转换与程序优化 第一节绝对地址访问 C51提供了三种访问绝对地址的方法: 1. 绝对宏: 在程序中,用“#include〈absacc.h〉”即可使用其中定义的宏来访问绝对地址,包括: CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD 具体使用可看一看absacc.h便知 例如: rval=CBYTE[0x0002];指向程序存贮器的0002h地址 rval=XWORD [0x0002];指向外RAM的0004h地址 2. _at_关键字 直接在数据定义后加上_at_ const即可,但是注意: (1)绝对变量不能被初使化; (2)bit型函数及变量不能用_at_指定。 例如: idata struct link list _at_ 0x40;指定list结构从40h开始。 xdata char text[25b] _at_0xE000;指定text数组从0E000H开始 提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。 3. 连接定位控制 此法是利用连接控制指令code xdata pdata \data bdata对“段”地址进行,如要指定某具体变量地址,则很有局限性,不作详细讨论。 第二节 Keil C51与汇编的接口 1. 模块内接口 方法是用#pragma语句具体结构是: #pragma asm 汇编行

单片机原理及应用课后答案

第1章单片机概述参考答案 1.1 答:微控制器,嵌入式控制器 1.2 答:CPU、存储器、I/O口、总线 1.3 答:C 1.4 答:B 1.5 答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。 嵌入式处理器一般意义上讲,是指嵌入系统的单片机、DSP、嵌入式微处理器。目前多把嵌入式处理器多指嵌入式微处理器,例如ARM7、ARM9等。嵌入式微处理器相当于通用计算机中的CPU。与单片机相比,单片机本身(或稍加扩展)就是一个小的计算机系统,可独立运行,具有完整的功能。而嵌入式微处理器仅仅相当于单片机中的中央处理器。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。 1.6 答:MCS-51系列单片机的基本型芯片分别:8031、8051和8071。它们的差别是在片内程序存储器上。8031无片内程序存储器、8051片内有4K字节的程序存储器ROM,而8751片内有集成有4K字节的程序存储器EPROM。 1.7 答:因为MCS-51系列单片机中的"MCS"是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机。 1.8 答:相当于MCS-51系列中的87C51,只不过是AT89S51芯片内的4K字节Flash存储器取代了87C51片内的4K字节的EPROM。 1.9 单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,实现各种方式的检测和控制。单片机在嵌入式处理器市场占有率最高,最大特点是价格低,体积小。 DSP是一种非常擅长于高速实现各种数字信号处理运算(如数字滤波、FFT、频谱分析等)的嵌入式处理器。由于对其硬件结构和指令进行了特殊设计,使其能够高速完成各种复杂的数字信号处理算法。广泛地用于通讯、网络通信、数字图像处理,电机控制系统,生物信息识别终端,实时语音压解系统等。这类智能化算法一般都是运算量较大,特别是向量运算、指针线性寻址等较多,而这些正是DSP的长处所在。与单片机相比,DSP具有的实现高速运算的硬件结构及指令和多总线,DSP处理的算法的复杂度和大的数据处理流量以及片内集成的多种功能部件更是单片机不可企及的。 嵌入式微处理器的基础是通用计算机中的CPU,它的地址总线数目较多能扩展较大的存储器空间,所以可配置实时多任务操作系统(RTOS)。RTOS是嵌入式应用软件的基础和开发平台。正由于嵌入式微处理器能运行实时多任务操作系统,所以能够处理复杂的系统管理任务和处理工作。因此,广泛地应用在移动计算平台、媒体手机、工业控制和商业领域(例如,智能工控设备、ATM机等)、电子商务平台、信息家电(机顶盒、数字电视)以及军事上的应用。 1.10 广义上讲,凡是系统中嵌入了"嵌入式处理器",如单片机、DSP、嵌入式微处理器,都称其为"嵌入式系统"。但多数人把 "嵌入"嵌入式微处理器的系统,称为"嵌入式系统"。目前"嵌入式系统"还没有一个严格和权威的定义。目前人们所说的"嵌入式系统",多指后者。 第2章 AT89S51单片机的硬件结构 1.答:AT89S51单片机的片内都集成了如下功能部件:(1)1个微处理器(CPU);(2)128

第5章《单片机原理与C51基础》赵丽清(课后习题及答案)

思考题: 【5-1】51系列单片机的内部设有几个定时/计数器? 有几个特殊功能寄存器与定时/计数相关? 其功能是? 【5-2】如果采用的晶振频率为6 MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 【5-3】定时器/计数器用作定时器模式时,其计数脉冲由谁提供?定时时间与哪些因素有关?【5-4】定时器/计数器用作计数器模式时,对外界计数频率有何限制? 【5-5】采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1 ms后,又转为计数工作方式,如此循环不止。假定AT89S51单片机的晶体振荡器频率为6MHz,请使用方式1实现,要求编写程序。 【5-6】已知51系列单片机的系统晶振频率为6MHz,请利用定时器T1和P1.2输出矩形脉冲,其波形如下: 【5-7】51系列单片机的T0和T1在模式3时有何不同? 【5-8】当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭? 【5-9】编写程序,要求使用T0,采用方式2定时.在P1.0输出周期为400μs,占空比为10:1的矩形脉冲。 【5-10】定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6 MHz,求允许测量的最大脉冲宽度是多少? 【5-11】编写一段程序,功能要求;当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写人R0、R1(高位存R1,低位存R0)。 第五章思考题答案: 【5-1】解答:51系列单片机的内部有2个定时/计数器T0和T1。有2个特殊功能寄存器与其相关,分别是TMOD和TCON,TMOD是定时/计数器的工作方式控制寄存器,用来确定工作方式和功能;TCON是定时/计数器的控制寄存器,用来控制T0、T1的启动和停止及设置溢出标志。 【5-2】解答:如果采用的晶振频率为6MHz,一个机器周期则为2μs,则定时器/计数器工作在方式0、1、2下,其最大定时时间各为16.384ms、131.072ms、0.512ms。 【5-3】解答:定时器/计数器用作定时器模式时,其计数脉冲来自内部时钟脉冲。每个机器周期计数值增1,所以计数值乘以机器周期就是定时时间,因此计数频率为振荡频率的1/12,因此定时时间与计数值和振荡频率有关。 【5-4】解答:定时器/计数器用作计数器模式时,其计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变时,计数器(TH0,TL0或TH1,TL1)的值增1。计数的最高频率一般为振荡频率的1/24。 【5-5】解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用

单片机基础与应用习题答案第7章

1 第7章 串行口通信技术 参考答案 一、单选题 C B A D A C A A B B 二、填空题 1.并行通信、串行通信 2. 同步串行通信、异步串行通信 3. 起始位、数据位、校验位、停止位 4. 高,空闲位 5. 同步移位寄存器 6. TXD ,RXD 7. 时钟频率fosc ,时钟频率fosc 、PCON 中的SMOD 位 8. 1位起始位、8位数据位、1位停止位 9. 定时器T1的溢出率、SMOD 10. 进行电平转换 三、简答题 1. 并行通信速度快,传输线多,适合于近距离的数据通信,但硬件接线成本高;串行通信速度慢,但硬件成本低,传输线少,适合于长距离数据传输。 2.异步串行通信每次发送由起始位、数据位、校验位和停止位四部分构成的而一个字符帧,起始位:位于字符帧开头,只占一位,低电平,用于向接收设备表示发送端开始发送一帧信息。数据位:紧跟起始位之后的数据信息,低位在前,高位在后,用户可以自己定义数据位的长度。校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户编程决定。停止位:用来表征字符帧结束的位,高电平,通常可取1位、1.5位或2位。 3. 在方式1和方式3下,波特率由定时器T1的溢出率和SMOD 共同决定。即: 方式1和方式3的波特率=1T 32 2SMOD ?溢出率 当定时器/计数器T1做波特率发生器使用时,通常工作在模式2,即自动重装载的8位定时器,此时TL1作计数用,自动重装载的值在TH1内。设计数的预置值(初始值)为X ,那么每过256-X 个机器周期,定时器/计数器溢出一次,溢出周期为: )X 256(f 12osc -?。 溢出率为溢出周期的倒数,所以,波特率=) X 256(12f 322 osc SMOD -?。

单片机原理及应用第三版(张毅刚)1-6章全

第1章思考题及习题1参考答案 一、填空 1. 除了单片机这一名称之外,单片机还可称为或。答:微控制器,嵌入式 控制器. 2.单片机与普通微型计算机的不同之处在于其将、、和三部分,通 过内部连接在一起,集成于一块芯片上。答:CPU、存储器、I/O口、总线 3. AT89S52单片机工作频率上限为 MHz。答:33 MHz。 4. 专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低和提 高。答:成本,可靠性。 二、单选 1. 单片机内部数据之所以用二进制形式表示,主要是 A.为了编程方便B.受器件的物理性能限制 C.为了通用性D.为了提高运算速度 答:B 2. 在家用电器中使用单片机应属于微计算机的。 A.辅助设计应用B.测量、控制应用 C.数值计算应用D.数据处理应用 答: B 3. 下面的哪一项应用,不属于单片机的应用范围。 A.工业控制 B.家用电器的控制 C.数据库管理 D.汽车电子设备 答:C 三、判断对错 1. STC系列单片机是8051内核的单片机。对 2. AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、1个中断 源、1个定时器(且具有捕捉功能)。对 3. 单片机是一种CPU。错 4. AT89S52单片机是微处理器。错

5. AT89C52片内的Flash程序存储器可在线写入,而AT89S52则不能。错 6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。对 7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。对 8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP 的长处。对 四、简答 1. 微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有何区别? 答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。 2. AT89S51单片机相当于MCS-51系列单片机中的哪一型号的产品?“S”的含义是什么? 答:相当于MCS-51系列中的87C51,只不过是AT89S51芯片内的4K字节Flash存储器取代了87C51片内的4K字节的EPROM。 3. 单片机可分为商用、工业用、汽车用以及军用产品,它们的使用温度范围各为多少? 答:商用:温度范围为0~+70℃;工业用:温度范围为-40~+85℃;汽车用:温度范围为-40~+125℃;军用:温度范围为-55~+150℃。 4. 解释什么是单片机的在系统编程(ISP)与在线应用编程(IAP)。 答:单片机的在系统编程ISP(In System Program),也称在线编程,只需一条与PC机USB口或串口相连的ISP下载线,就可把仿真调试通过的程序代码从PC机在线写入单片机的Flash存储器内,省去了编程器。在线应用编程(IAP)就是可将单片机的闪存内的应用程序在线修改升级。 5. 什么是“嵌入式系统”? 系统中嵌入了单片机作为控制器,是否可称其为“嵌入式系统”? 答:广义上讲,凡是系统中嵌入了“嵌入式处理器”,如单片机、DSP、嵌入式微处理器,都称其为“嵌入式系统”。但多数人把“嵌入”嵌入式微处理器的系统,称为“嵌入式系统”。目前“嵌入式系统”还没有一个严格和权威的定义。目前人们所说的“嵌入式系统”,多指后者。 6. 嵌入式处理器家族中的单片机、DSP、嵌入式微处理器各有何特点?它们的应用领域有何 不同? 答:单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,

51单片机基础知识试题题库(考试用含答案)

第二章习题参考答案 一、填空题: 2、MCS-51的堆栈是软件填写堆栈指针临时在片内RAM数据存储器内开辟的区域。 INCDEC都不影响PSW 堆宅操作只有一条寻址方式直接寻址方式 3、当使用8751且EA=1 〃程序存储器地址小于1000H时〃访问的是片内 ROM 7、PSW中RS1RSO=10寸〃R2 的地址为12H。 8、PSW中RS1RS0=11 时〃R2的地址为1AH。 17、使用8031芯片时〃需将/EA引脚接低电平〃因为其片内无ROM存 22、但单片机的型号为8031/8032时〃其芯片引线EA一定要接di电平

7、单片机8031的ALE引脚是()。 A、输出高电平 B、输出矩形脉冲〃频率为fosc的1/6 C、输出低电平 D、输出矩形脉冲〃频率为fosc的1/2 11、单片机上电复位后〃堆栈区的最大允许范围是()个单兀。 A、64 B、120 C、128 D、256 12、单片机上电复位后〃堆栈区的最大允许范围是内部RAM的() A、OOH—FFHB 001■— 07HC 071■— 7FHD 08H— 7FH 13、对于8031单片机〃其内部RAM()O A、只能位寻址 B、只能字节寻址 C、既可位寻址又可字节寻址 D、少部分能位寻址 18、单片机8051的XTAL1和XTAL2引脚是()弓I脚。 A、外接定时器 B、外接串行口 C、外接中断 D、外接晶振 23、MC—51的专用寄存器SFR中的堆栈指针SP是一个特殊的存贮区〃用来()〃它是按后进先出的原则存取数据的。 A、存放运算中间结果 B、存放标志位 C、暂存数据和地址存放待调试的程序

第2章《单片机原理与C51基础》赵丽清(课后习题及答案)

思考题: 【2-1】80C51单片机由哪几部分组成,试说明ROM和RAM的功能分别是什么? 【2-2】在程序运行中,PC的值是。() A)当前正在执行指令的前一条指令的地址 B)当前正在执行指令的地址 C)当前正在执行指令的下一条指令的首地址 D)控制器中指令寄存器的地址 【2-3】判断下列说法是否正确。 (1)PC可以存放一个16位二进制数,因此其寻址范围为0000H~7FFFH。() (2)单片机系统复位时PC的内容为0000H,因此CPU从程序存储器0000H地址单元取指令,开始执行程序。() (3)PC可以看成是程序计时器() (4)PC可以看成是程序存储器的地址指针。() 【2-4】试计算当振荡频率为12 MHz和6 MHz时,一个机器周期的长度?试辨析振荡周期、状态周期、机器周期、指令周期之间的关系。 【2-5】单片机的ROM必须具有掉电存储功能,这句话是否正确? 【2-6】单片机对RAM的根本要求是快,但掉电可丢失数据,这个表述正确吗? 【2-7】试说出80C51的两种时钟电路模式,如果是只有一个单片机工作常使用的是哪一种?如果是两个以上的单片机工作使用哪一种? 【2-8】80C51单片机的EA信号有何功能?在使用8031时,EA信号引脚应如何处理?现在使用的80C51系列单片机内部一般均含有ROM,其EA引脚应该怎么接? 【2-9】80C51系列单片机的三总线结构包括哪三种?其中作地址总线指的是?作数据总线指的是?属于控制总线的有?P0口的分时复用功能需要依靠锁存器的锁存功能,试举1种常用的低功耗锁存器并将其与单片机正确连接? 【2-10】片内RAM低128单元一般划分为哪三个主要部分?对应的字节地址空间是?内部RAM中,可作为工作寄存器区的单元地址为()H~()H。 【2-11】80C51单片机任何一个时间4组通用工作寄存器中只能有一组工作,具体哪一组工作由什么来决定?如何设置才能选用0组通用寄存器? 【2-12】80C51单片机具有很强的位(布尔)处理功能,内部RAM中共有多少单元可以位寻址,试写出其字节范围和位地址范围? 【2-13】位地址00H与字节地址00H在内存中的位置有什么区别?片内字节地址为2AH单元最低位的位地址是();片内字节地址为88H单元的最低位的位地址为()。 【2-14】80C51单片机可位寻址的范围包括两个区域,即可位寻址的特殊功能寄存器和内部RAM字节地址是20H-2FH的单元,这句话表述的是否正确? 【2-15】可位寻址的特殊功能寄存器的最低位位地址与字节地址形式不同,这句话表述是否正确?【2-16】堆栈遵循的原则是什么?SP的名称是?初始化时SP的值是多少?通过堆栈操作实现子程序调用时,首先要把()的内容入栈,以进行断点保护;调用子程序返回指令时,再进行出栈保护,把保护的断点进回到()。 【2-17】程序状态字PSW的作用是什么?常用的状态标志有哪几位,其作用是什么?若A中的内容为63H,那么P标志位的值为();单片机复位后,PSW=(),这时当前的工作寄存器区是()组工作寄存器区R4所对应的存储单元的地址为()。 【2-18】判断下列说法是否正确。

单片机基础及其应用习题.doc

1. X1 = +42、X2=-82,则/1]反= B, ^2]补= 2. 3. MOV RO, 30H 中,30H 的寻址方式称之为 4. MOV C, 30H 源操作数寻址方式为 寻址。 5. MCS-51的雄栈是在— 一中开辟的。 6. MCS-51片内20H-2FH 范围内的数据存储器,即可以字节寻址又可以 寻址。 7. 8051单片机读片外程序存储器MOVC 指令采用的是— 一寻址方式。 8. 若系统晶振频率为6MHz,则MUL AB 指令的周期为— _ps 9. 12根地址线可?选择 存储单元,32KB 存储单元需要 根地址线。 10. 设(A) =55H, (R5) =0AAH,贝ij 执行ANL A, R5指令后的结果是<A)= ,( R5) 11. 12. MCS-51中T1中断服务程序入I I 地址为 13. 14. 通常单片机上电复位时PC = H 、SP = Ho A 、P0 I I 和 P2 I I B 、P0 I I C 、P2 I I 和 P3 I I 3. 在单片机内部, 反应林序运行状态或反应运算结果的一个特征奇存器是( A 、 PC B 、PSW C 、A D 、SP 4. 在堆栈操作中, 当进栈数据全部弹出后,这时SP 应指向( ) A 、 C 、栈底单元地址加 1 D 、栈底单兀地址减1 单片机基础及其应用习题(含答案) 2011-06-02 21:57:031分类:款认分类|标斜 |字号大中小订阅 填空题 PSW 中RS1=1. RS0=0,则当前工作寄存器为 组通用寄存器(从第0组排起)o 若用传送指令访bd MCS-51的程序存储器,它的操作码助记符应为 欲对300个外部事件计数,可以选用定时器/计数器的工作模式. 选择题 1. 8031单片机内部RAM 中既可位寻址又可字节寻址的单元字节地址是 A. 20H B.30H C.OOH D.70H 2. MCS-51系列单片机外部扩展存储器芯片时,4个l/OI I 中用作数据总线的是( B 、7FH 单元

最新第6章《单片机原理与C51基础》赵丽清(课后习题及答案)

思考题:【7-1】什么是并行通信和串行通信?各有什么特点? 它们分别适用于什么场合? 【7-2】什么是串行同步通信?串行异步通信的数据帧格式是怎样的?同步通信传送的是数据块这种表达是否正确? 【7-3】同步通信和异步通信二者哪种传送数据效率高?哪种对收、发双方的时钟同步性要求低? 【7-4】51单片机的串行口属于异步通信方式这个判断是否正确? 【7-5】51单片机的串行口数据传送方向属于半双工方式这种判断是否正确? 【7-6】80C51系列单片机的串行口除可以实现串行异步通信,还可以作为同步移位寄存器使用,这种说法是否正确? 【7-7】51系列单片机的串行口包括几个缓冲器?其占有的地址相同在使用中如何区分?【7-8】51系列单片机的串行口控制寄存器SCON中的TI、RI均为零时,CPU执行MOV SBUF,A指令可以启动发送?执行MOV A,SBUF可以启动接收? 【7-9】51系列单片机串口工作在接收状态时,MOV A,SBUF什么情况下使用,功能是什么?【7-10】何谓波特率? 某异步通信,串行口每秒传送250个字符,每个字符由11位组成,其波特率应为多少? 【7-11】51单片机串行口有几种工作模式?其中方式0是否工作在全双工异步串行通信方式? 【7-12】51单片机4种工作模式的波特率如何确定? 【7-13】为什么定时器T1用做串行口波特率发生器时,常采用工作模式2?若已知系统晶振频率、通信选用的波特率,应如何计算其初值? 【7-14】试绘图说明如何利用51单片机串行口扩展并行输入口和输出口? 【7-15】试绘制AT89S51单片机进行双机通信时,通信距离小于1.5m的电路连接图。 【7-16】试简述51单片机在双机通信中TTL电平通信接口、RS-232C、RS-422A、RS-485的应用特点?

单片机基础及应用项目五课后习题及答案

一、填空题 1.51单片机中有(2)个(16)位的定时/计数器,可以被设定的工作方式有(四)种。 2.51单片机的定时器/计数器有四种工作方式,其中方式0是(13)位计数器;方式1为 (16)位计数器;方式2为(自动重装初值)的(8)位计数器;只有定时器(T0)才能选作组合方式3,此时将形成2个(8)位的计数器。 3.单片机中,常用作地址锁存器的芯片是(74HC373),常用作地址译码器芯片的是 (74HC138)。 4.若要启动定时器T0开始计数,则应将TR0的值设置为(1)。 5.若系统晶振频率为12MHz,则T0工作方式1时最多可以定时(65536)us。 6.TMOD中M1M0=11时,定时器工作方式(3)。 7.单片机工作于定时状态时,计数脉冲来自(单片机内部的时钟脉冲)。 8.单片机工作于计数状态时,计数脉冲来自(单片机外部的时钟脉冲) 二、选择题 1.单片机的定时器/计数器设定为工作方式1时,是(D) A、8位计数器结构 B、2个8位计数器结构 C、13位计数器结构 D、16位计数器结构 2.定时器/计数器有4种工作模式,它们由(B)寄存器中的M1、M0状态决定 A、TCON B、TMOD C、PCON D、SCON 3.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值 应为(C) A、500 B、1000 C、216-500 D、216-1000 4.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到(D)引脚 A、P3.2 B、P3.3 C、P3.4 D、P3.5 5.74LS138芯片是(B) A、驱动器 B、译码器 C、锁存器 D、编码器 6.在下列寄存器中,与定时/计数控制无关的是(C) A、TCON B、TMOD C、SCON D、IE 7.启动定时器0开始计数的指令是使TCON的(B) A、TF0位置1 B、TR0位置1 C、TR0位置0 D、TR1位置0 8.用定时器T1方式1计数,要求每计满10次产生溢出标志,则TH1、TL1的值是(A) A、FFH、F6H B、F6H、F6H C、F0H、E0H D、FFH、DFH 9.与开启定时器0中断无关的是(C) A、TR0=1 B、ET0=1 C、ES0=1 D、EA=1 10.多位数码管显示时,(D)负责输出字型码,控制数码管的显示内容。 A、显示端 B、公共端 C、位选端 D、段选端 11.若要采用定时器0,方式1,如何设置TMOD(B) A.00H B.01H C.10H D.11H 12.单片机采用方式0时是13位计数器,它的最大定时时间是多少?(B) A.81.92ms B.8.192ms C.65.536ms D.6.5536ms 13.单片机的定时器,若用软件启动,应使TMOD中的(C) A.GATE位置1 B.C/T位置1 C.GATE位置0 D.C/T位置0 14.下面哪一种工作方式仅适用于定时器T0(D)

c51单片机基础知识选择题教学提纲

c51单片机基础知识 选择题

单片机基础知识选择题 1.在MCS-51单片机中,当采用4MHZ晶振频率时,一个机器周期等于()微秒。 A.1 B.2 C.3 D.4 答案:C 2.如果某51单片机系统的定时/计数器0的中断服务程序放在程序存储区的3000H地址开始的一段空间内,此时跳转到定时/计数器0的中断服务程序的指令LJMP 3000H应放在()开始的中断地址区。 A.0003H B.0013H C.0023H D.000BH 答案:D 3.MCS-51单片机的字长是()。 A.2位 B.4位 C.8位 D.16位 答案:C 4.单片机复位时,程序计数器PC的值为()。 A.0000H B.0030H C.4000H D.4100H 答案:A 5.某存储器芯片有12根地址线,8根数据线,该芯片有()个存储单元。 A.1 KB B.2 KB C.3 KB D.4 KB 答案:D 6.MCS-5l单片机的堆栈区是设置在( )中。 A.片内ROM区 B.片外ROM区 C.片内RAM区 D.片外RAM区 答案:C 7.在单片机中,()是数据存储器,()是程序存储器。 A.ROM B.EPROM C.RAM D.EEPROM

答案:C; A、B、D 8.单片机在与外部I/O口进行数据传送时,将使用()线。

A.ALE INT0 B.PSEN ALE C.WR RD ALE D.ALE INT1 答案:C 9.下列计算机语言中,CPU能直接识别的是()。 A.自然语言 B.高级语言 C.汇编语言 D.机器语言 答案:D 10.MCS-5l单片机的堆栈区是设置在( )中。 A.片内ROM区 B.片外ROM区 C.片内RAM区 D.片外RAM区 答案:C 11.当MCS-51单片机接有外部存储器,P2口可作为 ( )。 A.数据输入口 B.数据的输出口 C.准双向输入/输出口 D.输出高8位地址 答案:C 12.下列关于栈的描述中错误的是()。 A.栈是先进后出的先性表 B.栈只能顺序存储 C.栈具有记忆作用 D.对栈的插入和删除操作中,不需要改变栈底指针 答案:C 13.调用子程序、中断响应过程及转移指令的共同特点是()。 A.都能返回 B.都通过改变PC实现转移 C.都将返回地址压入堆栈 D.都必须保护现场 答案:B 14.下面哪一个器件是同相OC门电路。() A.74LS04 B.74LS14 C.74LS07 D.74LS06 答案:C 15.14根地址的寻址范围可达()KB。 A.8 B.16

单片机基础及应用题库

一、填空题 1.计算机中最常用的字符信息编码是(ASCII编码) 2.51系列单片机为(8)位单片机 3.堆栈的地址由(SP)内容确定,其操作规律是(先进后出) 4.在单片机扩展时,(P0)和(P2)口为地址线 5.51单片机,如采用6MHZ晶振,一个机器周期为(2us) 6.51单片机RST引脚上保持(2)个机器周期以上的高电平时,单片机即发生复位 7.当P0~P3口做输入口输入数据时,必须先向该端口的锁存器写入(1),否则输入数 据可能出错 8.消除键盘抖动常用两种方法,一是采用(硬件去抖电路),用基本RS触发器构成; 二是采用(软件去抖程序) 9.单片机内外中断源按优先级别分为高级中断和低级中断,级别的高低是由(中断优 先级)寄存器的置位状态决定的。同一级别中断源的优先顺序是由(自然优先级顺 序)决定的。 10.LED数码管显示按显示过程分为(静态)显示和(动态)显示 11.计算机的系统总线有(地址总线)、(控制总线)和(数据总线) 12.片内RAM可进行位寻址空间是(20H~2FH),其对应的位地址范围是(00H~7FH) 13.51系列单片机有(5)个中断源,(2)级中断优先级别 14.由于执行每条指令都要占用CPU的时间,因此采用循环结构并多次重复执行某些指 令可实现软件延时。而硬件延时一般采用单片机(定时/计数器)再通过软件编程 来实现 15.中断源的是否允许中断是由(IE)寄存器决定的,中断源的优先级别是由(IP)寄 存器决定的 16.当单片机CPU响应中断后,程序将自动转移到该中断源所对应的入口地址处,并从 该地址开始执行程序,通常在该地址处存放转移指令以便转移到中断服务程序。其 中外部中断INT0的入口地址为(0003H),定时器T0入口地址(000BH),外部中断 INT1的入口地址为(0013H),定时器T1入口地址(001BH),串行口的中断入口地 址为(0023H)。 17.51单片机中有(2)个(16)位的定时/计数器,可以被设定的工作方式有(四)种。 18.51串行口扩展并行I/O口时,串行口工作方式应选择(方式0)。 19.在CPU内部,反映程序运行状态或反映运算结果的特殊功能寄存器是(PSW)。 20.C51中的任何程序总是由三种基本结构组成:(顺序)、(分支)、(循环)。 21.在串行通信中,根据数据传送方向分为(单工)、(半双工)和(全双工)。 22.外部中断请求信号有(电平触发)和(边沿触发)两种触发方式 23.键盘的结构形式一般有两种:(独立键盘)和(矩阵键盘)。 24.某RAM芯片存储容量为4KB,则此芯片共有(12)根地址线。 25.单片机系统经常采用LED作为显示器件,其连接有共阳极和共阴极两种接法。如某 系统采用共阳极接法,那么其有效输入电平(点亮)应为(低电平)。 26.半导体存储器分成两大类(数据存储器)和(程序存储器),其中(数据存储器) 具有易失性,常用于存储(临时数据)。 27.若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为(08~0FH)。 28.8051的堆栈区一般开辟在(用户RAM区)。 29.在单片机应用系统中,外部设备与外部数据存储器传送数据时,使用(MOVX)指 令。

单片机原理与C51语言程序设计与基础教程课后习题答案

单片机原理与C51语言程序设计与基础教 程课后习题答案 习题 填空题 1.一般而言,微型计算机包括、、、四个基本组成部分。 2.单片机是一块芯片上的微型计算机。以为核心的硬件电路称为单片机系统,它属于地应用范畴。 3.Atmel 公司生产的CMOS型51系列单片机,具有内核,用 代替ROM作为程序存储器, 4.单片机根据工作温度可分为、和三种。民用级的温度范围是0℃一70℃,工业级是-40℃~85℃,军用级是-55℃-125℃(不同厂家的划分标推可能不同。 5.在单片机领域内,ICE的含义是。 选择题 1.单片机的工作电压一般为V? A 5V B 3V C 1V D 4V 2.单片机作为微机的一种,它具有如下特点: A 具有优异的性能价格比 B 集成度高、体积小、可靠性高 C 控制功能强,开发应用方便 D 低电压、低功耗。 3.民用级单片机的温度范围是: A -40℃~85℃ B 0℃一70℃ C -55℃-125℃ D 0℃一50℃ 4.MCS-51系列单片机最多有个中端源。 A 3 B 4 C 5 D 6 5.下列简写名称中不是单片机或单片机系统的是 A MCU B SCM C ICE D CPU 问答题 1.单片机常用的应用领域有哪些? 2.我们如何学习单片机这么技术? 3.单片机从用途上可分成哪几类?分别由什么用处? 答案 填空题 1.运算器、控制器、存储器、输入输出接口

2.单片机嵌入式系统 3.MCS-51 Flash ROM 4.民用级(商业级) 工业级军用级 5.在线仿真器 选择题 1.A 2.ABCD 3.B 4.C 5.D 问答题 1.单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: (1)在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。 (2)在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 (3)在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。 (4)在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。 (5)单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。2.首先,大概了解单片机的机构,例如本书的第2章则是主要讲了单片机的内部结构以及资源。对单片机的内部结构有了初步了解之后,读者就可以进行简单的实例练习,从而加深对单片机的认识。 其次,要有大量的实例练习。其实,对于单片机,主要是软件设计,也就是编程。目前最流行的用于51系列单片机地编程软件是Keil。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

单片机基础与应用习题答案第2章

第2章单片机硬件系统 参考答案 一、单选题 A A B C A D B B C B 二、填空题 1.8位算术逻辑单元、8位累加器、8位暂存器、寄存器B、程序状态寄存器 2. 程序存储器(ROM) 3. 80H~FFH 4. 1/6 5. 上拉电阻,地址,数据 6. 0x 7. 00H~1FH、20H~2FH、30H~7FH 8. 16位,下一条将要执行指令的地址,64KB,自动加1功能 9. 0000H,0000H 10. 两个,高 三、简答题 1. 内部数据存储器、特殊功能寄存器SFR、内部程序存储器、并行I/O口、串行口、定时器/计数器、中断系统、时钟电路 2.在单片机的C语言程序设计中,可以通过关键字sfr来定义所有特殊功能寄存器,从而在程序中直接访问它们,如: sfr P1=0x90; //特殊功能寄存器P1的地址是90H,对应P1口的8个I/O引脚 在程序中就可以直接使用P1这个特殊功能寄存器了。例如,程序ex3.c中有下面的语句:P1=0x00; //将P1口的8位I/O口全部清0 通常情况下,这些特殊功能寄存器已经在头文件regx51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的特殊功能寄存器。 C程序中,还可以通过关键字sbit来定义特殊功能寄存器中的可寻址位。例如,程序ex1.c 中有下面的语句: sbit LED=P1^0; //定义P1口的第0位的位名称为LED LED=0; //P1口的第0位清0 3.4个I/O口作为通用I/O口时都是准双向口。作为输出口时,P0口需加上拉电阻才能输出高电平。4个并行口作为输入口时,都分为“读引脚”和“读锁存器”,“读引脚”时,均需给相应锁存器先置“1”。 4. 当单片机外部扩展存储器时,P0口分时复用作为8位数据线和低8位地址线,P2口作为高8位地址线。地址总线共计16位,所以程序存储器和数据存储器都可以最多扩展64 KB容量。 1

单片机C51基础知识汇总

单片机C51基础知识汇总 李小鹏 2019.12.24

目录 1、标识符 2、数据类型 3、变量 4、常量 5、二进制、八进制、十进制、十六进制 6、运算符 7、语句 8、注释 9、if语句 10、switch--case语句 11、for循环 12、while循环 13、do—while循环 14、循环控制 15、一维数组 16、二维数组 17、字符数组与字符串数组 18、函数 19、函数重入与递归 20、预处理 21、宏

22、条件编译指令 23、指针(*) 24、结构(struct) 25、联合(union) 26、枚举(enum) 主要内容 1 .标识符 标识符就是编程时使用的表示某个事情名称的符号,如函数名、变量名、引脚名、特殊功能寄存器名等。标识符有系统标识符和用户自定义标识符之分。 标识符的命名规则: (1) 标识符第一个字符必须是字母或下划线。 (2) 标识符只能由字母、数字和下划线三类字符组成。 (3) 标识符是区分大小写的。如A 和a 是两个不同的标识符。 (4) 标识符有效长度不超过32 个字符。 (5) 标识符不能是C51 的关键字。 2 .数据类型 char有符号字符型,一字节,值域-128~127。 int 有符号整型,两字节,值域-32768~32767。

long有符号长整型,四字节,值域-2147483648~2147483647 unsigned char无符号字符型,一字节,值域0~255 unsigned int无符号整型,两字节,值域0~65535 unsigned long无符号长整型,四字节,值域0~4294967295 float浮点型(都是有符号的),四字节,±1.175494E-38~±3.402823E+38 bit位变量,一个二进制位,值域0~1。 sbit51 单片机特殊功能寄存器位,值域0~1。 Sfr 51 单片机特殊功能寄存器,值域0~255。 sfr1651 单片机特殊功能寄存器,如DPTR,值域0~65535。bit,sbit,sfr,sfr16不是标准C 的内容,是51 单片机及C51 编译器特有的,不能用指针对它们进行操作。 3 .变量 C51 规定所有变量在使用前都必须加以说明。变量说明语句由数据类型、可选的存储类型和其后的一个或多个变量名组成,形式如下: 数据类型[存放类型] 变量表; 变量的作用范围:在花括号内说明(也称声明或定义)的变量,其作用范围仅限该花括号内,称为局部变量;在所有函数外面定义的变量,其作用范是整个程序,称为全局变量。 静态变量:在类型前加关键词static 说明的变量,称静态变量。在函数内部定义的静态变量也是局部变量,但它在函数下次调用时,能保存上次调用的值。在函数外面定义的静态变量,是全局变量,但

相关主题
文本预览
相关文档 最新文档