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

📄 text1.lst

📁 单片机用DS1302进行计时
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   TEXT1                                                                 01/31/2009 12:11:09 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <iom16v.h>                     //包含型号头文件
*** WARNING C318 IN LINE 1 OF Text1.c: can't open file 'iom16v.h'
   2          #include <macros.h>                     //包含"位"操作头文件
*** WARNING C318 IN LINE 2 OF Text1.c: can't open file 'macros.h'
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          
   6          #define TRUE 1
   7          #define FALSE 0
   8          #include "YJ1602.C"                     //包含1602液晶函数文件
*** WARNING C318 IN LINE 8 OF Text1.c: can't open file 'YJ1602.C'
   9          
  10          /******************RTC常量******************/
  11          #define RTC_CLK         PB7
  12          #define RTC_DATA        PB5
  13          #define RTC_CS          PC7
  14                  //命令
  15          #define RD              0x01
  16          #define WR              0x00
  17          #define C_SEC           0x80    //秒
  18          #define C_MIN           0x82    //分
  19          #define C_HR            0x84    //时
  20          #define C_DAY           0x86    //日
  21          #define C_MTH           0x88    //月
  22          #define C_WK            0x8A    //星期 DATE
  23          #define C_YR            0x8C    //年
  24          #define C_WP            0x8E    //控制(写保护)
  25          #define C_CHARGE        0x90    //涓流充电
  26          #define C_BURST         0xBE    //时钟多字节
  27                  //配置
  28          #define CLK_HALT                0x80    //停止时钟控制位    SECOND      bit7
  29          #define CLK_START               0x00    //启动时钟
  30          #define M12_24                  0x80    //12/24小时值选择位 HOUR                bit7 
  31          #define PROTECT                 0x80    //写保护控制位      CONTROL     bit7 
  32          #define UPROTECT                0x00    //写保护控制位      CONTROL     bit7 
  33                  //涓流充电控制常量
  34          #define TC_D1R2                 0xA5    //high 1 Diode +2K Resistors  
  35          #define TC_D2R8                 0xAB    //low  2 Diodes+8K Resistors  
  36          #define TC_DISABLED             0x00    //Disabled(TCS<>1010 or DS=00 or RS=00)
  37                  //RAM 命令
  38          #define C_RAMBASE               0xC0    //RAM0~RAM30<<1 地址需左移一位 
  39          
  40          void Delayus(uint US)             
  41          {
  42   1       uint i;
  43   1       US=US*5/4;                      //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
  44   1       for( i=0;i<US;i++); 
  45   1      }
  46          void Delayms(uint MS)             
  47          {
  48   1       uint i,j;
  49   1       for( i=0;i<MS;i++)
  50   1       for(j=0;j<1141;j++);   //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
  51   1      }
  52          
C51 COMPILER V7.06   TEXT1                                                                 01/31/2009 12:11:09 PAGE 2   

  53          
  54          
  55          /*******************************************
  56          函数名称: DS1302_init
  57          功    能: 初始化DS1302的数据接口
  58          参    数: 无
  59          返回值  : 无
  60          /********************************************/
  61          void DS1302_portinit(void)                
  62          {
  63   1       DDRB|=BIT(RTC_CLK)|BIT(RTC_DATA)|BIT(RTC_CS);//将时钟端(RTC_CLK)数据端(RTC_DATA)片选端(RTC_CS)设置为输出
*** ERROR C202 IN LINE 63 OF TEXT1.C: 'DDRB': undefined identifier
  64   1      }
  65          /*******************************************
  66          函数名称: DS1302_writeB
  67          功    能: 向DS1302写入一个字节数据(没有RST操作)
  68          参    数: byte--要写入的数据
  69          返回值  : 无
  70          /********************************************/
  71          void DS1302_writeB(uchar byte)
  72          {
  73   1       uchar i;
  74   1       for(i=0;i<8;i++)                         //8位数据计数
  75   1       {
  76   2        PORTB&=~BIT(RTC_CLK);           //拉低时钟端
*** ERROR C202 IN LINE 76 OF TEXT1.C: 'PORTB': undefined identifier
  77   2        if(byte&0x01)                           //当前位是否是1
  78   2        {
  79   3         PORTB|=BIT(RTC_DATA);          //当前位是1,拉高数据端
*** ERROR C202 IN LINE 79 OF TEXT1.C: 'PORTB': undefined identifier
  80   3        }
  81   2        else                                            
  82   2        {
  83   3         PORTB&=~BIT(RTC_DATA);         //当前位是0,拉低数据端
*** ERROR C202 IN LINE 83 OF TEXT1.C: 'PORTB': undefined identifier
  84   3        }  
  85   2        Delayus(10);                            //调整时钟和脉冲宽度
  86   2        PORTB|=BIT(RTC_CLK);            //时钟上升沿(DS1302采样数据)
*** ERROR C202 IN LINE 86 OF TEXT1.C: 'PORTB': undefined identifier
  87   2        byte>>=1;                                       //数据右移1位,为送出新数据位做准备
  88   2       }
  89   1      }
  90          /*******************************************
  91          函数名称: DS1302_readB
  92          功    能: 从DS1302读出一个字节数据(没有RST操作)
  93          参    数: 无
  94          返回值  : byte--读出的数据
  95          /********************************************/
  96          uchar DS1302_readB(void)
  97          {
  98   1       uchar i,byte=0;
  99   1       DDRB&=~BIT(RTC_DATA);           //将数据端口设置为输入           
*** ERROR C202 IN LINE 99 OF TEXT1.C: 'DDRB': undefined identifier
 100   1       PORTB&=~BIT(RTC_DATA);          //无上拉电阻
*** ERROR C202 IN LINE 100 OF TEXT1.C: 'PORTB': undefined identifier
 101   1       for(i=0;i<8;i++)                        //8位数据计数
 102   1       {
 103   2        byte>>=1;                              //保存读入的数据位
 104   2        PORTB|=BIT(RTC_CLK);           //时钟上升沿
*** ERROR C202 IN LINE 104 OF TEXT1.C: 'PORTB': undefined identifier
 105   2        Delayus(10);                           //延时,调整时钟脉冲宽度
 106   2        PORTB&=~BIT(RTC_CLK);          //时钟下降沿,DS1302输出数据位
C51 COMPILER V7.06   TEXT1                                                                 01/31/2009 12:11:09 PAGE 3   

*** ERROR C202 IN LINE 106 OF TEXT1.C: 'PORTB': undefined identifier
 107   2        Delayus(10);                           //等待数据变化(MEGA16太快,必须等待DS1302的数据位输出,否则不能正确读出)
 108   2        if(PINB&BIT(RTC_DATA))         //当前位是否是高电平
*** ERROR C202 IN LINE 108 OF TEXT1.C: 'PINB': undefined identifier
 109   2        {
 110   3         byte|=BIT(PB7);                       //是高电平就将返回数据的当前位置1
*** ERROR C202 IN LINE 110 OF TEXT1.C: 'PB7': undefined identifier
 111   3        }
 112   2        else
 113   2        {
 114   3         byte&=~BIT(PB7);                      //是低电平就将返回数据的当前位置0
*** ERROR C202 IN LINE 114 OF TEXT1.C: 'PB7': undefined identifier
 115   3        }
 116   2       }
 117   1       DDRB|=BIT(RTC_DATA);            //最后将数据端口设置为输出
*** ERROR C202 IN LINE 117 OF TEXT1.C: 'DDRB': undefined identifier
 118   1       return byte;                            //返回读出的数据
 119   1      }
 120          /*******************************************
 121          函数名称: DS1302_writeD
 122          功    能: 向DS1302的某个地址写入一个字节数据
 123          参    数: addr--地址值(寄存器或RAM)
 124                            data--要写入的地址
 125          返回值  : 无
 126          /********************************************/
 127          void DS1302_writeD(uchar addr,uchar data)
*** ERROR C141 IN LINE 127 OF TEXT1.C: syntax error near ')'
 128          {
 129   1       PORTC&=~BIT(RTC_CS);    //拉低片选端
*** ERROR C202 IN LINE 129 OF TEXT1.C: 'PORTC': undefined identifier
 130   1       PORTB&=~BIT(RTC_CLK);   //拉低时钟端
*** ERROR C202 IN LINE 130 OF TEXT1.C: 'PORTB': undefined identifier
 131   1       Delayus(10);
 132   1       PORTC|=BIT(RTC_CS);     //拉高片选端
*** ERROR C202 IN LINE 132 OF TEXT1.C: 'PORTC': undefined identifier
 133   1       Delayus(10);                    //调整片选脉冲
 134   1       DS1302_writeB(addr);    //写入操作命令(地址)
 135   1       Delayus(10);
 136   1       PORTB&=~BIT(RTC_CLK);   //拉低时钟端
*** ERROR C202 IN LINE 136 OF TEXT1.C: 'PORTB': undefined identifier
 137   1       Delayus(10);
 138   1       DS1302_writeB(data);    //写入数据
*** ERROR C141 IN LINE 138 OF TEXT1.C: syntax error near 'data'
 139   1       PORTB&=~BIT(RTC_CLK);   //拉低时钟端
 140   1       Delayus(10);                    //调整片选脉冲
 141   1       PORTC&=~BIT(RTC_CS);    //拉低片选端
 142   1      }
 143          /*******************************************
 144          函数名称: DS1302_readD
 145          功    能: 从DS1302的某个地址读出一个字节数据
 146          参    数: addr--地址值(寄存器或RAM)
 147          返回值  : data--读出的数据
 148          /********************************************/
 149          uchar DS1302_readD(uchar addr)
 150          {
 151   1       uchar data;

⌨️ 快捷键说明

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