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

📄 key_uart.lst

📁 51系列单片机实验课程:计数 (通过串口
💻 LST
字号:
C51 COMPILER V7.06   KEY_UART                                                              12/12/2007 16:26:50 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE KEY_UART
OBJECT MODULE PLACED IN Key_Uart.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE Key_Uart.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          
   3          sbit SEGLOCK = P1^3;
   4          sbit POSITLOCK = P1^2;
   5          
   6          code unsigned char LedCode[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86
             -,0x8e};
   7          code unsigned char PositCode[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
   8          code unsigned char ASCII[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
   9          
  10          unsigned char Rch,Tch;
  11          unsigned char Rcounter,Tcounter;
  12          unsigned char DisBuf[8];
  13          
  14          void SegLock (void)
  15          {
  16   1              SEGLOCK = 1;
  17   1              SEGLOCK = 0;
  18   1      }
  19          
  20          void PositLock (void)
  21          {
  22   1              POSITLOCK = 1;
  23   1              POSITLOCK = 0;
  24   1      }
  25          
  26          void Delay (unsigned int Dat)
  27          {
  28   1              unsigned int i;
  29   1              for (i=0;i<Dat;i++);
  30   1      }
  31          
  32          void Display (void)
  33          {
  34   1              unsigned char i;
  35   1              for (i=0;i<8;i++)
  36   1              {
  37   2                      P0 = LedCode[DisBuf[i]];
  38   2                      SegLock();
  39   2                      P0 = PositCode[i];
  40   2                      PositLock();
  41   2                      Delay(10);
  42   2                      P0 = 0x00;
  43   2                      PositLock();
  44   2              }
  45   1      }
  46          
  47          void DisPrint (void)
  48          {
  49   1              DisBuf[0] = Tch >> 4;
  50   1              DisBuf[1] = Tch & 0x0f;
  51   1              DisBuf[2] = Tcounter / 10;
  52   1              DisBuf[3] = Tcounter % 10;
  53   1              DisBuf[4] = Rch >> 4;
  54   1              DisBuf[5] = Rch & 0x0f;
C51 COMPILER V7.06   KEY_UART                                                              12/12/2007 16:26:50 PAGE 2   

  55   1              DisBuf[6] = Rcounter / 10;
  56   1              DisBuf[7] = Rcounter % 10;
  57   1      }
  58          
  59          unsigned char Kbhit (void)
  60          {
  61   1              P2 = 0xf0;
  62   1              if ( P2==0xf0 ) return (0);
  63   1              else return (1);
  64   1      }
  65          
  66          unsigned char GetKeyCode ( void )
  67          {
  68   1              unsigned char keycode;  //定义一个键值变量用于判断键值
  69   1              P2 = 0x0f;
  70   1              keycode = P2;
  71   1              P2 = 0xf0;
  72   1              keycode |= P2;  //将组合以后的键值存储
  73   1              switch ( keycode )      
  74   1              {
  75   2                      case 0xee: return ( 15 );       break;
  76   2                      case 0xde: return ( 0 );        break;
  77   2                      case 0xbe: return ( 14 );       break;
  78   2                      case 0x7e: return ( 13 );       break;
  79   2                      case 0xed: return ( 7 );        break;
  80   2                      case 0xdd: return ( 8 );        break;
  81   2                      case 0xbd: return ( 9 );        break;
  82   2                      case 0x7d: return ( 12 );       break;
  83   2                      case 0xeb: return ( 4 );        break;
  84   2                      case 0xdb: return ( 5 );        break;
  85   2                      case 0xbb: return ( 6 );        break;
  86   2                      case 0x7b: return ( 11 );       break;
  87   2                      case 0xe7: return ( 1 );        break;
  88   2                      case 0xd7: return ( 2 );        break;
  89   2                      case 0xb7: return ( 3 );        break;
  90   2                      case 0x77: return ( 10 );       break;
  91   2              }
  92   1      }
  93          
  94          void main (void)
  95          {
  96   1              SCON = 0x50;
  97   1              TMOD = ( TMOD&0x0F ) | 0x20;
  98   1              TH1 = -11059200/12/32/9600;
  99   1              TL1 = TH1;
 100   1              TR1 = 1;
 101   1              ES = 1;
 102   1              EA = 1;
 103   1              while (1)
 104   1              {
 105   2                      DisPrint();
 106   2                      Display();
 107   2                      if ( Kbhit() )
 108   2                      {
 109   3                              SBUF = ASCII[GetKeyCode()];
 110   3                              TI = 0;
 111   3                              while ( TI==0 );
 112   3                              TI = 0;
 113   3                              if(++Tcounter >= 100)
 114   3                                      Tcounter = 0;
 115   3                              Tch = ASCII[GetKeyCode()];
 116   3                              while ( Kbhit() )
C51 COMPILER V7.06   KEY_UART                                                              12/12/2007 16:26:50 PAGE 3   

 117   3                              {       
 118   4                                      DisPrint();     
 119   4                                      Display();
 120   4                              }
 121   3                      }
 122   2              }
 123   1      }
 124          
 125          void Uart_int (void) interrupt 4
 126          {
 127   1              if (RI)
 128   1              {
 129   2                      Rch = SBUF;
 130   2                      RI = 0;
 131   2                      if (++Rcounter >= 100)
 132   2                              Rcounter = 0;
 133   2              }
 134   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    380    ----
   CONSTANT SIZE    =     40    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12    ----
   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 + -