📄 tlc549测试.lst
字号:
C51 COMPILER V8.08 TLC549瞋试 05/20/2009 21:40:21 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TLC549瞋试
OBJECT MODULE PLACED IN tlc549测试.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tlc549测试.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //功能:串行AD转换器TL549进行一路模拟量的测量
2 //驱动TLC549,TLC549是串行8位ADC
3 #include "reg51.h"
4 #include "intrins.h"
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 #define Wait1us _nop_();
9 #define Wait2us {_nop_();_nop_();}
10 #define Wait4us {Wait2us;Wait2us;}
11 #define Wait8us {Wait4us;Wait4us;}
12 #define Wait10us {Wait8us;Wait2us;}
13
14 #define Wait30us {Wait10us;Wait8us;Wait4us;Wait2us;}
15 //定义TLC549串行总线操作端口
16 sbit CLK=P0^1;
17 sbit DAT=P0^2;
18 sbit CS=P0^3 ;
19 sbit P10=P1^0;
20 sbit P11=P1^1;
21 sbit P12=P1^2;
22 unsigned char code table1[]=
23 { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
24 //{0xdf,0x86,0xbb,0xaf,0xe6,0xed,0xfd,0x87,
25 //0xff,0xef,0xf7,0xfc,0xd9,0xbe,0xf9,0xf1};
26
27 uchar bdata ADCdata;
28 uchar i, AD_DATA;
29 sbit ADbit=ADCdata^0;
30
31 /********************************************************************
32
33 函 数 名:TLC549ADC()
34 功 能:A/D转换子程序
35 说 明:读取上一次A/D转换的数据,启动下一次A/D转换
36 入口参数:无
37 返 回 值:无
38 设 计:yangm_cui 日 期:2008-03-19
39 修 改: 日 期:
40 ***********************************************************************/
41 void delay()
42 {
43 1 uint i,j;
44 1 for(i=0;i<=5;i++)
45 1 for(j=0;j<=5;j++)
46 1 {;}
47 1 }
48
49 uchar TLC549ADC(void)
50 {
51 1 uchar i;
52 1
53 1 CS = 1; //芯片复位
54 1 CS = 0;
55 1 CS = 1;
C51 COMPILER V8.08 TLC549瞋试 05/20/2009 21:40:21 PAGE 2
56 1 // Clock = 0;
57 1 //Wait4us;
58 1 //CS = 0; //芯片起始
59 1 //Wait4us; //等待延时
60 1 //for (i = 0; i < 8; i ++) //输入采样转换时钟
61 1 //{
62 1 // Clock = 1;
63 1 // Wait1us;
64 1 // Clock = 0;
65 1 // }
66 1 CS = 1; //开始转换
67 1 Wait30us; //等待转换结束
68 1 CS= 0; //读取转换结果
69 1 Wait4us;
70 1
71 1
72 1 CLK=0;
73 1
74 1 DAT=1;
75 1 CS=0;
76 1 Wait4us;
77 1 for(i=0;i<8;i++)
78 1 {
79 2 CLK=1;
80 2 // delay();
81 2 // delay();
82 2 ADCdata<<=1; //AD转换
83 2 ADbit=DAT;
84 2 CLK=0;
85 2 delay();
86 2 }
87 1 CS=1;
88 1 return (ADCdata);
89 1 }
90
91
92 void display()
93 {
94 1
95 1 P1=0xfb;
96 1 P2=table1[AD_DATA/100];
97 1 for(i=0xff;i>0;i--) //延时
98 1 {delay();}
99 1 for(i=0xff;i>0;i--) //延时
100 1 {delay();}
101 1
102 1 //P1=0xfd;
103 1 //P0=table1[(AD_DATA%100)/10];
104 1 //for(i=0xff;i>0;i--) //延时
105 1 //{delay();}
106 1 //for(i=0xff;i>0;i--) //延时
107 1 //{delay();}
108 1
109 1 //P1=0xfe;
110 1 //P0=table1[AD_DATA%10];
111 1 //for(i=0xff;i>0;i--) //延时
112 1 //{delay();}
113 1 //for(i=0xff;i>0;i--) //延时
114 1 //{delay();}
115 1 }
116 /********************************************************************
117
C51 COMPILER V8.08 TLC549瞋试 05/20/2009 21:40:21 PAGE 3
118 函 数 名:main()
119 功 能:主程序
120 说 明:
121 入口参数:无
122 返 回 值:无
123 设 计:yangm_cui 日 期:2008-03-19
124 修 改: 日 期:
125 ***********************************************************************/
126 void main()
127 {
128 1 while(1)
129 1 {
130 2 // uchar i;
131 2 // uchar AD_DATA; //定义A/D转换数据变量
132 2
133 2 AD_DATA=TLC549ADC(); //启动一次A/D转换
134 2
135 2 // CS=0;
136 2 for(i=1500;i>0;i--) //延时
137 2 { delay();}
138 2
139 2 //AD_DATA=TLC549ADC(); //读取当前电压值A/D转换数据
140 2 display();
141 2
142 2 }
143 1 }
144
145
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 176 ----
CONSTANT SIZE = 10 ----
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 + -