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

📄 ad114read2.lst

📁 单片机与cpld总线方式通信
💻 LST
字号:
C51 COMPILER V7.09   AD114READ2                                                            08/02/2005 08:59:55 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE AD114READ2
OBJECT MODULE PLACED IN AD114Read2.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE AD114Read2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*AD114单片机从cpld读取ad114转化的数据,显示到led,enter键控制*/
   2          //软件滤波:连续采样20次,取平均值
   3          #include<reg51.h>
   4          #include<absacc.h>
   5          #include <intrins.h> 
   6          #define unchar unsigned char
   7          #define unint unsigned int
   8          #define DisCmd XBYTE [0xC100]                     //7218控制字地址
   9          #define DisData XBYTE [0xC000]                    //7218数据口地址
  10          #define scode 0xb0                                //7218软件译码方式命令字
  11          #define bcode 0x90                                //B码译码方式命令字
  12          #define hexcode 0xd0                              //软件译码方式命令字
  13          #define unchar  unsigned char 
  14          //MAX191工作在ROM Mode 方式 
  15          //对外中断1采用了查询方式,中断方式还得再试验
  16          //12位AD精度有了,可是速度是一个问题,
  17          //按现在的用法,转换时间为12uS,再算上数据处理时间(包括数据存储、显示等),对模拟信号的采样频率估计最快也
             -就是
  18          //几十KHz(只考虑转换时间和存储在RAM中所需时间)
  19          sbit P3_3=P3^3;
  20          sbit P3_7=P3^7;
  21          unchar xdata *AD;
  22          unint voltage;
  23          unchar keynum;
  24          unchar flag=0;
  25          unchar dot=0;   //小数点显示位置
  26          char distab[8]={0x13,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
  27          
  28          char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
  29                         //0,   1,    2,   3,   4,   5,   6,   7 
  30                          0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
  31                         //8    ,9   ,a   ,b   ,c    ,d  ,e    ,f  
  32                          0x80,0xbe,0x8b,0xee,0x84,0xbb };
  33                         //熄灭 H    L    P    -    u
  34          void delay1s()
  35          {
  36   1       unint i=1000,j=5000;
  37   1       for(i;i>0;i--)
  38   1       for(j;j>0;j--);
  39   1       }
  40          void delay20ms()
  41          {
  42   1       unint i=1000;
  43   1       for(i;i>0;i--);
  44   1       
  45   1       }
  46          void display()
  47          {
  48   1         unchar i;      
  49   1         DisCmd=scode;            //采用软件译码
  50   1         for(i=0;i<8;i++)      //将distab中的数据送如7218
  51   1         {
  52   2          if((i==dot)&dot)
  53   2              DisData=ledtab[distab[i]]+0x80; //查表转化并将字型送入7218
  54   2              else
C51 COMPILER V7.09   AD114READ2                                                            08/02/2005 08:59:55 PAGE 2   

  55   2          DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
  56   2       }
  57   1      for(i=1000;i>0;i--);   
  58   1      }
  59           AD114Start()
  60           {
  61   1          
  62   1               long adin=0; 
  63   1               unint  d;
  64   1               unchar xdata *AD;
  65   1              unchar i=10;
  66   1             for(i;i>0;i--)     //连续采样十次,取平均值
  67   1             {
  68   2                 AD=0xA000; 
  69   2                     d=*AD;
  70   2                 adin+=d;
  71   2                 //delay1s();
  72   2               } 
  73   1                  // adin=*AD;
  74   1               adin=adin/10;  
  75   1                   d=(adin*5000)/255;    //实际电压值为4.935v;左边参考电压如为2.375,就换成2375
  76   1               voltage=d;
  77   1               distab[3]=d/1000;
  78   1               d=d%1000;
  79   1               distab[2]=d/100;
  80   1               d=d%100;
  81   1               distab[1]=d/10;
  82   1               d=d%10;
  83   1               distab[0]=d;
  84   1               //distab[7]=0x10;
  85   1               distab[6]=0x10;
  86   1               distab[5]=0x10;
  87   1               distab[4]=0x10;
  88   1                       //distab[0]=0x15;
  89   1               AD=0xA000;
  90   1      }
  91          //**************************************************************************************
  92          void intt0() interrupt 0 
  93          { 
  94   1       EX0=0; //关键盘中断,禁止相应其他按键
  95   1       dot=3;
  96   1       keynum=P1;          //从p1口读入键盘值
  97   1       keynum=keynum&0x0f; //取低四位;
  98   1       if(keynum==0x0f)
  99   1       flag=!flag;
 100   1       if(flag)
 101   1       distab[7]=0x00;
 102   1       else
 103   1       distab[7]=0x13;
 104   1      
 105   1       EX0=1;                    //开中断
 106   1      }
 107          
 108          void main()
 109          {
 110   1        EX0=1;
 111   1        EA=1;
 112   1       display();
 113   1        while(1)
 114   1      { 
 115   2        if(flag) 
 116   2        AD114Start();
C51 COMPILER V7.09   AD114READ2                                                            08/02/2005 08:59:55 PAGE 3   

 117   2        display();
 118   2        delay1s();
 119   2       }
 120   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    423    ----
   CONSTANT SIZE    =     22    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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