0. 简介

Keil C51是美国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。

与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

1. 下载

百度输入keilC51下载

2. 安装

过程简单,略

3. 使用

双击打开软件,Project-New uVision Project-输入工程名称保存,弹出下面对话框,找到Atmel,AT89C51(是一种51单片机),OK,是

 

单片机连云平台 代码框架 连接单片机的软件_寄存器

生成下面的工程结构:

单片机连云平台 代码框架 连接单片机的软件_单片机连云平台 代码框架_02

双击打开STARTUP.A51文件:这是C51单片机的编译器包

单片机连云平台 代码框架 连接单片机的软件_Group_03

点击“新建”图标

单片机连云平台 代码框架 连接单片机的软件_寄存器_04

保存,Demo01.c,这是一个C文件,在这个文件中编写C程序

 

单片机连云平台 代码框架 连接单片机的软件_Group_05

此时,工程结构中并没有出现Demo01.c文件,需要添加进来

单片机连云平台 代码框架 连接单片机的软件_寄存器_06

右键Source Group 1,Add Existing Files to Group 'Source Group 1',选择要添加进来的C文件Demo01.c,点击Add

单片机连云平台 代码框架 连接单片机的软件_寄存器_07

此时C文件添加进来:

单片机连云平台 代码框架 连接单片机的软件_Group_08

双击打开Demo01.c,随便添加一个特殊寄存器的文件头,比如:reg52.h

那么输入:#include <reg52.h>

保存,点击这个图标:进行编译

单片机连云平台 代码框架 连接单片机的软件_单片机_09

出现了库文件 reg52.h

单片机连云平台 代码框架 连接单片机的软件_单片机连云平台 代码框架_10

双击打开该文件:

单片机连云平台 代码框架 连接单片机的软件_单片机连云平台 代码框架_11

以上sfr关键字定义的变量都是该特殊寄存器各个引脚在寄存器中的内存地址,

引入这个文件的目的:为了要使用P1 (还有其他更多的符号)这个符号,即通知C 编译器,程序中所写的P1 是指80C51 单片机的P1 端口而不是其它变量。只有对寄存器以及相关位进行声明地址后,我们才能对其赋值,keil软件才能通过编译。

bit关键字定义的变量取值只有0和1两个值

bit和sbit都是51单片机的扩展变量类型,bit定义的内存地址是随机分配的,而sbit定义的地址是确定的。

bit和sbit的最大区别在于,bit是定义一个变量;sbit经常用在寄存器中的,方便对寄存器的某位进行操作。

 ------------------------------------------------ code关键字

一般说来,我们在C语言中定义的每一个变量初始化后都会占用一定的内存(RAM)空间。但是在keil中提供了提
一个特殊的关键字“code”,这个关键字在标准C中是没有的。其语法举例如下:

unsigned char code word[] = {
      0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,
      0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,
      0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,
      0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,
};


int code vel = 1201;
我们知道,在单片机中一般都有两块存储区域,ROM和RAM,程序代码存储在ROM中,程序要用的变量存储在RAM中
。而“code”的作用就是将其修饰过的变量存储在ROM中而非RAM。
在单片机中,RAM空间都比较小,是比较宝贵的。“code”的意义就是将一些初始化后值一直保持不变的变量(如:固定的常数、表格、常量数组、只读常量等)放置于ROM区,从而节省了RAM空间。
注意:用“code”修饰的变量是不能在程序运行时改变的!