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

📄 lcm16864zk.lst

📁 一个基于51单片机的报警系统。包含有电路图
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   LCM16864ZK                                                            11/15/2006 18:43:11 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCM16864ZK
OBJECT MODULE PLACED IN D:\KEIL\备分\LCM16864ZK.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE D:\KEIL\备分\LCM16864ZK.C DB SB OE

stmt level    source

*** WARNING C500 IN LINE 1 OF D:\KEIL\备分\LCM16864ZK.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
   1          #include <absacc.h>
   2          #include <reg51.h>
   3          #include "main.h"
   4          
   5          #define WARNBYTE XBYTE[0x5FFF]         //射频报警地址
   6                           //#define XBYTE((char * )0x10000L)
   7          
   8          
   9          
  10          void main(void)
  11          {
  12   1              SP=0x30;
  13   1              IE=0X95;
  14   1              IT1=0;
  15   1            //  Delay_s(1);
  16   1              Delay_ms(2);
  17   1              SystemInitial();        //系统初始化
  18   1              while(1)
  19   1                      {
  20   2                              //WritCommand(0x0e);
  21   2                              Delay_ms(10);   //显示初始画面
  22   2                              ShowTime();
  23   2                              if(LKEY==0)
  24   2                              {
  25   3                               Delay_ms(10);
  26   3                               if(LKEY==0)
  27   3                               {
  28   4                                while(1){if(LKEY==1)break;}
  29   4                               ShScreen1();
  30   4                               DisplayInitial();
  31   4      
  32   4                                }
  33   3                               }
  34   2      
  35   2                               if(flag)
  36   2                               {
  37   3                                 flag=0;
  38   3                                 WarnDeal();
  39   3                                 Delay_s(3);
  40   3                                 DisplayInitial();
  41   3                               }
  42   2      
  43   2                               if(flag1)
  44   2                                {
  45   3                                 flag1=0;
  46   3                                if(status==0x0f)
  47   3                                 {
  48   4                                  WarnTaleSet();
  49   4                                 }
  50   3                                }
  51   2      
  52   2                      }
  53   1      }
  54          
C51 COMPILER V7.06   LCM16864ZK                                                            11/15/2006 18:43:11 PAGE 2   

  55          void SystemInitial(void)                // 系统初始化程序
  56          {
  57   1              uchar i;
  58   1              P3=0XFF;                          //P1,P3口的第二的功能先输出1
  59   1              for(i=0;i<=3;i++)
  60   1                   CodeNum[i]=0;
  61   1              pdx=0x0100;             //防抢设置向量地址
  62   1              *pdx=0x00;              //   向量数目
  63   1              pdx=0x0200;             //防盗设置向量首地址
  64   1              *pdx=0x00;
  65   1              pdx=0x0300;             //放火设置向量首地址
  66   1              *pdx=0x00;
  67   1              pdx=0x0400;             //报警发生存储向量首地址
  68   1              *pdx=0x00;
  69   1      
  70   1              CalendarInitial(calen);
  71   1              BurstR1302(calen);
  72   1              ShowInitial();                  //显示模块初始化
  73   1              DisplayInitial();               //显示初始画面
  74   1      }
  75          
  76          void ShowInitial(void)  //显示初始化
  77          {
  78   1              P2=0X1F;
  79   1              Delay_ms(22);   //delay > 40ms
  80   1                              //i=00110000B;
  81   1              WritCommand(0x30);      //function set
  82   1              Delay_us(6);    //delay > 100us
  83   1      
  84   1              WritCommand(0x30);      //function set
  85   1              Delay_us(3);    //delay > 37us
  86   1      
  87   1              WritCommand(0x0c);        //display set D=1 C=1 B=0
  88   1              Delay_us(6);           //>100us
  89   1      
  90   1      
  91   1              WritCommand(0x01);        //display clear
  92   1              Delay_ms(7);          //>10ms
  93   1      
  94   1                                 //i=00000110B
  95   1              WritCommand(0x06); //enter nod set
  96   1              P2=0X0F;
  97   1      
  98   1      }
  99          
 100          /////////////////////////////////////////////////////
 101          
 102          void Delay_us(uchar i)  //delay 8 * i us
 103          {
 104   1              uchar j;
 105   1              for(j=0;j<i;j++);
 106   1      }
 107          
 108          void Delay_ms(uchar i)  // delay i * 1000 us=i  ms
 109          {
 110   1              uchar sum=125,j,k;
 111   1              for(j=0;j<i;j++)
 112   1                      for(k=0;k<sum;k++);
 113   1      }
 114          
 115          void Delay_s(uchar i)
 116          {
C51 COMPILER V7.06   LCM16864ZK                                                            11/15/2006 18:43:11 PAGE 3   

 117   1         uint sum=125000,k;
 118   1         uchar j;
 119   1         for(j=0;j<i;j++)
 120   1           for(k=0;k<sum;k++);
 121   1      
 122   1      }
 123          
 124          ///////////////////////////////////////////////////////
 125          
 126          void WritCommand(uchar i)       //写命令
 127          {
 128   1              P2=0X1F;
 129   1              Waitfree();
 130   1              S_RS=0;
 131   1              S_RW=0;
 132   1              E=1;         //E=1
 133   1              P0 = i;
 134   1              _WR=0;
 135   1              E=0;         //E=0
 136   1              _WR=1;
 137   1              P2=0X0F;
 138   1      }
 139          //////////////////////////////////////////////////////////
 140          
 141          ///////////////////////////////////////////////////////
 142          
 143          void WritData(uchar i)  //写数据
 144          {
 145   1              P2=0X1F;
 146   1              Waitfree();
 147   1              S_RS=1;
 148   1              S_RW=0;
 149   1              E=1;          //E=1
 150   1              P0=i;
 151   1              _WR=0;
 152   1              E=0;
 153   1              _WR=1;
 154   1              P2=0X0F;
 155   1      }
 156          
 157          //////////////////////////////////////////////////////////
 158          
 159          void DisplayInitial(void)
 160          {
 161   1              WritCommand(0x01);                               //显示初始画面
 162   1              WritCommand(0x91);
 163   1              WritData(0xBC);WritData(0xAF);WritData(0xB3);WritData(0xc9);  //集成警务系统
 164   1              WritData(0xbe);WritData(0xaf);WritData(0xce);WritData(0xf1);
 165   1              WritData(0xcf);WritData(0xb5);WritData(0xcd);WritData(0xb3);
 166   1              WritCommand(0x98);
 167   1              WritData(0xc3);WritData(0xdc);WritData(0xc2);WritData(0xeb);    //密码门
 168   1              WritData(0xc3);WritData(0xc5);
 169   1              WritCommand(0x89);
 170   1              WritData(0xcf);WritData(0xe6);WritData(0xcc);WritData(0xb6);     //湘潭大学研制
 171   1              WritData(0xb4);WritData(0xf3);WritData(0xd1);WritData(0xa7);
 172   1              WritData(0xd1);WritData(0xd0);WritData(0xd6);WritData(0xc6);
 173   1      }
 174          
 175          /////////////////////////////////////////////////////////////
 176          
 177          void Waitfree(void)
 178          {
C51 COMPILER V7.06   LCM16864ZK                                                            11/15/2006 18:43:11 PAGE 4   

 179   1       P0=0XFF;
 180   1        S_RS=0;
 181   1        S_RW=1;
 182   1        _RD=0;
 183   1        ACC=P0;
 184   1       while(ACC7==1)
 185   1       {
 186   2        _RD=0;
 187   2        P2=0X1F;
 188   2        E=1;
 189   2        ACC=P0;
 190   2        E=0;
 191   2        }
 192   1        _RD=1;
 193   1        S_RS=0;
 194   1        S_RW=0;
 195   1      }
 196          
 197          /////////////////////////////////////////////////////////////////
 198          ///////////////////////////////////////////////////////日历程序
 199          
 200          void CalendarInitial(pcalen)//日历初始化程序
 201          uchar pcalen[8];
 202          {
 203   1              uchar i;
 204   1              BurstW1302(pcalen);             //读日历,并送到pcalen[]中
 205   1              i=Read1302(0x80);
 206   1              i=i&0x7f;                               //ch=0
 207   1              Writ1302(0x80,i);       //起震,
 208   1      }
 209          
 210          
 211          void BurstR1302(pcalen)         // 从1302读多字节,并存入日历数组中
 212          uchar pcalen[8];
 213          {
 214   1              uchar i;
 215   1              T_RST=0;
 216   1              T_CLK=0;
 217   1              T_RST=1;
 218   1              RTInputByte(0xbf);              //oxbf 时钟多字节读命令
 219   1              for(i=0; i<8; i++)
 220   1                      {
 221   2                              *pcalen=RTOutputByte(); //读1BYTE的数据
 222   2                              pcalen++ ;
 223   2                      }
 224   1              T_CLK=1;
 225   1              T_RST=0;
 226   1      }
 227          
 228          ////////////////////////////////////////////////////////
 229          
 230          void RTInputByte(udata)         //to1302写入一字节的数据
 231          uchar udata;
 232          {
 233   1              uchar i;
 234   1              ACC=udata;
 235   1              for(i=8;i>0;i--)
 236   1              {
 237   2                      T_IO=ACC0;
 238   2                      T_CLK=1;
 239   2                      T_CLK=0;
 240   2                      ACC=ACC>>1;
C51 COMPILER V7.06   LCM16864ZK                                                            11/15/2006 18:43:11 PAGE 5   

 241   2              }
 242   1      }
 243          
 244          /////////////////////////////////////////////////////
 245          uchar RTOutputByte(void)                //从1302读一字节的数据
 246          {
 247   1              uchar i;
 248   1              for(i=8;i>0;i--)
 249   1              {
 250   2                      ACC=ACC>>1;
 251   2                      ACC7=T_IO;
 252   2                      T_CLK=1;
 253   2                      T_CLK=0;
 254   2      
 255   2              }
 256   1              return(ACC);
 257   1      }
 258          
 259          //////////////////////////////////////////////////////
 260          
 261          void Writ1302(uchar uAddr,uchar udata)  //写1字节的数据入指定地址
 262          {
 263   1      
 264   1              T_RST=0;
 265   1              T_CLK=0;
 266   1              T_RST=1;
 267   1              RTInputByte(uAddr);     //先输入地址
 268   1              RTInputByte(udata);     //写数据
 269   1              T_CLK=1;
 270   1              T_RST=0;
 271   1      }
 272          
 273          //////////////////////////////////////////////////////
 274          
 275          uchar Read1302(uchar uAddr)     //从指定地址读出1字节数据
 276          {
 277   1              uchar udata;
 278   1              T_RST=0;
 279   1              T_CLK=0;
 280   1              T_RST=1;
 281   1              RTInputByte(uAddr);     //写入地址
 282   1              udata=RTOutputByte();   //读出数据
 283   1              T_CLK=1;
 284   1              T_RST=0;
 285   1              return(udata);
 286   1      }
 287          
 288          /////////////////////////////////////////////////////
 289          
 290          void BurstW1302(pcalen) //写入多字节的数据
 291          uchar pcalen[8];
 292          {
 293   1              uchar i;
 294   1              Writ1302(0x8e,0x00);  //WP=0,写操作
 295   1              T_RST=0;
 296   1              T_CLK=0;
 297   1              T_RST=1;
 298   1              RTInputByte(0xbe);      //0xbe ;时钟多字节写命令
 299   1              for(i=8;i>0;i--)
 300   1              {
 301   2                      RTInputByte(*pcalen);
 302   2                      pcalen++;
C51 COMPILER V7.06   LCM16864ZK                                                            11/15/2006 18:43:11 PAGE 6   

 303   2              }
 304   1              T_CLK=1;
 305   1              T_RST=0;
 306   1      }
 307          
 308          ////////////////////////////////////////////////////
 309          
 310          void ShowTime(void)
 311          {
 312   1           uchar i;
 313   1           BurstR1302(calen);
 314   1           i=0x80;
 315   1           WritCommand(i);
 316   1           i=calen[6];
 317   1           ShowTimes(i);
 318   1           i=0x2f;
 319   1           WritData(i);
 320   1           i=calen[4];
 321   1           ShowTimes(i);
 322   1           i=0x2f;
 323   1           WritData(i);
 324   1           i=calen[3];
 325   1           ShowTimes(i);
 326   1           i=0x2f;
 327   1           WritData(i);
 328   1           i=calen[2];
 329   1           ShowTimes(i);
 330   1           i=0x3a;
 331   1           WritData(i);
 332   1           i=calen[1];
 333   1           ShowTimes(i);
 334   1           i=calen[0];
 335   1           ShowTimes(i);
 336   1      }

⌨️ 快捷键说明

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