📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 10/29/2006 14:30:41 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <absacc.h>
3 #include <intrins.h>
4 #include <./Atmel/at89x52.h>
5 #include "source.h"
6 struct MY_TIMER TT[TIMER_NUM];
7 struct volt_detect volt_group;
8 void time2()interrupt 5
9 {
10 1 unsigned char i;
11 1 for(i=0;i<TIMER_NUM;i++)
12 1 {
13 2 if(TT[i].enable==1)
14 2 {
15 3 if(TT[i].count==0)
16 3 {
17 4 TT[i].enable=0;
18 4 TT[i].flag=1;
19 4 }
20 3 else{
21 4 TT[i].count--;
22 4 }
23 3 }
24 2 }
25 1 TF2=0;
26 1 }
27 void start_timer(void)
28 {
29 1 T2CON=0X00;
30 1 RCAP2L=TIMER2L; //10ms
31 1 TL2=TIMER2L;
32 1 RCAP2H=TIMER2H;
33 1 TH2=TIMER2H;
34 1 ET2=1;//enable timer2 interrupt
35 1 TR2=1;//start timer
36 1 }
37 void reset_timer(unsigned char i)
38 {
39 1 TT[i].enable=0;
40 1 TT[i].count=0;
41 1 }
42 void set_timer(unsigned char i,unsigned int count) // time out counter*10ms
43 {
44 1 TT[i].count=count;
45 1 TT[i].enable=1;
46 1 TT[i].flag=0;
47 1 }
48 void Adc0801_Start_Cvt(void)
49 {
50 1 ADC0801_PORT=0;
51 1 }
52 unsigned char Adc0801_Read(void)
53 {
54 1 return(ADC0801_PORT);
55 1 }
C51 COMPILER V7.06 MAIN 10/29/2006 14:30:41 PAGE 2
56 #define DELAY _nop_();_nop_();_nop_();_nop_();
57 unsigned int tlc_volt_read(unsigned char addr) //max system clock 2.1M max i/oclock 1.1M
58 {
59 1 unsigned char i;
60 1 unsigned char tlc_add;
61 1 unsigned int dat;
62 1 i=10;
63 1 dat=0;
64 1 tlc_add=addr;
65 1 AD_IOCLK=0;
66 1 AD_CSN=0;_nop_();_nop_(); // set up time
67 1 while(i--)
68 1 {
69 2 AD_IOCLK=0;DELAY;
70 2 if(tlc_add&0x08)
71 2 AD_ADDI=1;
72 2 else
73 2 AD_ADDI=0;
74 2 tlc_add<<=1;
75 2
76 2 AD_IOCLK=1;
77 2 dat<<=1;
78 2 dat |=AD_OUT;
79 2 DELAY;
80 2 }
81 1 AD_CSN=1; //ABOVER IS PREVIOUS BYTE;
82 1 return dat;
83 1 }
84 #undef DELAY
85 void Tlc_Ad_Cvt(void)
86 {
87 1 unsigned int temp_volt;
88 1 temp_volt=tlc_volt_read(volt_group.port);
89 1 temp_volt=temp_volt>>1;//in order to value less than 512
90 1 temp_volt=temp_volt%0x200;//div 512 because the valut of volt is smaller than 512;
91 1 temp_volt=temp_volt*125;
92 1 temp_volt >>=7;//then result is (volt_temp *5*100)/1024 and is is the real volt multiply 100.
93 1 switch(volt_group.preport)
94 1 {
95 2 case VOLT_1_8V_PORT:
96 2 case VOLT_E3_3V_PORT:
97 2 case VOLT_LOCAL_3_3V_PORT:
98 2 case VOLT_VX_AGC_PORT:
99 2 case VOLT_TEST:
100 2 //is the real value multiply 100.
101 2 break;
102 2 case VOLT_N48V_PORT:
103 2 temp_volt=(500-temp_volt)*53;
104 2 temp_volt=temp_volt/2-500;
105 2 break;
106 2 case VOLT_9V_PORT:
107 2 temp_volt=temp_volt*3;
108 2 break;
109 2 case VOLT_N5V_PORT:
110 2 temp_volt=300-temp_volt;
111 2 temp_volt=temp_volt*5;
112 2 temp_volt=temp_volt/2;
113 2 break;
114 2 case VOLT_15V_PORT:
115 2 temp_volt=temp_volt*6;
116 2 break;
117 2 case VOLT_15V_LNB_PORT:
C51 COMPILER V7.06 MAIN 10/29/2006 14:30:41 PAGE 3
118 2 temp_volt=temp_volt*6;
119 2 break;
120 2 case VOLT_24V_ODU_PORT:
121 2 temp_volt=temp_volt*6;
122 2 break;
123 2 case VOLT_LOCAL_24V_PORT:
124 2 temp_volt=temp_volt*6;
125 2 break;
126 2 default:break;
127 2 }
128 1 volt_group.volt[volt_group.preport]=temp_volt;
129 1 volt_group.preport=volt_group.port;
130 1 volt_group.port++;
131 1 volt_group.port %=VOLT_TOTAL_PORTS;
132 1 }
133
134 main()
135 {
136 1 unsigned char fsm_adc=0;
137 1 unsigned int V_ADJ=0;
138 1 IE=0X40;
139 1 start_timer();
140 1 EA=1; /* Enable interrupts */
141 1 volt_group.port=0;
142 1 volt_group.preport=0;
143 1 tlc_volt_read(volt_group.port);
144 1 volt_group.port=1;
145 1 set_timer(VOLT_TIMER,VOLT_TIMER_LEN);
146 1 set_timer(ADC0801_TIMER,ADC0801_TIMER_LEN);
147 1 while(1){
148 2 if(TT[VOLT_TIMER]){
*** WARNING C276 IN LINE 148 OF MAIN.C: constant in condition expression
149 3 set_timer(VOLT_TIMER,VOLT_TIMER_LEN);
150 3 Tlc_Ad_Cvt();
151 3 }
152 2 if(TT[ADC0801_TIMER]){
*** WARNING C276 IN LINE 152 OF MAIN.C: constant in condition expression
153 3 set_timer(ADC0801_TIMER,ADC0801_TIMER_LEN);
154 3 switch(fsm_adc){
155 4 case FSM_ADC0801_START:
156 4 fsm_adc=FSM_ADC0801_FINISH;
157 4 Adc0801_Start_Cvt();
158 4 break;
159 4 case FSM_ADC0801_FINISH:
160 4 fsm_adc=FSM_ADC0801_START;
161 4 V_ADJ=Adc0801_Read();
162 4 V_ADJ *=5;
163 4 V_ADJ *=100;
164 4 V_ADJ /=256;
165 4 break;
166 4 default:
167 4 fsm_adc=FSM_ADC0801_START;
168 4 break;
169 4 }
170 3 }
171 2 }
172 1 }
173
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 567 ----
C51 COMPILER V7.06 MAIN 10/29/2006 14:30:41 PAGE 4
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 74 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -