⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.lst

📁 STC51系列单片机学习板演示程序(汇编语言) 有详细注释 适合初学单片机的朋友
💻 LST
📖 第 1 页 / 共 2 页
字号:
 186   1              static unsigned char a=0;
 187   1              static unsigned char b=0;
 188   1              static unsigned char c=0;
 189   1              
 190   1              /*判断数码管动态扫描值*/
 191   1              switch(a)
 192   1              {
 193   2              case 0:/*处理数码管第一位*/
 194   2                      LED7D_STATUS=1;/*设置数码管第四位为无效*/
 195   2                      LED7A_STATUS=0;/*设置数码管第一位位有效*/
 196   2                      break; 
 197   2      
 198   2              case 1:/*处理数码管第二位*/
 199   2                      LED7A_STATUS=1;/*设置数码管第一位为无效*/
 200   2                      LED7B_STATUS=0;/*设置数码管第二位位有效*/
 201   2                      break; 
 202   2      
 203   2              case 2:/*处理数码管第三位*/
 204   2                      LED7B_STATUS=1;/*设置数码管第二位为无效*/
 205   2                      LED7C_STATUS=0;/*设置数码管第三位位有效*/
 206   2                      break; 
 207   2      
 208   2              case 3:/*处理数码管第四位*/
 209   2                      LED7C_STATUS=1;/*设置数码管第三位为无效*/
 210   2                      LED7D_STATUS=0;/*设置数码管第四位位有效*/
 211   2                      break; 
 212   2              }
 213   1              
 214   1              LED7_STATUS=m_ucLedTab[m_ucLedBuf[a]];/*将显示码送数码管状态引脚*/      
 215   1      
 216   1              /*0.5秒改变一次数码管上两点显示状态*/
 217   1              b++;
 218   1              if(b>100)
 219   1              {
 220   2                      c=1-c;
 221   2                      b=0;
 222   2              }
 223   1              P0_7=c;
 224   1              
 225   1              a++;/*数码管动态扫描值加1,若该值4则置为0*/
 226   1              if(a>3)
 227   1                      a=0;
 228   1      
 229   1      }
 230          
 231          /*****************************************************************************
 232          名称: Ds1302WriteChar
 233          说明: DS1302写字节
 234          参数: unsigned char ucData 数据
 235          返回: 无
 236          *****************************************************************************/
 237          void Ds1302WriteChar(unsigned char ucData) 
 238          { 
 239   1          unsigned char a;
 240   1      
 241   1          ACC=ucData;
C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 5   

 242   1          for(a=8;a>0;a--)
 243   1          {
 244   2              DS1302_PIN_IO=ACC0;         
 245   2                      DS1302_PIN_CLK=1;
 246   2              DS1302_PIN_CLK=0;
 247   2              ACC=ACC>>1; 
 248   2          } 
 249   1      }
 250          
 251          /*****************************************************************************
 252          名称: Ds1302ReadChar
 253          说明: DS1302读字节
 254          参数: 无
 255          返回: unsigned char 返回数据
 256          *****************************************************************************/
 257          unsigned char Ds1302ReadChar(void) 
 258          { 
 259   1          unsigned char a;
 260   1      
 261   1          for(a=8;a>0;a--)
 262   1          {
 263   2              ACC=ACC>>1;        
 264   2              ACC7=DS1302_PIN_IO;
 265   2                      DS1302_PIN_CLK=1;
 266   2              DS1302_PIN_CLK=0;
 267   2          } 
 268   1      
 269   1          return ACC; 
 270   1      }
 271          
 272          /*****************************************************************************
 273          名称: Ds1302Write
 274          说明: DS1302写操作
 275          参数: unsigned char ucAddr 地址,unsigned char ucData 数据
 276          返回: 无
 277          *****************************************************************************/
 278          void Ds1302Write(unsigned char ucAddr, unsigned char ucData)
 279          {
 280   1          DS1302_PIN_RST = 0;
 281   1          DS1302_PIN_CLK = 0;
 282   1              DS1302_PIN_RST = 1;
 283   1          Ds1302WriteChar(ucAddr);     
 284   1          Ds1302WriteChar(ucData);       
 285   1          DS1302_PIN_CLK = 1;
 286   1              DS1302_PIN_RST = 0;
 287   1      } 
 288          
 289          /*****************************************************************************
 290          名称: Ds1302Read
 291          说明: DS1302读操作
 292          参数: unsigned char ucAddr 地址
 293          返回: unsigned char 返回数据
 294          *****************************************************************************/
 295          unsigned char Ds1302Read(unsigned char ucAddr)
 296          {
 297   1          unsigned char ucData;
 298   1         
 299   1          DS1302_PIN_RST = 0;
 300   1          DS1302_PIN_CLK = 0;
 301   1          DS1302_PIN_RST = 1;
 302   1          Ds1302WriteChar(ucAddr);           
 303   1          ucData = Ds1302ReadChar();        
C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 6   

 304   1          DS1302_PIN_CLK = 1;
 305   1              DS1302_PIN_RST = 0;
 306   1         
 307   1          return(ucData);
 308   1      }
 309          
 310          /*****************************************************************************
 311          名称: Ds1302Set
 312          说明: 设置DS1302时间参数
 313          参数: unsigned char *pucData 时间参数
 314                    pucData[0]: 秒
 315                    pucData[1]: 分
 316                    pucData[2]: 时
 317                    pucData[3]: 日
 318                    pucData[4]: 月
 319                    pucData[5]: 星期
 320                    pucData[6]: 年
 321          返回: 无
 322          *****************************************************************************/
 323          void Ds1302Set(unsigned char *pucData) 
 324          {
 325   1          unsigned char a;
 326   1          unsigned char ucAddr=0x80; 
 327   1         
 328   1          Ds1302Write(0x8e,0x00);           
 329   1          for(a=7;a>0;a--)
 330   1          { 
 331   2              Ds1302Write(ucAddr,*pucData);  
 332   2              pucData++;
 333   2              ucAddr+=2;
 334   2          }
 335   1          Ds1302Write(0x8e,0x80);           
 336   1      }
 337          
 338          /*****************************************************************************
 339          名称: Ds1302Set
 340          说明: 设置DS1302时间参数
 341          参数: unsigned char *pucData 返回时间参数
 342                    pucData[0]: 秒
 343                    pucData[1]: 分
 344                    pucData[2]: 时
 345                    pucData[3]: 日
 346                    pucData[4]: 月
 347                    pucData[5]: 星期
 348                    pucData[6]: 年
 349          返回: 无
 350          *****************************************************************************/
 351          void Ds1302Get(unsigned char *pucData)
 352          {
 353   1          unsigned char a;
 354   1          unsigned char ucAddr=0x81;
 355   1         
 356   1          for (a=7;a>0;a--)
 357   1          {
 358   2              pucData[7-a]=Ds1302Read(ucAddr);
 359   2              ucAddr+=2;
 360   2          }
 361   1      }
 362          
 363                                                     


C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 7   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    371    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -