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

📄 isr.c

📁 万年历代码
💻 C
字号:
#define		P_Watchdog_Clear		(volatile unsigned int *)0x7012

#define		P_INT_Ctrl				(volatile unsigned int *)0x7010
#define		P_INT_Clear				(volatile unsigned int *)0x7011
#define		C_IRQ5_2Hz				0x0004		// P_INT_Ctrl

extern unsigned int ascNow[14];

extern void GET1302(unsigned int* cur_time);
extern void SET1302(unsigned int* pClock);
extern void flash_LCD();
extern void wr_comm(unsigned int comm);
extern void wr_data(unsigned int data);


void bcd2asc(unsigned int* bcd,unsigned int* asc);


unsigned int i;

void IRQ5(void)__attribute__((ISR));
void IRQ5(void)
{
	
	unsigned int bcdNow[7];
	
	GET1302(bcdNow);
	bcd2asc(bcdNow,ascNow);	
	*P_Watchdog_Clear=1;
	flash_LCD();
	
	
	wr_comm(0x97);
	if(i&1)	wr_data(2);
		else wr_data(1);

	
	i++;
	
	
	*P_INT_Clear=C_IRQ5_2Hz;
}



//以下为BCD码转换为ASCII码程序
void bcd2asc(unsigned int* bcd,unsigned int* asc)
{
	unsigned int asc0,asc1;//asc0存个位ASC码,asc1存十位ASC码
	int i;
	
	for(i=0;i<7;i++)
	{
		*P_Watchdog_Clear=1;
		asc0=bcd[i]&0x000f;//为个位BCD码
		asc1=bcd[i]&0x00f0;
		asc1>>=4;//为十位BCD码			0000 0000 0000 XXXX
		
		asc0+=0x30;//加上0X30转为ASC码
		
													/*		以下为12小时进制的识别语句
															if(asc1&0x08)
															{//如果时为12小时制
																asc1&=0x08;//去掉最高识别位
																if(asc1&0x02)
																{//为上午,
																	asc1&=0x02;//去掉上午识别位
																	asc1|=0x80;//置asc1的低八位最高位为上午识别位
																}
															}
													*/		
		asc1+=0x30;
		
		asc[2*i]=asc1;//保存搞定的ASC码
		asc[2*i+1]=asc0;
		
	}//for
	
}

⌨️ 快捷键说明

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