📄 function.lst
字号:
C51 COMPILER V7.09 FUNCTION 10/12/2006 14:21:46 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN function.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE function.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "sys.h"
2 #include "user.h"
3
4 extern data UCHAR *p;
5 extern code UCHAR handshake[6];
6 extern data UCHAR UIData[6];
7 extern UCHAR voltageShow;
8 bit sendFlag,timerFlag;
9 UCHAR ampNum;
10 typedef struct
11 {
12 signed int d[30];
13 UINT front,rear;
14 }ASEQ;
15 ASEQ sq;
16 void UserInit()
17 {
18 1 AD7895_CONVST = 0;
19 1 AD7895_SCLK = 0;
20 1 MEASURE_UI = 0; //measure i first;
21 1 AMPGAIN = 1; //*1
22 1 //AD2 = 1;
23 1 //AD3 = 1; //*2
24 1 sendFlag = 0;
25 1 timerFlag = 0;
26 1 ampNum = 1;//2; //the amplify multiple is 2
27 1 SEND_RECEIVE = 0; //receive status
28 1 TEST_START = 0;
29 1 }
30
31 void Send(bit flag)
32 {
33 1 SEND_RECEIVE = 1; //send status
34 1 EA = 0;
35 1 SBUF = 0xff;
36 1 while(TI == 0);
37 1 TI = 0;
38 1 SBUF = 0xff;
39 1 while(TI == 0);
40 1 TI = 0;
41 1 EA = 1;
42 1 if(!flag) //handshake
43 1 p = handshake;
44 1 else //transfer the data
45 1 p = UIData;
46 1 TB8 = 1; //sign address flag
47 1 SBUF = 0x5a; //send base's address
48 1 while(!sendFlag);
49 1 EA = 0;
50 1 sendFlag = 0;
51 1 SBUF = 0xff;
52 1 while(TI == 0);
53 1 TI = 0;
54 1 SEND_RECEIVE = 0; //receive status
55 1 EA = 1;
C51 COMPILER V7.09 FUNCTION 10/12/2006 14:21:46 PAGE 2
56 1 }
57
58 //the frequency of MCU is 12MHz;
59 void Delay(UCHAR n)
60 {
61 1 UCHAR i;
62 1 for(i=0;i<n;i++);
63 1 }
64
65 void GatherUI()
66 {
67 1 typedef union
68 1 {
69 1 signed int datatmp;
70 1 struct{UCHAR hi;UCHAR lo;}bytes;
71 1 }UNION;
72 1 UNION newData;
73 1 // UCHAR i;
74 1 ES = 0;
75 1
76 1 newData.datatmp = MeasureUI();
77 1 UIData[0] = newData.bytes.hi;
78 1 UIData[1] = newData.bytes.lo;
79 1 UIData[2] = ampNum|(voltageShow&0x30); //添加电池电压信息
80 1
81 1 newData.datatmp = MeasureUI();
82 1 UIData[3] = newData.bytes.hi;
83 1 UIData[4] = newData.bytes.lo;
84 1 UIData[5] = ampNum;
85 1 ES = 1;
86 1 }
87
88 signed int MeasureUI(void)
89 {
90 1 signed int datatmp1,datatmp2;
91 1 UCHAR i;
92 1 datatmp1 = 0;
93 1 datatmp2 = 0;
94 1 TH0 = TIMER0/256;
95 1 TL0 = TIMER0%256; //timer0 800us;
96 1 sq.front = sq.rear = 0;
97 1 TR0 = 1;
98 1 MEASURE_UI = 1; //measure u second;
99 1 AMPGAIN =1; //*1
100 1 ampNum = 1;//2;
101 1 timerFlag=0;
102 1 while(!timerFlag )
103 1 {
104 2 // NOP;
105 2 }
106 1 timerFlag = 0;
107 1 for(i=0;i<15;i++)
108 1 datatmp1 += sq.d[i];
109 1 datatmp1 /= 15;
110 1 for(i=15;i<30;i++)
111 1 datatmp2 += sq.d[i];
112 1 datatmp2 /= 15;
113 1 datatmp1 = (datatmp1+datatmp2)/2;
114 1 return datatmp1;
115 1 }
116
117 signed int AD7895()
C51 COMPILER V7.09 FUNCTION 10/12/2006 14:21:46 PAGE 3
118 {
119 1 signed int result;
120 1 UCHAR tmpNum;
121 1 AD7895_CONVST = 1;
122 1 Delay(10); //wake-up time,6us min;
123 1 AD7895_CONVST = 0;
124 1 NOP;
125 1 while(AD7895_BUSY);
126 1 for(tmpNum=0;tmpNum<16;tmpNum++)
127 1 {
128 2 AD7895_SCLK = 1;
129 2 result <<= 1;
130 2 result |= AD7895_DATA;
131 2 AD7895_SCLK = 0;
132 2 }
133 1 return result;
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 311 ----
CONSTANT SIZE = 4 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 65 2
IDATA SIZE = ---- ----
BIT SIZE = 2 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -