单片机课后习题答案(《单片机应用技术》C语言版) 下载本文

当CPU停止执行程序运行后,开发系统允许用户方便地读出或修改目标系统资源的状态,以便检查程序运行的结果、设置断点条件以及设置程序的初始参数。任务2中图2.13给出了在Medwin调试环境下查看单片机内部资源的菜单。

3.程序编译功能 1) 程序设计语言

单片机程序设计语言包括机器语言、汇编语言和高级语言。 机器语言是单片机唯一能够识别的语言。

汇编语言具有使用灵活、实时性好的特点。目前,在实际项目开发中较少使用汇编语言。

高级语言通用性好,且具有较好的可读性和可移植性,是目前单片机编程语言的主流。

2) 程序编译

单片机开发系统能够提供源程序的编辑、编译和下载功能以及工程管理功能。

4.程序固化功能

编程器是完成这种任务的专用设备,它也是单片机开发系统的重要组成部分。

习题3 答案

3.1 单项选择题

(1) A (2) A (3) C (4)C (5) A (6) B (7) D (8) D (9)A (10)A (11)B (12)C (13)D (14)D (15)C

3.2 填空题 (1)P3口 (2)字节,位 (3)主函数main() (4)sbit FLAG=P3^1; (5)sfr

(6)顺序结构、选择结构和循环结构 (7)表达式加上分号“;” (8) if, switch

(9)do-while, while (10)无限次 (11)10000

(12)unsigned char

(13)变量在MCS-51硬件系统中所使用的存储区域 (14)'\\0'

(15)程序存储器ROM中

3.3 上机操作题

(1)

//xiti3_3_1.c——第三章习题3.3上机操作题(1) #include

void delay(unsigned char i); //延时函数声明 void main() //主函数

{

while(1){

P1=0x55;

//按状态1的方式点亮8个LED

delay(200); //延时

P1=0xaa; //按状态2的方式点亮8个LED delay(200); //延时

} }

void delay(unsigned char i)

//延时函数参见任务1程序ex1_1.c

(2)

//xiti3_3_2.c——第三章习题3.3上机操作题(2) #include

//包含头文件REG51.H

void delay(unsigned char i); //延时函数声明 void main() //主函数

{ unsigned char i,l,r; while(1){

l=0x10; // 高4位灯的位置初值为00010000B

r=0x08; // 低4位灯的位置初值为00001000B

for(i=0;i<4;i++){ P1=~(l|r); // 循环点亮灯

l<<=1; // 高4位灯的位置移动 r>>=1; // 低4位灯的位置移动

delay(200);

} }

} void delay(unsigned char i)

//延时

//延时函数参见任务1程序ex1_1.c

(3)

//xiti3_3_3.c——第三章习题3.3上机操作题(3)

#include

//包含头文件REG51.H

void delay(unsigned char i); //延时函数声明 void main() //主函数

{ unsigned char i; unsigned char display[]={0x89, 0xff,0x86, 0xff,0xc7, 0xff,0xc7, 0xff,0xc0, 0xff};

while(1){

for(i=0;i<10;i++){

P1=display[i]; delay(200);

} }

} void delay(unsigned char i)

//延时函数参见任务1程序ex1_1.c

//显示字送P1口

//延时

习题4 答案

4.1 单项选择题 (1)B (2)A (3)C (4)A (5)A (6)B (7)A (8)A (9)D (10)A (11)C (12)C (13)A (14)D 4.2 填空题

(1) ①定时器T0 ②定时器T1 ③定时器方式寄存器TMOD ④定时器控制寄存器TCON

(2)GATE=0

(3)TMOD=0x05

(4)选择定时器T0/T1的工作方式

(5)控制定时器的启动、停止,标志定时器的溢出和中断情况。

(6)定时控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存器IE、中断优先权寄存器IP

(7)外部中断0、定时器0、外部中断1、定时器1、串行口 (8)电平触发方式

(9)硬件自动清除、软件清除、硬件配合软件共同清除 (10)0 4. 3 答:

当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,如果单片机系统采用12M晶振,则计数周期为:,这是最短的定时

周期,适当选择定时器的初值可获取各种定时时间。

当定时/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号计数,外部脉冲的下降沿将触发计数,检测一个由1到0的负跳变需要两个机器周期,所以,最高检测频率为振荡频率的1/24。计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。

当需要准确计算时间时往往采用定时器的定时方式,而当要对一些外部事件计数时则采用定时器的计数方式。

4. 4 答:

软件定时是通过编写一段延时程序来实现定时,这段延时程序不完成任何操作,只是通过一些空操作浪费掉一段时间。这样的软件定时往往浪费CPU的工作效率,并且定时不够准确,前面三章的各个任务中均采用了这种方法。

硬件定时是通过单片机的定时器来实现时间的计算,用户只需要对定时器的工作方式、初始值赋予合适的数值,启动定时器后,定时器将自动按照机器周期定时。这种由定时器实现的定时方式,定时时间准确、CPU的工作效率高。

4.5 答:

MCS-51系列单片机的定时/计数器是增1计数器。

对于增1计数器,计数初值应等于最大计数值减去所需要的计数值。 而减1计数器,计数初值就等于所需要的计数值。

例如:假设需要计数50000次。对于增1计数器的单片机,若采用方式1的定时器,最大计数值为65536,则初值应为:65536-50000=15536。

而对于减1计数器,则计数初值将为50000。 4.6 答:

在定时/计数器工作于方式1下,最大计数值为65536。 若晶振频率为6MHz,则一个机器周期为2μS,所以最短定时时间为2μS(计数初值为65535),最长定时时间为2μS×65536=131072μS(计数初值为0)

4.7 答: