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

📄 8123.lst

📁 gm8123串口扩展开发程序
💻 LST
字号:
C51 COMPILER V7.09   8123                                                                  08/01/2008 01:08:03 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE 8123
OBJECT MODULE PLACED IN 8123.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 8123.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #define DELAY_TIME 30000 //Delay time
   3          /**********************I/O 定义***********************/
   4          sbit MS=P1^0;
   5          sbit STADD0=P1^1;
   6          sbit STADD1=P1^2;
   7          sbit SRADD0=P1^3;
   8          sbit SRADD1=P1^4;
   9          sbit RESET=P1^5;
  10          sbit TXE=P1^6;
  11          sbit LED=P1^7;
  12          /******************数据变量定义*****************/
  13          unsigned char ReceiveBuff0=0;
  14          unsigned char ReceiveBuff1=0;
  15          unsigned char ReceiveBuff2=0;
  16          unsigned char ReceiveBuff3=0;
  17          unsigned char Contr_data;
  18          unsigned char i=0;
  19          /*********************************************/
  20          /*函数名称:delay.C */
  21          /*函数功能: 延时程序 */
  22          /*********************************************/
  23          void delay(unsigned int m)
  24          {
  25   1              unsigned int n;
  26   1              n=0;
  27   1              while(n < m)
  28   1              {n++;}
  29   1              return;
  30   1      }
  31          /*********************************************/
  32          /*函数名称:send0.c */
  33          /*函数功能: 选择0口地址 */
  34          /*********************************************/
  35          void send0()
  36          {
  37   1              STADD1=0;
  38   1              STADD0=0;
  39   1      }
  40          /*********************************************/
  41          /*函数名称:send1.c */
  42          /*函数功能: 选择1口地址 */
  43          /*********************************************/
  44          void send1()
  45          {
  46   1              STADD1=0;
  47   1              STADD0=1;
  48   1      }
  49          /*********************************************/
  50          /*函数名称:send2.c */
  51          /*函数功能: 选择2口地址 */
  52          /*********************************************/
  53          void send2()
  54          {
  55   1              STADD1=1;
C51 COMPILER V7.09   8123                                                                  08/01/2008 01:08:03 PAGE 2   

  56   1              STADD0=0;
  57   1      }
  58          /*********************************************/
  59          /*函数名称:send3.c */
  60          /*函数功能: 选择3口地址 */
  61          /*********************************************/
  62          void send3()
  63          {
  64   1              STADD1=1;
  65   1              STADD0=1;
  66   1      }
  67          
  68          /*********************************************/
  69          /*函数名称:send1_data.c */
  70          /*函数功能:1口发射数据
  71          /*********************************************/
  72          void send1_data()
  73          {
  74   1              send1();
  75   1              SBUF=ReceiveBuff1;
  76   1              while(TI==0);
  77   1              TI=0;
  78   1      }
  79          /*********************************************/
  80          /*函数名称:send2_data.c */
  81          /*函数功能:2口发射数据
  82          /*********************************************/
  83          void send2_data()
  84          {
  85   1              send2();
  86   1              SBUF=ReceiveBuff2;
  87   1              while(TI==0);
  88   1              TI=0;
  89   1      }
  90          /*********************************************/
  91          /*函数名称:send3_data.c */
  92          /*函数功能:3口发射数据
  93          /*********************************************/
  94          void send3_data()
  95          {
  96   1              send3();
  97   1              SBUF=ReceiveBuff3;
  98   1              while(TI==0);
  99   1              TI=0;
 100   1      }
 101          /******************************************************/
 102          /*函数名称: MAIN.C */
 103          /*函数功能: 主机主程序 */
 104          /*********************************************/
 105          void main(void)
 106          {
 107   1      
 108   1      TMOD = 0x20; //指定定时器1 工作在方式2
 109   1      IE = 0x90; //开串行口中断
 110   1      SCON=0xc0; //串行口工作在方式3
 111   1      TH1 = 0xFA; //装入定时器1 初值,设置主机工作波特率为4800bps
 112   1      TL1 = 0xFA;
 113   1      PCON=0x00;
 114   1      RESET=0; //对GM8125 进行复位操作
 115   1      RESET=1;
 116   1      delay(DELAY_TIME);
 117   1      Contr_data=0xf3; //装入命令字初值
C51 COMPILER V7.09   8123                                                                  08/01/2008 01:08:03 PAGE 3   

 118   1      TR1=1; //启动定时器1
 119   1      MS=0; //GM8125 工作在写命令字模式下
 120   1      send0(); //置GM8125 命令字地址
 121   1      SBUF=Contr_data; //设置GM8125 子串口波特率为1200bps,母串口波特率为4800bps
 122   1      while(TI==0);
 123   1      TI=0;
 124   1      delay(DELAY_TIME);
 125   1      REN=1;
 126   1      MS=1; //读命令字
 127   1      delay(DELAY_TIME);
 128   1      
 129   1              while (ReceiveBuff0!=Contr_data) //验证写入的命令字是否正确,不正确则重新写
 130   1              {
 131   2              MS=0; //GM8125 工作在写命令字工作模式下
 132   2              SBUF=Contr_data;
 133   2              while(TI==0);
 134   2              TI=0;
 135   2              delay(DELAY_TIME);
 136   2              REN=1;
 137   2              MS=1; //读命令字
 138   2              delay(DELAY_TIME);
 139   2          LED=!LED;
 140   2              }
 141   1      
 142   1      REN=0;
 143   1      MS=0; //设置GM8125 工作在多通道工作模式下
 144   1      TR1=0; //定时器1 停止
 145   1      TH1 = 0xFA; //装入定时器1 初值,设置主控MCU 工作波特率为115200bps
 146   1      TL1 = 0xFA;
 147   1      PCON=0x00;
 148   1      TR1=1; //启动定时器1
 149   1              //主控MCU 发送/接收程序
 150   1              REN=1;
 151   1      
 152   1      
 153   1          ReceiveBuff1=0x01;
 154   1          ReceiveBuff2=0x02;
 155   1          ReceiveBuff3=0x03; 
 156   1      
 157   1        
 158   1      
 159   1        
 160   1      
 161   1      
 162   1      
 163   1               while(1)
 164   1                   {  
 165   2                         
 166   2                          send1_data();
 167   2                          delay(DELAY_TIME);
 168   2                       
 169   2                          send2_data();
 170   2                          delay(DELAY_TIME);
 171   2                       
 172   2                      
 173   2                          send3_data();
 174   2                          delay(DELAY_TIME);     
 175   2                       }
 176   1      
 177   1      
 178   1      }
 179          
C51 COMPILER V7.09   8123                                                                  08/01/2008 01:08:03 PAGE 4   

 180          void CommReceive(void) interrupt 4
 181          {
 182   1              int i;
 183   1              if(RI)
 184   1              {
 185   2                  for(i=0;i<1;i++)
 186   2                  {
 187   3                       if(SRADD1==0&&SRADD0==0)
 188   3                       {
 189   4                          ReceiveBuff0=SBUF; //读命令字存入ReceiveBuff0
 190   4                          break;
 191   4                               }
 192   3                               if(SRADD1==0&&SRADD0==1)
 193   3                       {
 194   4                          ReceiveBuff1=SBUF; //读命令字存入ReceiveBuff0
 195   4                          break;
 196   4                                }
 197   3                                if(SRADD1==1&&SRADD0==0)
 198   3                        {
 199   4                           ReceiveBuff2=SBUF; //读命令字存入ReceiveBuff0
 200   4                           break;
 201   4                                }
 202   3                                if(SRADD1==1&&SRADD0==1)
 203   3                        {
 204   4                          ReceiveBuff3=SBUF; //读命令字存入ReceiveBuff0
 205   4                          break;
 206   4                                }
 207   3                        }
 208   2                        RI=0;
 209   2              }
 210   1      }


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