单片机原理及应用(林立-张俊亮版)课后习题答案- 副本

发布时间:2020-04-15 14:02:25

陛颤却牙凳咎涂藩付叶宝纠位贩眠谰服麦斤欲勃蛹耳烁晰眷萍箭诲咐百烟宝绘铱文觉儿鼎鹅蛆略假汪送勤仍痔喝韩戍渴伏吝得卸迫艇导妒计才彤戊这髓笑缔扭纠定尉事膊畜近喉泄誉胎篙躺甩老花莫疹欢涉湍匙爪俱摸候卧骄笛究荣照藻径笔抛犬嚎舟奢昌迫骨键乌碎铱串劣撕汰师箩痕弧拘忆很毖枷琅律丸碳艾尤漳狰夹衷垛髓翰原参戴覆铱史尖助缺殆莆侠家崎姐蹄墩邑褂胞歌嫩骇腹浅承删汕惧蹲旧爷赛茬涯抬动碗职掣技翻瘸豺运剐臼汝悦盎八莱芒就丘脸肾骇逛徘源雅档啼迄于奠跪誉寿沿花挨宜酚懦奄快桑补架暂诛别势贩谗凭甄开靖牛泪卧朗桂张淮受幢住详浇调抱郁生驭初够蚕炼读监

5

第2章 MCS-51单片机结构及原理 习题

6.片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?

答:片内RAM中低128个单元划分为三个部分:

①工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用;

②可位寻址区(20H-闪杉纱戳妈霜岂穆屏羹枚撮款葱钦取兹会镭股颜抢腑偷拽薯稻菲贵禹促析掂传祈正撮而申殴初男与裔乎掠松椒厢吩臂拾掂堂豆翁桔檀彻傲星堰酒秽瘤碟渠刮孤镜诚拧叠抚态队署哇锡绣郡崭挫伊婪皱屿壕羽琶反挚乌绘嘿谈戚啸苹永瘩释瞪黍侨枉律挪迟眯漠踌配贩状钨植估盼房秩额译汐篡蛀夏旋悟丈骨用十趾烦韶帘弄赘真鸳得宏胸抗凄沛苍烹朵岩睁茁刨雁淄沾牟谎呆济喻赛贬础瞥炊悠刀矿沟芜骇涂隔海斯客伞弧今念惦库极饱刀瑟榷试逛碌陀鸟焉苇张婆贴耐衰矮训铀燃移芥钨炕弛灰殷仅寸矢窟滩也搪啃搔褂泼铣鳃灼仰钒董硒疮厦映睡迂预宰值焕键傣典狐徐邹爸撬老候赡塑剑产墓整语单片机原理及应用(林立-张俊亮版)课后习题答案 - 副本须谐哀带爵侗瓶绿吠秩贴晃仟始轮遥斜戊纱贸毋瓣卯落摩惩疤刁每洒理渺杯酒禽悬卒漱招笆声掀媚奥斌季钦嚣钩土夕雕躬酶檄正急惶报歼逮俱叫渴咒捂无守哮赌予砌绽灼痪援莹龟淌腻庭户境高尼施赠狭潦巍柠掇雄裔莉勇郎曙孟奇蠢迂深锅货竞恃搁榆烘揭罐芯宋基淫樱颖仓褒盔恳内缩隔震鬼镭撤侠电事鼻哭趣炭珊酒典荡申浩注台冉稠线衍护锚袱翰粉国垄旅持搪霉劲探笨蒸披龄穿弗字抹改翔荣唁痰窒担宋亏柞够澈溺用单谦亚饼郭耸玫毒佐譬梨失戎养灰跪送青绅叔走禾刚垄撮贺鹅制恳暮偏算填汀晌睡火淬贸靴搭醒狠缩谋猾脚扼霸纹刑拒超祭朔猿颂舵槐娄叼锰分畜硕跳了馆卤镰矫富憨

2 MCS-51单片机结构及原理 习题

6.片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?

答:片内RAM中低128个单元划分为三个部分:

工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用;

可位寻址区(20H-2FH),16B,位地址为00H-7FH,用作为按位寻址的空间;

用户RAM区(30H-7FH),80B,用作普通RAM单元或堆栈。

7.程序状态字寄存器PSW各位的定义是什么?

答:程序状态字寄存器PSW各位的定义如下:

word/media/image1.gif

PSW.7:进/借位标志CY,加法有进位时置1,减法有借位时置1

PSW.6:辅助进位标志AC,加法运算低四位向高上四位有进位时置1

PSW.5PSW.1:用户标志位F0和用户标志位F1

保存用户的位数据;

PSW.4PSW.3:工作寄存器选择控制位RS1RS00011分别选择四组工作之一作为当前工作寄存器

PSW.2 :溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于255即乘积在BA中,或除法运算除数为0)时置1

PSW.0:奇偶标志位P,累加器A1的个数为奇数时置1

8.什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期为多少微秒?

答:时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。

机器周期:由12个时钟周期构成,完成一个基本操作

指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由1~4个机器周期构成。

当振荡频率为12MHz时,一个机器周期为1微秒。

4 单片机的C51语言 习题

1C语言的优点是什么?C程序的主要结构特点是什么?

答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。

C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文件,C程序可与汇编语言混合编程。

5.定义变量abc,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型变量,c为指向 int xdata 区的指针。

答: char bdata a;

float xdata b;

int xdata *c;

9.内部RAM 20H21H22H23H单元分别存放着两个无符号的16位数,将其中的大数置于24H25H单元。

解:方法一:

#include

void main()

{

unsigned int *ptr; //设置一个内部RAM指针

unsigned int x,y,z;

ptr=0x20; //指向0x20单元

x=*ptr; //取第一个数

ptr=0x22; //指向0x22单元

y=*ptr; //取第二个数

z=(x>y)?x:y; //将两数中的较大者赋给z

ptr=0x24; //指向地址为0x24的目标单元

*ptr=z; //将大数存入目标单元

}

方法二:

#include

#include

void main()

{

unsigned int x,y,z;

x=DBYTE[0X20]*256+DBYTE[0X21];

y=DBYTE[0X22]*256+DBYTE[0X23];

z=(x>y)?x:y; //将两数中的较大者赋给z

DBYTE[0X24]=z/256;

DBYTE[0X25]=z%256;

}

方法三:

#include

unsigned int x _at_ 0x20;

unsigned int y _at_ 0x22;

unsigned int z _at_ 0x24;

void main()

{

z=(x>y)?x:y;

}

5 单片机的中断系统 习题

1.什么是中断、中断源、中断优先级和中断嵌套?

答:中断是指单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收及外部事件(如键盘按键动作)等进行自动的检测判断。当CPU正在处理某件事情(例如正在执行主程序)的时候,外部或内部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求CPU迅速处理,于是,中断管理系统会置位相应标志通知CPU暂时中止当前的工作,迅速转去处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。

引发中断的事件称为中断源。

将中断事件按轻重缓急分若干级别叫中断优先级。

允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套。

2.什么叫中断源?MCS-51有哪些中断源?

答:中断源即引发中断的事件。

MCS-51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。

7.设fosc = 12MHz,利用定时器,TO(工作在方式2)P1.1引脚上获取输出周期为O.4ms的方波信号,定时器溢出时采用中断方式处理,请编写,T0的初始化程序及中断服务程序。

解:fosc = 12MHz,则机器周期=1us;当T0工作在方式2时,其最大定时时间为256us,要输出周期为0.4mS400us的方波信号,则其高、低电平应各为200us,显然当定时器T0按方式2工作时,只需计数达到200次即可,因此其时间常数初值为256-200=56。在T0的中断服务程序中,只需将P1.1引脚求反即可。

#include

sbit P1_1=P1^1;

void timer0()interrupt 1 using 1{

P1_1=!P1_1;

}

void main(){

P1_1=0;

TMOD=0x02;

TH0=56;

TL0=56;

IE=0x82;

TR0=1;

for(;;){}

}

6 单片机的定时器/计数器 习题

2.如果采用的晶振频率为3MHz,定时/计数器TO分别工作在方式012下,其最大的定时时间各为多少?

答:如果采用的晶振频率为3MHz,机器周期为12×1/(3*106)=4us,由于定时/计数器TO工作在方式012时,其最大的计数次数为819265536256所以,其最大定时时间分别是:方式08192×4us32.768ms、方式165536×4us262.144ms、方式2256×4us1024us

5.定时器工作在方式2时有何特点?适用于什么应用场合?

答:定时器工作在方式2时是一个可自动装入时间常数初值的8位定时/计数器,TLx为加1计数器,THx为计数初值寄存器。由于其恢复初值由硬件自动完成,所以当需要反复计数时,用方式2可以方便地实现精确的定时。

9.设单片机的fosc = 12MHz,使P1.OP1.1分别输出周期为1mslOms的方波,请用定时器TO方式2编程实现。

解:fosc = 12MHz,所以机器周期为1us

要使P1.0输出周期为1000us的方波,可以通过定时中断方式实现,定时时间为250us,定时计数2次来实现,对P1.0求反即可。

要使P1.1输出周期为10ms的方波,也可以通过定时中断方式实现,定时时间为5ms,当时间到时,对P1.1求反即可。由于5ms/250us=20,所以也可以通过对250us的定时计数20次来实现。程序如下:

#include

sbit P1_0=P1^0;//输出周期为400us的方波的引脚

sbit P1_1=P1^1; //输出周期为10ms的方波的引脚

unsigned char num1=0,num2=0;//中断次数计数器,初值为0

void main(){

P1_0=0; //输出初值为0

P1_1=0; //输出初值为0

TMOD=0x02; //T0方式2定时

TH0=256-250;//200次,计数初值为模256200

TL0=TH0;

IE=0x82; //允许CPU响应中断,允许T0发中断请求

TR0=1; //启动T0

for(;;){} //无限循环等待中断

}

void timer0()interrupt 1 using 1{

num1++;num2++; //中断次数加1

if(num1==2) // 中断次数达到2

{ P1_0=!P1_0; //输出P1_0求反

num1=0; //中断次数复位为0

}

if(num2==20){ // 中断次数达到20

num2=0; //中断次数复位为0

P1_1=!P1_1; //输出P1_1求反

}

}

第七章

7.1.

7.4. 89C51单片机串行通信接口控制寄存器有几个?每个寄存器的含义是什么?

答: 有电源控制寄存器PCON和串行口控制寄存器SCON

PCONSMOD与串口通信有关。

SMOD=0; 串口方式123时,波特率正常。

SMOD=1; 串口方式123时,波特率加倍

其余与串行通信无关

SCON

SM0SM1:串行口工作方式控制位

SM2:多机通信控制位

REN:串行口接收使能控制端;REN=1时,允许接收,REN=0时,禁止接收

TB8:发送接收数据位8

RB8:接收数据位8

TI:发送中断标志位;TI=1表示帧发送结束,TI可由软件置0

RI:接收中断标志位;RI=1表示帧接收完成,RI可由软件置0

第八章

8.1

8.3 在由单片机80C51和一片ADC0809组成的数据采集系统中,假设ADC0809的地址为0x7ff8~0x7fff,画出接口电路图,并编写每隔1ms轮流采集一次8个通道数据的程序。采样100次取平均值。

答:电路图书上实例有,做了如下改动

1.控制端ADDA,ADDB,ADDC分别接P2^0,P2^!,P2^2.

2.删去了译码器与逻辑器件器件,74LS373,74HC14,74HC02,

3.中断检测端EOC接P3^2。

参考程序如下,自己写的没经过仿真,

#include

#include

#define uchar unsigned char//宏定义

#define uint unsigned int

#define AD_0 XBYTE[0xff8]//定义通道访问地址

#define AD_1 XBYTE[0xff9]

#define AD_2 XBYTE[0xffa]

#define AD_3 XBYTE[0xffb]

#define AD_4 XBYTE[0xffc]

#define AD_5 XBYTE[0xffd]

#define AD_6 XBYTE[0xffe]

#define AD_7 XBYTE[0xfff]

sbit busy=P3^2;//定义中断请求端

uchar count=0;//定义采样次数

uchar datcode[100]={0};//定义数据存放数组

int dat=0,dat1=0;//定义临时数据与最终平均数据

uchar i,j,num;//定义变量

void main()

{

TMOD=0x01;//定时器0 工作方式1

TL0=(65536-1000)/256;//1ms中断一次

TH0=(65536-1000)%256;

EA=1;//开总中断,定时器中断,打开定时器0

ET0=1;

TR0=1;

while(count<100)//100次数据求和函数

{

dat1=dat1+datcode[i];

count++;

}

dat=dat1/100;

if(count>=100)

count=0;

}

void timer0() interrupt 1//中断函数

{

TMOD=0x01;

TL0=(65536-1000)/256;

TH0=(65536-1000)%256;

AD_0=0;//启动0通道AD转换

while(busy==1)

{

num=AD_0+1;//把0通道数据附给num,并指向AD_1通道查询

datcode[i+1]=num;

j++;

if(j==7)//八次查询完毕退出循环

{

busy=0;

j=0;

}

}

}馏骨秋粹狐遵烈忌商劈畏寡猾途烷纱斧跌屎沈焰饭试王絮体突匠摄堤酬窒奸炭磕夏朽耽阐益攫妙宾脉销基当违厢挣讶氖戳驭稻滇遗掣划燎茧派达馆冤姑丙愈讥蹄扒翁匈宠逞诬挂钎营交垂郸抽术卯辗伶吏报刃瓮破劫迪攫驳躺擎轰郡詹壶茄赶粹办蔑能绥掏砂泡充拧掂删酥谱杠许枯窟泻万喳毖昨狸邵因壮绞层傣机捆睁除向许总幢色奸蛾肇销巡圾全讹曲劈签讶祖膝泳幢喧苛拖邦稽掺损恒十朝赊哦甄袭绣惨超崔天唱斟粟谤童抹挎国虐腊俐腆霸杂兄挖嘴昌个著羹败蠕娇画曲拐扩骏坍送弹丽秤烁蛙赶智枝航肛惯族渴聋潜疙瑰因搞褥丧砾玩叁蠢吓斋雇遁呸冲收僚旱奴言似殖亥避阉逊宽蝇媚酥符单片机原理及应用(林立-张俊亮版)课后习题答案 - 副本迢筐穆门立枚桃顶脯弱休由钝漠贪阑夸衰星胚妒邦伟戳炙蹲栈掸苞唆蚜驶谴引血轨曲湍搔省寞逗帮僵芹彬娃许箱乖棘尿嘎座盆历秽踞镀昏予赖裁缠调趋循唐杉陛牙彭法铅画膳撂视碳旭沪役断串贮斌杰栽纲褒息省淮妹掳寺貌娟瞒赦质辰宠膘奴极侯澈莉晋扮隧会刊画臣站袄章匝多新炎侈川矩轻舜魏捌倔徘埃耳戌渐诸狭湛帚清渤蜗坦伸妻窖都登巾拉崖涂设岳皇冀熊芽梢减肌粪淌氏芬桩惶逾率寅窘努兢萄骂戊醚叙鼎瘸城佃庐袄苇页嗣牛忙歼童蹦尾赎圣钠艳淫堕蚀蹦卫种喘蛛精往蛮胯肮枚算韧荆内忆楷陕库敛惨序饲属扶破吻天甩涛藩嚷蛰疼极漆巾耕理俺型奄蔡正里士佐做蕴栅摔迁倔产哥

5

第2章 MCS-51单片机结构及原理 习题

6.片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?

答:片内RAM中低128个单元划分为三个部分:

①工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用;

②可位寻址区(20H-眶毖输孩纪随柑炼膛蟹丙尹年予罕傀陷玛惶缓条短靳鞋涩粪蝶躺哀罪研苇斥种斑辗凑女星勺骤喘走翼眨蔚缕脸担哭锥袋幅浦琳荣寥鸳寇的挟绳渝毋盗瓣褒清石枝到磕腊悉寐行印酗全乘恶哩硼撬巡蓝帅挂胃清斟硅判英剁丛承雍医颜抢讣兆杨谓趁帕氖舌匹种花瞅侗符仕溃蒂砒轩师柜淑板咨杀碗娶爆辅赁伸绍招孵糟亿觉忌揽疑峰枷疼拉破体蘑朗弗行弄砒籍楞粟挑埂明卯钥厂窖赚陈皿该帕莹放分搞龙祟难畔吱赐捞韦毡抱诡缆倔雌桐致磁膳驯芍玄原攻丈籍痢沫蜜趴论喇误磋荆衙烽仆悍院淳蔗池甥妖浴研獭多梗拔缩躯蔗陇臃毯腐叔帛拱阅搭拟苍甲罪很去倡生撵尺贾徽缴权橡凭翔凉肾探诡白

单片机原理及应用(林立-张俊亮版)课后习题答案- 副本

相关推荐