📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 01/03/2008 17:28:43 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <c8051f350.h>
2 #include <intrins.h>
3 #include "adc.h"
4 #include "I2C.h"
5 #include "menu.h"
6 #include "math.h"
7 #include "variable.h"
8
9 sbit SRCLK =P0^0;
10 sbit SER =P0^2;
11 sbit SDA =P0^6;
12 sbit SCL =P0^7;
13
14 sbit RCK0 =P1^1;
15 sbit RCK1 =P1^2;
16 sbit RCK2 =P1^3;
17 sbit RCK3 =P1^4;
18 sbit RCK4 =P1^5;
19 sbit KR =P1^6;
20
21 void wait(unsigned char del);
22 void IO_init(void);
23 void Timer_init(void);
24 void Inter_init(void);
25 /**********************************************
26
27 */
28 void AlarmOut()
29 {
30 1 unsigned char i;
31 1 //ACC = val;
32 1 for (i=8;i>0;i--)
33 1 {
34 2 SRCLK=0;//拉低74HC595时钟
35 2 SER=0;//crol(ACC,1);// CY;//发送74HC595一位串行数据
36 2 //_nop_();//wait(1);
37 2 SRCLK=1;//拉高74HC595时钟
38 2 //_nop_();//wait(1);//延时
39 2 }
40 1 RCK2=0;
41 1 _nop_();//wait(2);//延时
42 1 RCK2=1;
43 1 _nop_();//wait(2);
44 1 RCK2=0;
45 1 }
46
47 void main(void)
48 {
49 1 //系统时钟设置
50 1 //PCA0MD &= ~0x40;//禁止看门狗
51 1 PCA0MD = 0x00;
52 1
53 1 Inter_init();
54 1 Timer_init();
55 1 //端口初始化
C51 COMPILER V7.06 MAIN 01/03/2008 17:28:43 PAGE 2
56 1 IO_init();
57 1
58 1 //ADC初始化
59 1 Adc_init();
60 1 //DAC初始化
61 1 Dac_init();
62 1 //SMBus初始化
63 1 SMbus_init();
64 1 EA=1;
65 1
66 1
67 1 //显示参数初始化
68 1 timer_cnt=0;
69 1 disp_sta=0x80;
70 1 disp_cnt=0x08;
71 1 //RCK0=0;
72 1 //RCK1=0;
73 1 //RCK2=0;
74 1 //RCK3=0;
75 1 //RCK4=0;
76 1 //SER=1;
77 1 //SRCLK=1;
78 1 Dac_hdl(24);
79 1 //SMbus_24c02_read(2);
80 1 AlarmOut();
81 1 dem_flag=0;
82 1 pin_flag=0;
83 1
84 1 load_ref();//加载参数
85 1
86 1 while(1)
87 1 {
88 2 if(ref_table[ref_sn]<rt_start)//判断当前设置的是阻型还是偶型
89 2 {
90 3 pin_flag=0; //偶型
91 3 }
92 2 else
93 2 {
94 3 pin_flag=1; //阻型
95 3 }
96 2 //AD采样
97 2 if(pin_flag)
98 2 ad_value=Adc0_hdl(0x67);//阻
99 2 else
100 2 ad_value=Adc0_hdl(0x45);//偶
101 2
102 2 //选择精度范围
103 2 if(!dem_flag)
104 2 choose_range();
105 2
106 2 //温度数据处理
107 2 if(!menu_flag)
108 2 {
109 3 temp_process();
110 3 switch(led_degree) //led_degree为计算出来的温度值
111 3 {
112 4 case degree_brok:
113 4 renew_page_high(Itm_brok);
114 4 break;
115 4 case degree_overflow:
116 4 renew_page_high(Itm_overflow);
117 4 break;
C51 COMPILER V7.06 MAIN 01/03/2008 17:28:43 PAGE 3
118 4 //case sc_overflow:
119 4 // renew_page_high(Itm_1sc);
120 4 // break;
121 4 default:
122 4 dis_flag=1;
123 4 if(pin_flag)
124 4 point_pos=2;
125 4 display_num(led_degree);
126 4 }
127 3 }
128 2 //wait(200);
129 2 //wait(200);
130 2 //wait(200);
131 2 //wait(200);
132 2 //菜单处理
133 2 menu_hdl();
134 2
135 2 //标定操作时显示标定值
136 2 if(dem_flag)
137 2 {
138 3 if(pin_flag)
139 3 ref_table[ref_buffer+volt_range1-counter]=Adc0_hdl_f(0x67);
140 3 else
141 3 ref_table[ref_buffer+volt_range1-counter]=Adc0_hdl_f(0x45);
142 3 point_pos=point_pos_1;
143 3 dis_flag=0;
144 3 display_num(ref_table[ref_buffer+volt_range1-counter]);
145 3 }
146 2 }
147 1 }
148 /*******************************************
149 中断初始化
150 *******************************************/
151 void Inter_init(void)
152 {
153 1 EIE1= 0x01;//中断允许
154 1 IE = 0x20;
155 1 EIP1= 0x01;//中断优先
156 1 }
157
158 /*******************************************
159 定时器初始化
160 *******************************************/
161 void Timer_init(void)
162 {
163 1 CLKSEL =0;//选择内部时钟
164 1 OSCICN =0x80;//内部时钟使能,8分频
165 1 TCON =0x10;
166 1 TMOD =0x02;//T0作为波特率发生器
167 1 SMB0CF =0x00;
168 1 CKCON =0x01;
169 1 TH0 =0xda;
170 1 TL0 =0xda;
171 1
172 1 //CKCON =0x10;
173 1 TMR2CN =0x04;//T2显示键盘中断定时
174 1
175 1 TMR2RLL =0x00;
176 1 TMR2RLH =0x00;
177 1 TMR2L =0x00;
178 1 TMR2H =0x00;
179 1
C51 COMPILER V7.06 MAIN 01/03/2008 17:28:43 PAGE 4
180 1 }
181 /*******************************************
182 端口初始化
183 *******************************************/
184 void IO_init(void)
185 {
186 1 XBR0 =0x05;//I2C,UART使能
187 1 XBR1 =0x40;//交叉开关使能
188 1 P0MDIN =0xff;//数字输入
189 1 P0MDOUT =0;
190 1 P0SKIP =0x0f;//???
191 1 P1MDIN =0xff;//数字输入
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -