资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
keil-C-keil-C-基本基本语法法1.1 C语言的优点 (1)C语言简洁,使用方法灵活 (2)可移植性好 (3)表达能力强 (4)表达方式灵活 (5)结构化程序设计 (6)可以直接操作计算机硬件 (7)生成的目标代码质量高1.概述概述21.2 C语言的缺点 (1)不能自动检查数组的边界 (2)各种运算符优先级别太多 (3)某些运算符具有多种用途 (4)忽略计算机底层知识的学习*1.概述概述31.3 C语言构成要素 (1)主函数 main 必不可少 (2)功能函数在main中调用 (3)标识符以字母开头, 最多32个字符,对大小写敏感 (4)有32个关键字,有各种库函数1.概述概述42.1 运算符分类 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 复合运算符2. C51语言语法要素语言语法要素5算术运算符算术运算符有些乘除可以用左移和右移代替。有些乘除可以用左移和右移代替。6关系运算符关系运算符7逻辑运算符逻辑运算符8A=1+2*35|!0+2 1+6 5|!0 +2 7 5|!0 +2 0 |!0 +2 0 | 1 +2非非0为真为真 A=1 0 | 3 0 | 19位运算符位运算符注意:移位运算并不改变原变量本身,注意:移位运算并不改变原变量本身,只能将移位的结果赋给一变量。只能将移位的结果赋给一变量。10赋值运算符赋值运算符 = 复合运算符复合运算符 例1 a+=b a=a+b 例2 x*=a+b x=x*(a+b) 例3 a&=b a=a&b 例4 a=4 a=a4112.2 C51数据类型数据类型 1.变量与常量,先定义后使用变量与常量,先定义后使用 int R; #define PI 3.1415926 2.基本数据类型基本数据类型 2. C51语言语法要素语言语法要素12基本数据类型基本数据类型13强制类型转换强制类型转换1.运算符转换(double) a(int) (x + y)(float) (5 % 3)14强制类型转换强制类型转换2. 不同类型的数据在运算表达式中的转换(1)如果float型数据,转换成double后进行运算; 如果是char型数据,转换成int后进行运算;例 c=a+ b c=97+98=19515(2) 各类数值型数据间的混合运算时的转换各类数值型数据间的混合运算时的转换int i ; float f , d , e ; 表达式表达式:10+a+ i*fd/e 如何运算?如何运算?doublefloatlongunsignedintchar高高低低16(1)进行)进行10+a的运算,转换的运算,转换a为为97;(2)进行)进行 i* f的运算,将的运算,将 i 和和 f 都转成都转成double型;型;(3)整数)整数107与与 i* f的积相加,先将的积相加,先将107转化成双精度转化成双精度数,结果为数,结果为double型;型;(4)将变量)将变量 d,e 转化成转化成double型,型,d/e的结果为的结果为double型;型;(5)将)将10+a+ i* f的结果与的结果与d/e的商相减,结果为的商相减,结果为double型。型。 以上数据类型转换都是由以上数据类型转换都是由C编译系统自动隐含完成的,编译系统自动隐含完成的,故称自动类型转换故称自动类型转换int i ; float f , d , e ;10+a+ i*fd/e运算次序为:运算次序为:17n 强制类型转换强制类型转换格式:(类型关键字或类型名)表达式格式:(类型关键字或类型名)表达式如:如: 设设 x=1.2,y=2.3,p=2.5(int)(x+y)%(int)p 结果为结果为 3%2 =1例如例如main() float x; int i; x=3.6; i=(int) x; printf(“x=%f, i=%d”,x, i);运行的结果是:运行的结果是: x=3.600000, i=318构造数据类型:构造数据类型: 数组、结构体、共用体、枚举数组、结构体、共用体、枚举1.数组数组 例例1 char abc10; abc0=0; 。 abc9=n;例例2 code unsigned char LEDMAP = 0x3f,0x06,0x79,0x71 19指针型数据:指针型数据: 表示一个变量所在的存储器地址表示一个变量所在的存储器地址,Ri 1.定义:定义:int *pter1 ;/指向整型变量指向整型变量 float *ptr2 ;/指向浮点型变量指向浮点型变量 char *ptr3 ;/指向字符型变量指向字符型变量 ;主要差别在于指针内容;主要差别在于指针内容+1时,究竟加几时,究竟加几 ; 个字节数。个字节数。20指针型数据:指针型数据: 2.引用:引用:int a=10; int *p= & a ;/通过引用操作通过引用操作&, ; /p指向指向 a x=a; x=*p ; /异曲同工异曲同工 a=*p ; 21指针型数据:指针型数据: 3.类型:类型: (1)普通指针普通指针 int *pter1 ;/指向整型变量指向整型变量 float *ptr2 ;/指向浮点型变量指向浮点型变量 char *ptr3 ;/指向字符型变量指向字符型变量 /使用使用3个字节保存指针本身。个字节保存指针本身。 (2)存储器特殊指针存储器特殊指针 int data *pter1 ;/指向指向data区的整型变量区的整型变量 unsigned long idata *ptr2; /指向指向idata区的无符号长整型变量区的无符号长整型变量 /使用使用12个字节保存指针本身个字节保存指针本身22指针型数据:指针型数据: 4.数组和指针:数组和指针: int a10=1,2,3,4,5,6,7,8,9,10,*ip; ip=&a0; ip=a; /数组名也代表数组首地址数组名也代表数组首地址 ip+i和和a+i都表示都表示ai的地址的地址232.3 程序表达式与结构程序表达式与结构 1.算术表达式算术表达式 2. C51语言语法要素语言语法要素Double z;z=sqrt(x+a)*(x+a)+(y+b)*(y+b);2.赋值表达式赋值表达式Double z;z=sqrt(x+a)*(x+a)+(y+b)*(y+b);242.3 程序表达式和结构 3.逻辑表达式 key_val=P1;key_val=key_val&0xf0; if(!(key_val=0xfo) .252.4 C51语句结构 1.选择执行结构 262.4 C51语句结构 1.选择执行结构 272.4 C51语句结构 2.循环执行结构 先判断条件,不满足不执行先判断条件,不满足不执行 后判断条件,不满足执行一次后判断条件,不满足执行一次 282.4 C51语句结构 2.循环执行结构 步骤步骤1: 执行表达式执行表达式1步骤步骤2 :满足表达式:满足表达式2,执行循环体,否则跳出;,执行循环体,否则跳出; 或者执行表达式或者执行表达式2,执行循环体。,执行循环体。步骤步骤3: 满足表达式满足表达式3,跳到步骤,跳到步骤2,否则跳出;,否则跳出; 或者执行表达式或者执行表达式3,跳到步骤,跳到步骤2。292.4 C51语句结构 3.终止循环语句For(i=0,i100) break; else xi=0; For(i=0,i100) continue; else xi=0; 302.4 C51语句结构 4. 预处理指令 (1)define语句 (2) include #include “stc8958.h” ; /先在当前文件中找,再到默认的目录去找#include; /直接到默认的目录去找 31。H 文件名称功能描述absacc.h定义了直接访问51系列单片机不同区域存储器的宏math.h定义了常用的数学函数AT89X52.h某种型号的单片机Reg52.h某种型号的单片机.C51的库函数32存储器类型描述code程序空间64 Kbytes通过 MOVC A+DPTR 访问data直接访问的内部数据存储器访问速度最快idata 间接访问的内部数据存储器可以访问所有的内部存储器空间256 bytesbdata可位寻址的内部数据存储器可以字节方式也可以位方式访问16 bytesxdata外部数据存储器64 Kbytes通过MOVX DPTR访问pdata分页的外部数据存储器256 bytes通过 MOVX Ri 访问3 C51存储器类型和模式 3.1存储器类型33codebdataidatadatapdata(256字节)xdata343 C51存储器类型和模式 3.2 存储器模式 由编译控制命令决定模式参数(无存储类无存储类型变量的存储区域)型变量的存储区域)存储器空间访问速度SMALL内部 RAM data低128byte快COMPACT分页外部RAM pdata 256 byte中LARGE全部外部RAM xdata64K byte慢其他变量仍然可以进行存储器类型定义其他变量仍然可以进行存储器类型定义35例char data var1; Bit bdata flag; float idata x,y,z; unsigned int pdata dimension; unsigned char xdata vector1044; char bdata flags;char code text = ENTER PARAMETER; 363 C51存储器类型和模式 3.3 SFR的声明 SFR TMOD=0x80; SFR16 DPTR=0x81; 3.4 寄存器位声明 sbit OV=PSW2; sbit OV=0xd02; sbit OV=0xd2;373 C51存储器类型和模式 3.5 可位寻址对象的声明 unsigned char bdata abc; char bdata arry5; sbit f1=abc0; sbit f4=arry00; f1=1; f4=0; 位的存储器类型只能为data或者 idata 383.6 中断函数中断函数Void 函数名(函数名(void) unsigned char interrupt m using n m=04 ;中断源编号中断源编号,同同51顺序顺序 n=07 ;工作寄存器组编号,用于保护操作工作寄存器组编号,用于保护操作例如:例如: void timer0(void) unsigned char interrupt 1 using 0 3.7 库函数与头文件:reg52.hmath.h394. C51程序设计实例程序设计实例1)并行口使用并行口使用 例例1:sbit key1=P11; sbit key2=P12; sbit LED=P13; LED=key1&key2; 例例2:unsigned char input_data; P1=0x0ff; input_data=P1; P0=!input_data; 402)定时器使用定时器使用 例例1:sbit signal=P11; TMOD=0x00; EA=1; ET0=1; TH0=0x1f; TH1=0x08; TR0=1;Void Timer0(void) interrupt 1 using1 signal=signal; TH0=0x1f; TH1=0x08; 415. Keil C51的使用的使用1.建立新工程建立新工程42在一个专门的文件夹内输入工程名在一个专门的文件夹内输入工程名选择选择CPU43加入加入51复位文件复位文件创建创建C51文件文件44*.C 文件的基本内容文件的基本内容C51系统包含的系统包含的*.h文件文件45创建的选项创建的选项选择软件仿真或者硬件仿真选择软件仿真或者硬件仿真46将将.C文件加入工程文件加入工程工程创建成功工程创建成功47进入仿真窗口,观察进入仿真窗口,观察 CPU、x、d、c、存储器空间、存储器空间48例如例如/example4p4(M1+1)(M1)*(M2)=(R2R3R4)/M1 DATA 20HM2 DATA 30H ORG 0000H LJMP START ORG 0030HSTART: MOV R0, #M1 MOV A, R0 MOV B, M2 MUL AB MOV R4, A MOV R3, B INC R0 MOV A, R0 MOV B, M2 MUL AB ADD A, R3 MOV R3, A MOV A, B ADDC A, #00H MOV R2, A SJMP $ END #include #include #include main() unsigned long data m2=0x4; unsigned long data m1=0x7081; unsigned long xdata m3; m3=m1*m2; while(1); Asm 88 bytesC 153 bytes49结束结束
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号