SDCC 简明手册
仅探讨针对 8051,针对 windows 环境下的应用。
在 google.com 上搜索,并下载 SDCC
http://sdcc.sourceforge.net/
在 windows 下安装 sdcc,并且设置 path
1,测试编译器
char test;
void main(void) {
test=0;
}
执行 sdcc -c test.c
生成 test.asm ,test.sym, test.lst和 test.rel 文件 表示,编译成功
-c表示不进行连接
执行:sdcc test.c
连接库生成test.ihx文件
test1.c
#include
char str1[10];
void main(void) {
strcpy(str1, "testing");
}
执行:sdcc test1.c
生成test1.ihx文件,表示能够使用string.h库
以上,正常,证明SDCC能够正常工作。
输入packihx test1.ihx>test1.hex 用于生成intel hex文件
数据类型
data/near 默认(small memory model),内部 RAM
__data unsigned char test_data
xdata/far 默认(large memory model)外部 RAM
__xdata unsigned char test_xdata
idata 间接
__idata unsigned char test_idata
变量使用:#_test_idata
_test_data 等
pdata
__pdata unsigned char test_pdata;
code
__code unsigned char test_code;
bit 位类型变量
__bit test_bit;
定义 SFR
__sfr __at (0x80) P0;
__sfr16
__sbit __at (0xd7) CY;
指针变量
__at (0x8C8A) TMR0;
__xdata unsigned char *__data p;
__data unsigned char * __xdata p;
__xdata unsigned char * __code p;
__code unsigned char * __code p;
Unsigned char *p;
char (* __data fp) (void);
8051 存储结构
00-1F:32 字节 4 个 bank,R0-R7
20-2F:16 字节 128 个位
30-7F:89 字节 通用
绝对地址
xdata at 0x7ffe unsigned int chksum;
__xdata
__at(0x7ffe) unsigned int chksum;
__code __at (0x7ff0) char Id[5] = “SDCC”;
告诉编译器不要禁止访问
volatile __xdata __at (0x8000) unsigned char PORTA_8255;
定义 I/O
__bit __at (0x80) MOSI;
__interrupt (1)
__using (1)
中断服务程序
void timer_isr (void)
{
}
描述
外部 0
定时器 0
外部 1
定时器 1
串口
定时器 2
中断号
0
1
2
3
4
5
…
N
中断地址
0x0003
0x000b
0x0013
0x001b
0x0023
0x0026
0x0003+8*n
.HEX 文件烧录到单片机中,即可运行.
分三步走:
1, 设置 PATH 路径
2, SDCC ***.C
3, PACKIHX ***.IHX>****.HEX
4, 烧录***.HEX 到单片机
?
? t
S51 使用简介 (S51 是 8051 的模拟器)
1, 显示模拟器的配置 conf
2, 显示硬件信息 i h port[2]
3, 设置硬件数据 set hw port[0] 12
4, 帮助 help
5, 退出 q
6, 简单计算 expr 8+1
7, 显示信息 show
8, 显示 sfr 信息,get sfr p0
9, 设置数据 set mem sfr p0 0x55
10,
设置位数据 set bit p1.4 0
11,显示状态 state
12,
13,
设置中断
显示所有中断 i b
get sfr 0x90
get sfr p0 p1 p2 p3
set bit p2.5 1
S51 的 DOS 下图形界面:
更多信息如下链接
http://mazsola.iit.uni-miskolc.hu/~drdani/embedded/s51/
使用 Emulator 8051 V1.0 by TS Controls 进行仿真
软件注册信息为:Name:Imperial Falcon
s/n:1911
可以使用周立功的 TK STUDIO 集成开发环境 加载 SDCC 进行开发,有模拟器功能。
http://www.embedtools.com/pro_tools/emluator/studio.asp
通过编译工具设置,设置最新版本的 SDCC(安装 SDCC 后,在这里指定目录)
根据安装的 SDCC 目录按照下图进行选择
下面是一个简单的程序示例:
#include "8052.h"
void init_timer0_16bit(void);
void main()
{
init_timer0_16bit();
while(1)
{
P1_1=!P1_1;
}
}
void init_timer0_16bit(void)
{
TMOD &= 0xF0; /* Timer 0 mode 1 with software gate */
TMOD |= 0x01; /* GATE0=0; C/T0#=0; M10=0; M00=1; */
TH0 = 0x00; /* init values */
TL0 = 0x00;
ET0=1; /* enable timer0 interrupt */
EA=1; /* enable interrupts */
TR0=1; /* timer0 run */
}
void it_timer0(void) __interrupt(1) __using(1) /* interrupt address is 0x000b */
{
TF0 = 0; /* reset interrupt flag (already done by hardware)*/
TH0 = 0xff; /* init values */
TL0 = 0xfa;
P1_0 = !P1_0;/* P1.0 toggle when interrupt. */
}
通过在工程窗口的 Source Files 右键选择“构建目标工程” 生成目标文件
通过下面进行工程的参数配置
可以设置仿真的时钟频率等参数