第03章 单片机C语言程序设计 习题解答-精品文档资料整理.doc

上传人:安*** 文档编号:28608313 上传时间:2022-07-28 格式:DOC 页数:6 大小:51.50KB
返回 下载 相关 举报
第03章 单片机C语言程序设计 习题解答-精品文档资料整理.doc_第1页
第1页 / 共6页
第03章 单片机C语言程序设计 习题解答-精品文档资料整理.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《第03章 单片机C语言程序设计 习题解答-精品文档资料整理.doc》由会员分享,可在线阅读,更多相关《第03章 单片机C语言程序设计 习题解答-精品文档资料整理.doc(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第03章 单片机C语言程序设计 习题解答一、填空题1程序的基本结构有顺序结构、分支结构、循环结构 。2C51的存储器模式有SMALL、COMPACT、LARGE 。3C51中int型变量的长度为16位 ,其值域为 0-65535 。4C51中关键字sfr的作用定义51单片机内部一个字节的特殊功能寄存器 ,sbit的作用 定义51单片机片内可位寻址位 。5函数定义由函数头 和 函数体 两部分组成。6C51的表达式由运算符、运算对象 组成。7C51表达式语句由表达式和分号 组成。8C51中“!”运算符的作用是 逻辑非 。9若函数无返回值,用 void 关键字指定。10若局部变量未初始化,其初值为

2、不确定 。二、简答题1举例说明&和&运算的差异。答:(1)&(按位与)是位运算符,是双目运算。当二个位都等于1时,结果等于1,其它的结果都等于0。(2)&(逻辑与)是逻辑运算符。当两个及以上条件都同时成立的情况下“逻辑与”的运算结果才为“真”。 例:假设a = 1; b = 2;如果执行a&b,则结果为0;如果执行a&b,则结果为1;2、说明全局变量和局部变量的差异。答:全局变量和局部变量的差异为:(1)作用域不同。全局变量对所有的函数是可见的,所有函数都可以使用它;局部变量只对定义它的函数可见,只能在定义它的函数中使用,其他函数不能使用它。(2)一个源程序中的各个全局变量不能同名,而各个函数

3、的局部变量可以同名。在一个函数中,当全局变量与局部变量同名时,全局变量不起作用,局部变量起作用。(3)全局变量定义时未初始化,系统自动默认初值为0;局部变量定义时未初始化,其初值不确定。3、说明C51中变量的存储类型及其特点。答:C51中变量的存储类型有:(1)data,特点是:以直接寻址方式访问内部数据存储器,速度最快。(2)bdata,特点是:以直接寻址方式访问内部可位寻址数据存储器,允许位与字节混合访问。(3)idata,特点是:以间接寻址方式访问内部数据存储器,允许访问全部内部数据存储器。(4)pdata,特点是:分页访问外部数据存储器,用MOVX Ri指令访问。(5)xdata,特点

4、是:访问外部数据存储器,用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

5、下,仿真实现3.6节内容。答:设在存储区,有10个数据:99,15,30,13,27,28,7,0,33,67。编写程序,将其按照从大到小的次序排列。并按次序在数码管上显示。为了简化硬件电路,选用译码、显示一体化显示模块。仿真电路如图3-8所示。图3-8 数据排序仿真电路C语言参考程序如下。#include /定义头文件#define uchar unsigned char /定义常量uchar A10= 99,15,30,13,27,28,7,0,33,67 ;/定义数组,为了显示直观,对0-99之间的十进制数进行排序int DIS10 = 252,96,218,242,102,182,19

6、0,224,254,246; /定义数码管显示0-9的引脚值sbit pos_1 = P20; /定义4位数码管第1位使能引脚sbit pos_2 = P21;/定义4位数码管第2位使能引脚sbit pos_3 = P22; /定义4位数码管第3位使能引脚sbit pos_4 = P23; /定义4位数码管第4位使能引脚void taxisfun ()/排序函数 uchar i,j,Temp;/定义局部变量 for (i=0; i=8; i+) /设置外循环 for (j=0; j=8-i; j+) /设置内循环,j8-i 比用 jAj) /当后一个数大于前一个数 Temp = Aj; /前后

7、 2 数交换,前数送零时变量 Aj = Aj+1;/后数送前数 Aj+1 = Temp; /零时变量送后数 void delay()/延迟函数 int i,j;/定义两个内部循环变量 for ( i = 0;i = 3; i+)/设置外部循环 for ( j = 0; j = 200; j+); /设置内部循环void off() /数码管4位全灭函数 pos_1 = 1; /数码管第1位灭 pos_2 = 1; /数码管第2位灭 pos_3 = 1; /数码管第3位灭 pos_4 = 1; /数码管第4位灭void main(void) /主程序int now_pos, now_num; /

8、定义程序全局变量,now_pos为排序后的10个数字的排序序号,now_num记录显示结果循环次数 taxisfun (); /调用排序函数,对10个乱序数值进行从大到小排序 off(); /数码管全灭,等待进入循环显示 while(1) /程序进入循环阶段 for (now_pos = 0; now_pos 10; now_pos+)/10个从大到小排序后结果显示 for (now_num = 0; now_num 100; now_num+) /每个数值显示100次后,才显示下一个数值 P1 = DISnow_pos; /P1口输出当前显示数值的排序结果 pos_1 = 0;/数码管第1位

9、亮起 delay();/显示延迟 off(); /数码管4位全灭 P1 = DISAnow_pos / 10;/P1口显示排序后数值的十位 pos_3 = 0; /数码管第3位亮起 delay(); /显示延迟 off();/数码管4位全灭P1 = DISAnow_pos % 10; /P1口显示排序后数值的个位pos_4 = 0; /数码管第4位亮起delay(); /显示延迟 off(); /数码管4位全灭 ;2. 在Proteus下,用汇编语言程序实现数据排序,并将排序结果通过数码管显示。答:设有N个数存放在LIST地址开始的内部RAM存储区中,编写程序将N个数按由小到大次序存放在原来的

10、存储区内。仿真电路如图3-8所示。数据排序的方法有很多种,常用的是“冒泡法”,基本思想是:将相邻两个数作比较,即第一个数和第二个数比较,第二个数和第三个数比较,依次类推。若符合从小到大顺序的,则不改变它们在内存中的位置;否则交换它们的位置。如此反复,直至完成排序。按“冒泡法”对N个数排序时,最多需要N-1次双重循环。但在多数情况下,不用N-1次循环,数据就排好了。为了提高排序效率,程序中可设一交换标志位,每次循环中,若有交换则设置该标志,表明排序未完成;若无交换,则清除该标志,表明排序已经完成。每次循环结束时,检查交换标志位,判断排序是否结束。参考程序如下:ORG 0000H ;上电后PC=0

11、0000H,故在0000H单元存放转移指令 AJMP SORT ;转向主程序N EQU 07H ;定义常量N=07HORG 0100H;主程序从0100H开始SORT: MOV R2, #N-1 ;设置比较次数 MOV R0, #LIST ;数据块起始地址LOOP1:MOV A, R2 ;外循环计数值 MOV R3, A;内循环计数值 MOV R1,#01;交换标志初值LOOP2: MOV A, R0 ;取数据 MOVB, A;暂存B INC R0;数据地址加1 CLR C;清借位标志 SUBB A, R0;两数比较 JC LESS ;XjXj-1转LESS MOVA,B ;取大数 XCHA,R0 ;两数交换位置 DEC R0;修改地址 MOV R0, A;保存小数 INC R0 ;恢复数据指针 MOV R1,#02 ;置交换标志为2LESS: DJNZ R3, LOOP2 ;内循环计数减1,判一遍比较完成? DJNZ R2 ,LOOP3 ;外循环计数减1,判排序结束?STOP: SJMP $;循环等待LOOP3: DJNZ R1, LOOP1 ;发生交换时,R1的内容为2,减1后不为0,转移ORG 0050H;定义数据块从0050H开始LIST: DB 0,13,3,90,27,32,11;定义字节数据块 END;汇编结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com