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

📄 tlc5620.lst

📁 自己调的tlv5618的程序
💻 LST
字号:
C51 COMPILER V7.50   TLC5620                                                               08/07/2007 12:11:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TLC5620
OBJECT MODULE PLACED IN D:\VW\WORK\TLV5618\TLC5620.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE D:\VW\WORK\TLV5618\TLC5620.C DB SB OE

line level    source

   1          /*************************************************************************************************
   2          ;  TLC5620 DAC转换实验程序
   3          ;  2004.10.28,Ver 1.0
   4          ;-------------------------------------------------------------------------------------------------
   5          ;  输出电压计算公式: VOUT(DACA|B|C|D)=REF*CODE/256*(1+RNG bit value)
   6          ;-------------------------------------------------------------------------------------------------
   7          ;  该实验程序使用TLC5620中A、B、C、D四个通道中的前两个通道分别输出周期相等、幅度
   8          ;  均为3.3V的三角波和方波,5620的输出经过LM358双运方的反相跟随后增强了带负载能力
   9          ;  并且使得输出的信号电压位于-3.3V~0V之间,起到了模拟反相的作用。在程序中,RNG位
  10          ;  的置位使得输出幅度增加一倍。
  11          *************************************************************************************************/
  12          
  13          #include  <reg52.h>
  14          
  15          typedef  unsigned char  byte;
  16          typedef  unsigned int   word;
  17          
  18          sbit  SCLA=P1^6;
  19          sbit  SDAA=P1^7;
  20          sbit  LOAD=P3^5;
  21          sbit  LDAC=P3^4;
  22          
  23          bit   bdata  mode_bit1=0;      //三角波幅度递增或递减标志变量,为0时上坡,为1下坡
  24          bit   bdata  mode_bit2=0;      //方波幅度高低电平标志变量,为0时输出低电平,为1时输出高电平
  25          byte  data   count1=0;         //三角波的半周期计数器
  26          byte  data   count2=0;         //方波的半周期计数器
  27          byte  data   vouta=0;          //三角波瞬态电压值存储变量
  28          byte  data   voutb=0;          //方波高低电平电压值存储变量,其幅度与三角波幅度相等
  29          word  data   config;           //送往DA转换器的配置参数。以全局变量出现,即作为行参,又作为实参
  30          
  31          void  ini_cpuio(void);
  32          void  dachang1(void);
  33          void  dachang2(void);
  34          void  dac5620(word config);
  35          
  36          /************************************************************************************************/
  37          void  main(void)
  38          {
  39   1          ini_cpuio();               //初始化CPU的IO口
  40   1              while(1)                   //周期地进行转换,形成三角波和方波的周期信号
  41   1              {
  42   2                  dachang1();            //控制通道A输出三角波
  43   2                  dachang2();            //控制通道B输出方波,该方波与上面的三角波幅度相等、周期相同
  44   2              }
  45   1      }
  46          /************************************************************************************************/
  47          void  ini_cpuio(void)          //CPU的IO口初始化函数
  48          {
  49   1          SCLA=0;
  50   1              SDAA=0;
  51   1              LOAD=1;
  52   1              LDAC=1;
  53   1      }
  54          //================================================================================================
  55          void  dachang1(void)           //周期三角波生成函数
C51 COMPILER V7.50   TLC5620                                                               08/07/2007 12:11:47 PAGE 2   

  56          {
  57   1          config=(word)vouta;
  58   1              config<<=5;
  59   1              config=config&0x1fff;
  60   1          config=config|0x2000;
  61   1              dac5620(config);
  62   1          count1++;
  63   1              if(count1<0xa2)            //判断三角波是否上升(或下降)到峰点(或谷点)
  64   1              {
  65   2                  if(!mode_bit1)         //判断处于上坡还是下坡状态以决定是继续上升还是继续下降
  66   2                          vouta++;
  67   2                      else
  68   2                          vouta--;
  69   2              }
  70   1              else
  71   1              {
  72   2                  count1=0;
  73   2                      mode_bit1=~mode_bit1;  //如果已经达到峰点(或谷点)则改变幅度递增或递减标志
  74   2              }
  75   1      }
  76          //================================================================================================
  77          void  dachang2(void)           //周期方波生成函数
  78          {
  79   1          config=(word)voutb;
  80   1              config<<=5;
  81   1              config=config&0x1fff;
  82   1          config=config|0x6000;
  83   1              dac5620(config);
  84   1              voutb=0xa2;
  85   1      
  86   1      
  87   1         /*     count2++;
  88   1              if(count2<0xa2)            //判断方波是否应该改变电平状态
  89   1              {
  90   1                  if(!mode_bit2)         //根据方波幅度高低电平标志变量决定是输出高电平还是低电平
  91   1                          voutb=0;
  92   1                      else
  93   1                          voutb=0xa2;
  94   1              }
  95   1              else
  96   1              {
  97   1                  count2=0;
  98   1                      mode_bit2=~mode_bit2;  //如果已经达到改变电平状态的时刻则改变方波幅度标志变量
  99   1              }                      */
 100   1      }
 101          
 102          /*************************************************************************************************
 103          ;  函数名称:  dac5620
 104          ;  功能描述:  TI公司8位4通DAC芯片TLC5620的控制时序
 105          ;  形式参数:  config(无符号整型变量)
 106          ;  返回参数:  无
 107          ;  局部变量:  m、n
 108          ;  调用模块:  SENDBYTE
 109          ;  日 期:    2004-10-28
 110          ;  备  注:    使用11位连续传输控制模式,使用LDAC下降沿锁存数据输入
 111          **************************************************************************************************/
 112          void  dac5620(word config)
 113          {
 114   1          byte  m=0;
 115   1              word  n;
 116   1              for(;m<0x0b;m++)
 117   1              {
C51 COMPILER V7.50   TLC5620                                                               08/07/2007 12:11:47 PAGE 3   

 118   2                  SCLA=1;
 119   2                      n=config;
 120   2                      n=n&0x8000;
 121   2                      SDAA=(bit)n;
 122   2                      SCLA=0;
 123   2                      config<<=1;
 124   2              }
 125   1              LOAD=0;
 126   1              LOAD=1;
 127   1              LDAC=0;
 128   1              LDAC=1;
 129   1      }
 130          
 131          
 132          
 133          
 134          
 135          
 136          
 137          
 138          
C51 COMPILER V7.50   TLC5620                                                               08/07/2007 12:11:47 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
LDAC . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
SDAA . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0097H  1
LOAD . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
SCLA . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0096H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
vouta. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
voutb. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0001H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
byte . . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
word . . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
ini_cpuio. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_dac5620 . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  config . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  m. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  n. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
count1 . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0002H  1
count2 . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0003H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
config . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0004H  2
mode_bit1. . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
mode_bit2. . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0001H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
dachang1 . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
dachang2 . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    156    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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