《基于C语言的MCS-51单片机教程》 课件 第4次课-单片机数据类型_第1页
《基于C语言的MCS-51单片机教程》 课件 第4次课-单片机数据类型_第2页
《基于C语言的MCS-51单片机教程》 课件 第4次课-单片机数据类型_第3页
《基于C语言的MCS-51单片机教程》 课件 第4次课-单片机数据类型_第4页
《基于C语言的MCS-51单片机教程》 课件 第4次课-单片机数据类型_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

08:40单片机数据类型MCS-51系列单片机的基本组成时钟电路CPUROMRAMT0T1中断系统串行接口并行接口P0P1P2P3TXDRXDINT0INT1定时计数器中央处理器CPU:8位,运算和控制功能内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。定时/计数器:两个16位的定时/计数器,实现定时或计数功能。并行I/O口:4个8位的I/O口P0、P1、P2、P3。串行口:一个全双工串行口。中断控制系统:5个中断源(外中断2个,定时/计数中断2个,串行中断1个)时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ或11.0592复位电路单片机的存储结构MCS-51单片机存储器可以分成两大类:

RAM,CPU在运行时能随时进行数据的写入和读出,但在关闭电源时,其所存储的信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈。

ROM,写入信息后不易改写的存储器。断电后,其中的信息保留不变。用来存放固定的程序或数据,如系统监控程序、常数表格等。

MCS-51单片机采用哈佛结构,就是将数据存储器(RAM)和程序存储(ROM)分开的存储器结构。MCS-51单片机存储区可分为4个区域片内数据存储区(IDATA)片外数据存储区(XDATA)片内程序存储区(CODE)片外程序存储区(CODE)C51编译器支持的存储器类型存储器类型描述data直接访问片内RAM,访问速度最快(128字节)bdata可位寻址的片内RAM,允许位寻址和字节寻址(16字节)idata间接访问片内RAM,允许访问整个内部RAM(256字节)pdata分页访问片外RAM(256字节)xdata访问外部数据存储器和总线方式扩展的外设端口地址(64K字节)code程序存储器(64K字节)KielC51中如何使用单片机资源标识符和关键字数据类型、常量和变量运算符和表达式KeilC51语句标识符和关键字标识符是在程序中定义的对象,可以是函数、变量、常量、数组、数据类型和程序语句等。一般由字母、数字和下划线组成,标识符的第一个字符必须是字母或下划线。关键字是一些固定名称或有特殊含义的标识符,在编程的时候不能另作它用,自己定义的标识符(如变量名)不能和关键字相同。并且关键字在源程序加入KeilC51项目文件以后颜色和其它内容不同,很容易区别。数据类型、常量和变量

KeilC51的数据类型和TC类似,也分为基本型和复合数据类型,主要使用基本类型中的char,int,float等,除了基本类型,KeilC51还扩展了bit,sbit,sfr,sfr16四种变量类型,其中bit和sbit也是常用的数据类型。KeilC51支持的数据类型08:40数据类型数据类型关键词长度值域字符型signedchar1字节-128~+127无符号字符型unsignedchar1字节0~255整型signedint2字节-32768~+32867无符号整型unsignedint2字节0~65535长整型signedlong4字节-2147483648~+2147483647无符号长整型unsignedlong4字节0~4294967295浮点型float4字节±1.176E-38~±3.40E+38指针*1~3字节对象地址位bit1位0或1特殊功能寄存器位sbit1位0或1特殊功能寄存器sfr1字节0~25516位特殊功能寄存器sfr162字节0~65535①位常量它的值是一个二进制数,为0或者1②整型常量

在C51中整型常量可以表示成以下几种形式:十进制整数。如123、0、-89等。十六进制整数。以0x开头表示,如0x34,-0x3B、0x1234、0xABFC等长整数。在整数后面加字母L,如104L在存储器中占四个字节。④字符型常量字符型常量是用单引号引起的字符,如‘a’、‘9’、‘F’等。对于字符型常量,在单片机中用ASCII码表示。例如

unsignedchara;a=‘9’;与a=0x39;等效⑤字符串型常量字符串型常量由双引号“”括起的字符组成。如“D”、“1234”、“ABCD”等。注意字符串常量与字符常量是不一样一个字符常量在计算机内只用一个字节存放一个字符串常量在内存中存放时不仅双引号内的字符一个占一个字节,而且系统会自动的在后面加一个转义字符“\0”作为字符串结束符。不要将字符常量和字符串常量混淆,如字符常量‘A’和字符串常量“A”是不一样的。(2)变量变量是一种在程序执行过程中其值能不断变化的量。变量必须先定义后使用变量的定义格式[存储种类]数据类型

[存储器类型]变量名表;auto(自动变量)extern(外部变量)static(静态变量)register(寄存器变量)charunsignedcharintunsignedintsbitbitdata(片内数据存储器)xdata(片外数据存储器)code(程序存储器)存储器类型省略,表示变量存放在片内数据存储器内变量名可以由字母、数字和下划线三种字符组成,且第一个字母必须为字母或下划线。变量名有两种:普通变量名和指针变量名。它们的区别是指针变量名前面要带“*”号。2.3.2.3运算符和表达式运算符名运算符算术运算符+-*/%++--关系运算符><==>=<=!=逻辑运算符!&&||位运算符<<>>~&|^赋值运算符=条件运算符?:逗号运算符,指针运算符*&求字节数运算符sizeof强制类型转换运算符(类型)下标运算符[]函数调用运算符()①赋值运算符使用“=”的赋值语句格式如下:变量=表达式;

例如:a=0xFF;//将常数十六进制数0xFF赋与变量ab=c=33;//同时赋值给变量b,c

d=e;//将变量e的值赋与变量d②算术运算符+

加或取正值运算符-

减或取负值运算符*乘运算符/

除运算符%

取余运算符++(变量自加1)--

(变量自减1)整数相除还是整数计算机中存储数据是一个一个固定的电路结构,整数和实数存储的方式不一样,所以整数在运算后只能得到整数。08:40举例:除和取余运算符的应用例1:获取一个16位数的高8位和低8位数单片机典型应用:定时器送计数初值TH0=(65536-1000)/256;//送计数值高八位给TH0TL0=(65536-1000)%256;//送计数值高八位给TL0例2:获取十进制数的BCD码单片机典型应用:将数码管显示的数字进行数位分解,例如:unsignedinta=1234;unsignedchard[4];d[0]=a/1000;//取出千位数字d[1]=(a/100)%10;//取出百位数字d[2]=(a/10)%10;//取出十位数字d[3]=a%10;//取出个位数字(3)分支语句基本if语句if-else语句if-elseif语句(a)基本if语句基本if语句的格式如下:if(条件表达式){

语句组;

}(b)if-else语句if-else语句的一般格式如下:if(条件表达式){

语句组1;

}else{

语句组2;

}(c)if-else-if语句if-else-if语句一般格式如下:if(条件表达式1){

语句组1;}elseif(条件表达式2){

语句组2} …elseif(条件表达式n){语句组n;}else{语句组n+1;}多分支选择的switch语句,其一般形式如下:

switch(表达式){ case常量表达式1:语句组1;break; case常量表达式2:语句组2;break;

…… case常量表达式n:语句组n;break;default:语句组n+1;break;}(4)多分支语句(5)循环语句循环程序的作用是:对给定的条件进行判断,当给定的条件成立时,重复执行给定的程序段,直到条件不成立时为止。给定的条件称为循环条件需要重复执行的程序段称为循环体循环语句包括while语句(当型循环)do-while语句(直到型循环)for语句(for循环)while语句用来实现“当型”循环,执行过程:首先判断表达式,当表达式的值为真(非0)时,反复执行循环体。为假(0)时执行循环体外面的语句。循环体循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组while执行过程格式:while(循环继续的条件表达式)

{

语句组;}花括号不能丢掉!请问:下述程序实现了什么功能?main(){inti,sum=0;while(i<=10){sum=sum+i;i++;}}(a)while语句注意:如果循环条件一开始就为假,那么while后面的循环体一次都不会被执行While(1)为无限循环(死循环),因此while(1)只出现在主函数中。do-while语句用来实现“直到型”循环执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值为真(非0)时,返回执行循环体直到条件表达式为假(0)为止。绝对不能少分号!循环体格式:do{

循环体语句组;

}while(循环继续条件);花括号不能丢掉!循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组请问:下述程序实现了什么功能?main(){inti,sum=0;do{sum=sum+i;i++;}while(i<=100);}(b)do-while语句for语句的一般形式:

for(循环变量赋初值;循环继续条件;循环变量增值)

{

循环体语句组;

}

分隔符为分号(c)for语句

循环继续条件for的下一条语句非0(真)0(假)循环体语句组循环变量赋初值循环变量增值for语句循环执行过程只求解一次要执行若干次,具体次数由“循环继续条件”决定for语句不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定,但给出了循环继续条件的情况,它完全可以代替while语句和do-while语句。单片机KeilC51程序结构

KeilC51

程序以函数形式组织程序结构,C程序中的函数与其他语言中所描述的“子程序”或“过程”的概念是一样的。

C程序基本结构一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函数中结束整个程序。C语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。C语言程序使用“;”作为语句的结束符,一条语句可以多行书写,也可以一行书写多条语句。单片机KeilC51程序的三种基本控制结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论