2022年单片机-课件4_第1页
2022年单片机-课件4_第2页
2022年单片机-课件4_第3页
2022年单片机-课件4_第4页
2022年单片机-课件4_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

增强型单片机XC866原理及应用

C语言介绍编程语言分类C语言介绍

C语言介绍C语言的特点:对单片机的指令系统不要求了解,仅要求对单片机的存储结构有初步的了解。 寄存器的分配、不同存储器的寻址及数据类型等细节可由编译器管理。程序有规范的结构,可分为不同的函数,可使程序结构化。关键字及运算函数可用近似人的思维过程方式使用。编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能力等。一个C源程序至少包含一个函数(main函数),也可以包含一个main函数和若干个其他函数。例如: voidmain() {……} function1() {…} function2() {…}……函数由两部分组成: 1.函数说明部分. 2.函数体.

C语言程序结构例如: Voidmain(void) //函数说明 {unsignedchara; //函数体 unsignedcharb; …… }常量:在程序运行过程中,值不能改变的量。

常量的定义方法:

#define CONSTANT 100; 定义后,CONSTANT可代替100使用变量:在程序运行过程中,其值可以改变的量。 变量的定义格式如下:[存储种类]数据类型[存储器类型]变量名 变量可设置成多种类型,如下表所示:

数据类型、常量及变量数据类型

注意:在单片机中,只有bit型和unsignedchar型变量可以直接支持机器指令。

变量的存储类型定义举例: char data var1; bit bdata flags; float idata x,y,z; unsigned int pdata u; unsigned charxdata w;特殊功能寄存器的定义

特殊功能寄存器先定义后使用。使用sfr关键字进行定义。

sfr sfr_name=“整型常量”

例如: sfr SCON=0x98; /*串口控制寄存器地址为98H*/ sfr TMOD=0x89; /*定时器计数器方式控制寄存器地址为89H*/

大多数单片机特殊功能寄存器的定义都包含在头文件中,后缀名为.h,只需将其添加进项目中即可对特殊功能寄存器进行操作。对特殊功能寄存器中位的定义使用sbit关键字,共有如下三种方式:1.用sfr_name^位数进行定义。例如:sfr PSW=0xD0;/*定义PSW寄存器地址为0xD0*/sbit OV=PSW^2/*定义OV位为,地址为0xD2*/2.用int_constant^位数进行定义。

该方法以一个整型常数做为基地址,位地址做为偏移量。例如:sbit OV=0xD0^2 /*OV位地址为0xD2*/sbit CY=0xD0^7 /*CY位地址为0xD7*/3.用int_constant进行定义。

这种方法将位的绝对地址赋给变量。例如: sbit OV=0xD2 /*OV位地址为0xD2*/ sbit CY=0xD7 /*CY位地址为0xD7*/中断函数为了满足在C语言源程序中直接编写中断服务函数的需要,C编译器对函数的定义进行了扩展,使用如下的形式:

函数类型

函数名(形式参数表)interruptn(usingn)例如:

voidT01_viTmr0(void)interrupt1 {……} interrupt后的数字n是中断编号,编译器从8n+3处产生中断向量。 using后的数字n是使用的工作寄存器组号。程序有规范的结构,可分为不同的函数,可使程序结构化。判断表达式2是否满足给定的循环条件,若满足循环条件,则执行第3步;程序有规范的结构,可分为不同的函数,可使程序结构化。执行完毕后,sum=11。首先执行循环体语句,然后判断圆括号中的表达式。直接寻址片内数据存储区,访问速度块#else举例: #ifndef _MAIN_H_这种方法将位的绝对地址赋给变量。unsignedcharb;== 测试等于else {语句2};for(y=0;y<=10;y++)常见的用于构成并行多#define CONSTANT 100;编写中断函数时需要注意以下几点:中断函数不能进行参数传递中断函数没有返回值,将其定义成void类型在任何情况下不能调用中断函数如果在中断函数中调用了其他函数,则被调用函

数所使用的寄存器组必须与中断函数相同。在Cx51中提供了5种运算符,分别为:算术运算符、关系运算符、逻辑运算符、位操作运算符及自增减运算符。1.算术运算符: 该类运算符主要完成算术运算的功能,有下列5种:

+ 加法运算符, - 减法运算符 * 乘法运算符

/ 除法运算符 % 模(求余)运算符。

运算符、表达式及其规则2.关系运算符 该类运算符主要完成条件语句中的条件判断,有下列6种:

< 小于

> 大于

<= 小于或等于

>= 大于或等于 == 测试等于 != 测试不等于 由于关系运算符总是二目运算符,C语言以1代表真,以0代表假。

3.逻辑运算符:该类运算符主要完成逻辑运算的功能,有下列3种:

&& 逻辑“与”

|| 逻辑“或” ! 逻辑“非”

在逻辑表达式中,逻辑运算符的结合性为自左向右,逻辑表达式的值应该是一个逻辑量,为“真”或为“假”。4.位操作运算符

该类运算符完成操作数的按位的逻辑操作,有下列6种:

& 按位“与”

| 按位“或”

^ 按位“异或” ~ 按位“取反”

<< 按位左移

>> 按位右移5.自增减运算符、复合运算符

自增减运算符的作用是使变量的值自动加1或减1。其使用有如下两种方式: ++i,――i:在使用i值之前使i的值加(减)1。

i++,i――:在使用i值之后使i的值加(减)1。C语言程序结构顺序结构:

顺序结构是一种最基本、最简单的编程结构。在这种结构中,程序由低地址向高地址顺序执行指令代码。选择结构常见的选择语句有:If、if

else语句,其基本结构为:

1.if(表达式)

{语句};2. if(表达式) {语句1}; else {语句2};串行多分支结构

串行多分支结构的语句格式为:

if(表达式1)

{语句1;} elseif(表达式1) {语句2;} …… elseif(表达式n) {语句n;} else {语句m;}并行多分支结构:

常见的用于构成并行多分支结构的语句为switch-Case语句,其语句格式为:switch(表达式){case 常量表达式1: {语句1;} break;case 常量表达式2: {语句2;} break;……case 常量表达式n: {语句n;} break;default: {语句n+1;}}While型循环while语句的格式为:

while(表达式)

{循环语句}while循环的最大特点是其循环条件测试处于循环体的开头。do……while型循环do…while型循环格式:

do {语句;} while(表达式)

首先执行循环体语句,然后判断圆括号中的表达式。如果表达式的结果为真则循环继续,并再一次执行循环语句。

只有当表达式的结果为假时,循环才会终止,并顺序执行后面的语句。For循环For循环语句的一般形式为:

for(表达式1;表达式2;表达式3)

{语句;} /*循环体*/For循环的语句执行过程如下:先对表达式1赋初值进行初始化,判断表达式2是否满足给定的循环条件,若满足循环条件,则执行第3步;若不满足循环条件,则结束循环,转到第5步。若表达式2为真,则在执行指定的循环语句后,求解表达式3。回到第2步继续执行。退出for循环,执行下面一条语句。例如: sum=0; for(y=0;y<=10;y++) {sum=sum+1;}

执行完毕后,sum=11。C语言中的预处理命令:宏定义格式:#define标识符常量表达式功能:

用标识符代替常量表达式举例:

#defineubyteunsignedchar有效范围:直到本源文件结束或遇到#undef文件包含

格式:#include<文件名>

功能:用指定文件的全部内容替换该预处理行。

举例:#include<main.h>

文件包含命令通常放在C程序的开头,被包含的文件一般是公用的宏定义和外部变量的

温馨提示

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

评论

0/150

提交评论