还是前面的main.c
#include <at89x52.h>
#define led1 P2_0
void delayms(unsigned int ms)
{
unsigned int x, y;
for (y = ms; y > 0; y--) {
for (x = 227; x > 0; x--);
}
}
void main(void)
{
while (1) {
led1 = 0;
delayms(1000);
led1 = 1;
delayms(1000);
}
}
编译这个程序的Makefile如下:
CC = sdcc
all:led.bin
led.bin:led.hex
objcopy -I ihex -O binary led.hex led.bin
led.hex:main.ihx
packihx main.ihx > led.hex
main.ihx:main.c
$(CC) main.c
.PHONY:clean
clean:
-rm led.bin led.hex main.asm main.ihx main.lk main.lst\
main.map main.mem main.rel main.rst main.sym
当然也可以直接将ihx文件转换成bin文件,Makefile如下:
CC = sdcc
all:led.bin
#led.bin:led.hex
# objcopy -I ihex -O binary led.hex led.bin
#led.hex:main.ihx
# packihx main.ihx > led.hex
led.bin:main.ihx
makebin main.ihx led.bin
main.ihx:main.c
$(CC) main.c
.PHONY:clean
clean:
-rm led.bin main.asm main.ihx main.lk main.lst\
main.map main.mem main.rel main.rst main.sym
注:使用makebin产生的bin文件会很大。