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

📄 clock.c

📁 2410一些基本试验的源码
💻 C
字号:
#include "2410addr.h"
#include "2410lib.h"
#include "timer.h"

//void alm_start();
//void alm_stop();
char *date[8] = { "","星期天","星期一", "星期二", "星期三", "星期四","星期五", "星期六" } ;

int year,sec,mini,hour,dat,weekday,mon;

void alm_int(U8 almyear,U8 almmonth,U8 almday,
U8 almhour,U8 almminitue,U8 almsec)
{
	rRTCCON=0x01;
	
	rALMYEAR=almyear;
	rALMMON=almmonth;
	rALMDATE=almday;
	rALMHOUR=almhour;
	rALMMIN=almminitue;
	rALMSEC=almsec;
	
	rRTCCON=0x00;
}

void realtime_set(U8 YEARDATA,U8 MONDATA,U8 DATEDATA,U8 DAYDATA,
U8 HOURDATA,U8 MINDATA,U8 SECDATA)
{	
	rRTCCON=0x01;
	
    rBCDYEAR=YEARDATA;
    rBCDMON=MONDATA;
    rBCDDATE=DATEDATA;
    rBCDDAY=DAYDATA;
    rBCDHOUR=HOURDATA;
    rBCDMIN=MINDATA;
	rBCDSEC=SECDATA;
	
	rRTCCON = 0x00; //disable RTC write
}

void get_time()
{
	rRTCCON=0x01;
	
	if(rBCDYEAR==0x99)
	year=0x1999;
	else
	year =0x2000+rBCDYEAR;
	mon=rBCDMON;
	//day=rBCDDAY;
	weekday=rBCDDAY;
	dat=rBCDDATE;
	hour=rBCDHOUR;
	mini=rBCDMIN;
	sec=rBCDSEC;
	
	rRTCCON = 0x0; //disable RTC write
}

void __irq Tick_Isr()
{
	get_time();
	Uart_Printf("今天是: %4x-%02x-%02x- %s %02x:%02x:%02x\n",year,mon,dat,date[weekday],hour,mini,sec);
	ClearPending(BIT_TICK);
}
void realtime_start()
{
	pISR_TICK=(unsigned)Tick_Isr;
	rTICNT=0xFF;//Tick time interrupt enable;Tick time count value=127,1s
	EnableIrq(BIT_TICK);//open RTC TICK INTERRUPT
}

void realtime_stop()
{
	rTICNT &= ~(1<<7);
	DisableIrq(BIT_TICK);
}

void alm_stop()
{
	DisableIrq(BIT_RTC);
	rRTCALM=0x00;
}

void __irq alm()
{
	
	ClearPending(BIT_RTC);
	rGPBCON=(rGPBCON|0x03)&0xFFFFFFFD;//GPB0???output
    rGPBUP|=0x01;   //disable GPF pull up
	rGPBDAT=(rGPBDAT&0xFFFFFFFE)|0x01;
	
	ClearPending(BIT_ALLMSK);
	
	Delay(10000);
	//GPB0=1,beep disable
    rGPBCON=(rGPBCON|0x03)&0xFFFFFFFD;//GPB0???output
    rGPBUP|=0x01;   //disable GPF pull up
	rGPBDAT=(rGPBDAT&0xFFFFFFFE)|0x00;
   // CloseAlarm();
	Uart_Printf("s3c244A RTCALM oucer \n");
	//enable_beep=0;
	alm_stop();
}

void alm_start()
{
	pISR_RTC=(unsigned)alm;
	ClearPending(BIT_RTC);
	rRTCALM = (0x7f); //enable alarm
	EnableIrq(BIT_RTC);
}

int Main()
{
	SetClockDivider(1, 1);
	SetSysFclk(DFT_FCLK_VAL);
	Port_Init();
		 
	Uart_Select(0);
	Uart_Init(0, UART_BAUD);
	
	realtime_set(0x08,0x04,0x30,0x1,0x23,0x59,0x55);
	alm_int(0x08,0x05,0x01,0x0,0x0,0x15);
	
	Uart_Printf("The main is begined");
	
	realtime_start();
	alm_start();
	while(1);
}

⌨️ 快捷键说明

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