📄 ad977.lst
字号:
C51 COMPILER V7.09 AD977 08/24/2007 09:31:39 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE AD977
OBJECT MODULE PLACED IN AD977.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE AD977.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include "AD977.h"
3
4 //短延时函数:nNop()
5 void nNop(uchar x)
6 {
7 1 for(;x>0;x--);
8 1 }
9
10 //长延时函数:LongDelay()
11 void LongDelay(uint i)
12 {
13 1 uint j;
14 1 for(;i>0;i--)
15 1 { for(j=4000;j>0;j--);}
16 1 }
17
18 //从SPI总线读2字节(16bits)数据函数:
19 // SPI_Read_Two()
20 int SPI_Read_Two(void)
21 {
22 1 int temp;
23 1 uchar i;
24 1 SetSCLK(0);
25 1 for(i=0;i<16;i++)
26 1 {
27 2 SetSCLK(1);
28 2 nNop(2);
29 2 temp <<= 1;
30 2 if(PinDATA) temp++;
31 2 SetSCLK(0);
32 2 nNop(2);
33 2 }
34 1 return(temp);
35 1 }
36
37 //外部非连续数据时钟,读取上一次转换数据且无同步信号模式函数:
38 // EXCLKSample_Pre()
39 int EXCLKSample_Pre(void)
40 {
41 1 int temp;
42 1 SetEXINT(1);
43 1 SetRC(1);
44 1 SetRC(0);
45 1 while(PinBUSY);
46 1 nNop(2);
47 1 SetRC(1);
48 1 temp = SPI_Read_Two();
49 1 return(temp);
50 1 }
51
52 //外部非连续数据时钟,读取当前次转换数据且无同步信号模式函数:
53 // EXCLKSample_Now()
54 int EXCLKSample_Now(void)
55 {
C51 COMPILER V7.09 AD977 08/24/2007 09:31:39 PAGE 2
56 1 int temp;
57 1 SetEXINT(1);
58 1 SetRC(1);
59 1 SetRC(0);
60 1 while(PinBUSY);
61 1 nNop(1);
62 1 SetRC(1);
63 1 while(!PinBUSY);
64 1 temp = SPI_Read_Two();
65 1 return(temp);
66 1 }
67
68 //外部非连续数据时钟,读取上一次转换数据且有同步信号模式函数:
69 // EXCLKSample_Pre_Syn()
70 int EXCLKSample_Pre_Syn(void)
71 {
72 1 int temp;
73 1 SetEXINT(1);
74 1 SetSCLK(0);
75 1 SetRC(1);
76 1 SetRC(0);
77 1 SetSCLK(1);
78 1 while(PinBUSY);
79 1 SetSCLK(0);
80 1 nNop(1);
81 1 SetRC(1);
82 1 SetSCLK(1);
83 1 while(!PinSYN);
84 1 SetSCLK(0);
85 1 temp = SPI_Read_Two();
86 1 return(temp);
87 1 }
88
89 //外部非连续数据时钟,读取当前次转换数据且有同步信号模式函数:
90 // EXCLKSample_Now_Syn()
91 int EXCLKSample_Now_Syn(void)
92 {
93 1 int temp;
94 1 SetEXINT(1);
95 1 SetSCLK(0);
96 1 SetRC(1);
97 1 SetRC(0);
98 1 SetSCLK(1);
99 1 while(PinBUSY);
100 1 SetSCLK(0);
101 1 nNop(1);
102 1 SetRC(1);
103 1 while(!PinBUSY);
104 1 SetSCLK(1);
105 1 while(!PinSYN);
106 1 SetSCLK(0);
107 1 temp = SPI_Read_Two();
108 1 return(temp);
109 1 }
110
111 //指定方式采样以及读取数据函数:nSample()
112 int nSample(uchar smode, uchar sbtc)
113 {
114 1 int temp;
115 1 SetPWRD(PWOP);
116 1 switch(sbtc)
117 1 {
C51 COMPILER V7.09 AD977 08/24/2007 09:31:39 PAGE 3
118 2 case BTC : SetSBTC(BTC); break;
119 2 case SBIN : SetSBTC(SBIN); break;
120 2 default : break;
121 2 }
122 1 switch(smode)
123 1 {
124 2 case EXDCLK_RDPRE : temp = EXCLKSample_Pre(); break;
125 2 case EXDCLK_RDNOW : temp = EXCLKSample_Now(); break;
126 2 case EXDCLK_RDPRE_SYN : temp = EXCLKSample_Pre_Syn(); break;
127 2 case EXDCLK_RDNOW_SYN : temp = EXCLKSample_Now_Syn(); break;
128 2 default : break;
129 2 }
130 1 return(temp);
131 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 248 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -