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

📄 nju6355.c

📁 TI公司的CCS一些常用的函数库
💻 C
字号:
////////////////////////////////////////////////////////////////////////////
////                              NJU6355.C                             ////
////                     Driver for Real Time Clock                     ////
////                                                                    ////
////  rtc_init()                                   Call after power up  ////
////                                                                    ////
////  rtc_set_datetime(day,mth,year,dow,hour,min)  Set the date/time    ////
////                                                                    ////
////  rtc_get_date(day,mth,year,dow)               Get the date         ////
////                                                                    ////
////  rtc_get_time(hr,min,sec)                     Get the time         ////
////                                                                    ////
////////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services            ////
//// This source code may only be used by licensed users of the CCS C   ////
//// compiler.  This source code may only be distributed to other       ////
//// licensed users of the CCS C compiler.  No other use, reproduction  ////
//// or distribution is permitted without written permission.           ////
//// Derivative programs created using this software in object code     ////
//// form are not restricted in any way.                                ////
////////////////////////////////////////////////////////////////////////////

#ifndef RTC_DATA

#define RTC_DATA  PIN_B0
#define RTC_CLK   PIN_B1
#define RTC_CE    PIN_B2
#define RTC_IO    PIN_B4

#endif


void rtc_init() {
   output_low(RTC_CE);
   output_low(RTC_IO);
}


void write_rtc_byte(BYTE data_byte, BYTE number_of_bits) {
   BYTE i;

   for(i=0; i<number_of_bits; ++i) {
      if((data_byte & 1)==0)
        output_low(RTC_DATA);
      else
        output_high(RTC_DATA);
      data_byte=data_byte>>1;
      output_high(RTC_CLK);
      output_low(RTC_CLK);
   }
}


BYTE read_rtc_byte(BYTE number_of_bits) {
   BYTE i,data;

   for(i=0;i<number_of_bits;++i) {
      output_high(RTC_CLK);
      shift_right(&data,1,input(RTC_DATA));
      output_low(RTC_CLK);
   }
   return(data);
}


void rtc_set_datetime(BYTE day, BYTE mth, BYTE year, BYTE dow,
                      BYTE hour, BYTE min){

   output_low(RTC_CLK);
   output_high(RTC_IO);
   output_high(RTC_CE);
   write_rtc_byte(year,8);
   write_rtc_byte(mth,8);
   write_rtc_byte(day,8);
   write_rtc_byte(dow,4);
   write_rtc_byte(hour,8);
   write_rtc_byte(min,8);
   output_low(RTC_CE);
   output_low(RTC_IO);
}


void rtc_get_date(BYTE& day, BYTE& mth, BYTE& year, BYTE& dow) {
   output_low(RTC_CLK);
   output_low(RTC_IO);
   output_high(RTC_CE);
   year=read_rtc_byte(8);
   mth=read_rtc_byte(8);
   day=read_rtc_byte(8);
   dow=read_rtc_byte(4)>>4;

   read_rtc_byte(8*3);
   output_low(RTC_CE);
   output_low(RTC_IO);
}


void rtc_get_time(BYTE& hr, BYTE& min, BYTE& sec) {
   output_low(RTC_CLK);
   output_low(RTC_IO);
   output_high(RTC_CE);
   read_rtc_byte(8*3+4);
   hr=read_rtc_byte(8);
   min=read_rtc_byte(8);
   sec=read_rtc_byte(8);

   output_low(RTC_CE);
   output_low(RTC_IO);
}

⌨️ 快捷键说明

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