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

📄 12-5z.lst

📁 一些简单的c51程序
💻 LST
字号:
C51 COMPILER V7.09   12_5Z                                                                 08/11/2005 18:57:04 PAGE 1   


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

line level    source

   1          #include <stdio.h>
   2          #include <reg51.h>
   3          
   4          #define         LampComm        P0_0
   5          #define TRUE 1
   6          #define FALSE 0
   7          //以上语句定义主机正在通讯闪灯信号
   8          #define         SelectComm1     P0_1
   9          #define         SelectComm2     P0_2
  10          #define         SelectComm3     P0_3
  11          #define         SelectComm4     P0_4
  12          #define         SelectComm5     P0_5
  13          #define         SelectComm6     P0_6
  14          //以上语句定义主机通讯的从机号
  15          #define         MACHINECOMM_OK   0x11  
  16          //以上语句定义主机通讯传送握手信号
  17          #define         MACHINECOMM_RET 0x88    
  18          //以上语句定义从机回复通讯握手信号
  19          
  20          #define         DELAY_VALUE     3
  21          
  22          sbit            P0_0=P0^0;
  23          sbit            P0_1=P0^1;
  24          sbit            P0_2=P0^2;
  25          sbit            P0_3=P0^3;
  26          sbit            P0_4=P0^4;
  27          sbit            P0_5=P0^5;
  28          sbit            P0_6=P0^6;
  29          sbit            P0_7=P0^7;
  30          
  31          sbit            P1_0=P1^0;
  32          sbit            P1_1=P1^1;
  33          sbit            P1_2=P1^2;
  34          sbit            P1_3=P1^3;
  35          sbit            P1_4=P1^4;
  36          sbit            P1_5=P1^5;
  37          sbit            P1_6=P1^6;
  38          sbit            P1_7=P1^7;
  39          
  40          sbit            P2_0=P2^0;
  41          sbit            P2_1=P2^1;
  42          sbit            P2_2=P2^2;
  43          sbit            P2_3=P2^3;
  44          sbit            P2_4=P2^4;
  45          sbit            P2_5=P2^5;
  46          sbit            P2_6=P2^6;
  47          sbit            P2_7=P2^7;
  48          
  49          sbit            P3_2=P3^2;
  50          sbit            P3_3=P3^3;
  51          
  52          
  53          bit EvRcv=FALSE;                            //是否收到串行数据的标志位
  54          
  55          unsigned char rcvdata=0;                //从串口存储接收的变量
C51 COMPILER V7.09   12_5Z                                                                 08/11/2005 18:57:04 PAGE 2   

  56          void send(char *temp,int j);            //发送子程序
  57          void initial(void);                         //初始化子程序
  58          void delay(short i);                        //延时子程序
  59          
  60          void main(void)
  61          {
  62   1              unsigned char datacomm,count=0;
  63   1              datacomm=MACHINECOMM_OK;
  64   1              initial();
  65   1              while(1)
  66   1              {
  67   2                      for (count=0;count<6;count++)
  68   2                      {
  69   3                              switch(count)
  70   3                              {
  71   4                              case 0:  SelectComm1=1;
  72   4                                      break;
  73   4                              case 1:  SelectComm2=1;
  74   4                                      break;
  75   4                              case 2:  SelectComm3=1;
  76   4                                      break;
  77   4                              case 3:  SelectComm4=1;
  78   4                                      break;
  79   4                              case 4:  SelectComm5=1;
  80   4                                      break;
  81   4                              case 5:  SelectComm6=1;
  82   4                                      break;
  83   4                              default:break;
  84   4                              }                                //根据count的不同值,选通不同的从机
  85   3                              send(&datacomm,1);            //发送握手信号
  86   3                              while(1)
  87   3                              {
  88   4                                      if(EvRcv)                  //如果接收到数据
  89   4                                      {
  90   5                                              if(rcvdata==MACHINECOMM_RET)
  91   5                                              {  
  92   6       LampComm=TRUE;
  93   6                                              delay(DELAY_VALUE);
  94   6                                              LampComm=FALSE;
  95   6                                              }                         //指示灯闪烁          
  96   5                                              EvRcv=FALSE;
  97   5                                              break;                 //退出等待
  98   5                                      }
  99   4                              }
 100   3                              
 101   3                      }
 102   2                      SelectComm1=0;
 103   2                      SelectComm2=0;
 104   2                      SelectComm3=0;
 105   2                      SelectComm4=0;
 106   2                      SelectComm5=0;
 107   2                      SelectComm6=0;                    //再次不选通所有的从机
 108   2              }
 109   1      }
 110          
 111          void initial()                                   //初始化子程序
 112          {
 113   1              IP=0x10;                              //定义串口为高优先级中断
 114   1              IE=0x97;                              //允许串口、中断0、1、定时器0
 115   1              TCON=0x05;
 116   1              
 117   1              TMOD=0x21;              //定时器1为自动装入(auto-load)方式
C51 COMPILER V7.09   12_5Z                                                                 08/11/2005 18:57:04 PAGE 3   

 118   1              PCON=0;                 //SMOD(PCON.7)=1时,波特率翻倍.//smod=1 (晶振为
 119   1      //11.0592M时为0)
 120   1              
 121   1              SCON=0xD0;              //串行口工作方式 : 9位UART, 波特率可变
 122   1              TH1=0xf3;
 123   1              TL1=0xf3;                //
 124   1              PCON=0x80|PCON;  
 125   1      //SMOD=1;                        //波特率设置 : 9600 baud(E8--24MHZ)
 126   1              //SMOD=0=4.8kbps
 127   1              //th1=tl1=fd,smod=0 ,=19.2kbps
 128   1              TR1=1;                   //启动定时器1
 129   1              SelectComm1=0;
 130   1              SelectComm2=0;
 131   1              SelectComm3=0;
 132   1              SelectComm4=0;
 133   1              SelectComm5=0;
 134   1              SelectComm6=0;
 135   1      }
 136          
 137          void send(unsigned char *temp,int j)
 138          {
 139   1              int i=0;
 140   1              LampComm=TRUE;
 141   1              EA=0;
 142   1              for(i=0;i<=j-1;i++)             //按发送数据的长度来发送数据
 143   1              {
 144   2                      ACC=*(temp+i);
 145   2                      TB8=P;
 146   2                      SBUF=ACC;               //发送数据
 147   2                      while(TI==0);           //发送数据完毕时,TI会自动置高
 148   2                      TI=0;                   //发送数据完毕,将TI清零,准备下一次发送
 149   2              }
 150   1              EA=1;
 151   1              LampComm=FALSE;
 152   1      }
 153          
 154          void Rcv_INT(void) interrupt 1
 155          //串口中断优先级为1
 156          {
 157   1              LampComm=TRUE;
 158   1              if(RI)                    //如果收到数据则进行下面的操作
 159   1              {
 160   2                      ACC=SBUF;                   //将串行通信的缓存中的数据存入寄存器A
 161   2                      if(P==RB8)
 162   2                      {
 163   3                              rcvdata=ACC;    //将寄存器A中的数据存入变量rcvdata
 164   3                              EvRcv=TRUE;     //将已经接收到数据的标志位置高
 165   3                      }
 166   2                      RI=0;                   //RI清零
 167   2              }
 168   1              LampComm=FALSE;
 169   1      }
 170          
 171          //延时子程序
 172          void delay(int i)
 173          {
 174   1              int j=0;
 175   1              i=i*DELAY_VALUE;
 176   1              while (j<i)j++;
 177   1      }
 178          

C51 COMPILER V7.09   12_5Z                                                                 08/11/2005 18:57:04 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    292    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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