SDCC 学习

 

单个led.c文件

#include <stdbool.h>

__sfr __at(0xb0) P3;

__sfr __at(0x88) TCON;
__sfr __at(0x89) TMOD;
__sfr __at(0x8a) TL0;
__sfr __at(0x8c) TH0;

__sfr __at(0xa8) IE;

volatile unsigned long int clocktime;
volatile _Bool clockupdate;

void clockinc(void) __interrupt(1)
{
	TH0 = (65536 - 922) / 256;
	TL0 = (65536 - 922) % 256;
	clocktime++;
	clockupdate = true;
}

unsigned long int clock(void)
{
	unsigned long int ctmp;

	do
	{
		clockupdate = false;
		ctmp = clocktime;
	} while (clockupdate);
	
	return(ctmp);
}

void main(void)
{
	// Configure timer for 11.0592 Mhz default SYSCLK
	// 1000 ticks per second
	TH0 = (65536 - 922) / 256;
	TL0 = (65536 - 922) % 256;
	TMOD = 0x01;
	IE |= 0x82;
	TCON |= 0x10; // Start timer

	for(;;)
		P3 = ~(clock() / 1000) & 0x03;
}

  

 

编译:

sdcc-sdcc led.c

生成的文件

led.asm led.c led.ihx led.lk led.lst led.map led.mem led.rel led.rst led.sym

  

生成的led.ihx转位led.hex

sdcc-packihx led.ihx > led.hex

  

posted @ 2020-04-20 19:02  醉后不知道天在水  阅读(382)  评论(0)    收藏  举报