📄 rtc935a.c
字号:
/*****************************************************************************
*文件名: Timer.C
*版权:
*功能:
*日期:
*****************************************************************************/
#include <Reg935.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
sbit LED_red = P1^7 ;
sbit LED_green = P1^6 ;
sbit KEY1 = P0^0 ;
sbit KEY2 = P0^5 ;
////////////////////////////////////////////////////////////////////////////////
uchar Time_M; //系统运行时的时间参数(分)
uchar Time_S; //系统运行时的时间参数(秒)
uchar Load_M;
uchar Load_S;
////////////////////////////////////////////////////////////////////////////////
// void SendData(uchar c);
// void Save_time();
// void Load_time(uint addr);
void Inc_time();
void RTC_Init();
void Delayms(uchar n);
//-----------------------------------------------------------------------------
//功能:RTC中断服务程序
//-----------------------------------------------------------------------------
void RTC_ISR() interrupt 10
{
EA=0;
RTCCON&=0x63; //清除RTC中断标志位
Inc_time();
/* Load_time(0x03F0);
if(Load_M==Time_M) //发送显示信号,并控制外围器件
{
HexToBCD(Time_M);
Time_M=0;
CONTROL=~CONTROL; //控制外部继电器开关
}
else
{
HexToBCD(Time_M); //显示当前分钟值
}*/
EA=1;
}
//------------------------------
void main()
{
uchar Flag1=0;
uchar Flag2=0;
uint Count=0;
RTC_Init(); //RTC初始化
while(1)
{Delayms(1);
}
}
//------------------------------
//功能:模拟时钟变化,
//Time_S为秒,Time_M为分
//------------------------------
void Inc_time()
{
Time_S++;
if(Time_S>59)
{
Time_S=0;
Time_M++;
if(Time_M>59)
{
Time_M=0;
}
}
}
//------------------------------
//功能:RTC初始化
//------------------------------
void RTC_Init()
{
P0M1=0x00;
P0M2=0x00;
P1M1=0x00;
P1M2=0x00;
P2M1=0x00;
P2M2=0x00; //端口均初始化为准双向
Time_S=0;
Time_M=0; //Time_M,Time_S初始化为0
IEN0=0xC0; //使能RTC中断,使能EA中断
WDCON=0xE0; //关闭看门狗中断
RTCH=0xE0;
RTCL=0xFF; //7.3728MHz下,1s中断1次时,RTC的定时值
RTCCON=0x03; //开启RTC模块
}
//------------------------------
//功能:ms级别延时(7.373Mhz)
//入口参数:uchar n
//------------------------------
void Delayms(uchar n)
{
int j;
while(n>0)
{
for(j=0;j<=669;j++);
n--;
}
}
//------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -