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

📄 acc1-2-2.lst

📁 信号的采样与保持
💻 LST
字号:
C51 COMPILER V7.09   ACC1_2_2                                                              07/11/2005 11:19:05 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE ACC1_2_2
OBJECT MODULE PLACED IN acc1-2-2.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE acc1-2-2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************
   2          文件名:ACC1-2-2.C
   3          功能描述:定时100ms采样,利用当前的采样值和上一次的采样值进行直线差值,并送D/A输出
   4          *****************************************/
   5          #include <reg51.h>
   6          #include <absacc.h>
   7          
   8          /*****************************************
   9          宏定义
  10          *****************************************/
  11          #define uchar unsigned char
  12          #define uint  unsigned int
  13          #define ADC_7 XBYTE[0x7ff0]                     //定义模数转换IO地址
  14          #define DAC_1 XBYTE[0x7ff2]                     //定义D/A第一路的IO地
  15          
  16          /*****************************************
  17          全局变量定义
  18          *****************************************/
  19          sbit  str = P1^7;
  20          uchar data ad[10];                                      //声明变量,用于存储转换结果
  21          uint  data time;                                        //声明变量,用于定时
  22          uchar data t0_h,t0_l;                           //用于存储定时器0的初值
  23          uchar TK;                                                       //声明采样周期变量
  24          uchar TC;                                                       //TK的变量
  25          uchar KK;                                                       //斜率变量
  26          char  UK;                                                       //当前的D/A输出值
  27          char  UK_1;                                                     //上一次的输出值
  28          
  29          /*****************************************
  30          主函数
  31          *****************************************/
  32          void main(void)
  33          { 
  34   1      
  35   1              TMOD = 0x01;
  36   1              time = 10;                                                      //定时1ms
  37   1              t0_h  = (65536-500*time)/256;           //计算定时器0初值
  38   1              t0_l  = (65536-500*time)%256;
  39   1              t0_l = t0_l+20;                                         //修正因初值重装而引起的定时误差
  40   1              TH0  = t0_h;
  41   1              TL0  = t0_l;
  42   1              IT1  = 1;                                                       //边沿触发中断
  43   1              EX1  = 1;                                                       //开外部中断1
  44   1              ET0  = 1;                                                       //开定时中断0
  45   1              TR0  = 1;                                                       //启动定时器
  46   1      
  47   1              TK   = 10;                                                      //采样周期=TK×10ms
  48   1              TC   = 1;
  49   1              DAC_1= 0x80;                                            //D/A清零
  50   1              UK   = 0;                                                       //变量清零
  51   1              UK_1 = 0;
  52   1              KK   = 0;
  53   1      
  54   1              EA       = 1;                                                   //开总中断
  55   1              while(1);
C51 COMPILER V7.09   ACC1_2_2                                                              07/11/2005 11:19:05 PAGE 2   

  56   1      }
  57          
  58          /**********************************************
  59          函数名:INT1
  60          功能  :1号外部中断服务程序 
  61          参数  :无*  
  62          返回值:无 * 
  63          ***********************************************/
  64          void int1() interrupt 2 using 2
  65          {       int i;
  66   1              uchar j;
  67   1      
  68   1              TC--;                                                           //判采样周期到否
  69   1        if(TC==0)
  70   1         {
  71   2               UK_1= UK;
  72   2               UK  = ADC_7-128;                                       //读取A/D转换结果
  73   2               DAC_1=UK_1+128;                                        //送D/A输出
  74   2           TC=TK;                                                             //采样周期变量恢

⌨️ 快捷键说明

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