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

📄 text.lst

📁 MSC1210的ADC采集以及RS232通讯读写CPLD的例子程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  TEXT                                                                   01/18/2006 15:17:31 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE TEXT
OBJECT MODULE PLACED IN Text.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE Text.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include <REG1210.H>      /* special function register 1210       */
   3          #include <stdio.h>        /* standard I/O .h-file                 */
   4          #include <rtx51tny.h>     /* RTX-51 tiny functions & defines      */
   5          #include <stdlib.h>
   6          #include <string.h>
   7          #include <16b.h>
   8          
   9          #define uint  unsigned int
  10          #define uchar unsigned char
  11          
  12          
  13          sbit   DAC8532=P1^4;         /*dac8532                                  */    
  14          char   data strx[6];
  15          unsigned char data ccnun=4,chanl_n=0;   
  16          uint   daval;
  17          int data_buf[10];
  18          int testad=0;
  19          //void Uart0Send(char card_add,char f,int a,int DATA[],uchar len1 ,uchar len);                          
  20          /*write dac8532 */
  21          void write_8532(unsigned int val,unsigned char port) 
  22          {
  23   1          uchar i;
  24   1              SPICON = SPICON_8532;
  25   1              DAC8532 =0;
  26   1              for(i=0;i<5;i++)
  27   1              {;}
  28   1          if(port==1)
  29   1              {
  30   2                      while((AIE&0X08)!=0X08){}SPIDATA=Dac8532A;
  31   2                      while((AIE&0X08)!=0X08){}SPIDATA=((val>>8)&0xFF);
  32   2              while((AIE&0X08)!=0X08){}SPIDATA=((val)&0xFF);
  33   2              }
  34   1              if(port==2)
  35   1              {
  36   2                      while((AIE&0X08)!=0X08){}SPIDATA=Dac8532B;
  37   2                      while((AIE&0X08)!=0X08){}SPIDATA=((val>>8)&0xFF);
  38   2              while((AIE&0X08)!=0X08){}SPIDATA=((val)&0xFF);
  39   2              }
  40   1              for(i=0;i<5;i++)
  41   1              {;} 
  42   1              DAC8532 =1;
  43   1      }
  44          
  45          /****int to char  ******/
  46          char* itoa(int argc)
  47          {
  48   1              char data s[6];
  49   1              sprintf(s,"%d",argc);
  50   1              return s;
  51   1      }
  52          
  53          
  54             /****串口0发送子程序 ******/  
  55          void Uart0Send(char card_add,char f,int a,int DATA[],uchar len1 ,uchar len)
C51 COMPILER V7.01  TEXT                                                                   01/18/2006 15:17:31 PAGE 2   

  56          {
  57   1              uchar xdata i=0,j=0;
  58   1              uchar data dd[6];
  59   1              TI_0=0; 
  60   1              SBUF0='F';  
  61   1              while(!TI_0);
  62   1              TI_0=0;
  63   1              SBUF0='F';  
  64   1              while(!TI_0); 
  65   1              TI_0=0;
  66   1              SBUF0=ADDRESS;  
  67   1              while(!TI_0); 
  68   1              TI_0=0;
  69   1              SBUF0=card_add;  
  70   1              while(!TI_0); 
  71   1              TI_0=0;
  72   1              SBUF0=f;  
  73   1              while(!TI_0); 
  74   1              TI_0=0;
  75   1              j=0;
  76   1              strcpy(dd,itoa(a));          
  77   1              while(dd[j])
  78   1              {
  79   2                      SBUF0=dd[j++];  
  80   2                      while(!TI_0);
  81   2                      TI_0=0;
  82   2              }  
  83   1              if(len!=0)
  84   1              {
  85   2                      SBUF0=',';  
  86   2                      while(!TI_0);
  87   2                      TI_0=0; 
  88   2                      for(i=len1;i<(len+len1);i++)
  89   2                      {
  90   3                              j=0;
  91   3                      strcpy(dd,itoa(DATA[i]));          
  92   3                      while(dd[j])
  93   3                      {
  94   4                                      SBUF0=dd[j++];  
  95   4                              while(!TI_0);
  96   4                                      TI_0=0;
  97   4                      }  
  98   3                              if (i != (len+len1-1))
  99   3                      {
 100   4                              SBUF0=',';  
 101   4                              while(!TI_0);
 102   4                                      TI_0=0; 
 103   4                      }       
 104   3                      }
 105   2              }
 106   1              SBUF0='E';  
 107   1              while(!TI_0); 
 108   1              TI_0=0;
 109   1              SBUF0='E';  
 110   1              while(!TI_0); 
 111   1              TI_0=0;
 112   1              SBUF0='\n';  
 113   1              while(!TI_0); 
 114   1              TI_0=0;
 115   1      }
 116          
 117                /*串口0数据处理子程序*/
C51 COMPILER V7.01  TEXT                                                                   01/18/2006 15:17:31 PAGE 3   

 118          void read_cmd(char i_cmd_buf, char* rebuf)
 119          {
 120   1              char i=0,j=0,k=0, *p1,*p2,*p3;
 121   1              p1=&h_cmd.buf[i_cmd_buf];
*** WARNING C182 IN LINE 121 OF TEXT.C: pointer to different objects
 122   1              p2=rebuf;
 123   1      
 124   1              while (i<5)  //数字前面字符的个数5
 125   1              {
 126   2                      *p1++=*p2++;
 127   2                      i++;
 128   2              } 
 129   1              p3=&strx[0];
 130   1              for (i=0;i<=6;i++)strx[i]=0; //整型最多6个字符                          
 131   1              while (1)
 132   1              {
 133   2                      if (*p2==69) // If ASCII 'E' 
 134   2                      {                                               
 135   3                              h_cmd.buf[i_cmd_buf].da[j++]=atoi(strx);
 136   3                              break;
 137   3                      }
 138   2                      if (*p2==0x2c) // If ASCII ',' 
 139   2                      {                                               
 140   3                              h_cmd.buf[i_cmd_buf].da[j++]=atoi(strx);
 141   3                              for (i=0;i<=6;i++)strx[i]=0;
 142   3                              p2++;
 143   3                              p3=&strx[0];
 144   3                      }
 145   2                      else *p3++=*p2++;
 146   2              }
 147   1              Serial0_Receive.buf_present_pos = 0;           //Now location of buffer,initial value is buf_start
 148   1              Serial0_Receive.pre_char = 0;                  //Prechar of present position,initial value is 0
 149   1              Serial0_Receive.cmd_finish = 0;                //This is 1 command end has been accepted ,initial value i
             -s 0
 150   1      }
 151          /* initial spi ,SPICON在各自的子程序中设置*/
 152          void init_spi(void)
 153          {
 154   1              P1DDRH=0x75;            /* SPI port setup */
 155   1              SPITCON=SCLK_EN|DRV_EN;
 156   1          PDCON &= ~(PDSPI);          /* turn on SPI  */
 157   1      }
 158          
 159           /* initial ADC */
 160          void init_adc(void)
 161          {               
 162   1              int decimation=720;                                             /* factor of extractive  */
 163   1          EAI = CLEAR;                                  
 164   1              ACLK = 4;                                                                       /* ACLK = 11.0592 MHz/(9+1) = 1.10592 MHz */
 165   1              ADCON0 &= (~(BOD|EVREF|VREFH|EBUF)|PGA_1);      /* Vref Off,Extenal Verf,Buff off,BOD off, PGA=1 */
 166   1              ADCON1 = (POL|SM_3|CAL_1);                                      /* Unipolar, sinc3, self calibration, offset, gain */
 167   1              ADCON2 = decimation & 0xff;                                     /* LSB of decimation */
 168   1              ADCON3 = (decimation >>8)&0x07;                         /* MSB of decimation */
 169   1              SSCON = CLEAR;
 170   1              ADMUX = INP_0|INN_COM;                                          /* Select AIN0+/Acom- */
 171   1              adcsum.ps = CLEAR;                                                      /* buffer sp clear */
 172   1          AIE = AD_EN;                                                        /* Enable Aux Interrupt */
 173   1              EAI=SET ;                                                                       
 174   1              AI=CLEAR;
 175   1      }
 176          
 177          
C51 COMPILER V7.01  TEXT                                                                   01/18/2006 15:17:31 PAGE 4   

 178          /*initial serial port0*/
 179          void serial0_init (void)               //串口0的初始化
 180          {
 181   1          PCON |=0x80;
 182   1          SCON0  = 0x50;                     /* mode 1: 8-bit UART, enable receiver   */
 183   1          TMOD |= 0x20;                      /* timer 1 mode 2: 8-Bit reload          */
 184   1          TH1 = 0xfa;                        /* reload value 9600 baud                */
 185   1          TR1 = 1;                                               /* timer 1 run                           */
 186   1          IE=0x80;
 187   1          ES0 = 1;                                               /* enable serial port interrupt          */
 188   1      }
 189          
 190          /* serial processing */
 191          serial () interrupt 4 using 2       
 192          {
 193   1          unsigned char data c;
 194   1          if (RI)                          
 195   1          {
 196   2          c = SBUF;                        
 197   2          RI = 0;                         
 198   2      
 199   2                  switch (c)  {                    

⌨️ 快捷键说明

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