最新单片机C语言基础教学提纲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例子认识C程序
#include <REG51.h>
sbit A5=P1^0x04;
int main(void) {
//用户代码 void delay_1s();
return 0;
}
void delay_1s() {
//代码 }
可用任何文本编辑 软件编写,最后保 存扩展名为.C的程
序源文件
一、主程序(程序入口) int main(void) { //用户代码 return 0; }
要遵守如下ห้องสมุดไป่ตู้则
c语言变量命名: 数字、字母、下划线,都可以为变量命名。
做为变量名的开头不能为数字,如 3a_是错的,而a_3或_a3是正确 变量名不能为关键字,像if'else'printf 等等都不能
标准C表1
标准C表2
C51扩展
3、C-51的数据类型扩充定义
sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 bit:位变量声明
1.sfr 特殊功能寄存器。这也是C 51编译器的一种扩充数据类型, 利用它可以访问8051单片机的所有内部特殊功能寄存器。sfr型数据 占用一个内存单元,其取值范围0~255。
2.sfr16 16位特殊功能寄存器。它占用两个内存单元,取值范围是 0~65535。
3.sbit 可寻址位。这也是C51编译器的一种扩充数据类型,利用它 可以访8051单片机内部RAM中的可寻址位或特殊功能寄存器中的可 寻址位。
常用、重复引用的功能集成
其值可以改变的量称为变量。
一个变量应该有一个名字,在内存中占据 一定的存储单元。变量应该先定义后使用。 要区分变量名和变量值是两个不同的概念。
a=3
变量
3
0x40
存储值
存储单元地址[a]
注:变量名a代表地址,编译系统自动分配,用户不可见
一、C-51的变量类型
1、基本数据类型
单片机C语言基础
C-51的特点
C语言作为一种非常方便的语言而得到广泛 的支持,很多硬件开发都用C语言编程,如: 各种单片机、DSP、ARM等.
C语言程序本身不依赖于机器硬件系统,基 本上不作修改就可将程序从不同的单片机中 移植过来。
C提供了很多数学函数并支持浮点运算,开 发效率高,故可缩短开发时间,增加程序可 读性和可维护性。
例如:
int a,b; //定义a,b为整型变更 long sheng1,sheng2;//长整型 Float c,d; //浮点(有小数) Double e,f; //双精度 char a ;//有符号字符型 Unsigned char b;无符号字符型
注:变量类型为规定的 类型;变量的名称自由 起,但通常要通俗,并
4.bit 位标量。这是C 51编译器的一种扩充数据类型,利用它可定义 一个位标量,但不能定义位指针,也不能定义位数组。
例:sfr SCON = 0X98; sfr16 T2 = 0xCC; sbit OV = PSW^2
4、数据类型修饰词
1)、data:固定指前面0x00-0x7f的128个RAM,可以用 acc直接读写的,速度最快,生成的代码也最小
16
-32768~32767
16
-32768~32767
32
-2147483648~2147483647
16
0~65535
16
0~65535
32
0~4294967295
32
3.4e-38~3.4e38
64
1.7e-308~1.7e308
8
-128~127
8
0~255
2、变量类型的定义
格式 : 变量类型 + 变量名
4、数据类型修饰词
3)、
4、数据类型修饰词
4)、
5、变量的赋值
int a,b; //定义a,b为整型变量 long sheng1,sheng2;//长整型 float c,d; //浮点(有小数) double e,f; //双精度 char g ;//有符号字符型 Unsigned char h;无符号字符型
(定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算);
注:1、C程序模块都是以“{”开头 “}”结尾,程序为函数[主函数、子 函数]
2、每一行必须有结束号“;” 3、养成注释程序的习惯
“//”注释该行 “ /* ---段落---*/”注解一段
二、头文件(编程预处理)
#include <REG51.h> 注:定义一些通用引脚及函数
三、自定义函数(子函数)
C-51与ASM-51相比,有如下优点: 1. 对单片机的指令系统不要求了解,仅 要求对8051 的存贮器结构有初步了解; 2. 寄存器分配、不同存贮器的寻址及数 据类型等细节可由编译器管理; 3. 程序有规范的结构,可分成不同的函 数,这种方式可使程序结构化; 4. 提供的库包含许多标准子程序,具有 较强的数据处理能力; 5. 由于具有方便的模块化编程技术,使 已编好程序可容易地移植;
定义
a=12; a=0xff; a=0x00;
b=0;
b=08 ; b=03;
C=0.214; c=-0.36 ;
d=12e3;
e=12e-12;
g=10;
G=‘A’;
h=200;
赋值
注:‘A’为字符常量,为该字 符的ASCII代码
附
C-51的包含的头文件
通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h reg52.h
类型 符号
关键字
有
整 型
无
实有 型有
字有
符 型
无
(signed) int (signed) short (signed) long
unsigned int unsigned short int unsigned long int
float double char unsigned char
所占位数
数的表示范围
例如: char data a; //a变量存在上述RAM中 int data disp; //disp变量存在上述RAM中
2)、code定义的数据要放在ROM(程序存储区)里面,写 入后就不能再更改,对应的还有data是存入RAM的意思。
例如: uchar code yima[]= //把数码管位数据(因为不变)写入ROM {0xeb,0x88,0xb3,0xba,0xd8,0x7a,0x7b,0xa8,0xfb,0xfa};