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

📄 vs8000.lst

📁 一个使用C51编写的视频切换器的控制程序
💻 LST
字号:
C51 COMPILER V7.00  VS8000                                                                 04/15/2004 12:42:04 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE VS8000
OBJECT MODULE PLACED IN vs8000.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE vs8000.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <stdio.h>
   2          #include <AT89X51.H>
   3          #include <intrins.h>
   4          //#include <stdlib.h>
   5          
   6          #define CR      0x0d
   7          #define LF      0x0a
   8          
   9          #define MAX_ADDR_INPUT  15
  10          #define MAX_ADDR_OUTPUT 3
  11          
  12          #define CHIP_CE0                P3_3
  13          #define CHIP_CE1                P3_2
  14          #define CHIP_UPDATE             P3_4
  15          #define CHIP_SHDN               P3_5
  16          #define CHIP_WR                 P3_7
  17          #define CHIP_A0                 P1_0
  18          #define CHIP_A1                 P1_1
  19          #define CHIP_D0                 P1_2
  20          #define CHIP_D1                 P1_3
  21          #define CHIP_D2                 P1_4
  22          #define CHIP_D3                 P1_5
  23          #define CHIP_DATA               P1
  24          
  25          #define PIN_TEST                P1_6
  26          
  27          #define WATCHDOG                P1_7
  28          
  29          unsigned char   o_switcher[4];
  30          
  31          unsigned char my_atoi( char *buffer )
  32          {
  33   1              //unsigned char result;
  34   1              if( buffer[0] < '0' || buffer[0] > '9' ) return 0xff;
  35   1              if( buffer[1] < '0' || buffer[1] > '9' ) return 0xff;
  36   1              return ( (buffer[0] - '0') * 10 + (buffer[1] - '0') );
  37   1      }
  38          
  39          void channel_switch( unsigned char input, unsigned char output, bit display )
  40          {
  41   1              if( input > MAX_ADDR_INPUT ) {
  42   2                      printf( "ERROR\n\r" );
  43   2                      return;
  44   2              }
  45   1              if( output > MAX_ADDR_OUTPUT ) {
  46   2                      printf( "ERROR\n\r" );
  47   2                      return;
  48   2              }
  49   1      
  50   1              o_switcher[output] = input << 2;
  51   1              o_switcher[output] += output;
  52   1              o_switcher[output] &= 0x1f;
  53   1              o_switcher[output] |= 0x20;
  54   1      
  55   1              CHIP_CE0 = 1;
C51 COMPILER V7.00  VS8000                                                                 04/15/2004 12:42:04 PAGE 2   

  56   1              CHIP_CE1 = 1;
  57   1              CHIP_UPDATE = 1;
  58   1              CHIP_WR = 1;
  59   1              CHIP_DATA = o_switcher[output];
  60   1              PIN_TEST ^= 0x01;
  61   1              if( input & 0x08 ) {
  62   2                      //disable CHIP0
  63   2                      CHIP_CE0 = 0;
  64   2                      CHIP_WR = 0;
  65   2                      _nop_();
  66   2                      CHIP_WR = 1;
  67   2                      CHIP_CE0 = 1;
  68   2                      _nop_();
  69   2                      _nop_();
  70   2                      CHIP_UPDATE = 0;
  71   2                      CHIP_UPDATE = 1;
  72   2                      _nop_();
  73   2                      _nop_();
  74   2                      _nop_();
  75   2                      _nop_();
  76   2      
  77   2                      o_switcher[output] &= 0x1f;
  78   2                      CHIP_DATA = o_switcher[output];
  79   2                      PIN_TEST ^= 0x01;
  80   2      
  81   2                      //enable  CHIP1
  82   2                      CHIP_CE1 = 0;
  83   2                      CHIP_WR = 0;
  84   2                      _nop_();
  85   2                      CHIP_WR = 1;
  86   2                      CHIP_CE1 = 1;
  87   2                      _nop_();
  88   2                      _nop_();
  89   2                      CHIP_UPDATE = 0;
  90   2                      CHIP_UPDATE = 1;
  91   2                      _nop_();
  92   2                      _nop_();
  93   2                      _nop_();
  94   2                      _nop_();
  95   2              }
  96   1              else {
  97   2                      //disable CHIP1
  98   2                      CHIP_CE1 = 0;
  99   2                      CHIP_WR = 0;
 100   2                      _nop_();
 101   2                      CHIP_WR = 1;
 102   2                      CHIP_CE1 = 1;
 103   2                      _nop_();
 104   2                      _nop_();
 105   2                      CHIP_UPDATE = 0;
 106   2                      CHIP_UPDATE = 1;
 107   2                      _nop_();
 108   2                      _nop_();
 109   2                      _nop_();
 110   2                      _nop_();
 111   2                      
 112   2                      o_switcher[output] &= 0x1f;
 113   2                      CHIP_DATA = o_switcher[output];
 114   2                      PIN_TEST ^= 0x01;
 115   2      
 116   2                      //enable  CHIP0
 117   2                      CHIP_CE0 = 0;
C51 COMPILER V7.00  VS8000                                                                 04/15/2004 12:42:04 PAGE 3   

 118   2                      CHIP_WR = 0;
 119   2                      _nop_();
 120   2                      CHIP_WR = 1;
 121   2                      CHIP_CE0 = 1;
 122   2                      _nop_();
 123   2                      _nop_();
 124   2                      CHIP_UPDATE = 0;
 125   2                      CHIP_UPDATE = 1;
 126   2                      _nop_();
 127   2                      _nop_();
 128   2                      _nop_();
 129   2                      _nop_();
 130   2              }
 131   1      
 132   1              CHIP_DATA = 0xff;
 133   1              PIN_TEST ^= 0x01;
 134   1              if( display ) printf( "SWITCH %d TO %d\n\r", (int)input, (int)output );
 135   1              //if( display ) printf( "OK\n\r" );
 136   1      }
 137          
 138          int main()
 139          {
 140   1              bit bInput;
 141   1              unsigned char act;
 142   1              char cmd[2];
 143   1              unsigned char addr_input;
 144   1              unsigned char addr_output;
 145   1      
 146   1              SCON = 0x50;
 147   1              TMOD = 0x21;
 148   1              PCON = 0x00;
 149   1      
 150   1              P3 = 0xff;
 151   1              P1 = 0xff;
 152   1      
 153   1              
 154   1              TH1 = 0xf4;
 155   1              TL1 = 0xf4;
 156   1              TR1 = 1;
 157   1      
 158   1              TH0 = 0xff;
 159   1              TL0 = 0xf0;
 160   1              TR0 = 1;
 161   1              ET0 = 1;
 162   1      
 163   1              TI = 1;
 164   1              RI = 0;
 165   1              
 166   1      
 167   1              ES = 0;
 168   1              EA = 1;
 169   1      
 170   1      
 171   1              WATCHDOG = 0x01;
 172   1              
 173   1              //printf( "\n\rINITIALIZING...\n\r" );
 174   1      
 175   1              CHIP_SHDN = 0;
 176   1      
 177   1              channel_switch( 0, 0, 0 );
 178   1              channel_switch( 1, 1, 0 );
 179   1              channel_switch( 2, 2, 0 );
C51 COMPILER V7.00  VS8000                                                                 04/15/2004 12:42:04 PAGE 4   

 180   1              channel_switch( 3, 3, 0 );
 181   1              
 182   1              printf( "\n\rSTARTED\n\r" );
 183   1      
 184   1              bInput = 0;
 185   1              act = 0;
 186   1              cmd[0] = CR;
 187   1              addr_input = 0xff;
 188   1              addr_output = 0xff;
 189   1              while( 1 ) {
 190   2                      if( cmd[0] == CR || cmd[0] == LF ) {
 191   3                              if( bInput ) {
 192   4                                      if( act == 0 ) {
 193   5                                              printf( "ERROR\n\r" );
 194   5                                      }
 195   4                                      else if( act == 1 ) {
 196   5                                              PIN_TEST ^= 0x01;
 197   5                                              printf( "OK\n\r" );
 198   5                                      }
 199   4                                      else if( act == 2 ) {
 200   5                                              channel_switch( addr_input, addr_output, 1 );
 201   5                                      }
 202   4                                      else {
 203   5                                              printf( "ERROR\n\r" );
 204   5                                      }
 205   4                                      bInput = 0;
 206   4                                      act = 0;
 207   4                              }
 208   3                              cmd[0] = 0x00;
 209   3                      }
 210   2                      else {
 211   3                              cmd[0] = getchar();
 212   3                              if( cmd[0] == CR || cmd[0] == LF ) continue;
 213   3                              bInput = 1;
 214   3                              cmd[1] = getchar();
 215   3                              if( cmd[1] == CR || cmd[1] == LF ) {
 216   4                                      cmd[0] = cmd[1];
 217   4                                      continue;
 218   4                              }
 219   3                              act = 0;
 220   3                              if( cmd[0] == 'V' && cmd[1] == 'S' ) {
 221   4                                      act = 1;
 222   4                                      continue;
 223   4                              }
 224   3                              if( cmd[0] == 'C' && cmd[1] == 'H' ) {
 225   4                                      act = 2;
 226   4                                      addr_input = 0xff;
 227   4                                      addr_output = 0xff;
 228   4                                      cmd[0] = getchar();
 229   4                                      if( cmd[0] == CR || cmd[0] == LF ) continue;
 230   4                                      cmd[1] = getchar();
 231   4                                      if( cmd[1] == CR || cmd[1] == LF ) {
 232   5                                              cmd[0] = cmd[1];
 233   5                                              continue;
 234   5                                      }
 235   4                                      addr_input = my_atoi(cmd);
 236   4                                      if( addr_input == 0x00 && cmd[0] != '0' ) {
 237   5                                              addr_input = 0xff;
 238   5                                      }
 239   4                                      cmd[0] = getchar();
 240   4                                      if( cmd[0] == CR || cmd[0] == LF ) continue;
 241   4                                      cmd[1] = getchar();
C51 COMPILER V7.00  VS8000                                                                 04/15/2004 12:42:04 PAGE 5   

 242   4                                      if( cmd[1] == CR || cmd[1] == LF ) {
 243   5                                              cmd[0] = cmd[1];
 244   5                                              continue;
 245   5                                      }
 246   4                                      if( cmd[0] != 'T' || cmd[1] != 'O' ) {
 247   5                                              addr_input = 0xff;
 248   5                                              continue;
 249   5                                      }
 250   4                                      cmd[0] = getchar();
 251   4                                      if( cmd[0] == CR || cmd[0] == LF ) continue;
 252   4                                      cmd[1] = getchar();
 253   4                                      if( cmd[1] == CR || cmd[1] == LF ) {
 254   5                                              cmd[0] = cmd[1];
 255   5                                              continue;
 256   5                                      }
 257   4                                      addr_output = my_atoi(cmd);
 258   4                                      if( addr_output == 0x00 && cmd[0] != '0' ) {
 259   5                                              addr_output = 0xff;
 260   5                                      }
 261   4                                      continue;
 262   4                              }
 263   3                      }
 264   2              }
 265   1              printf( "\n\rSHUTDOWN\n\r" );
 266   1      }
 267          
 268          void timer0 (void) interrupt TF0_VECTOR
 269          {
 270   1              EA = 0;
 271   1              
 272   1              //PIN_TEST ^= 0x01;
 273   1              WATCHDOG ^= 0x01;
 274   1      
 275   1              TH0 = 0xff;
 276   1              TL0 = 0xf0;
 277   1              TR0 = 1;
 278   1              ET0 = 1;
 279   1              EA = 1;
 280   1      }
 281          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    754    ----
   CONSTANT SIZE    =     56    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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