1. 將文件夾LED拷貝到安裝配置好sdcc的Linux系統(tǒng)中 2. 在文件目錄下make。 3. Make通過之后,然后再進行make hex。生成可下載的hex文件 4. 通過燒寫工具將hex文件燒寫到目標(biāo)板子中 5. 可以使用make clean 刪除所有編譯生成的文件 程序?qū)崿F(xiàn)led燈的閃爍 Config.h文件 #ifndef _CONFIG_H_ #define _CONFIG_H_ //系統(tǒng)時鐘頻率 #define F_CPU 12000000UL //LED顯示 #define LED P0, 7 #endif Macromcu.h文件 #ifndef _MACRO_MCU_H_ #define _MACRO_MCU_H_ 1 #include #define MACRO_ARG21(a, b) a #define MACRO_ARG22(a, b) b #define PINSET(pin) MACRO_ARG21(pin) |= 1 << MACRO_ARG22(pin) #define PINCLR(pin) MACRO_ARG21(pin) &= ~(1 << MACRO_ARG22(pin)) #define PININV(pin) MACRO_ARG21(pin) ^= 1 << MACRO_ARG22(pin) #define PININ(pin) MACRO_ARG21(pin) & (1 << MACRO_ARG22(pin)) #endif Hardware.h文件 #ifndef _HARDWARE_H_ #define _HARDWARE_H_ 1 #include #include "config.h" #include "macromcu.h" extern void IO_init(); #endif Hardware.c文件 #include "config.h" #include "macromcu.h" #include "hardware.h" void IO_init() { PINCLR(LED); } Demo.c文件 #include "hardware.h" void delay() { volatile unsigned int n; for(n = 0; n < 50000; n++); } int main(void) { IO_init(); while(1) { PINSET(LED); delay(); PINCLR(LED); delay(); } return 0; } Makefile文件 MAIN := demo OBJECTS := $(MAIN).rel hardware.rel SOURCES := $(MAIN).c hardware.c HEADERS := config.h hardware.h macromcu.h main: $(OBJECTS) sdcc $(OBJECTS) hardware.rel: $(HEADERS) hardware.c sdcc -c hardware.c $(MAIN).rel: $(HEADERS) $(MAIN).c sdcc -c $(MAIN).c hex: packihx $(MAIN).ihx > $(MAIN).hex objcopy -I ihex -O binary $(MAIN).hex $(MAIN).bin clean: mkdir temp cp *.c *.h temp rm *.* cp temp/*.* ./ rm -rf temp
|