📄 tlc5620.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 + -