📄 tlc5620.lst
字号:
C51 COMPILER V8.08 TLC5620 04/26/2008 02:48:08 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TLC5620
OBJECT MODULE PLACED IN TLC5620.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TLC5620.c INTVECTOR(0X8000) DEBUG OBJECTEXTEND
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 V8.08 TLC5620 04/26/2008 02:48:08 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 count2++;
85 1 if(count2<0xa2) //判断方波是否应该改变电平状态
86 1 {
87 2 if(!mode_bit2) //根据方波幅度高低电平标志变量决定是输出高电平还是低电平
88 2 voutb=0;
89 2 else
90 2 voutb=0xa2;
91 2 }
92 1 else
93 1 {
94 2 count2=0;
95 2 mode_bit2=~mode_bit2; //如果已经达到改变电平状态的时刻则改变方波幅度标志变量
96 2 }
97 1 }
98
99 /*************************************************************************************************
100 ; 函数名称: dac5620
101 ; 功能描述: TI公司8位4通DAC芯片TLC5620的控制时序
102 ; 形式参数: config(无符号整型变量)
103 ; 返回参数: 无
104 ; 局部变量: m、n
105 ; 调用模块: SENDBYTE
106 ; 日 期: 2004-10-28
107 ; 备 注: 使用11位连续传输控制模式,使用LDAC下降沿锁存数据输入
108 **************************************************************************************************/
109 void dac5620(word config)
110 {
111 1 byte m=0;
112 1 word n;
113 1 for(;m<0x0b;m++)
114 1 {
115 2 SCLA=1;
116 2 n=config;
117 2 n=n&0x8000;
C51 COMPILER V8.08 TLC5620 04/26/2008 02:48:08 PAGE 3
118 2 SDAA=(bit)n;
119 2 SCLA=0;
120 2 config<<=1;
121 2 }
122 1 LOAD=0;
123 1 LOAD=1;
124 1 LDAC=0;
125 1 LDAC=1;
126 1 }
127
128
129
130
131
132
133
134
135
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 178 ----
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 + -