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

📄 keyprocess.lst

📁 这个是安防用的控制键盘C源程序,采用KEIL C51开发.用于控制前端解码器!
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.01  KEYPROCESS                                                             04/29/2006 16:28:39 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE KEYPROCESS
OBJECT MODULE PLACED IN keyprocess.OBJ
COMPILER INVOKED BY: F:\Keil\C51\BIN\C51.EXE keyprocess.c DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include"reg52.h"
   3          #include"main.h"
   4          
   5          
   6          bit fgkey=0;
   7          bit fgkey_on=0;
   8          bit IRI_Flag=0;
   9          bit Aux_Flag=0;
  10          bit Lock_Flag=0;
  11          bit Protocol=0;
  12          bit DisableKey=0;
  13          bit PreSet=0;
  14          bit BautSet=0;
  15          bit SoundFlag=0;
  16          
  17          
  18          
  19          
  20          unsigned char data keybuffer;
  21          unsigned char scankeycounter;
  22          
  23          unsigned char data KeyTemp;
  24          unsigned char data j;
  25          
  26          Uchar KeyCounter=0;
  27          Uchar MonAddress=1;
  28          Uchar CamAddress=1;
  29          Uchar DisplayTemp[4];
  30          Uchar AuxNumb;
  31          extern Uchar NumbProtocol;
  32          Uint  LockBuffer=1234;
  33          Uchar IRINumb;
  34          Uchar KeyValue;
  35          Uchar TimeValue;
  36          
  37          
  38          //extern unsigned int  TimeCounter;
  39          extern Uchar SoundCounter;
  40          extern unsigned char data keydata;
  41          extern bit BUFlag;
  42          extern bit TimerFlag;
  43          extern void keyscan(void);
  44          extern void delay1ms(unsigned char count);
  45          extern void ePutstr(Uchar x,Uchar y, Uchar *ptr);
  46          extern void DispOneChar(Uchar x,Uchar y,Uchar Wdata);
  47          extern void Ptz(Uchar i);
  48          extern void LcdWriteCommand( Uchar CMD,Uchar AttribC );
  49          extern void LocateXY( char posx,char posy);
  50          extern void LcdReset( void );
  51          extern void  x24c02_write(unsigned char address,unsigned char info);
  52          void keyprocess(void);
  53          
  54          /*--------------------------------------------------------------------------------------------
  55                                              数字键处理程序
C51 COMPILER V7.01  KEYPROCESS                                                             04/29/2006 16:28:39 PAGE 2   

  56            --------------------------------------------------------------------------------------------*/
  57          
  58          void NumbProcess(Uchar Numb)
  59          {
  60   1        Uchar i;
  61   1        Uchar Temp;
  62   1        if(KeyCounter<=3)
  63   1        {
  64   2          Temp=18-KeyCounter;
  65   2                      
  66   2              if(!Lock_Flag)
  67   2              DispOneChar(Temp,2,'*');
  68   2      
  69   2          KeyCounter++;
  70   2              for(i=3;i>=1;i--)
  71   2              DisplayTemp[i]=DisplayTemp[i-1];
  72   2          DisplayTemp[0]=Numb;
  73   2        }
  74   1      
  75   1        else
  76   1        {
  77   2        for(i=0;i<4;i++)
  78   2           {
  79   3                KeyCounter=1;
  80   3                DisplayTemp[i]=0;                      
  81   3               }
  82   2         DisplayTemp[0]=Numb;
  83   2      
  84   2         if(!Lock_Flag)
  85   2         DispOneChar(18,2,'*');
  86   2         }
  87   1      
  88   1        if(Lock_Flag)
  89   1       {                 
  90   2         for(i=0;i<4;i++)
  91   2         {
  92   3         Temp=DisplayTemp[i]+48;                       //转换成ASCII 码
  93   3         DispOneChar(18-i,2,Temp);
  94   3         }
  95   2       }
  96   1      
  97   1      
  98   1       }
  99          
 100          /*----------------------------------------------------------------------------------------------
 101                                            数字键暂存区清零
 102            ----------------------------------------------------------------------------------------------*/
 103          void DispTempClear(void)
 104          {  
 105   1         Uchar i;
 106   1         KeyCounter=0;
 107   1         for(i=0;i<4;i++)
 108   1         {
 109   2               KeyCounter=0;
 110   2               DisplayTemp[i]=0;                      
 111   2         }
 112   1              ePutstr(14,2,"[0000]"); 
 113   1      }
 114          
 115          /*----------------------------------------------------------------------------------------------
 116                                            选择界面显示
 117            ----------------------------------------------------------------------------------------------*/
C51 COMPILER V7.01  KEYPROCESS                                                             04/29/2006 16:28:39 PAGE 3   

 118          void DispProtocol(void)
 119          {
 120   1      
 121   1      LcdWriteCommand( 0x01, 1);                      // 显示清屏     
 122   1      ePutstr(0,0,"Selecting Protocol");
 123   1      ePutstr(0,1,"1:PELCO_D");
 124   1      ePutstr(11,1,"2:PELCO_P");
 125   1      ePutstr(0,2,"3:YAAN");
 126   1      ePutstr(11,2,"4:PD_2400");
 127   1      ePutstr(0,3,"Select:");
 128   1      LcdWriteCommand( 0x0f, 1);
 129   1      LocateXY(7,3);
 130   1              
 131   1      
 132   1      }
 133          
 134          /*----------------------------------------------------------------------------------------------
 135                                            通讯协议选择
 136            ----------------------------------------------------------------------------------------------*/
 137          void SetProtocol(void)
 138          {
 139   1       while(Protocol)
 140   1       keyprocess();
 141   1       DisableKey=0;
 142   1       LcdReset();
 143   1       MonAddress=1;
 144   1       CamAddress=1;
 145   1       ePutstr(0,3,"MON[0001]");          // 上面一行显示一个预定字符
 146   1       ePutstr(11,3,"CAM[0001]");     
 147   1       ePutstr(11,2,"ENT[0000]");
 148   1      }
 149          
 150          void SetBaut(void)
 151          {
 152   1       LcdWriteCommand( 0x01, 1);                     // 显示清屏
 153   1       ePutstr(0,0,"Selecting Baut");
 154   1       ePutstr(0,1,"1:9600");
 155   1       ePutstr(11,1,"2:4800");
 156   1       ePutstr(0,2,"3:2400");
 157   1       ePutstr(11,2,"4:1200");
 158   1       ePutstr(0,3,"Select:");
 159   1       LcdWriteCommand( 0x0f, 1);
 160   1       LocateXY(7,3); 
 161   1       while(BautSet)
 162   1       keyprocess();
 163   1       DisableKey=0;
 164   1       LcdReset();
 165   1       MonAddress=1;
 166   1       CamAddress=1;
 167   1       ePutstr(0,3,"MON[0001]");          // 上面一行显示一个预定字符
 168   1       ePutstr(11,3,"CAM[0001]");     
 169   1       ePutstr(11,2,"ENT[0000]");
 170   1      }
 171          /*-----------------------------------------------------------------------------------------------
 172                                                键盘处理程序
 173            -----------------------------------------------------------------------------------------------*/
 174           void keyprocess(void)
 175          {
 176   1        Uint Temp;
 177   1        keyscan(); 
 178   1      
 179   1        if(SoundFlag)
C51 COMPILER V7.01  KEYPROCESS                                                             04/29/2006 16:28:39 PAGE 4   

 180   1        {
 181   2          EA=1;
 182   2              ET0=1;
 183   2          TR0=1;
 184   2        }
 185   1      /*--------------------------------------------------------------------------------------------*/
 186   1       if(keybuffer != keydata)
 187   1        {
 188   2         keybuffer = keydata;
 189   2         scankeycounter = 20;
 190   2        }
 191   1       /*---------------------------------------------------------------*/
 192   1        else if(scankeycounter!=0)
 193   1       {
 194   2         scankeycounter--;
 195   2         delay1ms(1);
 196   2       }
 197   1        
 198   1      
 199   1       /*--------------------------------------------------------------*/             
 200   1        else if (keybuffer!=no_key)
 201   1        {
 202   2         if(DisableKey)
 203   2         {
 204   3          if(keybuffer>K_4 & keybuffer!=K_lock)
 205   3              fgkey_on=1;
 206   3         }
 207   2      
 208   2         if(!fgkey_on)
 209   2         {
 210   3         fgkey_on=1;
 211   3         if(BUFlag)
 212   3          {
 213   4               SoundFlag=1;
 214   4           SoundCounter=2;    
 215   4           EA=1;
 216   4           ET0=1;
 217   4           TR0=1;
 218   4               BU=1;
 219   4          }
 220   3         switch (keybuffer)
 221   3          {
 222   4               
 223   4               case K_0:
 224   4                    if(Protocol || BautSet)
 225   4                        ;
 226   4                        else
 227   4                NumbProcess(0);
 228   4              
 229   4            
 230   4                
 231   4             
 232   4                    break;
 233   4               case K_1:
 234   4                
 235   4                if(Protocol || BautSet)
 236   4                        {
 237   5                         DispOneChar(7,3,'1');
 238   5                 LocateXY(7,3); 
 239   5                 if(Protocol)
 240   5                 {
 241   6                          NumbProtocol=1;
C51 COMPILER V7.01  KEYPROCESS                                                             04/29/2006 16:28:39 PAGE 5   

 242   6                  x24c02_write(0x00,0x01);
 243   6                 }
 244   5                 else
 245   5                 {

⌨️ 快捷键说明

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