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

📄 mylib.lst

📁 红外抄表系统的源代码。利用非电信号传送控制信息和数据信息
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.00i MYLIB                                                                  08/21/2007 12:22:11 PAGE 1   


C51 COMPILER 6.00i, COMPILATION OF MODULE MYLIB
OBJECT MODULE PLACED IN E:\电表程序\GY8_17\MYLIB.OBJ
COMPILER INVOKED BY: C:\C516uv1\Bin\C51.EXE E:\电表程序\GY8_17\MYLIB.C DB SB OE

stmt level    source

   1          #include "mylib.h"
   2          
   3          uchar code IC1_TB[10]= {0x0EB,0x60,0x0C7,0x0E5,0x6C,0x0AD,0x0AF,0x0E0,0x0EF,0x0ED};  //0-9 display code
   4          uchar code IC2_TB[10]= {0x7D,0x60,0x3E,0x7A,0x63,0x5B,0x5F,0x70,0x7F,0x7B};  //0-9 display code
   5          extern uchar Curtime[7];
   6          extern uchar disnum[9];
   7          bit SetTimeFlag;    //used for set time
   8          extern uchar idata FaultTime[6];
   9          extern uint UaStartEeprom;
  10          extern uint UbStartEeprom;
  11          extern uint UcStartEeprom ;
  12          extern uint IaStartEeprom;
  13          extern uint IcStartEeprom;
  14          extern uint IpStartEeprom;
  15          extern bit send_flag;//发送标志
  16          extern bit times_flag;//故障显示次数增加标志
  17          extern bit swith_phase;//故障形式转换标志
  18          extern bit error_flag;//校验故障标志,为1则表明手持机接到的数据不正确
  19          extern uchar n;
  20          
  21          uchar modified=0;
  22          //新增变量
  23          
  24          extern uchar IdNum;
  25          extern bit ResetNum;
  26          extern uchar m1;//地址加k1值提取下一个故障时间
  27          extern uchar m2;//
  28          extern uint Fault_adress;
  29          extern uchar CountTimer;
  30          
  31          
  32          //*********************1302******************/
  33          /*******************************************/
  34          /* clock 1302                              */
  35          /* write 1Byte data to DS1302;ucDa is the  */
  36          /* data to be writen                       */
  37          /*******************************************/
  38          //时钟-------------------------------------------------------------------------
  39          void RTInputByte(uchar ucDa) //往DS1302写入1Byte数据;ucDa 写入的数据
  40          {
  41   1        uchar i;
  42   1        ACC = ucDa;
  43   1        for(i=8;i>0;i--)
  44   1        {
  45   2          T_IO = ACC_0;
  46   2          T_CLK = 1;
  47   2          T_CLK = 0;
  48   2          ACC = ACC >> 1;
  49   2        }
  50   1      }
  51          
  52          uchar RTOutputByte(void) //从DS1302读取1Byte数据
  53          {
  54   1        uchar i;
  55   1        for(i=8;i>0;i--)
C51 COMPILER V6.00i MYLIB                                                                  08/21/2007 12:22:11 PAGE 2   

  56   1        {
  57   2          ACC = ACC >>1; //相当于汇编中的 RRC
  58   2          ACC_7 = T_IO;
  59   2          T_CLK = 1;
  60   2          T_CLK = 0;
  61   2        }
  62   1        return(ACC);
  63   1      }
  64          
  65          void W1302(uchar ucAddr, uchar ucDa)/*往DS1302写入数据;ucAddr: DS1302地址, ucDa: 要写的数据*/
  66          {
  67   1        T_RST = 0;
  68   1        T_CLK = 0;
  69   1        T_RST = 1;
  70   1        RTInputByte(ucAddr); /* 地址,命令 */
  71   1        RTInputByte(ucDa); /* 写1Byte数据*/
  72   1        //T_CLK = 1;
  73   1        T_RST =0;
  74   1        KickDog();
  75   1      }
  76          
  77          uchar R1302(uchar ucAddr)//读取DS1302某地址的数据
  78          {
  79   1        uchar ucDa;
  80   1        T_RST = 0;
  81   1        T_CLK = 0;
  82   1        T_RST = 1;
  83   1        RTInputByte(ucAddr); // 地址,命令
  84   1        ucDa = RTOutputByte(); // 读1Byte数据
  85   1        //T_CLK = 1;
  86   1        T_RST =0;
  87   1        return(ucDa);
  88   1        KickDog();
  89   1      }
  90          
  91          
  92          
  93          
  94          //*********************LCD************************/
  95          /*************************************************/
  96          /*                                               */
  97          /* The function write a bit to LCD               */
  98          /* Designed by xr.li                             */
  99          /* Date 2007-3-21                                */
 100          /*                                               */
 101          /*************************************************/
 102          void LCD_WriteBit(bit C_D)
 103          {
 104   1          DIPIN = C_D;
 105   1          delay(1);   //waiting for change
 106   1          CLKPIN = 1;
 107   1          delay(1);
 108   1          CLKPIN = 0;
 109   1          delay(1);
 110   1          CLKPIN = 1;
 111   1      }
 112          
 113          /*********************************************************/
 114          /*                                                       */
 115          /* The function write control word to LCD ,for IC1 region*/
 116          /* Designed by xr.li                                     */
 117          /* Date 2007-3-21                                        */
C51 COMPILER V6.00i MYLIB                                                                  08/21/2007 12:22:11 PAGE 3   

 118          /*                                                       */
 119          /*********************************************************/
 120          void LCD_WC1(uchar Ctrl_Byte)
 121          {
 122   1          bit C_C;     //name?
 123   1          uchar i,Ctrl_ByteA;
 124   1          Ctrl_ByteA = Ctrl_Byte;
 125   1          CS1PIN = 1;
 126   1          CS1PIN = 0;
 127   1          C_C = 1;
 128   1          LCD_WriteBit(C_C);
 129   1          C_C = 0;
 130   1          LCD_WriteBit(C_C);
 131   1          LCD_WriteBit(C_C);
 132   1          for(i=8; i>0;i--)
 133   1          {
 134   2              if(Ctrl_ByteA & 0x80)
 135   2                  C_C = 1;
 136   2       	else
 137   2       	    C_C = 0;
 138   2       	LCD_WriteBit(C_C);
 139   2       	Ctrl_ByteA <<= 1;
 140   2          }
 141   1          C_C = 0;
 142   1          LCD_WriteBit(C_C);
 143   1          DIPIN = 1;
 144   1          CS1PIN = 1;
 145   1            KickDog();
 146   1      }
 147          
 148          
 149          /*************************************************/
 150          /*                                               */
 151          /* The function reset LCD,for IC1 and IC2 region */
 152          /* Designed by xr.li                             */
 153          /* Date 2007-3-21                                */
 154          /*                                               */
 155          /*************************************************/
 156          void LCD_Reset(uchar region)
 157          {
 158   1          switch(region)
 159   1          {
 160   2              case 0x01:                 //for IC1 region
 161   2      	    LCD_WC1(CMDOFF);
 162   2      	    LCD_WC1(CMDLCDOFF);
 163   2      	    LCD_WC1(CMDON);
 164   2      	    LCD_WC1(CMDLCDON);
 165   2      	    LCD_WC1(CMDB3C4);
 166   2      	break;
 167   2              case 0x02:                    //for IC2 region
 168   2      	    LCD_WC2(CMDOFF);
 169   2      	    LCD_WC2(CMDLCDOFF);
 170   2      	    LCD_WC2(CMDON);
 171   2      	    LCD_WC2(CMDLCDON);
 172   2      	    LCD_WC2(CMDB3C4);
 173   2              break;
 174   2              default:
 175   2              break;
 176   2          }
 177   1      }
 178          /*************************************************/
 179          /*                                               */
C51 COMPILER V6.00i MYLIB                                                                  08/21/2007 12:22:11 PAGE 4   

 180          /* The function write data to LCD                 */
 181          /* Designed by xr.li                             */
 182          /* Date 2007-3-21                                */
 183          /*                                               */
 184          /*************************************************/
 185          void LCD_WD1(uchar data_byteB,uchar data_byteA)
 186          {
 187   1      	bit C_A;
 188   1      	uchar i;
 189   1      	CS1PIN = 1;
 190   1      	CS1PIN = 0;
 191   1      	C_A = 1;
 192   1      	LCD_WriteBit(C_A);
 193   1      	C_A = 0;
 194   1      	LCD_WriteBit(C_A);
 195   1      	C_A = 1;
 196   1      	LCD_WriteBit(C_A);
 197   1              data_byteB = (data_byteB << 2) & 0x0FC;
 198   1      	for(i = 6; i > 0;  i--)
 199   1      	{
 200   2      	     if(data_byteB & 0x80) C_A = 1;
 201   2      	     else C_A = 0;
 202   2      	     LCD_WriteBit(C_A);
 203   2      	     data_byteB = data_byteB <<1;
 204   2      	}
 205   1      	for(i = 8; i > 0; i--)
 206   1      	{
 207   2      	     if(data_byteA & 0x01) C_A = 1;
 208   2      	     else C_A = 0;
 209   2      	     LCD_WriteBit(C_A);
 210   2      	     data_byteA = data_byteA >>1;
 211   2      	}
 212   1      	DIPIN = 1;
 213   1      	CS1PIN = 0;
 214   1              CS1PIN = 1;  // enable write
 215   1               KickDog();
 216   1      }
 217          /*************************************************/
 218          /*                                               */
 219          /* The function write control to LCD,for IC2 region  */
 220          /* Designed by xr.li                             */
 221          /* Date 2007-3-22                                */
 222          /*                                               */
 223          /*************************************************/
 224          void LCD_WC2(uchar Ctrl_Byte)
 225          {
 226   1          bit C_C;     //name?
 227   1          uchar i,Ctrl_ByteA;
 228   1          Ctrl_ByteA = Ctrl_Byte;
 229   1          CS2PIN = 1;
 230   1          CS2PIN = 0;
 231   1          C_C = 1;
 232   1          LCD_WriteBit(C_C);
 233   1          C_C = 0;
 234   1          LCD_WriteBit(C_C);
 235   1          LCD_WriteBit(C_C);
 236   1          for(i=8; i>0;i--)
 237   1          {
 238   2       	if(Ctrl_ByteA & 0x80) C_C = 1;
 239   2       	else C_C = 0;
 240   2       	LCD_WriteBit(C_C);
 241   2       	Ctrl_ByteA <<= 1;
C51 COMPILER V6.00i MYLIB                                                                  08/21/2007 12:22:11 PAGE 5   

 242   2          }
 243   1          C_C = 0;
 244   1          LCD_WriteBit(C_C);
 245   1          DIPIN = 1;
 246   1          CS2PIN = 1;
 247   1           KickDog();
 248   1      }
 249          /*************************************************/
 250          /*                                               */
 251          /* The function write data to LCD                */
 252          /*where,data_byteB is the LCD RAM address,       */
 253          /*  data_byteA is data to send                   */
 254          /* Designed by xr.li                             */
 255          /* Date 2007-3-22                                */
 256          /*************************************************/
 257          void LCD_WD2(uchar data_byteB,uchar data_byteA)
 258          {
 259   1      	bit C_A;
 260   1      	uchar i;
 261   1      	CS2PIN = 1;
 262   1      	CS2PIN = 0;
 263   1      	C_A = 1;                       //101:write data to ram
 264   1      	LCD_WriteBit(C_A);
 265   1      	C_A = 0;
 266   1      	LCD_WriteBit(C_A);
 267   1      	C_A = 1;
 268   1      	LCD_WriteBit(C_A);
 269   1      	data_byteB = (data_byteB << 2) & 0x0FC;
 270   1      
 271   1      	for(i = 6; i > 0;  i--)
 272   1      	{
 273   2      	     if(data_byteB & 0x80)C_A = 1;
 274   2      	     else C_A = 0;
 275   2      	     LCD_WriteBit(C_A);
 276   2      	     data_byteB = data_byteB <<1;
 277   2      	}
 278   1      	for(i = 8; i > 0; i--)
 279   1      	{
 280   2      	     if(data_byteA & 0x01)C_A = 1;
 281   2      	     else C_A = 0;
 282   2      	     LCD_WriteBit(C_A);
 283   2      	     data_byteA = data_byteA >>1;
 284   2      	}
 285   1      	DIPIN = 1;
 286   1      	CS2PIN = 0;
 287   1      
 288   1      	CS2PIN = 1; // enable write
 289   1      	 KickDog();
 290   1      
 291   1      }
 292          /**************************************************/
 293          /*                                                */
 294          /* The function send display number to IC1 region,*/
 295          /* where Sx is the trouble type to display        */

⌨️ 快捷键说明

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