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

📄 single.lst

📁 基于C8051F040的液晶
💻 LST
字号:
C51 COMPILER V7.50   SINGLE                                                                08/08/2007 13:32:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SINGLE
OBJECT MODULE PLACED IN single.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE single.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //////////单端输入,定时启动,由T2定时,选择AIN0.3为ADC0转化通道////////////////
   2          //////single.c///////////////////////////////////
   3          #include "lcd.h"//笔者所写的LCD显示头文件,具体见LCD章节
*** WARNING C235 IN LINE 48 OF LCD.H: parameter 1: different types
*** WARNING C236 IN LINE 216 OF LCD.H: '_showintmes': different length of parameter lists
   4          
   5          /*若读者没有条件使用"lcd.h"的各显示和键盘函数,则可在lcd.h文件中如下定义:
   6          
   7          #include "c8051f040.h"
   8          void dispini();
   9          void showf();
  10          
  11          */
  12          //则该调试文件能编译通过,用户也可调试,只是要通过设断点来观察数据
  13          
  14          #define ADC0START temppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage
  15          #define REAL_RATE 488L
  16          #define ADJRATEDIF 237L
  17          #define ADJRATESE 118L
  18          
  19          /*
  20          REAL_RATE为物理量转化系数,由具体对象而定
  21          ADJRATEDIF为差动模式下,增益为0.5时ADC0转化值与真实电压的转换系数
  22          ADJRATESE为单端输入模式下,增益为0.5时ADC0转化值与真实电压的转换系数
  23          */
  24          sfr ADC0H = 0xbf;
  25          sfr ADC0L = 0xbe;
  26          sfr16 RCAP2=0xca;
  27          sfr16 RCAP3=0xca;
  28          sfr16 RCAP4=0xca;
  29          sfr16 TMR4=0xcc;
  30          sfr16 TMR3=0xcc;
  31          sfr16 TMR2=0xcc;
  32          sfr16 PCA0CP0=0xfb;
  33          sfr16 PCA0CP1=0xfd;
  34          sfr16 PCA0CP2=0xe9;
  35          sfr16 PCA0CP3=0xeb;
  36          sfr16 PCA0CP4=0xed;
  37          sfr16 PCA0CP5=0xe1;
  38          sfr16 ADC0VAL=0xbe;//将ADC0H-ADC0L通过sfr16实现
  39          sfr16 ADC0GT=0xc4;
  40          sfr16 ADC0LT=0xc6;
  41          uchar temppage;
  42          bit isnewdata;
  43          int kk;
  44          long target_val;//工程量转化值
  45          long realvol;//真实测量电压值
  46          float temp;
  47          void adc0_mux(uchar type,uchar source);
  48          void adc0_source(uchar source);
  49          void p3anolog_ini(uchar port);
  50          void HVDA_ini(uchar gaind);
  51          void adc0_ini();
  52          void config();
  53          void t2_ini();
C51 COMPILER V7.50   SINGLE                                                                08/08/2007 13:32:47 PAGE 2   

  54          void t2_baud(uint t2reload);
  55          void t2_ini(){
  56   1              SFRPAGE = 0x00;
  57   1              TMR2CF = 0x08;  // T2时钟为系统时钟,计数方向为增值计数
  58   1              TMR2CN = 0x04;  // T2为16bit定时器模式,并启动定时器运行
  59   1      }
  60          void t2_baud(uint t2reload){//每隔t2reload个T2时钟,产生一次定时溢出
  61   1              SFRPAGE = 0x00;
  62   1              RCAP2=~t2reload+1;//相当于65536-t2reload
  63   1              TMR2=RCAP2;
  64   1      }
  65          void adc0_mux(uchar type,uchar source){//type 配置测量方式为差动还是单端输入
  66   1      //source 为ADC0通道选择(共有9个通道)
  67   1              SFRPAGE=0x00;
  68   1              AMX0CF=type;
  69   1              AMX0SL=source;
  70   1      }
  71          void adc0_source(uchar source){//ADC0通道选择,为adc0_mux()的简化函数
  72   1              SFRPAGE=0x00;
  73   1              AMX0SL=source;
  74   1      }
  75          void p3anolog_ini(uchar port){//配置p3口模拟输入管脚
  76   1              SFRPAGE=0x00;
  77   1              AMX0PRT=port;
  78   1              SFRPAGE=0x0f;
  79   1              P3MDIN&=~port;//将相应管脚配置成模拟输入口
  80   1      }
  81          void HVDA_ini(uchar gaind){
  82   1      /*高压差动放大器配置,调的只是第二级的增益,整体增益还需再乘以0.05;*/
  83   1      //HVDA禁止时,HCAP+上检测到的是HVAIN+的电压
  84   1              SFRPAGE=0x00;
  85   1              HVA0CN=gaind;
  86   1      }
  87          void adc0_ini(){
  88   1              SFRPAGE=0x00;
  89   1              ADC0CF=0x0f;//ADC0时钟为系统时钟2分频,PGA增益为0.5
  90   1              ADC0CN=0x8c;//AD0TM=0,ADC0为连续跟踪模式,由T2溢出率启动ADC0
  91   1              //AD0LJST=0,数据存储格式右对齐,即ADC0H存放12bit高四位
  92   1              REF0CN&=0x0f;//AD0VRS=0,ADC0参考电压为VREFA
  93   1              REF0CN|=0x07;//TEMPE=1,内部温度传感器工作
  94   1              //BIASE=1,偏移产生器工作
  95   1              
  96   1              /*REFBE=1,内部参考电平工作,电路部分须将VREF参考输出(C8051F40的第12管脚)与      VREF0(C8051F040的16管脚相连,

⌨️ 快捷键说明

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