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

📄 yj1302a.lst

📁 自己写的DS1302 的代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.23a  YJ1302A                                                               07/27/2008 09:06:24 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE YJ1302A
OBJECT MODULE PLACED IN F:\设计\编译通~1\DS1302\YJ1302A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\设计\编译通~1\DS1302\YJ1302A.C DB SB OE

stmt level    source

   1          //lcd显示用的
   2          #include<reg51.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          sbit t_clk=P1^2;
   6          sbit t_io=P1^3;
   7          sbit t_rst=P1^4;
   8          sbit BIT0=ACC^0;
   9          sbit BIT7=ACC^7;
  10          uchar time1[7];
  11          void inputbyte(uchar shuju);
  12          
  13          
  14          //-------------------------液晶部分
  15          sbit RS=P3^0;
  16          sbit RW=P3^2;
  17          sbit EN=P3^4;
  18          
  19          uchar count,shi,fen,miao;
  20          
  21          uchar code table[]="2008 12 31week1 ";
  22          uchar code table1[]="  23:59:45     ";
  23          
  24          void delay(uint z)
  25          
  26            {
  27   1              uint x,y;
  28   1           for(x=z;x>0;x--)
  29   1             for(y=120;y>0;y--);
  30   1        }
  31          
  32            void write_com(uchar com)
  33             {
  34   1           EN=0;
  35   1           RS=0;
  36   1           RW=0;
  37   1           P0=com;
  38   1           delay(5);
  39   1           EN=1;
  40   1           delay(5);
  41   1           EN=0;
  42   1          }
  43           void write_data(uchar date)
  44             {
  45   1           EN=0;
  46   1           RS=1;
  47   1           RW=0;
  48   1           P0=date;
  49   1           delay(5);
  50   1           EN=1;
  51   1           delay(5);
  52   1           EN=0;
  53   1         }
  54          
  55          
C51 COMPILER V6.23a  YJ1302A                                                               07/27/2008 09:06:24 PAGE 2   

  56             void init()
  57             {
  58   1           uchar num;
  59   1           EN=0;
  60   1               write_com(0x38);
  61   1               write_com(0x0c);  //开显示
  62   1               write_com(0x06);
  63   1               write_com(0x01);  //清零
  64   1      
  65   1           write_com(0x80);   //给地址
  66   1               for(num=0;num<16;num++)
  67   1            {
  68   2                 write_data(table[num]);
  69   2                  delay(5);
  70   2             }
  71   1               write_com(0x80+0x40);//换行给地址
  72   1               for(num=0;num<16;num++)
  73   1            {
  74   2                 write_data(table1[num]);
  75   2                   delay(5);
  76   2            }
  77   1         }
  78          
  79          
  80               void write_sfm(uchar addr, uchar dat)
  81             {
  82   1              uchar sh,ge;
  83   1                      sh=dat/16;
  84   1                      ge=dat%16;
  85   1              write_com(0x80+0x40+addr);
  86   1                 write_data(0x30+sh);
  87   1                 write_data(0x30+ge);
  88   1         }
  89                void write1_sfm(uchar addr, uchar dat)
  90             {
  91   1              uchar sh,ge;
  92   1                      sh=dat/16;
  93   1                      ge=dat%16;
  94   1              write_com(0x80+addr);
  95   1                 write_data(0x30+sh);
  96   1                 write_data(0x30+ge);
  97   1         }
  98          //-----------------------------
  99          
 100          
 101          
 102          void inputbyte(uchar shuju)//对ds1302输入操作
 103          {
 104   1       uchar i;
 105   1       ACC=shuju;
 106   1       t_rst=1;//启动对1302允许传送
 107   1       for(i=8;i>0;i--)
 108   1         {
 109   2           t_io=BIT0;//准备送最低位数据
 110   2           t_clk=0;
 111   2           t_clk=1;//产生一个上升沿,写人数据
 112   2           ACC=ACC>>1;
 113   2         }
 114   1      }
 115          uchar outputbyte()//对ds1302进行输出操作
 116          {
 117   1       uchar i;
C51 COMPILER V6.23a  YJ1302A                                                               07/27/2008 09:06:24 PAGE 3   

 118   1       t_rst=1;//启动对1302允许传送
 119   1      
 120   1       for(i=8;i>0;i--)
 121   1         {
 122   2           ACC=ACC>>1;//将接受到的数据移到最低位
 123   2           t_io=1;//准备
 124   2           t_clk=1;
 125   2           t_clk=0;//产生一个下降沿,读出数据
 126   2           BIT7=t_io;//把数据给最高位
 127   2         }
 128   1      return ACC;
 129   1      }
 130          void wr_1302(uchar addr,uchar shuju)
 131          {//将指令或数据(shuju)写入对应寄存器(addr)
 132   1        t_rst=0;
 133   1        t_clk=0;
 134   1        t_rst=1;
 135   1      inputbyte(addr);//输入地址
 136   1      inputbyte(shuju);//输入数据
 137   1      t_rst=0;
 138   1      t_io=1;
 139   1      }
 140          uchar re_1302(uchar addr)
 141          {// 读出对应寄存器的内容
 142   1       uchar dat1;
 143   1        t_rst=0;
 144   1        t_clk=0;
 145   1        t_rst=1;
 146   1        inputbyte(addr);
 147   1        dat1=outputbyte();
 148   1        t_rst=0;
 149   1        return (dat1);
 150   1      }
 151          
 152          void get_1302(uchar time[])
 153          {
 154   1        uchar i;
 155   1        uchar addr=0x81;
 156   1        for(i=0;i<7;i++)
 157   1        {
 158   2          time[i]=re_1302(addr);
 159   2        
 160   2          addr+=2;
 161   2        }
 162   1      }
 163          
 164          

⌨️ 快捷键说明

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