⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 本文件是一套用示波器显示时钟走动和头像动画的系统
💻 C
字号:
unsigned int	*p0=(unsigned int *)(0x7000);
unsigned int	*p0d=(unsigned int *)(0x7002);
unsigned int	*p0a=(unsigned int *)(0x7003);
unsigned int	*tbu=(unsigned int *)(0x700E);
unsigned int	*oscu=(unsigned int *)(0x7013);
unsigned int	*dau=(unsigned int *)(0x702a);
unsigned int	*da0=(unsigned int *)(0x7017);
unsigned int	*da1=(unsigned int *)(0x7016);
unsigned int	*wdogc=(unsigned int *)(0x7012);
unsigned int	*intu=(unsigned int *)(0x7010);
unsigned int	*intc=(unsigned int *)(0x7011);
unsigned int	*sec=(unsigned int *)(0x0700);
unsigned int	*min=(unsigned int *)(0x0701);
unsigned int	*hour=(unsigned int *)(0x0702);
unsigned int	key_num,key_mode,key_have,key_plus,fast,min_flash,hour_flash;
unsigned int	bufx,bufy;

const unsigned int Timex[404]={
						0x8000,0x8000,0x8180,0x8180,0x8180,0x8180,0x8180,0x8180,0x8180,0x8180,0x8300,0x8600,0x8600,0x8600,0x8600,0x8780,0x8780,0x8780,0x8900,0x8900,0x8900,0x8A80,0x8A80,0x8A80,0x8C00,0x8C00,0x8C00,
							0x8000,0x8000,0x8000,0x8000,0x835A,0x86B3,0x8A0B,0x8CC1,0x8D61,0x90B5,0x9406,0x9753,0x995D,0x9A9D,0x9DE1,0xA121,0xA45A,0xA5B3,0xA78E,0xAABA,0xADDF,0xB0FC,0xB19F,0xB410,0xB71B,0xBA1C,0xBD13,
							0xC000,0xBE80,0xBD00,0xBB80,0xC2E1,0xC5B6,0xC880,0xC7B6,0xCB3C,0xCDEC,0xD08D,0xD321,0xD1A2,0xD5A6,0xD81C,0xDA82,0xDCD9,0xDAAA,0xDF1F,0xE155,0xE379,0xE58C,0xE2B3,0xE78D,0xE97D,0xEB59,0xED23,
							0xEED9,0xEC41,0xE9A8,0xE70E,0xF07D,0xF20C,0xF387,0xEF74,0xF4EF,0xF641,0xF77F,0xF8A8,0xF407,0xF9BC,0xFABA,0xFBA3,0xFC76,0xF756,0xFD33,0xFDDB,0xFE6C,0xFEE7,0xF955,0xFF4C,0xFF9A,0xFFD3,0xFFF4,
						0xE800,0xE800,0xEA00,0xEA00,0xEC00,0xEC00,0xEC00,0xEE00,0xEE00,0xEE00,0xF000,0xF000,0xF000,0xF000,0xF000,
							0xFFFF,0xFD00,0xFA00,0xF700,0xFFF4,0xFFD3,0xFF9A,0xF955,0xFF4C,0xFEE7,0xFE6C,0xFDDB,0xF756,0xFD33,0xFC76,0xFBA3,0xFABA,0xF407,0xF9BC,0xF8A8,0xF77F,0xF641,0xEF74,0xF4EF,0xF387,0xF20C,0xF07D,
							0xEED9,0xEC41,0xE9A8,0xE70E,0xED23,0xEB59,0xE97D,0xE2B3,0xE78D,0xE58C,0xE379,0xE155,0xDAAA,0xDF1F,0xDCD9,0xDA82,0xD81C,0xD1A2,0xD5A6,0xD321,0xD08D,0xCDEC,0xC7B6,0xCB3C,0xC880,0xC5B6,0xC2E1,
							0xC000,0xBE80,0xBD00,0xBB80,0xBD13,0xBA1C,0xB71B,0xB19F,0xB410,0xB0FC,0xADDF,0xAABA,0xA5B3,0xA78E,0xA45A,0xA121,0x9DE1,0x995D,0x9A9D,0x9753,0x9406,0x90B5,0x8CC1,0x8D61,0x8A0B,0x86B3,0x835A,
						0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8200,0x8200,0x8200,0x8400,0x8400,0x8400,0x8600,0x8600,0x8600,0x8800,0x8800,0x8800,0x8800,
							0x8000,0x8000,0x8000,0x8000,0x7CA6,0x794D,0x75F5,0x733F,0x729F,0x6F4B,0x6BFA,0x68AD,0x66A3,0x6563,0x621F,0x5EDF,0x5BA6,0x5A4D,0x5872,0x5546,0x5221,0x4F04,0x4E61,0x4BF0,0x48E5,0x45E4,0x42ED,
							0x4000,0x4180,0x4300,0x4480,0x3D1F,0x3A4A,0x3780,0x384A,0x34C4,0x3214,0x2F73,0x2CDF,0x2E5E,0x2A5A,0x27E4,0x257E,0x2327,0x2556,0x20E1,0x1EAB,0x1C87,0x1A74,0x1D4D,0x1873,0x1683,0x14A7,0x12DD,
							0x1127,0x13BF,0x1658,0x18F2,0x0F83,0x0DF4,0x0C79,0x108C,0x0B11,0x09BF,0x0881,0x0758,0x0BF9,0x0644,0x0546,0x045D,0x038A,0x08AA,0x02CD,0x0225,0x0194,0x0119,0x06AB,0x00B4,0x0066,0x002D,0x000C,
						0x1000,0x1000,0x1000,0x1000,0x1200,0x1200,0x1200,0x1400,0x1400,0x1400,0x1600,0x1600,0x1600,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
							0x0001,0x0300,0x0600,0x0900,0x000C,0x002D,0x0066,0x06AB,0x00B4,0x0119,0x0194,0x0225,0x08AA,0x02CD,0x038A,0x045D,0x0546,0x0BF9,0x0644,0x0758,0x0881,0x09BF,0x108C,0x0B11,0x0C79,0x0DF4,0x0F83,
							0x1127,0x13BF,0x1658,0x18F2,0x12DD,0x14A7,0x1683,0x1D4D,0x1873,0x1A74,0x1C87,0x1EAB,0x2556,0x20E1,0x2327,0x257E,0x27E4,0x2E5E,0x2A5A,0x2CDF,0x2F73,0x3214,0x384A,0x34C4,0x3780,0x3A4A,0x3D1F,
							0x4000,0x4180,0x4300,0x4480,0x42ED,0x45E4,0x48E5,0x4E61,0x4BF0,0x4F04,0x5221,0x5546,0x5A4D,0x5872,0x5BA6,0x5EDF,0x621F,0x66A3,0x6563,0x68AD,0x6BFA,0x6F4B,0x733F,0x729F,0x75F5,0x794D,0x7CA6
						};
const unsigned int Timey[404]={
						0xE200,0xEE00,0xE200,0xE400,0xE600,0xE800,0xEA00,0xEC00,0xEE00,0xF000,0xE200,0xE200,0xE400,0xEC00,0xEE00,0xE200,0xE600,0xF000,0xE200,0xE800,0xF000,0xE200,0xEA00,0xF000,0xE200,0xEC00,0xEE00,
							0xFFFF,0xFD00,0xFA00,0xF700,0xFFF4,0xFFD3,0xFF9A,0xF955,0xFF4C,0xFEE7,0xFE6C,0xFDDB,0xF756,0xFD33,0xFC76,0xFBA3,0xFABA,0xF407,0xF9BC,0xF8A8,0xF77F,0xF641,0xEF74,0xF4EF,0xF387,0xF20C,0xF07D,
							0xEED9,0xEC41,0xE9A8,0xE70E,0xED23,0xEB59,0xE97D,0xE2B3,0xE78D,0xE58C,0xE379,0xE155,0xDAAA,0xDF1F,0xDCD9,0xDA82,0xD81C,0xD1A2,0xD5A6,0xD321,0xD08D,0xCDEC,0xC7B6,0xCB3C,0xC880,0xC5B6,0xC2E1,
							0xC000,0xBE80,0xBD00,0xBB80,0xBD13,0xBA1C,0xB71B,0xB19F,0xB410,0xB0FC,0xADDF,0xAABA,0xA5B3,0xA78E,0xA45A,0xA121,0x9DE1,0x995D,0x9A9D,0x9753,0x9406,0x90B5,0x8CC1,0x8D61,0x8A0B,0x86B3,0x835A,
						0x7E00,0x8800,0x7C00,0x8A00,0x7C00,0x8400,0x8A00,0x7C00,0x8400,0x8A00,0x7E00,0x8000,0x8200,0x8600,0x8800,
							0x8000,0x8000,0x8000,0x8000,0x7CA6,0x794D,0x75F5,0x733F,0x729F,0x6F4B,0x6BFA,0x68AD,0x66A3,0x6563,0x621F,0x5EDF,0x5BA6,0x5A4D,0x5872,0x5546,0x5221,0x4F04,0x4E61,0x4BF0,0x48E5,0x45E4,0x42ED,
							0x4000,0x4180,0x4300,0x4480,0x3D1F,0x3A4A,0x3780,0x384A,0x34C4,0x3214,0x2F73,0x2CDF,0x2E5E,0x2A5A,0x27E4,0x257E,0x2327,0x2556,0x20E1,0x1EAB,0x1C87,0x1A74,0x1D4D,0x1873,0x1683,0x14A7,0x12DD,
							0x1127,0x13BF,0x1658,0x18F2,0x0F83,0x0DF4,0x0C79,0x108C,0x0B11,0x09BF,0x0881,0x0758,0x0BF9,0x0644,0x0546,0x045D,0x038A,0x08AA,0x02CD,0x0225,0x0194,0x0119,0x06AB,0x00B4,0x0066,0x002D,0x000C,
						0x1200,0x1400,0x1600,0x1800,0x1A00,0x1C00,0x1000,0x1800,0x1E00,0x1000,0x1800,0x1E00,0x1000,0x1800,0x1E00,0x1200,0x1400,0x1600,0x1800,
							0x0001,0x0300,0x0600,0x0900,0x000C,0x002D,0x0066,0x06AB,0x00B4,0x0119,0x0194,0x0225,0x08AA,0x02CD,0x038A,0x045D,0x0546,0x0BF9,0x0644,0x0758,0x0881,0x09BF,0x108C,0x0B11,0x0C79,0x0DF4,0x0F83,
							0x1127,0x13BF,0x1658,0x18F2,0x12DD,0x14A7,0x1683,0x1D4D,0x1873,0x1A74,0x1C87,0x1EAB,0x2556,0x20E1,0x2327,0x257E,0x27E4,0x2E5E,0x2A5A,0x2CDF,0x2F73,0x3214,0x384A,0x34C4,0x3780,0x3A4A,0x3D1F,
							0x4000,0x4180,0x4300,0x4480,0x42ED,0x45E4,0x48E5,0x4E61,0x4BF0,0x4F04,0x5221,0x5546,0x5A4D,0x5872,0x5BA6,0x5EDF,0x621F,0x66A3,0x6563,0x68AD,0x6BFA,0x6F4B,0x733F,0x729F,0x75F5,0x794D,0x7CA6,
						0x7D00,0x8300,0x8500,0x8700,0x7B00,0x8100,0x8900,0x7B00,0x8100,0x8900,0x7B00,0x8100,0x8900,0x7D00,0x7F00,0x8100,0x8300,0x8500,0x8700,
							0x8000,0x8000,0x8000,0x8000,0x835A,0x86B3,0x8A0B,0x8CC1,0x8D61,0x90B5,0x9406,0x9753,0x995D,0x9A9D,0x9DE1,0xA121,0xA45A,0xA5B3,0xA78E,0xAABA,0xADDF,0xB0FC,0xB19F,0xB410,0xB71B,0xBA1C,0xBD13,
							0xC000,0xBE80,0xBD00,0xBB80,0xC2E1,0xC5B6,0xC880,0xC7B6,0xCB3C,0xCDEC,0xD08D,0xD321,0xD1A2,0xD5A6,0xD81C,0xDA82,0xDCD9,0xDAAA,0xDF1F,0xE155,0xE379,0xE58C,0xE2B3,0xE78D,0xE97D,0xEB59,0xED23,
							0xEED9,0xEC41,0xE9A8,0xE70E,0xF07D,0xF20C,0xF387,0xEF74,0xF4EF,0xF641,0xF77F,0xF8A8,0xF407,0xF9BC,0xFABA,0xFBA3,0xFC76,0xF756,0xFD33,0xFDDB,0xFE6C,0xFEE7,0xF955,0xFF4C,0xFF9A,0xFFD3,0xFFF4
								};
const unsigned int Timex2[240]={
								0x0000,0x0007,0x000D,0x0014,0x001B,0x0021,0x0028,0x002F,0x0035,0x003C,0x0042,0x0049,0x004F,0x0055,0x005C,0x0062,0x0068,0x006E,0x0074,0x007A,0x0080,0x0086,0x008B,0x0091,0x0096,0x009C,0x00A1,0x00A6,0x00AB,0x00B0,
								0x00B5,0x00BA,0x00BE,0x00C3,0x00C7,0x00CB,0x00CF,0x00D3,0x00D7,0x00DA,0x00DE,0x00E1,0x00E4,0x00E7,0x00EA,0x00ED,0x00EF,0x00F1,0x00F3,0x00F5,0x00F7,0x00F9,0x00FA,0x00FC,0x00FD,0x00FE,0x00FF,0x00FF,0x00FF,0x00FF,
								0x00FF,0x00FF,0x00FF,0x00FF,0x00FF,0x00FE,0x00FD,0x00FC,0x00FA,0x00F9,0x00F7,0x00F5,0x00F3,0x00F1,0x00EF,0x00ED,0x00EA,0x00E7,0x00E4,0x00E1,0x00DE,0x00DA,0x00D7,0x00D3,0x00CF,0x00CB,0x00C7,0x00C3,0x00BE,0x00BA,
								0x00B5,0x00B0,0x00AB,0x00A6,0x00A1,0x009C,0x0096,0x0091,0x008B,0x0086,0x0080,0x007A,0x0074,0x006E,0x0068,0x0062,0x005C,0x0055,0x004F,0x0049,0x0042,0x003C,0x0035,0x002F,0x0028,0x0021,0x001B,0x0014,0x000D,0x0007,
								0x0000,0xFFFA,0xFFF4,0xFFED,0xFFE6,0xFFE0,0xFFD9,0xFFD2,0xFFCC,0xFFC5,0xFFBF,0xFFB8,0xFFB2,0xFFAC,0xFFA5,0xFF9F,0xFF99,0xFF93,0xFF8D,0xFF87,0xFF81,0xFF7B,0xFF76,0xFF70,0xFF6B,0xFF65,0xFF60,0xFF5B,0xFF56,0xFF51,
								0xFF4C,0xFF47,0xFF43,0xFF3E,0xFF3A,0xFF36,0xFF32,0xFF2E,0xFF2A,0xFF27,0xFF23,0xFF20,0xFF1D,0xFF1A,0xFF17,0xFF14,0xFF12,0xFF10,0xFF0E,0xFF0C,0xFF0A,0xFF08,0xFF07,0xFF05,0xFF04,0xFF03,0xFF02,0xFF02,0xFF01,0xFF01,
								0xFF01,0xFF01,0xFF01,0xFF02,0xFF02,0xFF03,0xFF04,0xFF05,0xFF07,0xFF08,0xFF0A,0xFF0C,0xFF0E,0xFF10,0xFF12,0xFF14,0xFF17,0xFF1A,0xFF1D,0xFF20,0xFF23,0xFF27,0xFF2A,0xFF2E,0xFF32,0xFF36,0xFF3A,0xFF3E,0xFF43,0xFF47,
								0xFF4C,0xFF51,0xFF56,0xFF5B,0xFF60,0xFF65,0xFF6B,0xFF70,0xFF76,0xFF7B,0xFF81,0xFF87,0xFF8D,0xFF93,0xFF99,0xFF9F,0xFFA5,0xFFAC,0xFFB2,0xFFB8,0xFFBF,0xFFC5,0xFFCC,0xFFD2,0xFFD9,0xFFE0,0xFFE6,0xFFED,0xFFF4,0xFFFA
							};
const unsigned int Timey2[240]={
								0x00FF,0x00FF,0x00FF,0x00FF,0x00FF,0x00FE,0x00FD,0x00FC,0x00FA,0x00F9,0x00F7,0x00F5,0x00F3,0x00F1,0x00EF,0x00ED,0x00EA,0x00E7,0x00E4,0x00E1,0x00DE,0x00DA,0x00D7,0x00D3,0x00CF,0x00CB,0x00C7,0x00C3,0x00BE,0x00BA,
								0x00B5,0x00B0,0x00AB,0x00A6,0x00A1,0x009C,0x0096,0x0091,0x008B,0x0086,0x0080,0x007A,0x0074,0x006E,0x0068,0x0062,0x005C,0x0055,0x004F,0x0049,0x0042,0x003C,0x0035,0x002F,0x0028,0x0021,0x001B,0x0014,0x000D,0x0007,
								0x0000,0xFFFA,0xFFF4,0xFFED,0xFFE6,0xFFE0,0xFFD9,0xFFD2,0xFFCC,0xFFC5,0xFFBF,0xFFB8,0xFFB2,0xFFAC,0xFFA5,0xFF9F,0xFF99,0xFF93,0xFF8D,0xFF87,0xFF81,0xFF7B,0xFF76,0xFF70,0xFF6B,0xFF65,0xFF60,0xFF5B,0xFF56,0xFF51,
								0xFF4C,0xFF47,0xFF43,0xFF3E,0xFF3A,0xFF36,0xFF32,0xFF2E,0xFF2A,0xFF27,0xFF23,0xFF20,0xFF1D,0xFF1A,0xFF17,0xFF14,0xFF12,0xFF10,0xFF0E,0xFF0C,0xFF0A,0xFF08,0xFF07,0xFF05,0xFF04,0xFF03,0xFF02,0xFF02,0xFF01,0xFF01,
								0xFF01,0xFF01,0xFF01,0xFF02,0xFF02,0xFF03,0xFF04,0xFF05,0xFF07,0xFF08,0xFF0A,0xFF0C,0xFF0E,0xFF10,0xFF12,0xFF14,0xFF17,0xFF1A,0xFF1D,0xFF20,0xFF23,0xFF27,0xFF2A,0xFF2E,0xFF32,0xFF36,0xFF3A,0xFF3E,0xFF43,0xFF47,
								0xFF4C,0xFF51,0xFF56,0xFF5B,0xFF60,0xFF65,0xFF6B,0xFF70,0xFF76,0xFF7B,0xFF81,0xFF87,0xFF8D,0xFF93,0xFF99,0xFF9F,0xFFA5,0xFFAC,0xFFB2,0xFFB8,0xFFBF,0xFFC5,0xFFCC,0xFFD2,0xFFD9,0xFFE0,0xFFE6,0xFFED,0xFFF4,0xFFFA,
								0x0000,0x0007,0x000D,0x0014,0x001B,0x0021,0x0028,0x002F,0x0035,0x003C,0x0042,0x0049,0x004F,0x0055,0x005C,0x0062,0x0068,0x006E,0x0074,0x007A,0x0080,0x0086,0x008B,0x0091,0x0096,0x009C,0x00A1,0x00A6,0x00AB,0x00B0,
								0x00B5,0x00BA,0x00BE,0x00C3,0x00C7,0x00CB,0x00CF,0x00D3,0x00D7,0x00DA,0x00DE,0x00E1,0x00E4,0x00E7,0x00EA,0x00ED,0x00EF,0x00F1,0x00F3,0x00F5,0x00F7,0x00F9,0x00FA,0x00FC,0x00FD,0x00FE,0x00FF,0x00FF,0x00FF,0x00FF
							};

void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
	if(key_mode==0)
	{
		min_flash=0;
		hour_flash=0;
	}
	if(key_mode==1)
	{
		hour_flash=0;
		min_flash++;
		if(min_flash>=12)
		{
			min_flash=0;
		}
	}
	else if(key_mode==2)
	{
		min_flash=0;
		hour_flash++;
		if(hour_flash>=12)
		{
			hour_flash=0;
		}
	}
	
	
	if(*p0==0)
	{
		key_plus=0;
		key_num=0;
		key_have=0;
	}
	if(*p0==1)
	{
		if(key_have==0)
		{
			if(key_num<3)
				key_num++;
			else
			{
				key_num=0;
				key_have=1;
				key_mode++;
				if(key_mode==3)
					key_mode=0;
			}
		}
	
	}
	if(*p0==2)
	{
		if(key_num<3)
			key_num++;
		else
		{
			key_num=0;
			if(key_mode==1)
			{
				key_have=1;
				if(*min<238)
					*min+=2;
				else
					*min=0;
			}
			if(key_mode==2)
			{
				key_have=1;
				if(*hour<238)
					*hour+=2;
				else
					*hour=0;
			}
		}
	}
	
	if(*p0==4)
	{
		if(key_num<3)
			key_num++;
		else
		{
			key_num=0;
			if(key_mode==1)
			{
				key_have=1;
				if(*min>1)
					*min-=2;
				else
					*min=238;
			}
			if(key_mode==2)
			{
				key_have=1;
				if(*hour>1)
					*hour-=2;
				else
					*hour=238;
			}
		}
	}
	*intc=2;
}


void Init_MCU()
{
	*p0d=0;
	*p0d=0;
	*p0=0;
	__asm("INT OFF");
	*oscu=0x80;
	*tbu=0x62;
	*intu=0x000A;
	__asm("INT IRQ");
}

void Circle()
{
	unsigned int i;
	for(i=0;i<404;i++)
		{
			*da0=Timex[i];
			*da1=Timey[i];
		}
}

void Point()
{
	unsigned int i;
	for(i=0;i<110;i+=2)
	{
		*da0=Timex2[*sec]*i+32768;
		*da1=Timey2[*sec]*i+32768;
	}
	
	for(i=107;i>2;i-=2)
	{
		*da0=Timex2[*sec]*i+32768;
		*da1=Timey2[*sec]*i+32768;
	}
	
	if(min_flash<10)
	{
		for(i=0;i<86;i+=4)
		{
			*da0=Timex2[*min]*i+32768;
			*da1=Timey2[*min]*i+32768;
		}
		for(i=86;i>4;i-=4)
		{
			*da0=Timex2[*min]*i+32768;
			*da1=Timey2[*min]*i+32768;
		}
	}
	
	if(hour_flash<10)
	{
		for(i=0;i<66;i+=4)
		{
			*da0=Timex2[*hour]*i+32768;
			*da1=Timey2[*hour]*i+32768;
		}
		for(i=66;i>4;i-=4)
		{
			*da0=Timex2[*hour]*i+32768;
			*da1=Timey2[*hour]*i+32768;
		}
	}
}

int main()
{
	unsigned int i;
	*sec=0;
	*min=0;
	*hour=0;
	key_num=0;
	fast=0;
	key_mode=0;
	key_have=0;
	Init_MCU();
	while(1)
	{
		*wdogc=1;
		Circle();
		Point();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -