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

📄 pmpdatat.lst

📁 用单片机C语言编程实现4台单片机之间的多机通信
💻 LST
字号:
C51 COMPILER V8.05a   PMPDATAT                                                             05/08/2009 01:23:26 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE PMPDATAT
OBJECT MODULE PLACED IN PMPDataT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PMPDataT.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include "PMPDataT.h"
   3          
   4          /* 延时t毫秒 */
   5          void delay(uint t)
   6          {
   7   1              uint i;
   8   1              while(t--)
   9   1              {
  10   2                      /* 对于11.0592M时钟,约延时1ms */
  11   2                      for (i=0;i<125;i++)
  12   2                      {}
  13   2              }
  14   1      } 
  15          uchar keyscan(void)
  16          {
  17   1              uchar scancode,tmpcode;
  18   1              P1 = 0xf0;                                              // 发全0行扫描码
  19   1              if ((P1&0xf0)!=0xf0)                                    // 若有键按下
  20   1              {
  21   2                      delay(10);                                      // 延时去抖动
  22   2                      if ((P1&0xf0)!=0xf0)                            // 延时后再判断一次,去除抖动影响
  23   2                      {
  24   3                              scancode = 0xfe;
  25   3                              while((scancode&0x10)!=0)               // 逐行扫描
  26   3                              {
  27   4                                      P1 = scancode;                          // 输出行扫描码
  28   4                                      if ((P1&0xf0)!=0xf0)            // 本行有键按下
  29   4                                      {
  30   5                                              tmpcode = (P1&0xf0)|0x0f;
  31   5      
  32   5                                              /* 返回特征字节码,为1的位即对应于行和列 */
  33   5                                              return((~scancode)+(~tmpcode));
  34   5                                      }
  35   4                                      else scancode = (scancode<<1)|0x01;             // 行扫描码左移一位
  36   4                              }
  37   3                      }
  38   2              }
  39   1              return(0);                                                              // 无键按下,返回值为0  
  40   1      }
  41          
  42          
  43          
  44          /* 串口初始化函数 */
  45          void init_serial()
  46          {
  47   1              TMOD = 0x20;                            // 定时器T1使用工作方式2
  48   1              TH1 = 0xfd;
  49   1              TL1 = 0xfd;
  50   1              TR1 = 1;                                        // 开始计时
  51   1              PCON = 0x00;                            // SMOD = 1
  52   1              SCON = 0xd0;                            // 工作方式,9位数据位,波特率9600kbit/s,允许接收 
  53   1      }
  54          void Getkey()
  55          {
C51 COMPILER V8.05a   PMPDATAT                                                             05/08/2009 01:23:26 PAGE 2   

  56   1          switch(get_key)
  57   1                      {
  58   2                      case 0x11:                                              // 1行1列,数字0
  59   2                                    key=0xc0;
  60   2                                        break;
  61   2                              case 0x21:                                              // 1行2列,数字1
  62   2                       key=0xf9;
  63   2                                      break;                  
  64   2                              case 0x41:                                              // 1行3列,数字2
  65   2                                      key=0xa4;
  66   2                                      break;
  67   2                      case 0x81:                                              // 1行4列,数字3
  68   2                                      key=0xb0;
  69   2                                      break;
  70   2                              case 0x12:                                              // 2行1列,数字4
  71   2                      key=0x99;
  72   2                                      break;
  73   2                              case 0x22:                                              // 2行2列,数字5
  74   2                                        key=0x92;
  75   2                                      break;
  76   2                              case 0x42:                                              // 2行3列,数字6
  77   2                                         key=0x82;
  78   2                                      break;
  79   2                              case 0x82:                                              // 2行4列,数字7
  80   2                                         key=0xf8;
  81   2                                      break;
  82   2                              case 0x14:                                              // 3行1列,数字8
  83   2                                         key=0x80;
  84   2                                         break;
  85   2                              case 0x24:                                              // 3行2列,数字9
  86   2                                       key=0x90;
  87   2                                      break;
  88   2                              case 0x44:                                              // 3行3列,10
  89   2                                        key=0x88;
  90   2                                      break;
  91   2                              case 0x84:                                              // 3行4列,11
  92   2                                       key=0x83;
  93   2                                      break;
  94   2                              case 0x18:                                              // 4行1列,12
  95   2                                       key=0xc6;
  96   2                                      break;
  97   2                              case 0x28:                                              // 4行2列,13
  98   2                                       key=0xa1;
  99   2                                      break;
 100   2                              case 0x48:                                              // 4行3列,14
 101   2                                       key=0x86;
 102   2                                      break;
 103   2                              case 0x88:                                              // 3行4列,15
 104   2                                       key=0x8e;
 105   2                                      break;
 106   2                              default:break;
 107   2                      }
 108   1      
 109   1      
 110   1      }
 111          
 112          /* 发送数据函数 */
 113          void senddata(uchar buf)
 114          {
 115   1      
 116   1              /* 发送数据 */
 117   1                      TI = 0;
C51 COMPILER V8.05a   PMPDATAT                                                             05/08/2009 01:23:26 PAGE 3   

 118   1                      TB8 = 0;                                // 发送数据帧
 119   1                      SBUF =buf;      
 120   1                      while(!TI);
 121   1                      TI = 0;
 122   1      }
 123          
 124          /* 主程序 */
 125          void main()
 126          { 
 127   1              uchar i = 0;
 128   1              key=0xc0; 
 129   1              while(1)
 130   1          {
 131   2                       get_key = keyscan();                           // 调用键盘扫描函数 
 132   2                   Getkey();
 133   2                       buf=key;
 134   2                       P2=key;
 135   2      
 136   2      /* 通过P0口读要访问的从机地址 */
 137   2              P0 = 0xff;
 138   2              addr = P0&0x0f;
 139   2              init_serial();                          // 串口初始化 
 140   2      
 141   2              EA = 1;                                         // 关闭所有中断
 142   2              
 143   2              TI = 0;
 144   2              TB8 = 1;                                // 发送地址帧   
 145   2              SBUF = addr;
 146   2              while(!TI);
 147   2              TI = 0;
 148   2              senddata(buf);                  // 发送数据
 149   2               
 150   2              } 
 151   1              
 152   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    300    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       1
   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 + -