📄 c51ds12887.c
字号:
}
}
if(temp1 == 10)
{
temp1 = 0 ;
}
*newaddr = temp1*10 + temp2 ;
blinkfun() ;
}
else /* flag 为低位时,修改对应的时间低位*/
{
temp2 = *newaddr%10 ;
temp1 = *newaddr/10 ;
if(newaddr!= 0x00) temp2++ ;
else
{
stop_calendar() ;
temp2++ ;
}
if(temp2 == 10) temp2 = 0 ;
*newaddr = temp1*10 + temp2 ;
blinkfun() ;
}
key2 = 0 ;
}
if(key4) /*实现“-”功能*/
{
if(flag%2 == 0)
{
temp2 = *newaddr%10 ;
temp1 = *newaddr/10 ;
if(temp1)
{
if(newaddr!=0x06)
{
if(newaddr!=0x00)
{
temp1-- ;
}
else
{
stop_calendar();
temp1-- ;
}
}
}
else
{
temp1=9 ;
}
*newaddr = temp1*10 + temp2 ;
blinkfun() ;
}
else
{
temp2 = *newaddr%10 ;
temp1 = *newaddr/10 ;
if(temp2)
{
if(newaddr!= 0x00) temp2-- ;
else
{
stop_calendar();
temp2-- ;
}
}
else
{
temp2 = 9 ;
}
*newaddr = temp1*10 + temp2;
blinkfun() ;
}
key4 = 0 ;
}
}
}
/*************************************************************/
/* 定时器0中断,去抖动,判断键 */
/************************************************************/
void timer0(void) interrupt 1
{
TL0 = 0x4c ;
TH0 = 0x00 ;
TMOD = 0x01 ;
P1 = 0x0f ;
orignalNumber = P1&0x0f ;
DelayT(200) ;
nowNumber = P1&0x0f ;
if(orignalNumber == nowNumber)
{
key = P1&0x0f ;
}
switch(key)
{
case 0x0e : //修改键
{
key1 = 1 ;
key = 0x0f ;
break ;
}
case 0x0d : //确定键
{
key3 = 1 ;
key = 0x0f ;
break ;
}
case 0x0b : //加号键
{
key2 = 1 ;
key = 0x0f ;
break ;
}
case 0x07 : //减号键
{
key4 = 1 ;
key = 0x0f ;
break ;
}
}
}
/**************************************************************/
/* 定时器1中断 使得相应LED灯闪烁*/
/***************************************************************/
void timer1(void) interrupt 3
{
TH1 = 0x00 ;
TL1 = 0x00 ;
TMOD = 0x10 ;
cnt-- ;
if(cnt==0&&tag1)
{
cnt = 40 ;
blinkfun() ;
}
if(key3)
{
Start_calendar() ;
}
if(key2)
{
write_calendar(newaddr) ;
tag1 = 0 ;
}
if(key4)
{
write_calendar(newaddr) ;
tag1 = 0 ;
}
}
/*********************************************************/
/*时间显示函数*/
/********************************************************/
void LEDdisplay(uchar display[])
{
uchar i ;
for(i = 0;i< 7;i++)
{
if(i == 0)
{
SBUF = 0x16 ;
while(!TI)
{
}
TI = 0 ;
SBUF = 0x05 ;
while(!TI)
{
}
TI = 0 ;
}
if(i!= 3)
{
SBUF = DispCode[display[i]/10] ;
while(!TI)
{
}
TI = 0 ;
}
SBUF = DispCode[display[i]%10] ;
while(!TI)
{
}
TI = 0 ;
}
DelayT(0xffff) ;
}
/**************************************************************/
/* 主程序 */
/**************************************************************/
void main()
{
uchar display[7] ;
TR0 = 1 ;
ET0 = 1 ;
EA = 1 ;
ET1 = 1 ;
TR1=1 ;
chRegA = 0x0a ; /*寄存器A的地址*/
chRegB = 0x0b ; /*寄存器B的地址*/
chRegC = 0x0c ; /*寄存器C的地址*/
chRegD = 0x0d ; /*寄存器D的地址*/
SCON = 0 ;
TI = 0 ;
newaddr = 0x0a ;
set_calendar() ;
initatat() ;
while(1)
{
read_calendar(display) ;
LEDdisplay(display) ;
if(flag == 13&&key1)
{
if((newaddr == 0x00)&&(flag%2!= 0))
{
newaddr = 0x0a ;
}
flag = -1 ;
}
if(key1)
{
key1 = 0 ;
flag++ ;
tag1 = 1 ;
if(flag%2==0) /* 光标移动是偶数时才修改地址,
因为对应的时间被分割为高低位*/
{
if((newaddr>0x06)&&(newaddr<=0x0a))
{
newaddr-- ;
}
else if((newaddr>0x00)&&(newaddr<=0x06))
{
newaddr = newaddr-2 ;
}
else
{
newaddr = 0x00 ;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -