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

📄 yj1302b.lst

📁 自己写的DS1302 的代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.23a  YJ1302B                                                               07/29/2008 18:41:53 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE YJ1302B
OBJECT MODULE PLACED IN F:\设计\编译通~1\DS1302\YJ1302B.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\设计\编译通~1\DS1302\YJ1302B.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  YJ1302B                                                               07/29/2008 18:41:53 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+16);   //给地址
  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+16);//换行给地址
  72   1               for(num=0;num<16;num++)
  73   1            {
  74   2                 write_data(table1[num]);
  75   2                   delay(5);
  76   2            }
  77   1            for (num=0;num<16;num++)
  78   1             {
  79   2              write_com(0x18);     //0X18是左移指令  一个移一次
  80   2              delay(100);
  81   2             }
  82   1         }
  83          
  84          
  85               void write_sfm(uchar addr, uchar dat)
  86             {
  87   1              uchar sh,ge;
  88   1                      sh=dat/16;
  89   1                      ge=dat%16;
  90   1              write_com(0x80+0x40+16+addr);
  91   1                 write_data(0x30+sh);
  92   1                 write_data(0x30+ge);
  93   1         }
  94                void write1_sfm(uchar addr, uchar dat)
  95             {
  96   1              uchar sh,ge;
  97   1                      sh=dat/16;
  98   1                      ge=dat%16;
  99   1              write_com(0x80+16+addr);
 100   1                 write_data(0x30+sh);
 101   1                 write_data(0x30+ge);
 102   1         }
 103          //-----------------------------
 104          
 105          
 106          
 107          void inputbyte(uchar shuju)//对ds1302输入操作
 108          {
 109   1       uchar i;
 110   1       ACC=shuju;
 111   1       t_rst=1;//启动对1302允许传送
 112   1       for(i=8;i>0;i--)
 113   1         {
 114   2           t_io=BIT0;//准备送最低位数据
 115   2           t_clk=0;
 116   2           t_clk=1;//产生一个上升沿,写人数据
 117   2           ACC=ACC>>1;
C51 COMPILER V6.23a  YJ1302B                                                               07/29/2008 18:41:53 PAGE 3   

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

⌨️ 快捷键说明

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