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

📄 myapi.lst

📁 单片机485通信单发单收单发多收及主从模式
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MYAPI                                                                 03/23/2009 12:46:39 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MYAPI
OBJECT MODULE PLACED IN MYAPI.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE MYAPI.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include"MYAPI.h"
   3          extern BYTE DISPLAYNUM;
   4          extern BYTE oldSW;
   5          extern BYTE TorRF;
   6          extern BYTE COUNT1;
   7          extern BYTE COUNT2;
   8          extern BYTE SENDNUM;
   9          extern BYTE RENUM;
  10          extern BYTE EERCOUNT;
  11          extern BYTE MASTERNUM;//累加主机接收到的个数 主机中使用
  12          extern BYTE SLAVERNUM;//累加从机发送的个数,从机中使用
  13          extern BYTE ADDRSlaver;//主机使用的 地址变量
  14          extern BYTE ACKMASTER;
  15          extern BYTE ACKSLAVER;
  16          extern BYTE COUNT3;
  17          
  18          void CPU_INIT(void)//中断  定时器  串口初始化
  19          {       
  20   1              ACKMASTER       =       0;
  21   1              ACKSLAVER       =       0;
  22   1              COUNT1  =       0;
  23   1              COUNT2  =       0;
  24   1              COUNT3  =       0;      
  25   1              DISPLAYNUM       =      0;
  26   1              SENDNUM          =      0x00;
  27   1              RENUM            =      0;
  28   1              oldSW           =       0xFF;
  29   1              TorRF   =       1;//不能接收
  30   1              TR_CFG  =       1;
  31   1              P2              =       0xFF;
  32   1              //中断
  33   1              IE              =       0x0A;//EA _ _ ES ET1 EX1 ET0 EX0
  34   1              IP              =       0x08;//- - - PS PT1 PX1 PT0 PX0
  35   1              //定时器
  36   1              TMOD    =       0x11;//GATE C/_T M1 M0(T1) GATE C/_T M1 M0(T0)
  37   1              TCON    =       0x00;//TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
  38   1              TH0             =       0x3C; 
  39   1              TL0             =       0xAF;//sw定时初值
  40   1              TH1             =       0xB1; 
  41   1              TL1             =       0xE0;//Display定时初值
  42   1              //T2
  43   1      //      T2CON   =       0x30;
  44   1      //      RCAP2H  =       0xff;
  45   1      //      RCAP2L  =       0xee;
  46   1      //      TH2             =       0xff;
  47   1      //      TL2             =       0xee;
  48   1              
  49   1      
  50   1              //串口
  51   1              SCON    =       0x90;//SM0 SM1 SM2 REN TB8 RB8 TI RI
  52   1              PCON    =       PCON|0x80;//SMOD - - - - - - - 
  53   1              EA              =       1;
  54   1              TR0             =       1;
  55   1      }
C51 COMPILER V7.50   MYAPI                                                                 03/23/2009 12:46:39 PAGE 2   

  56          //根据不同的拨码开关值执行不同测试程序(SW1 SW2 SW3 ~SWT)          
  57          //0111(7F)数码管  1011(BF)发光二极管跑马灯
  58          //拨码开关(1101(DF)红 1110(EF)绿)  
  59          //通信(0111(F7)单发 1011(FB)单收  1101(FD)单发多收,多机通信)  0101 SW5==0为主机   1001  SW6==0为从机
  60          void STATE_SW(void)
  61          {
  62   1                      BYTE tmp;
  63   1                      tmp     =       P1;
  64   1                      tmp =   tmp|0x01;
  65   1      
  66   1                      switch(tmp)
  67   1                      {
  68   2                              case 0x7F:
  69   2                              {
  70   3                                      TR1             =       1;TorRF =       1;
  71   3                                      if(COUNT1       <       5) COUNT1++;
  72   3                                      else {COUNT1 = 0; if(DISPLAYNUM<99) ++DISPLAYNUM;else {SR2=SR1=ST1=ST2=1;DISPLAYNUM=0;}}
  73   3                              }
  74   2                              break;
  75   2                              case 0xBF:
  76   2                                      LED();  
  77   2                                      break;
  78   2                              case 0xF7:
  79   2                                      AtoB();
  80   2                                      break;
  81   2                              case 0xFB:
  82   2                                      AreB();
  83   2                                      break;
  84   2                              case 0xFD:
  85   2                              case 0xF5:
  86   2                              case 0xF9:
  87   2                                      MasterTOSlaver();
  88   2                                      break;
  89   2                              case 0x01:
  90   2                                      CPU_INIT();
  91   2                                      break;
  92   2                              default:
  93   2                                              TESTSW();
  94   2                                      if(SW1) {DisplayOFF();}
  95   2                                      if(SW6) {AreBOFF();}
  96   2                                      if(SW5) {AtoBOFF();}                            
  97   2                                      break;
  98   2                      }
  99   1                      oldSW   =       tmp;
 100   1      }
 101          void Delay(BYTE n)//大约n ms
 102          {
 103   1              BYTE i;   
 104   1          while(n--)   
 105   1              for(i = 0; i < 124; i++);
 106   1      }
 107          void Display(void)
 108          {       
 109   1      
 110   1              if(DISPLAYNUM   <=      9)
 111   1              {
 112   2                      P0      =       0xF0|DISPLAYNUM;
 113   2                      if(TorRF        ==      1) {SR1 =       1;ST2           =       1; ST1  =       0;}
 114   2                      else {ST1       =       1;SR2   =       1;SR1   =       0; }
 115   2              }
 116   1              else
 117   1              {
C51 COMPILER V7.50   MYAPI                                                                 03/23/2009 12:46:39 PAGE 3   

 118   2                      BYTE TMP1;
 119   2                      BYTE TMP2;
 120   2                      TMP1    =       DISPLAYNUM%10;
 121   2                      TMP2    =       DISPLAYNUM/10;
 122   2                      if(TorRF        ==      1) {SR1 =       SR2     =       1;ST2   =       1;P0    =       TMP1|0xF0;ST1   =       0;Delay(40);ST1 =       1;P0    =       TMP2|0xF0;ST2   =       0;}
 123   2                      else {ST1       =       ST2     =       1;SR2   =       1;P0    =       TMP1|0xF0;SR1   =       0;Delay(40);SR1 =       1;P0            =       TMP2|0xF0;SR2   =       0;}
 124   2              }
 125   1      
 126   1      }
 127          void DisplayOFF(void)
 128          {TR1    =       0;SR2=SR1=ST1=ST2=1;DISPLAYNUM=0;}
 129          void LED(void)//跑马灯
 130          {
 131   1              BYTE tmp;
 132   1              tmp     =       P2|0x0F;
 133   1              P2      =       tmp&0xF7;
 134   1              Delay(255);
 135   1              P2      =       tmp&0xF3;
 136   1              Delay(255);
 137   1              P2      =       tmp&0xF9;
 138   1              Delay(255);
 139   1              P2      =       tmp&0xFC;
 140   1              Delay(255);
 141   1              P2      =       tmp&0xFE;
 142   1              Delay(255);
 143   1              P2      =       tmp&0xFF;
 144   1              Delay(255);
 145   1      }

⌨️ 快捷键说明

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