第3章单片机c语言概要

上传人:今*** 文档编号:110041923 上传时间:2019-10-28 格式:PPT 页数:62 大小:347KB
返回 下载 相关 举报
第3章单片机c语言概要_第1页
第1页 / 共62页
第3章单片机c语言概要_第2页
第2页 / 共62页
第3章单片机c语言概要_第3页
第3页 / 共62页
第3章单片机c语言概要_第4页
第4页 / 共62页
第3章单片机c语言概要_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《第3章单片机c语言概要》由会员分享,可在线阅读,更多相关《第3章单片机c语言概要(62页珍藏版)》请在金锄头文库上搜索。

1、单片机C语言,C51特点,结构化语言 丰富的数据类型 便于维护管理 与汇编语言相比,C语言的优点如下: 不要求编程者详细了解单片机的指令系统,但需了解单片机的存储器结构; 寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理; 结构清晰,程序可读性强; 编译器提供了很多标准库函数,具有较强的数据处理能力。,C51-1:C51基本结构,/功能:控制八个信号灯闪烁程序 #include /定义了MCS-52单片机的特殊功能寄存器 void delay(unsigned char i); /延时函数声明 void main() /主函数 while(1) P1=0x00;/点亮八个LED de

2、lay(200);/延时 P1=0xff;/熄灭八个LED delay(200); /延时 ,/函数名:delay /函数功能:实现软件延时 /形式参数:unsigned char i; void delay(unsigned char i) /延时函数,无符号字符型变量i为形式参数 unsigned char j,k; /定义无符号字符型变量j和k for(k=0;ki;k+) /双重for循环语句实现软件延时 for(j=0;j255;j+); ,C51的程序结构,#include void delay() ; void main() delay(); P0 = 0x33; ,程序的入口

3、函数名固定,且与书写的位置无关 有且仅有一个,库函数或用户自定义的函数 可以有若干个,C51程序大体上是若干函数的集合,C程序基本结构,一个或若干个函数 有(且仅有)一个主函数main 预处理命令 “;”作为语句的结束符 区分大小写。 用/* */或/注释。 Main主函数名;void函数类型,空类型无返回值;()内为形参, 内为函数体,C51编程要点,C语言编程的三大要素,数据 数据类型、数据结构、存储类型 运算 算术运算、关系运算、逻辑运算、位操作 控制 顺序结构、选择结构、循环结构、函数,C语言标识符,C语言中由字母、数字和下划线组成的字符序列称为-标识符。 用于在程序中给变量、符号常量

4、、数组、函数、数据类型等操作对象“起名”。,1编译系统定义标识符 由编译系统定义,具有固定名字和特定含义 分为关键字和预定义标识符 2用户自定义标识符 用于对用户使用的变量、数组、函数等操作对象进行命名。,C语言对标识符的规定,用户自定义标识符: 由字母、数字和下划线构成,但必须以字母或下划线“_”开头,不能以数字开头 不能含有除字母、数字和下划线“_”外的其他字符如:!、&、*等。 标识符中大小写字母含义不同 如:abc和Abc为不同的标识符 关键字:必须用小写字母。不允许使用关键字为变量、数组、函数等操作对象命名。 预定义标识符:允许用户对它们重新定义,当重新定义后将改变它们原来的含义。,

5、正确区分标识符,正确区分哪些是合法标识符,哪些是不合法标识符。 Abc P1_0 2x P1.0 student m+y a# b-4 _1 While int let x%y LED do wtm Ctrl swicth include,C51-2 数据类型,C51的数据,3-1、C51的数据类型,1char 字符类型 char类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。 分无符号字符类型unsigned char和有符号字符类型signed char,默认值为signed char类型。,字符型变量分为:signed char和 unsigned char 编译系统为其分配

6、 1 Byte(字节)的存储空间 (Turbo C、VC+6.0和Keil中均分配1B的存储空间) 表示的数值范围: signed char:-128127 unsigned char: 0255 字符型变量定义形式: char 字符变量名=初值; 例如:char ch1,c1; unsigned char c2= a ,c3= A;,例如: int a,b;(指定变量、为整型) char x,y; (指定变量x、y为字符型) unsigned int w,u; (指定变量w、u为无符号整型) unsigned char c,d; (指定变量、为无符号字符型),2int 整型 int整型长度为

7、两个字节,用于存放一个双字节数据。 分有符号int整型数signed int和无符号整型数unsigned int,默认值为signed int类型,3long 长整型 long长整型长度为四个字节,用于存放一个四字节数据。分有符号long长整型signed long和无符号长整型unsigned long,默认值为signed long类型。 4float 浮点型 float浮点型在十进制中具有7位有效数字,是符合IEEE754标准的单精度浮点型数据,占用四个字节。 5指针型 指针型本身就是一个变量,在这个变量中存放的是另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也

8、不尽相同。,6bit 位变量 bit类型-定义1个位变量,值为0或1.其存储器类型只能是bdata、data、idata,严格讲只能是:bdata 所有的bit变量都放在80C51内部存储区的可位寻址区,而该区域只有16字节长,所以在某个范围内只能声明最多128个位变量。 bit flag ; / 定义一个位变量flag bit flag=1 ; / 定义一个位变量flag并赋初值1,对位变量定义的限制 不能定义成一个指针, 如不能定义:bit *pointer; 不存在位数组 如不能定义:bit b_array 位变量定义时,存储类型只允许为data、bdata或者idata,如果将位变量的

9、存贮类型定义成其它类型都将导致编译出错。,7 sfr类型-用于定义1个8位的特殊功能寄存器 定义形式: sfr 标识符=8位特殊功能寄存器在内部RAM中的实际地址; 标识符可为特殊功能寄存器名或自己任意命名 如:sfr P0=0x80; sfr PSW=0xd0; sfr TMOD=0X89;,8 sfr16类型-用于定义1个16位的特殊功能寄存器 定义形式: sfr16 标识符=16位特殊功能寄存器的低字节地址; 51子系列中只有DPTR为16位的特殊功能寄存器: 由DPH和DPL组成,其地址分别为0x82和0x83,地址连续。 sfr16 DPTR=0x82; /*地址为低字节单元的地址*

10、/ 52子系列中T2可定义如下:sfr16 T2=0xCC; T0和T1不能用sfr16进行定义: sfr16 T0=0x8A; /*错误,TL0和TH0地址不连续*/ sfr16 T1=0x8B; /*错误,TL1和TH1地址不连续*/,9sbit 可寻址位 sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。 sbit类型-定义bdata区或可位寻址特殊功能寄存器(字节地址的末位为0或8)中的位,值也为0或1. 如:sfr P1=0x90; sbit P1_0=P10; 或sbit P1_0=0x900; 或sbit P1_0=0x

11、90; sbit EA=0xAF; sbit IT0=0x88; sbit P=0xD0; 注:安装Keil软件后,在文件夹“C:keilc51inc”中有一些头文件包含了有关特殊功能寄存器和相应位的定义。,reg51.h头文件内容:,/* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON

12、= 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D;,sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; /* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbi

13、t P = 0xD0;,/* TCON */ sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; /* IE */ sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8;,Reg51.h头文件内容(续),/* IP */ sbit PS

14、 = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0;,/* SCON */ sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; s

15、bit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98;,总结:,在编程时,如果只强调程序的运算速度而又不进行负数运算,最好采用无符号格式。 无论何时,应尽可能地使用unsgned char、 Bit类型。,C51-3 常量和变量 符号常量用大写,变量用小写,1、常量 又称为标量,常量的值在程序执行过程中不能改变,一般用一个标识符号代表一个常量,称为符号常量。,1、使用#define语句定义符号常量 例: #define CONST 60 #define PI 3.1415 2、使用”code”关键字 指定数据的存储位置为

16、程序存储器,C51中常量的定义:,2、变量 有关概念 在程序运行过程中,其值可以改变的量,称为变量,变量名用标识符表示。 变量一般有变量名和变量值组成。变量名为RAM单元地址号,变量值为该单元中存放的内容。 C规定程序中用到的变量必须“先定义后使用” 系统为变量在内存(内部RAM和外部RAM)中分配存储单元,存储变量的值。 编写程序时可以通过变量名来存、取变量值。,例如:unsigned int xdata i, j; unsigned char data ch1,ch2= A;,必须使用合法的标识符作变量名 不能使用关键字为变量命名 变量名一般用小写,长度一般不超过个字符,最长不得大于个字符。 变量名最好也能做到

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号