51hei开发板赠送了一个盗版的Keil c51 IDE,用这个IDE可以进行任何8051的编程工作,但是使用盗版软件始终是有风险的,可能有一天Keil也会搞黑屏或律师函什么的,所以采用开源软件搭建8051开发环境还是有必要的。
首先下载8051开发自由软件Mide:http://www.opcube.com/home.html (注意在网页中下部),下载打包的那个,也就是4M多的那个,那个里面带有一个编辑器,一个8051 c编译器SDCC(开源软件),和一个8051软件模拟器JSIM(自由软件,v1.x的代码可以得到)。
首先,启动安装并启动Mide,将编译器配置为SDCC。由于SDCC编译器和Keil编译器语法有些不同,所以这里给出一个具体例子,该例子将在指定的8个LED数码管的一个上显示指定数字,本例中是在第六个数码管上显示A:
#include <8051.h>
sbit at (0xA6) seg_sel ; // 段选 sbit at (0xA7) digit_sel ; // 位选
//全局变量定义,注意如果非中断函数和中断函数都可能使用的变量需要进行禁止中断保护 //同时需要将变量定义为volatile . exp: volatile u8 timer_count = 0; //如果只是在该文件中使用的变量或函数请在前面加static
void led_show(int digit, int hexVal);
void main(void) { //变量定义 //相关初始化工作 led_show(5, 0xA); // 在第六个数码管(参数为5)显示A while(1) { //做具体工作 } }
/** 功能: 在指定数码管上显示指定数字,由调用者保证参数的有效性 参数: 1. digit: 1~8 指定数码管 2. hexVal: 0~0xF 需要显示的数字 返回值:无 */ void led_show(int digit, int hexVal) { // 0 1 2 3 4 5 6 7 8 9 A B C D E F unsigned char led_char[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
P0 = 0xff; digit_sel = 1; P0 ^= (0x1<<(digit-1)); digit_sel = 0;
seg_sel = 1; P0 = led_char[hexVal]; seg_sel = 0; }
选择重建工程可以生成*.hex文件,直接下载到hei51开发板就可以使用。本程序可以做为hei51开发板LED驱动使用。
另外,周立功公司的KTStudio也是使用SDCC编译器,也有软件模拟功能,目前也是免费的,可以考虑使用。
|