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

📄 display.lst

📁 一个充电控制器的完整单片机程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.11.4C,  DISPLAY                   04/01/103  02:34:47  PAGE  1

QCW(0x00002D1A)

WIN32 C51 COMPILER V6.11.4C, COMPILATION OF MODULE DISPLAY   
OBJECT MODULE PLACED IN d:\solar_charge_controller\scca\display.obj
COMPILER INVOKED BY: C51.EXE D:\SOLAR_CHARGE_CONTROLLER\SCCA\DISPLAY.C OBJECT(D:
            -\SOLAR_CHARGE_CONTROLLER\SCCA\DISPLAY.OBJ) PIN(D:\FSI\INC) NOAM PR(
            -D:\SOLAR_CHARGE_CONTROLLER\SCCA\DISPLAY.LST) CD SB OE(1) SM FP(NOFL
            -OAT) PW(80) 

stmt level    source
   1          //-----------------
   2          //change value that display in lcd
   3          //-----------------
   4          #include <string.h>
   5          #include <ABSACC.H>
   6          #include <stdio.h>
   7          #include <INTRINS.h>
   8          #include <stdlib.h>
   9          #include <AT89X52.H>
  10          
  11          #include "charger.h"
  12          #include "lcdp.h"
  13          
  14          //----------------------------------------------------------------
            -----
  15          //keyboard
  16          static unsigned char idata pos=0,len=0;
  17          static unsigned int idata pushlen=0,uplen=0;
  18          unsigned int bdata tlong=0,t50ms=0;
  19          static unsigned char bdata kstate=0,mstate=0;
  20          sbit waitover=kstate^0;
  21          sbit change=kstate^1;
  22          sbit key=kstate^2;
  23          sbit kflag=kstate^3;//key buffer enmpty while kflag=0
  24          //menu
  25          static unsigned char idata no;
  26          sbit mfirst=mstate^0;
  27          sbit madin=mstate^1;
  28          sbit mhis=mstate^2;
  29          sbit msel=mstate^3;//select  date
  30          sbit mset=mstate^4;
  31          //
  32          static unsigned char idata dstr[21];
  33          static unsigned char idata str[10];
  34          
  35          static void itoa(unsigned i,unsigned int ad);
  36          static void keyrst(void);
  37          //
  38          //--------------------------------------
  39          //change lcd display number
  40          static void onchange(unsigned char *chs)
  41          {
  42   1       len=(unsigned char)strlen(chs)-1;

WARNING 451 IN LINE 42 OF display.c : Assignment between pointers to char signe
            -d and unsigned
  43   1       //restet cursor in second line
  44   1       if(kflag)
  45   1        {
  46   2         if(key)//over 2s islong push,0x39='9'
  47   2         {
  48   3            if(chs[pos]>0x39||chs[pos]<0x30)//long push at no number pos
            -ition
  49   3             {
  50   4               keyrst();
  51   4               return;
  52   4             }
  53   3            change=!change;
  54   3            if(change)WC_LCD(SCR_TTT); 
  55   3            else WC_LCD(SCR_TTF); //change cursor state
  56   3      	  delay(1000);
  57   3         }
  58   2         else //short push
  59   2         {
  60   3      	 if(change)
  61   3           {
  62   4      	   if(chs[pos]<0x39)chs[pos]++;
  63   4             else chs[pos]=0x30;//'0'
  64   4             if(pos&1)
  65   4             {
  66   5               WD_LCD(chs[pos-1]);
  67   5               WD_LCD(chs[pos]);
  68   5               WC_LCD(SCR_ACL);
  69   5             }//acc add 1 while write two time 
  70   4      	   else
  71   4             {
  72   5               WD_LCD(chs[pos]);
  73   5               WD_LCD(chs[pos+1]);
  74   5               WC_LCD(SCR_ACL);
  75   5             }
  76   4      	 }
  77   3           else 
  78   3           if(pos<len)
  79   3           {
  80   4            if(pos&1)WC_LCD(SCR_ACR);
  81   4            pos++;
  82   4            WC_LCD(SCR_TTF);
  83   4           }
  84   3           else 
  85   3           {
  86   4             pos=0;
  87   4             WC_LCD(0x90);
  88   4           }
  89   3         }
  90   2       kflag=0;
  91   2       }
  92   1      }
  93          //
  94          //----------------------------
  95          //key state and buffer reset
  96          static void keyrst(void)
  97          {
  98   1        EX1=1;
  99   1        EX0=1;
 100   1        ET0=0;
 101   1        TR0=0; 
 102   1      
 103   1        kstate=0;
 104   1        mstate=0;
 105   1        pos=0;
 106   1        no=0;
 107   1        waitover=0;
 108   1        WC_LCD(SCR_TFF);
 109   1        WC_LCD(0x90);
 110   1        clear();
 111   1      }
 112          
 113          /* 
 114             Using to read input key
 115             Configure Timer 0
 116             - Mode                  = 2
 117             - Interrupt                   = ENABLED
 118             - Clock Source                = INTERNAL
 119             - Enable Gating Control    = DISABLED
 120          */
 121          //-----------------------------------------
 122          //int0,t0,int1,t1,ser;int0 to 12887,int1 to key
 123          
 124          
 125          void keyint(void)interrupt IE1_VECTOR //start key operation
 126          {
 127   1      	EX0=0;//close 12887 second interrupt
 128   1      	EX1=0;//close externd keyint
 129   1      	//init_timer0();//enable readkey
 130   1        TMOD &= 0XF0;   
 131   1        TMOD |= 0X1;  //mode 1 max is 65.536ms on 12M
 132   1        TL0 = 0X58;    //on 6M,100ms(3CB0);
 133   1        TH0 = 0X9E;    //on 6M,50ms(9E58);
 134   1        ET0 = 1;       //on 6M,50ms(D8F0);
 135   1        TF0 = 0;
 136   1        TR0 = 1;  
 137   1      	//display a/d input
 138   1      	madin=1;
 139   1      }
 140          //---------------------------------------------
 141          //timer0 interrupt,scan key input
 142          void readkey(void) interrupt TF0_VECTOR 
 143          {
 144   1        //Timer reload
 145   1      	TR0=0;
 146   1        TL0 = 0X58;    //on 6M,100ms(3CB0);
 147   1        TH0 = 0X9E;    //on 6M,50ms(9E58);
 148   1      	TR0=1;
 149   1        //Timer counter
 150   1      
 151   1      	if(((t50ms++)%20)==0)tlong++;
 152   1      
 153   1        if(!kflag)
 154   1      	{
 155   2      		if(P3_3)
 156   2          {
 157   3            uplen++;
 158   3            if(pushlen>1)
 159   3            {
 160   4              key=0;
 161   4              kflag=1;
 162   4      				uplen=0;
 163   4            }
 164   3         	  else if(uplen>400)
 165   3            {
 166   4               waitover=1;
 167   4            }
 168   3      		pushlen=0;
 169   3          }
 170   2          else
 171   2      	  {
 172   3             pushlen++;
 173   3             uplen=0;
 174   3             if(pushlen>40)
 175   3             {
 176   4                key=1;
 177   4                kflag=1;
 178   4                pushlen=0;
 179   4             }
 180   3          }
 181   2      	}
 182   1      
 183   1      }
 184          
 185          //
 186          //----------------------------------------------
 187          #define xdcdy adinhz[8]
 188          #define lllssj adinhz[9]
 189          //-------------------------------------------------
 190          //general after second interrupt
 191          //display battery volatage and timer
 192          static void firstscr(void)
 193          {
 194   1      // if(_testbit_(mfirst))
 195   1      // {
 196   1        itoa(0,adin[8]);
 197   1        strcpy(dstr,xdcdy);

WARNING 451 IN LINE 197 OF display.c : Assignment between pointers to char sign
            -ed and unsigned

WARNING 451 IN LINE 197 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 198   1        strcat(dstr,str);

WARNING 451 IN LINE 198 OF display.c : Assignment between pointers to char sign
            -ed and unsigned

WARNING 451 IN LINE 198 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 199   1        text(0x80,dstr);
 200   1      
 201   1        itoa(4,0);
 202   1        text(0x90,dstr);
 203   1      // }
 204   1      }
 205          //----------------------------------------------
 206          //int0,12887 second interrupt,display date and time,
 207          //display volatage of storage battery 
 208          
 209          void int0second(void) interrupt IE0_VECTOR 
 210          {
 211   1      /*
 212   1          str[0]=P128879;
 213   1          str[1]=P128878;
 214   1          str[2]=P128877;
 215   1          str[3]=P128874;
 216   1          str[4]=P128872;
 217   1          str[5]=P128870;
 218   1          str[6]=P128876;
 219   1       		str[0]=P12887c;
 220   1      
 221   1      	today.date[0]=str[0];
 222   1      	today.date[1]=str[1];
 223   1      	today.date[2]=str[2];
 224   1      
 225   1      	tlong++;
 226   1        mfirst=1;
 227   1      */
 228   1      }
 229          //
 230          //-----------------------------------------------------------
 231          //change unsigned int to ascii,add unit,change to date format
 232          static void itoa(unsigned i,unsigned int ad)
 233          {
 234   1      	unsigned char data t;
 235   1        unsigned char data k;
 236   1      	
 237   1      	dstr[0]='\0';
 238   1      	if(i<4)
 239   1      	{//change int to string
 240   2      		   t=ad%0xA;
 241   2        		 ad /=0xA;
 242   2      
 243   2             sprintf(str,"%u.%bu\0",(unsigned char)ad,t);

WARNING 451 IN LINE 243 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 244   2             if(i==3)
 245   2             {
 246   3       				 k=strlen(str);

WARNING 451 IN LINE 246 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 247   3               if(k&1)
 248   3               {
 249   4                str[k++]=0x20;
 250   4                str[k]='\0';
 251   4               }
 252   3             };
 253   2             strcat(str,unit[i]);

WARNING 451 IN LINE 253 OF display.c : Assignment between pointers to char sign
            -ed and unsigned

WARNING 451 IN LINE 253 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 254   2        }
 255   1      	else
 256   1      	{//change to timer format string
 257   2      		sprintf(dstr,"%b02u/%b02u/%b02u \0",str[0],str[1],str[2]);

WARNING 451 IN LINE 257 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 258   2      		if(i==4)
 259   2      		{
 260   3           	sprintf(&dstr[9],"%b02u:%b02u:%b02u\0",str[3],str[4],str[5])
            -;

WARNING 451 IN LINE 260 OF display.c : Assignment between pointers to char sign
            -ed and unsigned
 261   3      		}
 262   2        }
 263   1      }
 264          //
 265          //----------------------------------------------------------------
            -----
 266          //menu  control
 267          //            first, current, history, set 
 268          //----------------------------------------------------------------
            -----
 269          //
 270          //  
 271           static link pdate=&today;
 272          
 273          void displayadin(void) //current
 274          {
 275   1      
 276   1       if(madin)
 277   1         if(kflag)
 278   1         {
 279   2      //--------------------------------------------------
 280   2      	 clear();
 281   2           if(key)//long push
 282   2           {
 283   3             if(no<8)//8 way a/d input
 284   3             {//enable mset
 285   4               mstate=0;
 286   4               kstate=0;
 287   4               mset=1;
 288   4               no=0;
 289   4             }
 290   3             else msel=1;//enable msel
 291   3      
 292   3             if(msel)
 293   3             {
 294   4               pdate=pdate->next;
 295   4               mstate=0;
 296   4               kstate=0;
 297   4               mhis=1;
 298   4             };
 299   3      	   delay(2000);
 300   3           }
 301   2           else//short push
 302   2           {
 303   3              if(no<8)//8 way a/d input
 304   3              { //0 2 4 6 
 305   4                secondline:
 306   4                itoa(uadin[no],adin[no]);
 307   4                strcpy(dstr,adinhz[no]);

⌨️ 快捷键说明

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