rtc.c
上传用户:mhstny
上传日期:2022-08-05
资源大小:793k
文件大小:3k
源码类别:

微处理器开发

开发平台:

Unix_Linux

  1. #include "2410lib.h"
  2. #include "2410addr.h"
  3. int year;
  4. int month,date,weekday,hour,min,sec;
  5. char *week[8] = { "","SUN","MON", "TUES", "WED", "THURS","FRI", "SAT" } ;
  6. void __irq RTC_ISR(void);
  7. /********************************************************************
  8. Function name: Rtc_Init
  9. Parameter    : void
  10. Description  : 实时时钟初始化程序
  11. Return  : void
  12. Argument     : 设置当前时钟
  13. Autor & date :
  14. *********************************************************************/
  15. void Rtc_Init(void)
  16. {
  17.      rRTCCON  = 0x01;          //RTC读写使能,选择BCD时钟、计数器,无复位,1/32768
  18.      
  19.      rBCDYEAR = 0x06 ;     //设定年--06
  20.      rBCDMON  = 0x04 ;     //设定月--04
  21.      rBCDDATE = 0x04 ;     //设定日--04
  22.      rBCDDAY  = 0x2  ;     //设定星期--TUES
  23.      rBCDHOUR = 0x05 ;     //设定小时--05
  24.      rBCDMIN  = 0x12 ;     //设定分钟--12
  25.      rBCDSEC  = 0x12 ;     //设定秒--11
  26.      
  27.      rRTCCON = 0x0;             //RTC读写禁止,选择BCD时钟、计数器,无复位,1/32768
  28. }
  29. /********************************************************************
  30. Function name: Display_Rtc
  31. Parameter    : void
  32. Description  : 实时时钟显示程序
  33. Return  : void
  34. Argument     : 读出当前的时间,然后显示
  35. Autor & date :
  36. *********************************************************************/
  37. void Get_Rtc(void)
  38. {
  39.         rRTCCON = 0x01; //RTC读写使能,选择BCD时钟、计数器,无复位,1/32768
  40.     if (rBCDYEAR == 0x99)    
  41.     year = 0x1999;
  42.     else    
  43.     year = 0x2000 + rBCDYEAR;
  44.     month=rBCDMON;
  45.     date=rBCDDATE;
  46.     weekday=rBCDDAY;
  47.     hour=rBCDHOUR;
  48.     min=rBCDMIN;
  49.     sec=rBCDSEC;
  50.    
  51.         rRTCCON = 0x0;    //RTC读写禁止,选择BCD时钟、计数器,无复位,1/32768
  52. }
  53. /***************************************************************************
  54. Function name: Main
  55. Parameter    : void
  56. Description  : 初始化系统,串口,并调用RTC实验函数
  57. Return      : void
  58. Argument     : 
  59. Autor & date :
  60. ****************************************************************************/
  61. void xmain(void)
  62. {
  63.     ChangeClockDivider(1,1);
  64.     ChangeMPllValue(0xa1,0x3,0x1);   
  65.     Port_Init();
  66.     Uart_Select(0);
  67.     Uart_Init(0,115200);
  68. Uart_Printf("s3c2410x RTC Testn");
  69. Rtc_Init(); //实时时钟初始化
  70. pISR_TICK=(unsigned)RTC_ISR;
  71. EnableIrq(BIT_TICK);//open RTC TICK INTERRUPT
  72.     rTICNT=0xFF;//Tick time interrupt enable;Tick time count value=127
  73. while(1);
  74. }
  75. /*************************************************************************/
  76. void __irq RTC_ISR(void)
  77. {
  78. Get_Rtc();
  79. Uart_Printf("RTC TIME : %4x-%02x-%02x - %s - %02x:%02x:%02xn",year,month,date,week[weekday],hour,min,sec);
  80. ClearPending(BIT_TICK);
  81. }