该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谁可以帮忙在这个程序里加个闹钟程序
刚学不懂 顺便讲解一下 谢了
#include
#include
unsigned char code digit[10]={"0123456789"};
sbit DATA=P1^1;
sbit RST=P1^2;
sbit SCLK=P1^0;
void delaynus(unsigned char n)
{
unsigned char i;
for(i=0;i
}
void Write1302(unsigned char dat)
{
unsigned char i;
SCLK=0;
delaynus(2);
for(i=0;i<8;i++)
{
DATA=dat&0x01;
delaynus(2);
SCLK=1;
delaynus(2);
SCLK=0;
dat>>=1;
}
}
void WriteSet1302(unsigned char Cmd,unsigned char dat)
{
RST=0;
SCLK=0;
RST=1;
delaynus(2);
Write1302(Cmd);
Write1302(dat);
SCLK=1;
RST=0;
}
unsigned char Read1302(void)
{
unsigned char i,dat;
delaynus(2);
for(i=0;i<8;i++)
{
dat>>=1;
if(DATA==1)
dat|=0x80;
SCLK=1;
delaynus(2);
SCLK=0;
delaynus(2);
}
return dat;
}
unsigned char ReadSet1302(unsigned char Cmd)
{
unsigned char dat;
RST=0;
SCLK=0;
RST=1;
Write1302(Cmd);
dat=Read1302();
SCLK=1;
RST=0;
return dat;
}
void Init_DS1302 (void)
{
WriteSet1302(0x8e,0x00);
WriteSet1302(0x80,((0/10)<<4|(0%10)));
WriteSet1302(0x82,((10/10)<<4|(10%10)));
WriteSet1302(0x84,((9/10)<<4|(9%10)));
WriteSet1302(0x86,((29/10)<<4|(29%10)));
WriteSet1302(0x88,((12/10)<<4|(12%10)));
WriteSet1302(0x8c,((9/10)<<4|(9%10)));
}
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit BF=P0^7;
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++);
}
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i
delay1ms();
}
bit BusyTest(void)
{
bit result;
RS=0;
RW=1;
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=BF;
E=0;
return result;
}
void WriteInstruction(unsigned char dictate)
{
while(BusyTest()==1);
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
P0=dictate;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
void WriteAddress(unsigned char x)
{
WriteInstruction(x|0x80);
}
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1;
RW=0;
E=0;
P0=y;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
void LcdInitiate(void)
{
delaynms(15);
WriteInstruction(0x38);
delaynms(5);