1、KEIL C51的应用n C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用 C语言进行程序设计已经成为软件开发的一个主流。用 C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。而针对 8051的 C语言日趋成熟,成为了专业化的实用高级语言。单击此处编辑母版标题样式单击此处编辑母版副标题样式* 2C语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是 Keil C51.C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加
2、程序可读性和可维护性。 C-51的特点单击此处编辑母版标题样式单击此处编辑母版副标题样式* 3C-51与 ASM-51相比,有如下优点:1. 对单片机的指令系统不要求了解,仅要求对 8051 的存贮器结构有初步了解;2. 寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;3. 程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;4. 具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;5. 提供的库包含许多标准子程序,具有较强的数据处理能力;6. 由于具有方便的模块化编程技术,使已编好程序可容易地移植;C51存储类型存 储类 型 寻 址空 间 数据 长 度 值 域
3、范 围data 片内直接 寻 址 RAM8 0127idata 片内 间 接 寻址 RAM8 0255pdata 分 页寻 址片外 RAM8 0255存 储类 型 寻 址空 间 数据 长 度 值 域范 围xdata 片外数据存储 ( 64K)16 065535code 片内 统 一 编址 ROM(64K)16 065535bdata 片内可位 寻址的 RAM(16byet)1 0127n C51的数据声明的一般格式如下n 类型说明符 修饰符 标识符 =初值 n 例如: unsigned char code Flag = 0x0f;就是声明一个无符号的 char型变量 Flag,并给他赋初值为
4、0x0f;并且声明他所在的存储空间在片内统一编址的 ROM中。 n 声明中,如果没有修饰符,则数据默认的存储空间为 data型,也就是在片内 RAM中。单击此处编辑母版标题样式单击此处编辑母版副标题样式* 7 C 51的程序结构与一般 C语言的结构相同,以 main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。C 51函数的一般格式类型 函数名(参数表)数据说明部分语句执行部分 C 51的数据类型基本数据类型类型 符号 关键字 数的表示范围所占位数整型字符型实型有无(signed) int 16 -3276832767(signed) short 16 -3276832767(s
5、igned) long 32 -2147483648214748364716unsigned int 06553532 04294967295unsigned long intunsigned short int 16 065535有 float 32 3.4e-383.4e38有 double 64 1.7e-3081.7e308有 char 8 -128127无 unsigned char 8 0255C语言中的基本数据类型类型 符号 关键字 数的表示范围所占位数整型字符型实型有无(signed) int 16 -3276832767(signed) short 16 -327683276
6、7(signed) long 32 -2147483648214748364716unsigned int 06553532 04294967295unsigned long intunsigned short int 16 065535有 float 32 3.4e-383.4e38有 double 64 1.7e-3081.7e308有 char 8 -128127无 unsigned char 8 0255 (续 ) C 51的数据类型 扩充定义sfr:特殊功能寄存器 声明sfr16:sfr的 16位数据声明sbit:特殊功能位声明bit:位变量声明例: sfr SCON = 0X98;
7、sfr16 T2 = 0xCC;sbit OV = PSW2;单击此处编辑母版标题样式单击此处编辑母版副标题样式* 11 C-51数据的存储类型名 存储空间位置 长度 数据范围 data 直接寻址片内 RAM 8位 0 255 bdata 可位寻址片内 RAM 1位 0/1idata 间接寻址片内 RAM 8位 0 255pdata 片外页 RAM 8位 0 255xdata 片外 RAM 16位 0 65535code 程序 ROM 16位 0 65535 C-51数据的存储类型 (续 )例:数据类型 存储类型 变量char data var1;bit data flags;unsigned
8、 char xdata vextor10; 数据的存储类型 C-51的包含的头文件通常有 :reg51.h math.h ctype.h stdio.h stdlib.h absacc.h常用有 :reg51.h (定义特殊功能寄存器和位寄存器);math.h (定义常用数学运算); 单击此处编辑母版标题样式单击此处编辑母版副标题样式* 14 C-51的运算符与 C语言基本相同:+ - * / (加 减 乘 除) = #define prot xbyte0x1000或用指针定义单击此处编辑母版标题样式单击此处编辑母版副标题样式* 17例: 清零程序 (将 2000H20FFH 的内容清零 )
9、汇编语言程序ORG 0000HSE01: MOV R0,#00H MOV DPTR,#2000H ;(0000H)送 DPTRLOO1: CLR AMOVX DPTR,A ;0送 (DPTR)INC DPTR ;DPTR+1INC R0 ;字节数加 1CJNE R0,#00H,LOO1 ;不到 FF个字节再清LOOP: SJMP LOOP清零程序 (将 2000H20FFH 的内容清零 ) C 51程序#include main( ) int i;unsigned char xdata *p=0x2000;/* 指针指向 2000H单元 */for(i=0;imain ( ) unsigned char xdata *p=0x2000;/*指针 p指向 2000H单元 */int n=0,i;for(i=0;i16;i+) if(*p=0) n+; /* 若该单元内容为零,则 n+1 */p+; /* 指针指向下一单元 */p=0x2100; /* 指针 p指向 2100H单元 */*p=n; /* 把个数放在 2100H单元中 */KEIL的使用n 掌握 KEIL工程的建立和软件的开发;n 掌握 KEIL中软件仿真的基本应用;