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

📄 net test.lst

📁 一个用数码管显示的测试仪代码. 硬件加入了一个双向对话功能.
💻 LST
字号:
C51 COMPILER V7.09   NET_TEST                                                              04/09/2004 19:32:30 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE NET_TEST
OBJECT MODULE PLACED IN net test.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE net test.c DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include <Reg51.h>
   3          
   4          #define  Master_LED P2
   5          #define  Slaver_LED P3
   6          #define  D_LED  P2^7
   7          
   8          sbit key1 = P1^0;
   9          sbit key2 = P1^1;
  10          sbit key3 = P1^2;
  11          sbit key4 = P1^3;
  12          
  13          unsigned char code direct [] = { 0x06, 0x5b, 0x4f, 0x66, 0x6d,             
  14                                                                          0x7d, 0x07, 0x7f, 0x6f,0x3f};
  15          
  16          //--------------------------
  17          //  共阴数码管,交叉线, 1-3,3-1,2-6,6-2? 的   1~9,0显示表
  18          unsigned char code across [] = {0x21, 0x7c, 0x6d, 0x63, 0x4f,
  19                                                                          0x5f, 0x25, 0x7f, 0x6f, 0x3f};
  20          
  21          unsigned char key_val = 0;
  22          unsigned char counter = 0;
  23          unsigned char key_counter = 0;
  24          unsigned char step_counter = 0;
  25          
  26          void timer0_int(void);
  27          void delay(unsigned int i);
  28          void direct_test(unsigned int j);
  29          void across_test(unsigned int k);
  30          void lin_dot(unsigned int a);
  31          
  32          main()
  33          {
  34   1              counter = 4;
  35   1              key_val = 0xfb;
  36   1              TH0=0x3B;                               //给计数寄存器高8位赋初值
  37   1              TL0=0xC0;                               //给计数寄存器低8位赋初值
  38   1              ET0 = 1;
  39   1              EA = 1;
  40   1              TR0=1;
  41   1              while (1)
  42   1              {
  43   2                      while (key_val == 0xfe)
  44   2                      {
  45   3                              step_counter = 0;
  46   3                              direct_test (key_counter++);
  47   3                              if (key_counter == 10)
  48   3                              {
  49   4                                      key_counter = 0;
  50   4                              }
  51   3                      }
  52   2      
  53   2                      while (key_val == 0xfd)
  54   2                      {
  55   3                              step_counter = 0;
C51 COMPILER V7.09   NET_TEST                                                              04/09/2004 19:32:30 PAGE 2   

  56   3                              across_test (key_counter++);
  57   3                              if (key_counter == 10)
  58   3                              {
  59   4                                      key_counter = 0;
  60   4                              }
  61   3                      }
  62   2      
  63   2                      while (key_val == 0xfb)
  64   2                      {
  65   3                              lin_dot (0);
  66   3                              step_counter = 0;
  67   3                      }
  68   2      
  69   2                      while (key_val == 0xf7)
  70   2                      {
  71   3      
  72   3                              Master_LED = 1<<(step_counter-1);
  73   3                              Slaver_LED = 1<<(step_counter-1);
  74   3                      }
  75   2              }
  76   1              
  77   1      }
  78          
  79          void    delay(unsigned int i )
  80          {               
  81   1      
  82   1                      signed int      j,k;
  83   1                      for(k=0;k<i;k++)
  84   1                      for(j=0;j<1000;j++);
  85   1              //      Master_LED = 0x00;    //直通线的标记
  86   1      }
  87          
  88          //直线测试函数Slaver_LED,Master_LED,由1~9,0显示
  89          void direct_test(unsigned int j)
  90          {
  91   1                      Master_LED = 0x81;    //直通线的标记
  92   1                      Slaver_LED = 0x81;
  93   1                      delay(50);
  94   1                      Master_LED = direct[j];
  95   1                      Slaver_LED = direct[j];
  96   1                      delay(50);
  97   1      }
  98          //交叉线测试函数Master_LED直显示,Slaver_LED,1-3,2-6,数值互换
  99          void across_test(unsigned int k)
 100          {
 101   1                      Master_LED = 0xC0;              //0x40;         //交叉线的标记
 102   1                      Slaver_LED = 0xC0;              //0x40;
 103   1                      delay(50);
 104   1                      Master_LED = direct[k];
 105   1                      Slaver_LED = across[k];
 106   1                      delay(50);
 107   1      }
 108          //---------------------------------
 109          //两边按顺序单点显示由a~g,.共8段,
 110          //
 111          void lin_dot(unsigned int a)
 112          {
 113   1      
 114   1              unsigned char x = 1;
 115   1              //unsigned int h = a;
 116   1                      while(a!=8)
 117   1                      {
C51 COMPILER V7.09   NET_TEST                                                              04/09/2004 19:32:30 PAGE 3   

 118   2                              a++;
 119   2                      
 120   2                              if(x == 0x00)
 121   2                                      x = 1;
 122   2                              
 123   2                              //Slaver_LED = direct[a]; 
 124   2                              //Master_LED = direct[a];
 125   2                              delay(50);
 126   2                              Slaver_LED = x;
 127   2                              Master_LED = x;
 128   2                              x = x<<1;
 129   2                              delay(50);
 130   2                      }
 131   1                      
 132   1      }
 133          
 134          void    timer0_int(void)        interrupt       1
 135          {
 136   1              TR0=0;                                  //停止计数
 137   1              TH0=0x3B;                               //给计数寄存器高8位赋初值
 138   1              TL0=0xC0;                               //给计数寄存器低8位赋初值
 139   1              if(!(counter--))                //当计完2次后=0,取反为1,之后在改变回初值,重新计数。
 140   1              {
 141   2                      counter=0x01;
 142   2                      if (P1 != 0xff)
 143   2                      {
 144   3                              key_val = P1;
 145   3                              if (key_val == 0xf7)
 146   3                              {
 147   4                                      if (step_counter == 8)
 148   4                                      {
 149   5                                              step_counter = 0;
 150   5                                      }
 151   4                                      step_counter++;
 152   4                              }
 153   3                          while (P1 != 0xff);
 154   3                      }
 155   2              }
 156   1              TR0=1;
 157   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    312    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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