第03章 单片机C语言程序设计 单片机原理与应用-基于实例驱动和Pr
第03章 单片机C语言程序设计 习题解答
一、填空题
1.程序的基本结构有 顺序结构、分支结构、循环结构 。 2.C51的存储器模式有 SMALL、COMPACT、LARGE 。
3.C51中int型变量的长度为 16位 ,其值域为 0--65535 。
4.C51中关键字sfr的作用 定义51单片机内部一个字节的特殊功能寄存器 ,sbit的作用 定义51单片机片内可位寻址位 。
5.函数定义由 函数头 和 函数体 两部分组成。 6.C51的表达式由 运算符、运算对象 组成。 7.C51表达式语句由表达式和 分号 组成。 8.C51中“!”运算符的作用是 逻辑非 。 9.若函数无返回值,用 void 关键字指定。 10.若局部变量未初始化,其初值为 不确定 。 二、简答题
1.举例说明&和&&运算的差异。
答:(1)&(按位与)是位运算符,是双目运算。当二个位都等于1时,结果等于1,其它的结果都等于0。
(2)&&(逻辑与)是逻辑运算符。当两个及以上条件都同时成立的情况下“逻辑与”的运算结果才为“真”。
例:假设a = 1; b = 2;
如果执行a&b,则结果为0; 如果执行a&&b,则结果为1;
2、说明全局变量和局部变量的差异。 答:全局变量和局部变量的差异为:
(1)作用域不同。全局变量对所有的函数是可见的,所有函数都可以使用它;局部变量只
对定义它的函数可见,只能在定义它的函数中使用,其他函数不能使用它。
(2)一个源程序中的各个全局变量不能同名,而各个函数的局部变量可以同名。在一个函
数中,当全局变量与局部变量同名时,全局变量不起作用,局部变量起作用。
(3)全局变量定义时未初始化,系统自动默认初值为0;局部变量定义时未初始化,其初
值不确定。
3、说明C51中变量的存储类型及其特点。 答:C51中变量的存储类型有:
(1)data,特点是:以直接寻址方式访问内部数据存储器,速度最快。
(2)bdata,特点是:以直接寻址方式访问内部可位寻址数据存储器,允许位与字节混合访
问。 (3)idata,特点是:以间接寻址方式访问内部数据存储器,允许访问全部内部数据存储器。 (4)pdata,特点是:分页访问外部数据存储器,用MOVX @Ri指令访问。 (5)xdata,特点是:访问外部数据存储器,用MOVX @DPTR指令访问。
(6)code,特点是:访问程序存储器,用MOVC @A+DPTR指令访问。 4、说明i++和++i的异同。 答:(1)i++:先赋值,i再自加1。
(2)++i:i先自加1,再赋值。 例:假设i=3;
如果执行x = i++; 则x = 3,i = 4。 执行x = ++i; 则i = 4,x = 4。 5、何为函数声明?如何进行函数声明? 答:(1)函数声明即是声明被调函数的原型,包括被调函数名、函数类型(即返回值类型)、
形参表(包括形参个数及其数据类型)。
(2)声明函数原型可以按照写函数定义时的函数头,再加上分号即可。 三、Proteus仿真
1.在Proteus下,仿真实现3.6节内容。
答:设在存储区,有10个数据:99,15,30,13,27,28,7,0,33,67。编写程序,将其按照从大到小的次序排列。并按次序在数码管上显示。为了简化硬件电路,选用译码、显示一体化显示模块。仿真电路如图3-8所示。
图3-8 数据排序仿真电路
C语言参考程序如下。 #include
//定义头文件 //定义常量
#define uchar unsigned char
uchar A[10]= {99,15,30,13,27,28,7,0,33,67} ;
//定义数组,为了显示直观,对0-99之间的十进制数进行排序
int DIS[10] = {252,96,218,242,102,182,190,224,254,246};
//定义数码管显示0-9的引脚值
sbit pos_1 = P2^0; //定义4位数码管第1位使能引脚
sbit pos_2 = P2^1; //定义4位数码管第2位使能引脚 sbit pos_3 = P2^2; //定义4位数码管第3位使能引脚 sbit pos_4 = P2^3; //定义4位数码管第4位使能引脚 void taxisfun () {
uchar i,j,Temp;
//定义局部变量 //设置外循环
//排序函数
for (i=0; i<=8; i++) {
for (j=0; j<=8-i; j++) { //设置内循环,j<8-i 比用 j<=8 少用很多循环
if (A[j+1]>A[j]) {
Temp = A[j]; A[j] = A[j+1];
//当后一个数大于前一个数 //前后 2 数交换,前数送零时变量 //后数送前数 //零时变量送后数
A[j+1] = Temp;
}
} } }
void delay() { int i,j;
//定义两个内部循环变量 //设置外部循环 //设置内部循环
//延迟函数
for ( i = 0;i <= 3; i++)
for ( j = 0; j <= 200; j++); } void off() {
pos_1 = 1; pos_2 = 1; pos_3 = 1; pos_4 = 1; }
void main(void)
//主程序
//数码管4位全灭函数
//数码管第1位灭 //数码管第2位灭 //数码管第3位灭 //数码管第4位灭
{
int now_pos, now_num;
//定义程序全局变量,now_pos为排序后的10个数字的排序序号,now_num记录显示结果循环次数
taxisfun (); off();
//调用排序函数,对10个乱序数值进行从大到小排序 //数码管全灭,等待进入循环显示 //程序进入循环阶段
while(1) {
for (now_pos = 0; now_pos < 10; now_pos++) {
//10个从大到小排序后结果显示
for (now_num = 0; now_num < 100; now_num++)
//每个数值显示100次后,才显示下一个数值
{
P1 = DIS[now_pos]; //P1口输出当前显示数值的排序结果 pos_1 = 0; delay(); off();
//数码管第1位亮起 //显示延迟
//数码管4位全灭
P1 = DIS[A[now_pos] / 10]; //P1口显示排序后数值的十位 pos_3 = 0; delay(); off();
//数码管第3位亮起 //显示延迟 //数码管4位全灭
//P1口显示排序后数值的个位
P1 = DIS[A[now_pos] % 10]; pos_4 = 0; delay();
//数码管第4位亮起 //显示延迟 //数码管4位全灭
off(); } }
}; }
2. 在Proteus下,用汇编语言程序实现数据排序,并将排序结果通过数码管显示。
答:设有N个数存放在LIST地址开始的内部RAM存储区中,编写程序将N个数按由小到大次序存放在原来的存储区内。仿真电路如图3-8所示。
数据排序的方法有很多种,常用的是“冒泡法”,基本思想是:将相邻两个数作比较,即第一个数和第二个数比较,第二个数和第三个数比较,依次类推。若符合从小到大顺序的,则不改变它们在内存中的位置;否则交换它们的位置。如此反复,直至完成排序。
按“冒泡法”对N个数排序时,最多需要N-1次双重循环。但在 …… 此处隐藏:1426字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




