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

📄 zhudanyuan.lst

📁 新华龙c8051f020单片机 串口调试示例程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.02b   ZHUDANYUAN                                                           08/29/2008 14:57:54 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE ZHUDANYUAN
OBJECT MODULE PLACED IN zhudanyuan.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe zhudanyuan.c DB OE

stmt level    source

   1          #include <c8051f020.h>               
   2          #include <stdio.h>
   3          #include <math.h>
   4          #include <absacc.h>
   5          #include <intrins.h>
   6          
   7          
   8              //C8051F020的16位SFR定义
   9          /*sfr16 DP       = 0x82;                // 数据指针
  10            sfr16 TMR3RL   = 0x92;                // 定时器T3重装值
  11            sfr16 TMR3     = 0x94;                // 定时器T3计数器
  12            sfr16 ADC0     = 0xbe;                // ADC0数据
  13            sfr16 ADC0GT   = 0xc4;                // ADC0大于窗口
  14            sfr16 ADC0LT   = 0xc6;                // ADC0小于窗口
  15            sfr16 RCAP2    = 0xca;                // 定时器T2捕捉/重装
  16            sfr16 T2       = 0xcc;                // 定时器T2
  17            sfr16 RCAP4    = 0xe4;                // 定时器T4捕捉/重装
  18            sfr16 T4       = 0xf4;                // 定时器T4
  19            sfr16 DAC0     = 0xd2;                // DAC0数据
  20            sfr16 DAC1     = 0xd5;                // DAC1数据*/
  21          
  22          #define DELAY   _nop_();_nop_();_nop_();_nop_();
  23          #define uint    unsigned int
  24          #define uchar   unsigned char
  25          #define ulong   unsigned long
  26          #define BAUDRATE      5600             // UART波特率(bps)
  27          #define SYSCLK        24000000         // 系统时钟频率(Hz)
  28          #define SAMPLE_RATE   50000            // 采样频率(Hz)
  29          #define N0   5
  30          #define N1   5
  31          
  32          
  33          
  34          
  35          //********************************* ***** 系统参数设定 **************************************/
  36          #define CUR_SHG    0.00036             //SHG温控恒流源360uA
  37          #define CUR_THG    0.001000            //THG温控恒流源1000uA
  38          #define SHGSetL    5000                //50摄氏度
  39          #define SHGSetH    7500                //75摄氏度
  40          #define THGSetL    13000               //130摄氏度
  41          #define THGSetH    16000               //160摄氏度
  42          #define DAC_dat    0x012000
  43          #define DAC_cha1   0x000000
  44          #define DAC_cha2   0x002000
  45          
  46          uint SHGSet;                           //SHG晶体设定温度*100
  47          uint SHGAct;                           //SHG晶体实际温度*100
  48          uint THGSet;                           //THG晶体设定温度*100
  49          uint THGAct;                           //THG晶体实际温度*100
  50          
  51          uint xdata filter0_buf[N0];
  52          uint xdata filter1_buf[N1];
  53          uchar xdata array0,array1;
  54           
  55          void delay(uint i);
C51 COMPILER V7.02b   ZHUDANYUAN                                                           08/29/2008 14:57:54 PAGE 2   

  56          void long_delay(void);
  57          void short_delay(void);
  58          void PCA_Init (void);
  59          void PCA_ISR  (void);
  60          void StoreData(void);
  61          void Receiveing(uchar in_byte);
  62          void ReceiveingPC(uchar in_byte);
  63          void Send_data( uchar out_byte);
  64          void Send_dataPC(uchar out_byte);
  65          void Spi_Write( uint DACcode);
  66          void GetSHG(uchar channel,float current);   
  67          void GetTHG(uchar channel,float current);
  68          uint GetADCData(uchar channel);
  69          uint filter(uchar channel);           //递推平均滤波法
  70          uint Set_SHG(uint tem);
  71          uint Set_THG(uint a);
  72          
  73          sbit LIGHTH      = P2^6;
  74          sbit LIGHTL      = P2^7;
  75          //MAX125功能口定义
  76          sbit MAX_CS      = P2^0;
  77          sbit MAX_CON     = P2^1;
  78          sbit MAX_RD      = P2^2;
  79          sbit MAX_WR      = P2^3;
  80          sbit MAX_INT     = P2^4;
  81          sbit MAX_CLK     = P2^5;
  82          
  83          
  84          //DAC8164功能口定义 
  85          sbit DAC_LDAC    = P3^0;
  86          sbit DAC_ENAB    = P3^1;
  87          sbit DAC_A0      = P3^2;
  88          sbit DAC_SYNC    = P3^3;
  89          sbit DAC_SCLK    = P3^4;
  90          sbit DAC_DIN     = P3^5;
  91          
  92          
  93          void send_byte( uchar out_byte);
  94          void SYSCLK_Init (void);
  95          void PORT_Init (void);
  96          void UART0_Init (void);
  97          void UART1_Init (void);
  98          void PCA_Init (void);
  99          void DAC8164_Init (void);
 100          void MAX125_Init (void);
 101          void Timer3_Init (int counts);
 102          void DAC8164_ISRA (void);
 103          void DAC8164_ISRB (void);
 104          void Pwm(void);
 105          
 106          //主程序
 107          void main (void)
 108          {
 109   1       unsigned int ch1mv,ch2mv;
*** ERROR C100 IN LINE 109 OF ZHUDANYUAN.C: unprintable character 0xA3 skipped
*** ERROR C100 IN LINE 109 OF ZHUDANYUAN.C: unprintable character 0xAC skipped
 110   1       unsigned long a;
 111   1       WDTCN = 0xde;                         
 112   1       WDTCN = 0xad;                            // 禁止看门狗
 113   1      
 114   1       SYSCLK_Init ();                          // 初始化振荡器
 115   1       PORT_Init ();                            // 初始化数据交叉开关和通用I/O口
C51 COMPILER V7.02b   ZHUDANYUAN                                                           08/29/2008 14:57:54 PAGE 3   

 116   1       UART0_Init ();                           // 初始化UART0
 117   1       UART1_Init ();                           // 初始化UART1
 118   1       Timer3_Init (SYSCLK/SAMPLE_RATE);        // 初始化Timer3 
 119   1       DAC8164_Init ();                         // 初始化DAC8164 
 120   1       MAX125_Init ();                          // 初始化MAX125
 121   1       PCA_Init ();                                     // PCA初始化成8位脉宽调置
 122   1      
 123   1       for(a=0;a<0xffff;a++)
 124   1       {
 125   2        LIGHTH = 1; 
 126   2        LIGHTL = 0;
 127   2        delay(999999);
 128   2        LIGHTH = 0; 
 129   2        LIGHTL = 1;
 130   2       }
 131   1       Set_SHG(SHGSet);                         //SHG温度设定
 132   1       delay(1000);
 133   1       Set_THG(THGSet);                         //THG温度设定
 134   1       delay(1000);
 135   1       DAC8164_ISRA (ch1mv);                         //A/D转换通道A
*** ERROR C202 IN LINE 135 OF ZHUDANYUAN.C: 'ch1mv': undefined identifier
 136   1       delay(1000);
 137   1       DAC8164_ISRB (ch2mv);                         //A/D转换通道B
*** ERROR C202 IN LINE 137 OF ZHUDANYUAN.C: 'ch2mv': undefined identifier
 138   1       delay(1000);
 139   1       GetADCData();                            //D/A数据采集
 140   1       }
 141          
 142          
 143            //系统时钟初始化
 144          void SYSCLK_Init (void) 
 145          {
 146   1       int i;                                   //延时计数器
 147   1       OSCXCN = 0x67;                          //启动外部振荡器
 148   1       for (i=0;i<256;i++) ;                    //等待振荡器启动
 149   1       while (!(OSCXCN & 0x80));               //等待晶体振荡器稳定
 150   1       OSCICN = 0x88;                           //选择外部振荡器为系统时钟源并使能丢失时钟检测器
 151   1       }
 152          
 153          //I/O口初始化,配置数据交叉开关和通用I/O口
 154          void PORT_Init (void)
 155          {  
 156   1       XBR0 = 0x03;                             // 使能CEX0,CEX1,CEX2,UART0和SPI0
 157   1       XBR1 = 0x80;                             // 使能T1
 158   1       XBR2 = 0x44;                             // 使能数据交叉开关和UART1
 159   1       P1MDIN = 0xff;                    
 160   1       P1MDOUT= 0xfc;                           // P1.0,P1.1设为漏开方式,P1.2-P1.7设为推挽方式
 161   1       P2MDOUT= 0xff;                           // P2口设为推挽方式
 162   1       P3MDOUT= 0xff;                           // P3口设为推挽方式
 163   1       P74OUT = 0xf0;                           // P4,P5口设为漏开方式 
 164   1       P4 = 0Xff;                                                                   
 165   1      }
 166          
 167          //配置PCA的CEX0,CEX1,CEX2输出8位PWM信号
 168          void PCA_Init (void)
 169          {
 170   1          PCA0CN    = 0x40;                    //允许PCA0
 171   1          PCA0CPM0  = 0x42;                    //使能PCA0的PWM输出
 172   1          PCA0MD    = 0x02;                    //系统时钟的4分频
 173   1          PCA0CPL0  = 0x00;                  
 174   1          PCA0CPH0  = 0x7e;                    //占空比50%
 175   1      }
C51 COMPILER V7.02b   ZHUDANYUAN                                                           08/29/2008 14:57:54 PAGE 4   

 176          
 177           
 178          //UART0配置
 179          void UART0_Init (void)
 180          {
 181   1         SCON0   = 0x50;                       // UART0工作模式1, 8-bit UART, 使能RX
 182   1         T2CON   = 0x30;                       // 定时器 2, UART0波特率发生器
 183   1         TR2    = 1;                           // 启动Timer2
 184   1         CKCON |= 0x20;                        // Timer2使用系统时钟
 185   1         PCON  |= 0x90;                        // 禁止UART0及UART1的波特率/2
 186   1         TI0    = 1;                           // 表示 TX0 就绪
 187   1      }
 188          
 189          //UART1配置
 190          void UART1_Init (void)
 191          {
 192   1         SCON1   = 0x50;                       // UART1工作模式1, 8-bit UART, 使能RX
 193   1         TMOD    = 0x20;                       //定时器 1, 模式 2, 8-bit 重装载
 194   1         TH1    = -(SYSCLK/BAUDRATE/16);       //设定定时器1为重装载模式
 195   1         TR1    = 1;                           // 启动Timer1
 196   1         CKCON |= 0x10;                        // Timer1使用系统时钟
 197   1      }
 198          
 199          
 200          
 201          //MAX125初始化
 202          void MAX125_Init (void)        
 203          {  
 204   1          MAX_CS  =01;
 205   1          MAX_CON =01;
 206   1          MAX_RD = 1;
 207   1          MAX_WR = 1;
 208   1              delay(100);
 209   1          MAX_CS = 0;
 210   1          MAX_WR = 0;
 211   1          P4 = 0X01;
 212   1          MAX_CS = 1;
 213   1          MAX_WR = 1;
 214   1                  
 215   1      }
 216          
 217          
 218          //DAC8164初始化
 219          void DAC8164_Init (void)        
 220          { 
 221   1         unsigned int dat;
 222   1         DAC_LDAC = 0;
 223   1         DAC_ENAB = 1;
 224   1         DAC_A0   = 0;
 225   1         DAC_SYNC = 1;  
 226   1         dat = DAC_dat;
 227   1         Spi_Write(dat);
 228   1       }
 229          
 230          
 231          
 232          
 233          
 234          //----------SHG与THG的温度设定-------------//
 235          unsigned int Set_SHG(uint tem)                //SHG 50 -70 度
 236           {
 237   1          unsigned int  dat;          
C51 COMPILER V7.02b   ZHUDANYUAN                                                           08/29/2008 14:57:54 PAGE 5   

 238   1          float a,b;
 239   1          float t;
 240   1          float v;
 241   1          float r; 
 242   1          tem = 6000;
 243   1          t = tem/100.0;      
 244   1          a = 1/(273.15+t)-1/298.15;
 245   1          b = exp(3.940009*a*1000)*10;
 246   1          r = 1.01*b-0.03187;
 247   1          v = r * CUR_SHG*1000;
 248   1          dat = (uint)(16384/5*v);
 249   1          if(dat>16383)

⌨️ 快捷键说明

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