版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.4 C51基础知识介绍1.4.1 C51中的基本数据类型首先知道什么是常量和变量,例如A=1、B=D、C=A+B,A的值固定是1所以是常量,B的值随D的变化而变化所以是变量,同样道理C也是变量。接下来C51有哪些数据类型,见Error! Reference source not found.。表 01 C51中常用的数据类型数据类型关键字所占位表示范围无符号字符型unsigned char80255有符号字符型Char8-128127无符号整型unsigned int16065535有符号整型Int16-3276832767无符号长整型unsigned long320232-1有符号长整型
2、Long32-231231单精度实型Float323.4e-383.4e38双精度实型Double641.7e-3081.7e308位类型Bit101数据类型前面没有unsigned的认为是signed型。关于占位的解释:编程的时候无论采用什么进制在单片机中都以二进制方式存在,二进制只有0和1,这两个数每一个所占的空间就是一位(b),位也是单片机存储器中最小的单位。比位大的是单位字节(B),一个字节等于8位(即1B=8b)。为方便理解,数据类型所占位如Error! Reference source not found.所示。图 01 数据类型所占位其中float和double型是用来表示浮点数
3、的,即带有小数点的数,通常float能提供7位有效数字,double能提供1516位有效数字,但是这个精度还和编译器有关,并不是所有编译器都遵守这个原则。当把一个double型赋给float型的时候,系统会截取相应的有效位。例如float a;a=1.,那么a=1.,但改成double则能全部显示出来。1.4.2 C51中的运算符C51算数运算符如Error! Reference source not found.所示。表 02 算数运算符算数运算符含义+加法-减法*乘法/除以+自加-自减%求余运算C51逻辑运算符如Error! Reference source not found.所示。表
4、03 逻辑运算符逻辑运算符含义大于=大于等于小于右移左移注意:当我们的程序中出现a|=b的时候,代表将a|b后的值赋给a。同理a&=b,就是将a&b的值赋给a,还有很多a+=b、a+=b等等。1.4.3 C51中的基础语句C51中的基础语句如Error! Reference source not found.所示。表 05 基础语句语句类型If选择语句While循环语句For循环语句swich/case多分支语句do-while循环语句语句会在软件设计的时候详细讲解。1.4.4 C51常用的声明符号单片机内部有很多寄存器,每个寄存器都有它自己的地址,通常我们用到寄存器的时候都要声明这个寄存器,
5、声明的过程就是将这个寄存器的地址声明给方便我们理解这个寄存器的名字。下面就讲一些常见的声明符号,后面的软件设计中还会提到。sfr-特殊功能寄存器的数据声明。sbit-特殊功能位声明,即寄存器中的具体哪一位。bit-位变量声明,定义一个位变量。1.4.5 C51函数名命名规范函数命名规范就是用字母、数字、下划线来命名,数字不能在开头,但函数名最好直观一些,使人一看就知道这个函数是干什么的,比如delay() 一看就知道是延时函数,就比用拼音或者其他命名要好。要注意的是每个工程中只能有一个主函数 main(),其他的函数都统称为子函数,无论程序中函数的顺序是什么,都是从主函数开始,主函数中去调用子
6、函数,遇到具体程序时还会具体讲解。1.4.6 C51基础例程以下为一个包含C51基础的例程。/*/*其中/后面为注释,还可写成/*/,中间为注释。*/*编译器会将注释自动省略,注释只是为了方便查看代码的*/*说明:C51数据类型*/*char:字符型变量,8位;*/*int:整型变量,16位; */*long:长整型变量,32位*/*float:浮点型变量,32位*/*/#include/包含头文件,它包括51单片机中存在的一些寄存器int a;/整型变量 bchar b; /字符型变量 along c;/长整型变量 cfloat d;/浮点型变量 dvoid main(void)/void中
7、文翻译无类型。/main主函数前面的void表示的返回类型为无类型也就是不返回任何值。/括号里的void为参数,此处表示无参数。/*字符型变量赋值及运算*/b=1;/给b赋值1,b=1b=b+1;/将b+1的值(上一语句b=1,所以b+1=2)赋给b,b=2b=100+b;/将b+100的值(上一语句b=2,所以b+100=102),b=102/*整型变量赋值及运算*/a=210; /给a赋值210,a=210a=a+200;/将a+200的值(上一句a=210,所以a+200=410),b=410a=a+200;/将a+200的值(上一句a=410,所以a+200=610),b=610/*长
8、整型变量赋值及运算*/ c=360; /给c赋值360,c=360c=c*30; /将c*30的值(上一句c=360,所以c*30=10800),c=10800c=c+; /将c+的值(上一句c=10800,所以c+=),/c=/*浮点型变量赋值及运算*/d=0.01; /将d赋值0.01,d=0.01d=0.01*20; /将0.01*20的值赋给d,d=0.2d=(float)b/2; /将(float)b表示强制转换,将字符型b强制转化成浮点型,/b=102.0000,b/2=51.00000,d=51.00000while(1);如何看这些程序算法是否正确呢,这就需要我们使用Keil中
9、的软件调试模式,通过调试模式还可以看到整个程序的运行时间。将这些程序输入到编译器Keil中,编译后无错误。进行一些配置,在【Project】下单击【Options for Target Target1】,如Error! Reference source not found.所示。图 02 打开工程设置对话框打开工程设置对话框后,在标签【Target】下设置【Xtal(MHz):】,将原来的值改成我们用的单片机11.0592MHz,单击OK即可。如Error! Reference source not found.所示。图 03 配置时钟频率到这为止,配置就完成了,下面我们就要调试模拟了。单击窗
10、口上的调试按钮快捷图标,进入到软件模拟调试模式,如Error! Reference source not found.所示。图 04 模拟调试模式在开始软件调试模式之前,先熟悉下调试按钮的功能。调试状态下的调试按钮如Error! Reference source not found.所示。图 05 调试按钮:将程序复位到主函数的最开始处,准备重新运行程序。:全速运行,运行程序时中间不停止。:停止全速运行,运行程序时中间不停止。:进去子函数内部。:单步执行代码,它不会进入子函数内部,可直接跳过函数。:跳出当前进去的函数,只有进入子函数内部该按钮才被激活。:程序直接运行至光标所在行。:显示/隐藏编
11、译窗口,可以查看每句C语言编译后所对应的汇编语言。 :显示/隐藏变量观察窗口,可以查看各个变量值的变化状态。大家不妨把这些按钮都试一下。下面我们打开【View】中的【Watch Windows】中的【Watch1】,如Error! Reference source not found.所示。打开界面如Error! Reference source not found.所示。图 06 打开Watch1图 07 打开Watch1界面将licheng.c中的变量“a”“b”“c”“d”拖拽到Watch1中去,拖拽方法是选中要拖拽的变量,鼠标左键将选中的变量拖到Watch1窗口中,四个变量拖拽后如Er
12、ror! Reference source not found.所示。图 08 拖拽变量后的Watch1窗口观察Watch1窗口,a对应0x0000,b对应0x00,0x表示16进制,那么0x后面有几个0表示有几个16进制位,每2个16进制位是一个字节,我们从此就能看出每一个变量的长度了。例如a是4个16进制位两个字节长度16位,和我们定义的a为整型完全符合,其他道理一样。单击单步执行代码图标,观察Watch1窗口,我们会发现执行b=1的时候b对应的Value显示0x01,Watch1中的字节都为16进制,十六进制01等于十进制的1,如Error! Reference source not f
13、ound.所示。图 09 单步执行b=1对应b变化单步执行b=b+1的时候,b对应的Value显示0x02,十六进制的02等于十进制的2,如Error! Reference source not found.所示。图 010 单步执行b=b+1对应b变化单步执行b=100+b的时候,b对应Value显示0x66,十六进制66等于十进制102,如Error! Reference source not found.所示。图 011 单步执行b=100+b对应b变化其中的16进制与10进制的转换,读者可用计算机中的计算机计算。一个字节占两个16进制位,上面的b被定义为字符型,所以我们看到的都是两位1
14、6进制位,即0x-。单步执行a=210的时候,a对应Value显示0x00D2,十六进制D2等于十进制210,如Error! Reference source not found.所示。图 012 单步执行a=210对应a的变化单步执行第一个a=a+200的时候,b对应Value显示0x019A,十六进制019A等于十进制410,如Error! Reference source not found.所示。图 013 单步执行第一个a=a+200对应a变化单步执行第二个a=a+200的时候,a对应Value显示0x0262,十六进制0262等于十进制610,如Error! Reference source not found.所示。图 014 单步执行第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中高考拓展2025年自主招生说课稿
- 上海工程技术大学《安全生产与环境保护》2025-2026学年第一学期期末试卷(B卷)
- 初中生时间管理2025规划说课稿
- 上海工商职业技术学院《安全经济原理与实践》2025-2026学年第一学期期末试卷(A卷)
- 上海工商职业技术学院《安全学原理》2025-2026学年第一学期期末试卷(B卷)
- 上海工商外国语职业学院《阿拉伯国情》2025-2026学年第一学期期末试卷(B卷)
- 初中学科融合数学地理说课稿
- 上饶卫生健康职业学院《安全法规》2025-2026学年第一学期期末试卷(B卷)
- 上饶卫生健康职业学院《Android 移动开发》2025-2026学年第一学期期末试卷(A卷)
- 初中语文戏剧2025融合说课稿设计
- YS/T 429.1-2000铝幕墙板 板基
- GB/T 37669-2019自动导引车(AGV)在危险生产环境应用的安全规范
- 第四章 AP1000反应堆结构设计(杜圣华)
- 汕头市南澳岛演示文稿课件
- 西安交大流体力学题与答案
- 几起重大工程质量安全事故原因
- 设备供货安装方案(通用版)
- 中考物理题型二《开放、推理类题》
- 第二节 金属的腐蚀和防护PPT课件
- 2011年天津市高考物理试卷
- 九年一贯制学校小学初中深度一体化办学策略的调研报告
评论
0/150
提交评论