📄 main.lst
字号:
C51 COMPILER V7.09 MAIN 06/23/2006 14:14:50 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 Main.C
3 TLC5620串行DAC例程:产生正弦波
4 */
5
6
7 #include <REG51.H>
8
9
10 //定义I/O端口
11 sbit DAT = P1^4; //串行数据
12 sbit CLK = P1^5; //串行时钟,下降沿有效
13 sbit LDAC = P1^6; //DAC更新锁存控制,下降沿有效
14 sbit LOAD = P1^7; //串行数据装载,下降沿有效
15
16
17 /*
18 函数:Dac()
19 功能:发送数据至TLC5620串行DAC
20 参数:
21 addr:DAC通道地址,取值0~3,对应通道A~D
22 rng:附加的范围位,rng=0时,Vo不会超过Vref,rng=1时,Vo变为2倍
23 dat:8位DAC数据
24 公式:
25 rng=0时,Vo=Vref*(dat/256)
26 rng=1时,Vo=Vref*(dat/256)*2
27 */
28 void Dac(unsigned char addr, bit rng, unsigned char dat)
29 {
30 1 unsigned char n;
31 1 //发送通道地址
32 1 n = 2;
33 1 do
34 1 {
35 2 DAT = (bit)(addr & 0x02);
36 2 addr <<= 1;
37 2 CLK = 0;
38 2 CLK = 1;
39 2 } while ( --n != 0 );
40 1 //发送RNG位
41 1 DAT = rng;
42 1 CLK = 0;
43 1 CLK = 1;
44 1 //发送8位DAC数据
45 1 n = 8;
46 1 do
47 1 {
48 2 DAT = (bit)(dat & 0x80);
49 2 dat <<= 1;
50 2 CLK = 0;
51 2 CLK = 1;
52 2 } while ( --n != 0 );
53 1 //装载数据
54 1 LOAD = 0;
55 1 LOAD = 1;
C51 COMPILER V7.09 MAIN 06/23/2006 14:14:50 PAGE 2
56 1 //数据锁存到DAC转换器
57 1 LDAC = 0;
58 1 LDAC = 1;
59 1 }
60
61
62 /*
63 函数:Delay()
64 功能:延时1ms~256ms
65 参数:
66 t>0时,延时(t)ms
67 t=0时,延时256ms
68 */
69 void Delay(unsigned char t)
70 {
71 1 do
72 1 {
73 2 TH0 = 0xFC;
74 2 TL0 = 0x66;
75 2 TR0 = 1;
76 2 while ( !TF0 );
77 2 TR0 = 0;
78 2 TF0 = 0;
79 2 } while ( --t != 0 );
80 1 }
81
82
83 /*
84 函数:SinWave()
85 功能:利用TLC5620串行DAC在通道B产生正弦波
86 说明:请用示波器观察SmartSOPC实验箱D5区的DACB通道
87 */
88 void SinWave()
89 {
90 1 code unsigned char SinTab[] =
91 1 {
92 1 128,147,167,185,202,218,231,241,249,253,
93 1 255,253,249,241,231,218,202,185,167,147,
94 1 127,108,88,70,53,37,24,14,6,2,
95 1 0,2,6,14,24,37,53,70,88,108
96 1 };
97 1 unsigned char n;
98 1 for (;;)
99 1 {
100 2 for ( n=0; n<40; n++ )
101 2 {
102 3 Dac(1,0,SinTab[n]);
103 3 Delay(5);
104 3 }
105 2 }
106 1 }
107
108
109 void main()
110 {
111 1 TMOD &= 0xF0;
112 1 TMOD |= 0x01;
113 1 DAT = 1;
114 1 CLK = 1;
115 1 LDAC = 1;
116 1 LOAD = 1;
117 1 SinWave();
C51 COMPILER V7.09 MAIN 06/23/2006 14:14:50 PAGE 3
118 1 for (;;);
119 1 }
120
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 116 ----
CONSTANT SIZE = 40 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -