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

📄 adda.lst

📁 silicon公司c8051F020集成以太网接口核心模块ADCDAC例程源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ADDA
OBJECT MODULE PLACED IN ADDA.OBJ
COMPILER INVOKED BY: C:\Keil\UV3\C51\BIN\c51.exe ADDA.c DB OE

line level    source

   1          
   2          //----------------------------------------------------------------
   3          // C8051F020实验核心模块测试程序
   4          // AD_DA实验
   5          // 
   6          // 实现功能:测试电路板AD,DA功能,实现:
   7          // 1.使用ADC0测量AIN0引脚电压,每秒通过串口发送测量的电压和温度值。
   8          // 2.将AD的输入电压在DA上输出,经2倍放大后驱动LED1
   9          // 3.注意,常量AD_VREF是单片机输出的参考电压,不同单片机会有变化,具体见常量定义处
  10          //   其值应该于J1的2,3间电压保持一致
  11          // 4.AD测量的电压可以通过用万用表测量J1的2,18间的电压验证
  12          //
  13          // 实验条件:
  14          // 1.底板上JP1的1,2,4,6设置为ON状态
  15          // 2.底板上JP2的1,2,3,4设置为ON状态
  16          // 
  17          // 
  18          // 说明:
  19          // 本模块中配套的测试程序都是以消息驱动的.
  20          //---------------------------------------------------------------
  21          // 修改记录
  22          // 版本      时间         人员          内容
  23          // 1.0       2007/4/30    scj          建立文件,实现基本功能
  24          // 1.1       2007/6/4     scj          根据V122底板修改
  25          //
  26          //---------------------------------------------------------------
  27          
  28          #include "F020.h"
  29          #include <string.h>
  30          #include <ctype.h>
  31          #include <stdio.h>
  32          
  33          
  34          //--------------------------------------------
  35          // 数据类型定义
  36          //--------------------------------------------
  37          
  38          // 基本数据类型
  39          typedef unsigned char BYTE;       // 8位无符号数
  40          typedef unsigned int  WORD;       // 16位无符号数
  41          typedef unsigned long DWORD;      // 32位无符号数
  42          
  43          // 结构体
  44          typedef struct
  45          {
  46                  BYTE base;          // DIDA次数
  47                  BYTE second;        // 秒
  48                  BYTE minute;        // 分
  49                  
  50          }S_TIME;
  51          
  52          
  53          //--------------------------------------------
  54          // 引脚定义
  55          //--------------------------------------------
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 2   

  56          #define P_LED2  P31
  57          
  58          
  59          //--------------------------------------------
  60          // 宏定义
  61          //--------------------------------------------
  62          
  63          // 系统消息定义
  64          #define SECD_SIGNAL      0x01
  65          #define MINU_SIGNAL      0x02
  66          #define UART0RECV_SIGNAL 0x04
  67          
  68          
  69          // 常量定义
  70          
  71          //定时器0定时,使用SYSCLK/12作为时钟源
  72          //定时计算方法,TH0:TL0= 65536-t*SYSCLK/12
  73          //定时25ms,TH0:TL0=0x4C 00
  74          #define TMR0H 0x4C
  75          #define TMR0L 0x00
  76          
  77          #define TICKS_PER_SEC 40
  78          #define RECVBUF_LEN   20
  79          
  80          //////////////////////////////////////////////////////////////////////
  81          // 单片机内部参考电压,测量J1差排的2,3引脚的电压设置该值来校正输出电压
  82          // 该值为实际电压的1000倍
  83          //////////////////////////////////////////////////////////////////////
  84          #define AD_VREF 2400
  85          //--------------------------------------------
  86          // 函数声明
  87          //--------------------------------------------
  88          void CommandProc(char *pRecvString);
  89          void SendString(char *pSendString);
  90          
  91          //--------------------------------------------
  92          // 全局变量定义
  93          // 全局变量以g_开头
  94          // 位变量:              g_b
  95          // 无符号字节变量:      g_c
  96          // 无符号双字节变量:   g_w
  97          // 无符号4字节变量:    g_dw
  98          // 有符号数在类型前加s,比如char型位g_sc
  99          // 结构体为g_s后为大写
 100          //--------------------------------------------
 101          data BYTE   g_cMainSignal;              // 主消息变量
 102          
 103          data S_TIME g_sTime;                    // 主时钟
 104          
 105          data BYTE   g_cRecvPointer;             // 接收指针
 106          data BYTE   g_cRecvLength;              // 接收数据长度
 107          idata BYTE  g_cRecvBuffer[RECVBUF_LEN]; // 接收缓冲区
 108          
 109          xdata char   g_SendBuffer[200];
 110          
 111          data WORD   g_Voltage;                  // 电压
 112          data float  g_Temperature;              // 温度 
 113          
 114          
 115          //-----------------------------------------------
 116          // 初始化函数
 117          //
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 3   

 118          //-----------------------------------------------
 119          void Timer_Init()
 120          {
 121   1              
 122   1              PCON = 0;
 123   1      
 124   1              //.......................................
 125   1              // 设置定时器的时钟信号
 126   1              // - T4M T2M T1M T0M  -  -  -
 127   1          // 0  1   0   1   0   0  0  0
 128   1              // 1:使用SYSCLK;0:使用SYSCLK/12
 129   1              // 定时器0,1,2,4均使用SYSCLK
 130   1              //.......................................
 131   1              CKCON = 0x70;
 132   1              
 133   1              
 134   1              //......................................
 135   1              // 定时0工作在16位定时器模式
 136   1              // 定时器1工作在8位重载模式
 137   1              //......................................
 138   1      
 139   1              TMOD = 0x21;                                            
 140   1                                              
 141   1              //....................................
 142   1              // T0作为系统节拍时钟
 143   1              // 定时计算方法= 65536-t*SYSCLK
 144   1              //.....................................
 145   1              TH0 = TMR0H;            
 146   1              TL0 = TMR0L;            
 147   1              
 148   1              //.......................................
 149   1              // T1作为串口0时钟
 150   1              // 串口0波特率=SYSCLK/32*(256-TMR1LOAD)
 151   1              // T1波特率=9600
 152   1              //.......................................
 153   1                      
 154   1              TH1  = 0xB8;    
 155   1              TL1  = 0xB8;    
 156   1              
 157   1              TCON = 0x00;    
 158   1                                              
 159   1              
 160   1              //..................................................
 161   1              // T2 and T3 not used
 162   1              //..................................................
 163   1              RCAP2H = 0x00;  // Timer 2 Capture Register High Byte
 164   1              RCAP2L = 0x00;  // Timer 2 Capture Register Low Byte    
 165   1              TH2    = 0x00;  // Timer 2 High Byte    
 166   1              TL2    = 0x00;  // Timer 2 Low Byte     
 167   1          T2CON  = 0x00;      // Timer 2 Control Register
 168   1                      
 169   1              TMR3RLL = 0x00; // Timer 3 Reload Register Low Byte
 170   1              TMR3RLH = 0x00; // Timer 3 Reload Register High Byte
 171   1              TMR3H   = 0x00; // Timer 3 High Byte
 172   1              TMR3L   = 0x00; // Timer 3 Low Byte
 173   1          TMR3CN  = 0x00;     // Timer 3 Control Register
 174   1      
 175   1          //.....................................................
 176   1              // T4 作为串口1波特率发生器
 177   1              // T4波特率=SYSCLK/32*(65536-RCAP4H:RCAP4L)
 178   1              // T4波特率=19200
 179   1              //.....................................................
C51 COMPILER V8.02   ADDA                                                                  08/18/2007 20:23:46 PAGE 4   

 180   1          RCAP4H = 0xFF;  // Timer 4 Capture Register High Byte
 181   1          RCAP4L = 0xDC;  // Timer 4 Capture Register Low Byte
 182   1          TH4    = 0xFF;  // Timer 4 High Byte
 183   1          TL4    = 0xDC;  // Timer 4 Low Byte
 184   1          T4CON  = 0x30;  // Timer 4 Control Register
 185   1          
 186   1      
 187   1      }
 188          
 189          //...........................................................
 190          // 功能:UART0初始化
 191          // 输入参数:无
 192          // 输出参数:无
 193          // 注意:1.应该首先使用交叉开关为UART0分配相应的引脚
 194          //       2.初始化定时器1作为波特率发生器
 195          //..........................................................
 196          void UART0_Init()
 197          {
 198   1              
 199   1          SCON0 = 0x50;          // 8位波特率异步通信模式
 200   1      
 201   1          REN0  = 1;             // 使能UART0接收
 202   1          TR1   = 1;             // 启动定时器1
 203   1      }
 204          
 205          //......................................................
 206          // 功能:配置交叉开关和端口方向
 207          // 输入参数:无
 208          // 输出参数:无
 209          // 注意:该函数使能交叉开关
 210          //       TX0,RX0被分配到P00,P01
 211          //.....................................................
 212          
 213          void Port_IO_Init()
 214          {
 215   1          // P0.0  -  TX0 (UART0), Open-Drain, Digital
 216   1          // P0.1  -  RX0 (UART0), Open-Drain, Digital
 217   1          // P0.2  -  SCK  (SPI0), Open-Drain, Digital
 218   1          // P0.3  -  MISO (SPI0), Open-Drain, Digital
 219   1          // P0.4  -  MOSI (SPI0), Open-Drain, Digital
 220   1          // P0.5  -  NSS  (SPI0), Open-Drain, Digital
 221   1          // P0.6  -  SDA (SMBus), Open-Drain, Digital
 222   1          // P0.7  -  SCL (SMBus), Open-Drain, Digital
 223   1      
 224   1          // P1.0  -  Skipped,     Open-Drain, Analog
 225   1          // P1.1  -  Skipped,     Open-Drain, Analog
 226   1          // P1.2  -  Skipped,     Open-Drain, Analog

⌨️ 快捷键说明

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