📄 tlc5620.lst
字号:
C51 COMPILER V7.06 TLC5620 03/02/2009 16:29:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TLC5620
OBJECT MODULE PLACED IN TLC5620.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE TLC5620.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 * Copyright (C) 2006, 华中科技大学电气与电子科技创新中心
3 * All Rights Reserved.
4 *
5 * 文件名: tlc5620.c
6 * 文件描述: DA转换芯片TLC5620驱动文件
7 *
8 * 当前版本: 1.0
9 * 作者: SangWei(swkyer@gmail.com)
10 * 完成日期: 2005年12月12日
11 *
12 */
13 #include "sst89e516.h"
14 #include <INTRINS.H>
15 #include "TLC5620.h"
16
17 /**************************************
18 说明: TLC5620初始化
19 **************************************/
20 void TLC5620_Init(void)
21 {
22 1 TLC5620_CLK = 0;
23 1 TLC5620_DATA = 1;
24 1 TLC5620_LOAD = 1;
25 1 TLC5620_LDAC = 1;
26 1 }
27
28 /**************************************
29 说明: 输出单个通道的电压
30 chl: 通道号, 0--3
31 dat: 通道数据, 0--255
32 **************************************/
33 void TLC5620_SetOutput(unsigned char chl, unsigned char dat)
34 {
35 1 unsigned char i;
36 1
37 1 /* 四个通道,只有低两位有效 */
38 1 chl &= 0x03;
39 1 /* 左移一位,加上RNG位 */
40 1 chl <<= 1;
41 1 chl |= RNG;
42 1 /* 将数据移到高3位 */
43 1 chl <<= 5;
44 1
45 1 for(i=3; i>0; i--)
46 1 {
47 2 /* 从高位到低位依次移出数据 */
48 2 TLC5620_DATA = (bit)(chl&0x80);
49 2 /* 等待数据稳定 */
50 2 TLC5620_CLK = 1;
51 2 chl <<= 1;
52 2 /* 下降沿将数据锁存 */
53 2 TLC5620_CLK = 0;
54 2 }
55 1 for(i=8; i>0; i--)
C51 COMPILER V7.06 TLC5620 03/02/2009 16:29:21 PAGE 2
56 1 {
57 2 /* 从高位到低位依次移出数据 */
58 2 TLC5620_DATA = (bit)(dat&0x80);
59 2 /* 等待数据稳定 */
60 2 TLC5620_CLK = 1;
61 2 dat <<= 1;
62 2 /* 下降沿将数据锁存 */
63 2 TLC5620_CLK = 0;
64 2 }
65 1 /* LOAD下降沿将数据锁入寄存器 */
66 1 TLC5620_LOAD = 0;
67 1 _nop_();
68 1 _nop_();
69 1 TLC5620_LOAD = 1;
70 1 _nop_();
71 1 _nop_();
72 1 /* LDAC下降沿将更新输出电压值 */
73 1 TLC5620_LDAC = 0;
74 1 _nop_();
75 1 _nop_();
76 1 TLC5620_LDAC = 1;
77 1 }
78
79 /**************************************
80 说明: 同时刻输出四个通道电压
81 chl1--chl4: 4个通道的数据
82 **************************************/
83 void TLC5620_AllOutput(unsigned char dat[])
84 {
85 1 unsigned char i, j, chl;
86 1
87 1 for(j=0; j<4; j++)
88 1 {
89 2 chl = j;
90 2 /* 左移一位,加上RNG位 */
91 2 chl <<= 1;
92 2 chl |= RNG;
93 2 /* 将数据移到高3位 */
94 2 chl <<= 5;
95 2
96 2 for(i=3; i>0; i--)
97 2 {
98 3 /* 从高位到低位依次移出数据 */
99 3 TLC5620_DATA = (bit)(chl&0x80);
100 3 /* 等待数据稳定 */
101 3 TLC5620_CLK = 1;
102 3 chl <<= 1;
103 3 /* 下降沿将数据锁存 */
104 3 TLC5620_CLK = 0;
105 3 }
106 2 for(i=8; i>0; i--)
107 2 {
108 3 /* 从高位到低位依次移出数据 */
109 3 TLC5620_DATA = (bit)(dat[j]&0x80);
110 3 /* 等待数据稳定 */
111 3 TLC5620_CLK = 1;
112 3 dat[j] <<= 1;
113 3 /* 下降沿将数据锁存 */
114 3 TLC5620_CLK = 0;
115 3 }
116 2 /* LOAD下降沿将数据锁入寄存器 */
117 2 TLC5620_LOAD = 0;
C51 COMPILER V7.06 TLC5620 03/02/2009 16:29:21 PAGE 3
118 2 _nop_();
119 2 _nop_();
120 2 TLC5620_LOAD = 1;
121 2 _nop_();
122 2 _nop_();
123 2 _nop_();
124 2 _nop_();
125 2 }
126 1 /* LDAC下降沿将四个通道同时刻更新输出电压值 */
127 1 TLC5620_LDAC = 0;
128 1 _nop_();
129 1 _nop_();
130 1 TLC5620_LDAC = 1;
131 1 }
132
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 172 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -