合泰社区论坛

 找回密码
 立即注册-HOLTEK

QQ登录

只需一步,快速开始

搜索
查看: 8894|回复: 0

合泰单片机驱动DS1302时钟芯片 源代码

[复制链接]

88

主题

170

帖子

3131

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3131
QQ
发表于 2020-7-21 09:31:25 | 显示全部楼层 |阅读模式
合泰开发板

  1. void main()
  2. {
  3.         u8 secbak=0;
  4.         bit workmode=0;
  5.         bit setoption=0;
  6.         bit flash=0;
  7.        
  8.         _wdtc=0xa8;//关闭看门狗
  9.        
  10.         _csel=0;//比较器共用脚C+ 和C-用作io
  11.         _cos=1;//设置pa3管脚为IO,而不是比较器输出
  12.         _acerl=0;//管脚复用功能,不选择为AD
  13.        
  14.         keyinit();
  15.         lcdinit();
  16.         DS1302_init();
  17.         _tbc=0xc4;//时基信号  tbc=fsys/4  溢出周期:t=2^12/tbc=2.048ms
  18.         _tb0e=1;//允许时基中断
  19.         _emi=1;//打开总中断
  20.        

  21.        
  22.        
  23.        
  24.         while(1)
  25.         {
  26.                
  27.                 if(workmode==0)//正常显示模式
  28.                 {
  29.                         DS1302_ReadTime();
  30.                         dispnum(hour*100+min);
  31.                         if(sec!=secbak)
  32.                         {
  33.                                 secbak=sec;
  34.                                 flash=~flash;
  35.                                 dispmark(SECPOINT,flash);               
  36.                         }       
  37.                 }
  38.                 else//设置模式
  39.                 {
  40.                         if(f500ms)
  41.                         {
  42.                                 flash=~flash;       
  43.                                 f500ms=0;
  44.                         }
  45.                         if(setoption==0)
  46.                         {
  47.                                 if(flash)
  48.                                 disphour(hour);       
  49.                                 else
  50.                                 disphour(0xff);       
  51.                         }
  52.                         else
  53.                         {
  54.                                 if(flash)
  55.                                 dispmin(min);       
  56.                                 else
  57.                                 dispmin(0xff);                       
  58.                         }
  59.                        
  60.                        
  61.                        
  62.                 }
  63.                

  64.                 keyscan();
  65.                 if(KeyPress==1)//短按
  66.                 {
  67.                         switch(KeyVal)
  68.                         {
  69.                                 case KEY1://进入&退出设置
  70.                                         workmode=~workmode;
  71.                                         if(workmode==0)
  72.                                         {
  73.                                                 DS1302_WriteTime();       
  74.                                         }
  75.                                 break;       
  76.                                 case KEY2://切换设置项
  77.                                         if(workmode)
  78.                                         {
  79.                                                 setoption=~setoption;
  80.                                         }
  81.                                
  82.                                 break;
  83.                                 case KEY3://+
  84.                                         if(workmode)
  85.                                         {
  86.                                                 if(setoption==0)
  87.                                                 {
  88.                                                         if(++hour>23)hour=0;       
  89.                                                 }
  90.                                                 else
  91.                                                 {
  92.                                                         if(++min>59)min=0;       
  93.                                                 }
  94.                                                
  95.                                         }
  96.                                
  97.                                 break;
  98.                                 case KEY4://-
  99.                                         if(workmode)
  100.                                         {
  101.                                                 if(setoption==0)
  102.                                                 {
  103.                                                         if(--hour==0xff)hour=23;       
  104.                                                 }
  105.                                                 else
  106.                                                 {
  107.                                                         if(--min==0xff)min=59;       
  108.                                                 }
  109.                                                
  110.                                         }
  111.                                 break;
  112.                         }
  113.                        
  114.                         KeyPress=0;
  115.                 }
  116.                
  117.                 delay_ms(10);
  118.         }
  119. }
复制代码




DS1302实时时钟模块.zip (98.47 KB, 下载次数: 29)




上一篇:无线门铃完整方案(源代码、图纸、pcb)
下一篇:BS81x系列程序通信范例 bs8116 bs8112等
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册-HOLTEK

本版积分规则

公告:

Archiver|手机版|黑名单|合泰论坛 合泰在线业务 合泰在线技术

GMT+8, 2024-11-22 01:35 , Processed in 0.123388 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表