久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3550|回復: 0
打印 上一主題 下一主題
收起左側

急···求各路高手

[復制鏈接]
跳轉到指定樓層
樓主
ID:34387 發表于 2012-4-10 14:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

請幫忙用c編個程序,謝謝.......DS1302

please help debug

 

 

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit sclk=P1^0;//1302
sbit io=P1^1;//1302
sbit rst=P2^0;//1302
sbit lcden=P3^4;//1602
sbit lcdrs=P3^5;//1602
sbit lcdwr=P2^7;//1602
sbit led=P2^6;//????êy??1ü1???μ?£???è???μ??éóD?é?T£??÷òaê?ê?μ?£?è?1?òo?§áá?è2?1?£??éò?????ò????£áíía?1óDá÷??μ?μ?ò2?éò?????1?μ?p14
sbit set=P3^2;//éè???ü?¨ò?,°′??oóòà′?éè?¨?ê??è? D?ê±·???μè
sbit addkey=P3^6;//éè?¨ê±??ê±?óêy?Y
sbit deckey=P3^7;//éè?¨ê±??ê±??êy?Y
uchar flag,add,dec,check;
uchar sec,min,hr,day,mon,yr,week;
uchar code table[]="SUNMONTUEWEDTHUFRISAT";//D??ú??ê?μ?×?·?′?
uchar code table2[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0-9??ó|μ?ASII??
/********************************************************************************************************************/
//ò????a1302μ??ù±?2ù×÷
void delayus()//4usμ??óê±£?ò???nopê?1us
{
 _nop_();
 _nop_();
 _nop_();
 _nop_();

void write(uchar dat)//ò???×??úμ?êy?Y
{
 uchar i;
 sclk=0;
 delayus();
 for(i=0;i<8;i++)
 {
  dat=dat>>1;//ò?????′??÷2?1ü×óò??ò??óòò?£?±?ò?3?????′?è?ò?3???CY;
  io=CY;
  delayus();
  sclk=1;
  delayus();
  sclk=0;
  delayus(); 
 } 
}

uchar read()//?áò???×??úμ?êy?Y
{
 uchar i,dat=0;
 for(i=0;i<8;i++)
 {
  sclk=1;
  delayus();
  sclk=0;
  delayus();
  dat=_cror_(dat,1)|io;//′?′|2éó?μ?ê??­?·óòò???á?£?°?êy?Y?á3? 
 }
 return dat;
}
uchar read1302(uchar cmd)//′ó1302μ?ì??¨????cmd?á3?êy?μ
{
 uchar dat;
 rst=1;
 write(cmd);
 dat=read();
 rst=0;
 return dat; 
}
void write1302(uchar cmd,uchar dat)//°?êy?YdatD′μ?1302μ?cmd??ó|????
{
 rst=0;
 sclk=0;
 rst=1;
 write(cmd);
 write(dat);
}
/****************************************************************************/
void set1302()//1302éè??£?°?éè?¨o?μ?ê±??D′è?1302
{
 uchar shi,ge;
 write1302(0x8E,0x00); //?ù?YD′×′ì???′??÷?üá?×?£?D′è?2?±£?¤??á?  
 shi=sec/10;
 ge=sec%10;
 sec=(shi<<4)|ge;               
    write1302(0x80,sec);   //?ù?YD′????′??÷?üá?×?£?D′è???μ?3?ê??μ
 shi=min/10;
 ge=min%10;
 min=(shi<<4)|ge;
 write1302(0x82,min);   //?ù?YD′·???′??÷?üá?×?£?D′è?·?μ?3?ê??μ
 shi=hr/10;
 ge=hr%10;
 hr=(shi<<4)|ge;
 write1302(0x84,hr); //?ù?YD′D?ê±??′??÷?üá?×?£?D′è?D?ê±μ?3?ê??μ
 shi=day/10;
 ge=day%10;
 day=(shi<<4)|ge;
 write1302(0x86,day); //?ù?YD′è???′??÷?üá?×?£?D′è?è?μ?3?ê??μ 
 shi=mon/10;
 ge=mon%10;
 mon=(shi<<4)|ge;
 write1302(0x88,mon); //?ù?YD′????′??÷?üá?×?£?D′è???μ?3?ê??μ
 shi=yr/10;
 ge=yr%10;
 yr=(shi<<4)|ge;
 write1302(0x8c,yr);   //?ù?YD′?ê??′??÷?üá?×?£?D′è??êμ?3?ê??μ
 write1302(0x8f,0x00);
}
void readtime()//′ó1302?D?áè?ê±??2¢??D??ú??DD????
{
 uchar shi,ge;
 sec=read1302(0x81);
  shi=(sec&0xf0)>>4;
  ge=sec&0x0f;
  sec=10*shi+ge;
 min=read1302(0x83);
  shi=(min&0xf0)>>4;
  ge=min&0x0f;
  min=10*shi+ge; 
 hr=read1302(0x85);
  shi=(hr&0xf0)>>4;
  ge=hr&0x0f;
  hr=10*shi+ge; 
 day=read1302(0x87);
  shi=(day&0xf0)>>4;
  ge=day&0x0f;
  day=10*shi+ge; 
 mon=read1302(0x89);
  shi=(mon&0xf0)>>4;
  ge=mon&0x0f;
  mon=10*shi+ge; 
 yr=read1302(0x8d);
  shi=(yr&0xf0)>>4;
  ge=yr&0x0f;
  yr=10*shi+ge;
 if(day!=check)//????D??ú?μ
 {
  week++;
  if(week>6)week=0;
  check=day;
 }   
}
/****************************************************************************************************/
/*ò???ê?1602μ??ù±?2ù×÷*/
void delay(uint z)//1mS?óê±×ó3ìDò
{
 uint a,b;
 for(a=z;a>0;a--)
  for(b=110;b>0;b--);
}
void write_com(uchar com)//D′????×?LCD
{
 lcdrs=0;//????×?
 P0=com;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}
void write_data(uchar date)//D′êy?YLCD
{
 lcdrs=1;//êy?Y
 P0=date;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}
void write_week(uchar i)//??ê?D??úμ?oˉêy
{
 write_data(table[3*i]);
 write_data(table[3*i+1]);
 write_data(table[3*i+2]);
}
void write_time(uchar time)//??ê?2??êyê±??£??ê??è??ùê?2??êyμ???ê?
{
 uchar shi,ge;
 shi=time/10;
 ge=time%10;
 write_data(table2[shi]);
 write_data(table2[ge]); 
}
void display()//??ê??ê??è??°D??úμè
{
 write_com(0x80);
 write_time(yr);
 write_data('-');
 write_time(mon);
 write_data('-');
 write_time(day);
 write_data(' ');
 write_data(' ');
 write_week(week);
 write_com(0x80+0x40);
 write_time(hr);
 write_data(':');
 write_time(min);
 write_data(':');
 write_time(sec);
 write_data(' ');
 write_data(' ');
 write_data('C');
 write_data('h');
 write_data('e');
 write_data('n');
 write_data('g');
}
void initlcd()//LCD??ê?3?ê??ˉ?£
{
 led=0;
 lcdwr=0;
 lcden=0;
 write_com(0x38);//°′??1602μ?éè?¨?3Dòòà′???DDéè?¨?¢
 write_com(0x0c);//2???ê?1a±êoíéá??
 write_com(0x06);//??D′ò???×?·?£?1a±ê+1
 write_com(0x01);//???á
}
/************************************************************************************/
//ò???ê??ü?ì????2?·?
void keyscan()//?ü?ìé¨?è3ìDò£??′°′??μ?ê??????ü
{
 if(set==0)
 {
  delay(30);
  if(set==0)
  {
   while(!set);
   delay(30);
   while(!set);
   flag=1;
  }
 }
 if(addkey==0)
 {

  delay(30);
  if(addkey==0)
  {
   while(!addkey);
   delay(30);
   while(!addkey);
   add=1;
  }
 } 
 if(deckey==0)
 {
  delay(30);
  if(deckey==0)
  {
   while(!deckey);
   delay(30);
   while(!deckey);
   dec=1;
  }
 }  
}
void timeset()//ê±??éè?¨oˉêy£?òà′?éè???ê£???£?è?£¨D??ú£?£?D?ê±£?·???
{
  if(flag==1)
  { 
   flag=0;
   write_com(0x0f);//?a??1a±êéá??
   write_com(0x80);//éè???êμ??eê?×?±ê
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)
   {
    keyscan();
    if(add==1)
    {
     add=0;
     yr++;
     write_time(yr);
    }
    if(dec==1)
    {
     dec=0;
     yr--;
     write_time(yr);    
    }
    write_com(0x80);//?ê1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   write_com(0x80+3);//éè????×?±ê?eê???
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)//è?1?óD?aê??D??°′?ü£?
   {
    keyscan();
    if(add==1)
    {
     add=0;
     mon++;
     if(mon>12)mon=1;
     write_time(mon);
    }
    if(dec==1)
    {
     dec=0;
     mon--;
     if(mon>12)mon=1;
     write_time(mon);   
    }
    write_com(0x80+3);//??1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   write_com(0x80+6);//éè??ìì×?±ê?eê???
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)//è?1?óD?aê??D??°′?ü£?
   {
    keyscan();
    if(add==1)
    {
     add=0;
     day++;
     if(day==29)
     {
      if((mon==2)&&(yr%4!=0))day=1;
     }
     if(day==30)
     {
      if((mon==2)&&(yr%4==0))day=1;
     }
     if(day==31)
     {
      if((mon==4)||(mon==6)||(mon==9)||(mon==11))day=1;
     }
     if(day>31)day=0;
     write_time(day);
    }
    if(dec==1)
    {
     dec=0;
     day--;
     if(day==0)
     {
      if((mon==2)&&(yr%4!=0))day=28;
      if((mon==2)&&(yr%4==0))day=29;
      if((mon==4)||(mon==6)||(mon==9)||(mon==11))day=30;
      if((mon==1)||(mon==3)||(mon==5)||(mon==7)||(mon==8)||(mon==10)||(mon==12))day=31;
     }
     write_time(day);
     check=day;
    }
    write_com(0x80+6);//ìì1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   write_com(0x80+10);//éè??D?ê±×?±ê?eê???
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)
   {
    keyscan();
    if(add==1)
    {
     add=0;
     week++;
     if(week>6)week=0;
     write_week(week);
    }
    if(dec==1)
    {
     dec=0;
     week--;
     if(week>6)week=6;
     write_week(week);
    }
    write_com(0x80+10);//D?ê±1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   write_com(0x80+0x40);//éè??D?ê±×?±ê?eê???
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)
   {
    keyscan();
    if(add==1)
    {
     add=0;
     hr++;
     if(hr>23)hr=0;
     write_time(hr);
    }
    if(dec==1)
    {
     dec=0;
     hr--;
     if(hr>23)hr=23;
     write_time(hr);
    }
    write_com(0x80+0x40);//D?ê±1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   write_com(0x80+0x40+3);//éè??·??ó×?±ê?eê???
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)//è?1?óD?aê??D??°′?ü£?
   {
    keyscan();
    if(add==1)
    {
     add=0;
     min++;
     if(min>59)min=0;
     write_time(min);
    }
    if(dec==1)
    {
     dec=0;
     min--;
     if(min>59)min=59;
     write_time(min);
    }
    write_com(0x80+0x40+3);//D?ê±1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   write_com(0x80+0x40+6);//éè??·??ó×?±ê?eê???
   while(!flag&&!add&&!dec)keyscan();//é¨?è?ü?ì£??′ê?·?óD°′?ü°′??
   while(!flag)//è?1?óD?aê??D??°′?ü£?
   {
    keyscan();
    if(add==1)
    {
     add=0;
     sec++;
     if(sec>59)sec=0;
     write_time(sec);
    }
    if(dec==1)
    {
     dec=0;
     sec--;
     if(sec>59)sec=59;
     write_time(sec);
    }
    write_com(0x80+0x40+6);//D?ê±1a±êéè??1é??£?μè′y??ò?′?μ?éè?¨
   }
   flag=0;
   set1302();
   write_com(0x0c); 
  } 
}
/**********************************************************************/
//?÷3ìDò
void main()
{
 while(set==0)//?aà?ê????μí3?í3?ê??μμ?£?ê1ó?μ?·?·¨ê???μ???oó£?°′×?set?ü£?è?oóé?μ?£?set?ü°′×?1~3s,?é?a?′éè??íê3é
 { 
  sec=11;min=20;hr=13;day=29;mon=2;yr=12;week=3;//3?ê??μéè?¨£??aà?òa×¢òa£?D??úμ?éè?¨±?D??yè·£?2?è?oóD?μ?×?ê±?á3?′í?£
  set1302();
  initlcd();
  readtime();
  display(); 
 }
 write1302(0x8f,0x00);//?áè?êy?Yê±£?±?D?°?1302éè???a′?×′ì?£??áêy?Yμ?D′±£?¤′ò?a
 initlcd(); 
 while(1)
 {
  keyscan();//?ü?ìé¨?è
  timeset();//è?1?éè???ü°′???íéè?¨ê±??£?·??ò?ííù???′DD
  readtime();
  display(); 
 }
}

clock_ok.txt (10.03 KB, 下載次數: 4)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区三区中文字幕 | 中文字幕蜜臀av | 免费的日批视频 | 日本免费一区二区三区四区 | 国内精品99 | 成人精品鲁一区一区二区 | 欧美日韩一区二区三区四区五区 | 午夜男人天堂 | jizz中国日本 | 日韩欧美国产成人一区二区 | 亚洲精品视频播放 | 综合久| 天天操天天射天天 | av中文字幕在线 | 日韩国产中文字幕 | 国产精品美女久久久久 | 国产一区不卡 | 久久亚洲精品国产精品紫薇 | 日韩一区二区在线视频 | 亚洲综合色自拍一区 | www.av7788.com| 色免费在线视频 | 欧美综合国产精品久久丁香 | 久久i | 亚洲视频精品 | 国产日韩精品一区 | 在线欧美小视频 | 日本a在线| 亚洲美女视频 | 做a网站 | 91精品欧美久久久久久久 | 91高清在线观看 | 欧美精品v | 日韩欧美中文字幕在线观看 | 一色桃子av一区二区 | 91九色视频| 国产一区二区三区四区 | 观看毛片 | 成人不卡视频 | 久久久精品网 | 国产成人一区二区 |