12C887完整时钟
#include
#include
#define uchar unsigned char #define uint unsigned char #define ringtime 60
sbit RS=P2^0;
sbit EN=P2^2;
sbit RW=P2^1;
sbit k1=P2^7;
sbit k2=P2^6;
sbit k3=P2^5;
sbit k4=P2^4;
sbit beep=P3^2;
sbit dsirq=P3^3;
sbit dsds=P3^4;
sbit dsrw=P3^5;
sbit dsas=P3^6;
sbit dscs=P3^7;
uchar words[]=" PLEASE SET RING "; uchar wel1[]="Welcome to Lun's"; uchar wel2[]="time!Happy day! "; uchar miao,fen,sh,day,tian,month,year,flag;
uchar amiao,afen,ash;
uchar k1num,k4num,temp,tpem,tmep,t;
void write_data(uchar);
void write_cmd(uchar); void alarmkeyscan();
//*******************************************************************
//延时函数
//*******************************************************************
void delay(uint z)
{
uint x,y;
for(x=0;x=(amiao+ringtime)%60&&fen>=afen+(amiao+ringtime)/60))
temp=0;
}
void main()
{
init();
while(1)
{
EA=1;
EX1=1;
IT1=1;
if(tmep==0)alarmkeyscan();
if(tpem==0)keyscan();
if(temp==1) bibi();
stop_bibi();
if(flag==0)
{
miao=read_ds(0x00);
sfm(12,miao);
if(miao==0)
{
fen=read_ds(0x02);
sfm(7,fen);
if(fen==0)
{
sh=read_ds(0x04);
sfm(2,sh);beep=1;
if(sh==0)
{
day=read_ds(0x06);week_style(day);
tian=read_ds(0x07);sfm(9-0x40,tian);
if(tian==1)
{month=read_ds(0x08);sfm(6-0x40,month);}
if(month==1)
{year=read_ds(0x09);sfm(3-0x40,year);}
}
}
}
if(miao>=1) beep=0;//整点报时停止,响鸣一秒钟
}
}
}
//********************************************************************
//外部中断1
//********************************************************************
void exter() interrupt 2
{
uchar c;
temp=1;
c=read_ds(0x0c);
}