📄 tlc5620.lst
字号:
C51 COMPILER V7.20 TLC5620 04/13/2006 13:32:33 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TLC5620
OBJECT MODULE PLACED IN .\TLC5620.obj
COMPILER INVOKED BY: C:\Keil_C51\C51\BIN\C51.EXE ..\TLC5620\TLC5620.c BROWSE DEBUG OBJECTEXTEND PRINT(.\TLC5620.lst) OBJ
-ECT(.\TLC5620.obj)
line 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 <REGX51.h>
14 #include <INTRINS.H>
15 #include "TLC5620.h"
16
17
18 /**************************************
19 说明: TLC5620初始化
20 **************************************/
21 void TLC5620_Init(void)
22 {
23 1 TLC5620_CLK = 0;
24 1 TLC5620_DATA = 1;
25 1 TLC5620_LOAD = 1;
26 1 TLC5620_LDAC = 1;
27 1 }
28
29 /**************************************
30 说明: 输出单个通道的电压
31 chl: 通道号, 0--3
32 dat: 通道数据, 0--255
33 **************************************/
34 void TLC5620_SetOutput(unsigned char chl, unsigned char dat)
35 {
36 1 unsigned char i;
37 1
38 1 /* 四个通道,只有低两位有效 */
39 1 chl &= 0x03;
40 1 /* 左移一位,加上RNG位 */
41 1 chl <<= 1;
42 1 chl |= RNG;
43 1 /* 将数据移到高3位 */
44 1 chl <<= 5;
45 1
46 1 for(i=3; i>0; i--)
47 1 {
48 2 /* 从高位到低位依次移出数据 */
49 2 TLC5620_DATA = (bit)(chl&0x80);
50 2 /* 等待数据稳定 */
51 2 TLC5620_CLK = 1;
52 2 chl <<= 1;
53 2 /* 下降沿将数据锁存 */
54 2 TLC5620_CLK = 0;
C51 COMPILER V7.20 TLC5620 04/13/2006 13:32:33 PAGE 2
55 2 }
56 1 for(i=8; i>0; i--)
57 1 {
58 2 /* 从高位到低位依次移出数据 */
59 2 TLC5620_DATA = (bit)(dat&0x80);
60 2 /* 等待数据稳定 */
61 2 TLC5620_CLK = 1;
62 2 dat <<= 1;
63 2 /* 下降沿将数据锁存 */
64 2 TLC5620_CLK = 0;
65 2 }
66 1 /* LOAD下降沿将数据锁入寄存器 */
67 1 TLC5620_LOAD = 0;
68 1 _nop_();
69 1 _nop_();
70 1 TLC5620_LOAD = 1;
71 1 _nop_();
72 1 _nop_();
73 1 /* LDAC下降沿将更新输出电压值 */
74 1 TLC5620_LDAC = 0;
75 1 _nop_();
76 1 _nop_();
77 1 TLC5620_LDAC = 1;
78 1 }
79
80 /**************************************
81 说明: 同时刻输出四个通道电压
82 chl1--chl4: 4个通道的数据
83 **************************************/
84 void TLC5620_AllOutput(unsigned char dat[])
85 {
86 1 unsigned char i, j, chl;
87 1
88 1 for(j=0; j<4; j++)
89 1 {
90 2 chl = j;
91 2 /* 左移一位,加上RNG位 */
92 2 chl <<= 1;
93 2 chl |= RNG;
94 2 /* 将数据移到高3位 */
95 2 chl <<= 5;
96 2
97 2 for(i=3; i>0; i--)
98 2 {
99 3 /* 从高位到低位依次移出数据 */
100 3 TLC5620_DATA = (bit)(chl&0x80);
101 3 /* 等待数据稳定 */
102 3 TLC5620_CLK = 1;
103 3 chl <<= 1;
104 3 /* 下降沿将数据锁存 */
105 3 TLC5620_CLK = 0;
106 3 }
107 2 for(i=8; i>0; i--)
108 2 {
109 3 /* 从高位到低位依次移出数据 */
110 3 TLC5620_DATA = (bit)(dat[j]&0x80);
111 3 /* 等待数据稳定 */
112 3 TLC5620_CLK = 1;
113 3 dat[j] <<= 1;
114 3 /* 下降沿将数据锁存 */
115 3 TLC5620_CLK = 0;
116 3 }
C51 COMPILER V7.20 TLC5620 04/13/2006 13:32:33 PAGE 3
117 2 /* LOAD下降沿将数据锁入寄存器 */
118 2 TLC5620_LOAD = 0;
119 2 _nop_();
120 2 _nop_();
121 2 TLC5620_LOAD = 1;
122 2 _nop_();
123 2 _nop_();
124 2 _nop_();
125 2 _nop_();
126 2 }
127 1 /* LDAC下降沿将四个通道同时刻更新输出电压值 */
128 1 TLC5620_LDAC = 0;
129 1 _nop_();
130 1 _nop_();
131 1 TLC5620_LDAC = 1;
132 1 }
133
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 162 ----
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 + -