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

📄 cfctrlv10.lst

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 1   


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

stmt level    source

   1          /*############################################################################
   2          鼎立照明        16级灰度护栏灯控制器程序                                                
   3          创建时间:2004-10-21
   4          硬件资源:
   5          RAM ADDRESS :0000H---7FFFH
   6          CF card ADDRESS:8000H---8FFFH
   7          CPLD    ADDRESS:9000H---FFFFH
   8          RAM     SIZE    :32K   FLASH SIZE:8MBYTE = 4K*512PAGE*4PCS
   9          PCB:V10
  10          */
  11          #include <reg52.h>
  12          #include <intrins.h>
  13          //#include <ctype.h>//字符函数
  14          #include <string.h>//字符串函数
  15          #include <stdio.h>//一般I/O函数
  16          #include <stdlib.h>//标准函数
  17          //#include <math.h>//数学函数
  18          #include <absacc.h>//绝对地址
  19          #include <intrins.h>//内部函数  
  20          #include        <setjmp.h>
  21          #define uchar unsigned char
  22          #define uint unsigned int
  23          #define byte unsigned char
  24          #define word unsigned  
  25          #define bool bit
  26          #define TRUE 1
  27          #define FALSE 0
  28          #define V_TH0   0xff  /* 时间常数高8位 (65536-500)/256                  */
  29          #define V_TL0   0xff  /* 时间常数低8位 (65536-500)%256   11.0592*/
  30          //#define V_TH0   (65536-1536)/256
  31          //#define V_TL0   (65536-1536)%256
  32          #define V_TMOD  0x01                     /* 定时器T0方式控制字 */
  33          #define WriteDeviceAddress 0xa0
  34          #define ReadDviceAddress        0xa1
  35          /* 定义定时器T0的时间常数值和方式控制字 */                
  36          
  37          #define  REGL XBYTE[0x9003] //控制寄存器护栏管的长度
  38          #define  FPGH XBYTE[0x9001] //闪存页高位
  39          #define  FPGL XBYTE[0x9002] //闪存页低位
  40          //-------- CF CARD REG ADDRESS
  41          #define EVEN_Data               XBYTE[0xa400]
  42          #define ODD_Data                XBYTE[0xa400]
  43          #define  Data_Reg               XBYTE[0xa000]   //DATA REGISTER(R/W)
  44          #define  Error_Reg              XBYTE[0xa001]       //ERROR REGISTER(READ)
  45          #define  Features               XBYTE[0xa001]  //FEATURE REGISTER(WRITE)
  46          #define  Sectr_Cnt              XBYTE[0xa002]//SECTOR COUNT REGISTER(R/W)
  47          #define  Sectr_No               XBYTE[0xa003]  //SECTOR NUMBER REGISTER(R/W)
  48          #define  Cylinder_Low   XBYTE[0xa004]  //CYLINDER LOW REGISTER(R/W)
  49          #define  Cylinder_Hi    XBYTE[0xa005]   //CYLINDER HIGH REGISTER(R/W)
  50          #define  Drv_Head               XBYTE[0xa006]   //DIRVE/HEAD REGISTER(R/W)
  51          #define  Status                 XBYTE[0xa007]   //STATUS REGISTER(READ)
  52          #define  Command                XBYTE[0xa007]  //COMMAND REGISTER(WRITE)
  53          #define Alt_Status              XBYTE[0xa00e]   //Alternate Status Regiter(read only)
  54          #define Device_Ctrl             XBYTE[0xa00e]   //Device Control Register(Write only)
  55          #define Device_Addrs    XBYTE[0xa00f]   //Drive Address Register(read only).Not used in this demo
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 2   

  56          #define Config                  XBYTE[0x8200]   //Configuration Option Register
  57          #define Socket                  XBYTE[0x8206]   //Socket and copy Register
  58          //CF card All command code
  59          #define ChkPwr          0xe5
  60          #define Diagnostic      0x90
  61          #define EraseSctr       0x0c
  62          #define Format          0x50
  63          #define Identify        0xec
  64          #define Idle            0xe3
  65          #define Idlelmm         0xe1
  66          #define Initialize      0x91
  67          #define ReadBuf         0xe4
  68          #define ReadLong        0x22
  69          #define ReadMulti       0xc4
  70          #define ReadSctr        0x20
  71          #define ReadVerify      0x40
  72          #define Recalibrate     0x10
  73          #define ReadSense       0x03
  74          #define Seek            0x70
  75          #define SetFeature      0xef
  76          #define SetMulti        0xc6
  77          #define Sleep           0xe6
  78          #define Standby         0xe2
  79          #define Standbylmm      0xe0
  80          #define Translate       0x87
  81          #define WearLevel       0xf5
  82          #define WriteBuf        0xe8
  83          #define WriteLong       0x32
  84          #define WriteMulti      0xc5
  85          #define WriteSctr       0x30
  86          #define WriteVerify     0x3c
  87          #define WrtMwoErase     0xcd
  88          #define WrtSwoErase 0x38
  89          
  90          //**********************************************
  91          sbit    senden=P3^2;
  92          sbit    SDA=P3^3;
  93          sbit    SCL=P3^5;
  94          sbit    wdgclr=P1^7;
  95          //*************************************************
  96          uchar   Select;
  97          uchar   LBA[6];                                 //Sets up sector ,CF Card Address 
  98          uint    zhepe;                                  //帧频
  99          uint    ms;                                             //毫秒定时
 100          uchar   ADD;                                    //地址
 101          uchar   idata iic_buf[96];              //接收缓冲区
 102          uint    pointer;
 103          uchar xdata *bufp;
 104          uchar   subchk;                                 //接收指针 和校验
 105          uchar   paklen;                                 //包长
 106          uint    page_sta,page_end;              //显示的开始帧和结束帧
 107          uint    dis_page;                               //当前显示的帧号
 108          uint    page;                                   //扇区号
 109          uchar   bdata flag;
 110          sbit    frameok=flag^0;                 //rece ok
 111          sbit    color=flag^1;                   //0 sing red color 1 red green color
 112          sbit    rec_sta=flag^2;                 //1 进入接状态,不显示
 113          sbit    rec_end=flag^3;
 114          sbit    timout=flag^4;
 115          //jmp_buf env;
 116          //int retval;
 117          /***************************************************************************/
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 3   

 118          void I2cDelay(unsigned int number) {
 119   1              unsigned char temp;
 120   1              for(;number!=0;number--,wdgclr=!wdgclr) {
 121   2                      for(temp=112;temp!=0;temp--) {
 122   3                      }
 123   2              }
 124   1      }
 125          //*******************************
 126          void SomeNOP(void)
 127          {
 128   1      uchar i;
 129   1      i=5;
 130   1      while(i--);
 131   1      }
 132          
 133          /***************************************************************************/
 134          void Start() {
 135   1              SDA=1;SomeNOP();
 136   1              SCL=1;SomeNOP();
 137   1              SDA=0;SomeNOP();
 138   1              SCL=0;SomeNOP();
 139   1      }
 140          
 141          /***************************************************************************/
 142          void Stop() {
 143   1              SCL=0;SomeNOP();
 144   1              SDA=0;SomeNOP();
 145   1              SCL=1;SomeNOP();
 146   1              SDA=1;SomeNOP();
 147   1      }
 148          
 149          /***************************************************************************/
 150          void Ack() {
 151   1              SDA=0;SomeNOP();
 152   1              SCL=1;SomeNOP();
 153   1              SCL=0;SomeNOP();
 154   1              SDA=1;SomeNOP();
 155   1      }
 156          
 157          /***************************************************************************/
 158          void NoAck() {
 159   1              SDA=1;SomeNOP();
 160   1              SCL=1;SomeNOP();
 161   1              SCL=0;SomeNOP();
 162   1      }
 163          
 164          /***************************************************************************/
 165          bit TestAck() {
 166   1              bit ErrorBit;
 167   1              SDA=1;SomeNOP();
 168   1              SCL=1;SomeNOP();
 169   1              ErrorBit=SDA;
 170   1              SCL=0;
 171   1              return(ErrorBit);
 172   1      }
 173          
 174          /***************************************************************************/
 175          Write8Bit(unsigned char input)
 176          {
 177   1      unsigned char temp;
 178   1      for(temp=8;temp!=0;temp--) {
 179   2                      SDA=(bit)(input&0x80);
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 4   

 180   2                      SCL=1;SomeNOP();
 181   2                      SCL=0;SomeNOP();
 182   2                      input=input<<1;
 183   2              }
 184   1      }
 185          
 186          /***************************************************************************/
 187          void Write24c02(unsigned char xdata *Wdata,unsigned char RomAddress,unsigned char number) {
 188   1              wdgclr=!wdgclr;
 189   1              Start();
 190   1              Write8Bit(WriteDeviceAddress);
 191   1              TestAck();
 192   1              Write8Bit(RomAddress);
 193   1              TestAck();
 194   1              for(;number!=0;number--) {
 195   2                      Write8Bit(*Wdata);
 196   2                      TestAck();
 197   2                      Wdata++;
 198   2              }
 199   1              Stop();
 200   1              I2cDelay(10);
 201   1      }
 202          
 203          /***************************************************************************/
 204          unsigned char Read8Bit() {
 205   1              unsigned char temp,rbyte=0;
 206   1              for(temp=8;temp!=0;temp--) {
 207   2                      SCL=1;
 208   2                      rbyte=rbyte<<1;
 209   2                      rbyte=rbyte|((unsigned char)(SDA));
 210   2                      SCL=0;
 211   2              }
 212   1              return(rbyte);
 213   1      }
 214          
 215          /***************************************************************************/
 216          void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes) {
 217   1      //      unsigned char temp,rbyte;
 218   1              wdgclr=!wdgclr;
 219   1              Start();
 220   1              Write8Bit(WriteDeviceAddress);
 221   1              TestAck();
 222   1              Write8Bit(RomAddress);
 223   1              TestAck();
 224   1              Start();
 225   1              Write8Bit(ReadDviceAddress);
 226   1              TestAck();
 227   1              while(bytes!=1) {
 228   2              *RamAddress=Read8Bit();
 229   2              Ack();
 230   2              RamAddress++;
 231   2              bytes--;
 232   2              }
 233   1              *RamAddress=Read8Bit();
 234   1              NoAck();
 235   1              Stop();
 236   1      }
 237          
 238          /***************************************************************************/
 239          //******************************************* 
 240          //从FLASH加载数据到RAM, flash -> ram 000
 241          //入口参数:帧号 取值范围:0--8095
C51 COMPILER V7.06   CFCTRLV10                                                             10/27/2004 11:26:40 PAGE 5   

 242          //******************************************
 243          //#pragma NOMODDP2
 244          void load_data(uint page)
 245          {
 246   1      uchar xdata *s;
 247   1      uchar xdata *sp;
 248   1      uchar xdata *rp;
 249   1      sp=((page<<10)&0x0fff)|0x8000;
 250   1      FPGH=(page>>2)/256;FPGL=(page>>2)%256;
 251   1      s=0x000;
 252   1      //for(i=0;i<1024;i++)*s++=*sp++;
 253   1      rp=memcpy(s,sp,1024);
 254   1      }
 255          /*************************************************

⌨️ 快捷键说明

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