02:keil软件的使用

1、使用keil打开工程文件

找到project----open project在这里插入图片描述

2、编译工程

找到project----build targe或者rebuild all targe files
或者使用快捷按钮(左上角的2个向下的箭头)
在这里插入图片描述(1)工程项目中有很多文件,简单的分为3类:工程文件、源文件、目标文件
工程文件就是Keil软件工作需要的文件,和我们写程序没关系。

在这里插入图片描述
源文件就是我们写的源代码,就是我们编程编出来的(后缀名.c的文件)。
目标文件是Keil中的编译器等工具把我们源文件编译后生成的文件,最终向单片机中烧录时需要目标文件来烧录进去。
(2)我们工程刚创建好(空工程)时只有工程文件,此时我们要去编写添加源代码,代码写好后就有了工程文件和源文件,此时点编译操作就可以得到目标文件。
(3)编译的时候有可能会报错(Errors)和报警告(Warnnings),错误就是有很严重的问题,此时编译无效并不能生成最终需要的可烧录的程序文件,必须去排除错误重新编译才可以;警告是轻微问题,有时候可以忽略有时候不行,具体要凭经验。

3、keil建立新的工程

(1)project----New uvision project
选择一个合适的目录用来保存将来的工程项目,并且输入一个项目名
(2)选择CPU
Atmel----AT89C51,然后点击OK,弹出来选择"是否添加标准的8051的起始代码”,选择是。在这里插入图片描述
(3)现在可以自己开始写代码,或者直接复制一个已经写好的代码文件进来,并且添加到我们的工程项目中。在这里插入图片描述
在这里插入图片描述(4)编译完成,发现一个问题:没有可以用来烧录的.hex文件。编译时生成的文件有很多,但是只有这个.hex文件才是我们最终需要的,可以用来烧录的文件。其他都属于中间文件(杂碎)。在这里插入图片描述

(5)解决方案是再多一般配置,打开快速菜单栏中 Project 中 “Target Options”,在弹出的多选框里,点击output菜单,点选下面的creat HEXFile,然后关闭菜单,重新rebuild即可。在这里插入图片描述

在这里插入图片描述

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于Keil软件的E2PROM实现参数掉电存储功能的代码程序: ```c #include <reg52.h> #define EEPROM_START_ADDR 0xA0 // E2PROM起始地址 #define EEPROM_END_ADDR 0xAF // E2PROM结束地址 unsigned char code factory_settings[] = {0x02, 0x04, 0x08, 0x10}; //出厂设置 unsigned char idata user_settings[4]; // 用户设置 // 从E2PROM中读取用户设置 void ReadUserSettings(void) { unsigned char i; for (i = 0; i < 4; i++) { user_settings[i] = ReadEEPROM(EEPROM_START_ADDR + i); } } // 将用户设置写入E2PROM void WriteUserSettings(void) { unsigned char i; for (i = 0; i < 4; i++) { WriteEEPROM(EEPROM_START_ADDR + i, user_settings[i]); } } // 初始化E2PROM void InitEEPROM(void) { unsigned char i; for (i = 0; i < 4; i++) { WriteEEPROM(EEPROM_START_ADDR + i, factory_settings[i]); } } // 从E2PROM中读取一个字节 unsigned char ReadEEPROM(unsigned char addr) { unsigned char dat; I2C_Start(); I2C_SendByte(EEPROM_START_ADDR); I2C_SendByte(addr); I2C_Start(); I2C_SendByte(EEPROM_START_ADDR | 0x01); dat = I2C_ReadByte(); I2C_Stop(); return dat; } // 将一个字节写入E2PROM void WriteEEPROM(unsigned char addr, unsigned char dat) { I2C_Start(); I2C_SendByte(EEPROM_START_ADDR); I2C_SendByte(addr); I2C_SendByte(dat); I2C_Stop(); } // I2C总线的起始信号 void I2C_Start(void) { SDA = 1; SCL = 1; SDA = 0; SCL = 0; } // I2C总线的停止信号 void I2C_Stop(void) { SDA = 0; SCL = 1; SDA = 1; } // I2C总线的数据传输 void I2C_SendByte(unsigned char dat) { unsigned char i; for (i = 0; i < 8; i++) { SDA = dat & 0x80; SCL = 1; SCL = 0; dat <<= 1; } SDA = 1; // 发送最后一位时,释放数据线 SCL = 1; SCL = 0; } // I2C总线的数据接收 unsigned char I2C_ReadByte(void) { unsigned char i, dat = 0; SDA = 1; // 先释放数据线 for (i = 0; i < 8; i++) { SCL = 1; dat <<= 1; dat |= SDA; SCL = 0; } return dat; } void main(void) { InitEEPROM(); // 初始化E2PROM为出厂设置 ReadUserSettings(); // 从E2PROM中读取用户设置 // 进行一些操作,更新用户设置 WriteUserSettings(); // 将用户设置写入E2PROM while (1) ; } ``` 在上述代码中,`EEPROM_START_ADDR`和`EEPROM_END_ADDR`分别表示E2PROM的起始地址和结束地址。`factory_settings`数组为出厂设置,`user_settings`数组为用户设置。`ReadEEPROM`函数用于从E2PROM中读取一个字节,`WriteEEPROM`函数用于将一个字节写入E2PROM。`InitEEPROM`函数用于初始化E2PROM为出厂设置,`ReadUserSettings`函数用于从E2PROM中读取用户设置,`WriteUserSettings`函数用于将用户设置写入E2PROM。`I2C_Start`、`I2C_Stop`、`I2C_SendByte`、`I2C_ReadByte`分别为I2C总线的起始信号、停止信号、数据传输和数据接收。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值