📄 qcqx.lst
字号:
C51 COMPILER V7.06 QCQX 11/18/2005 20:12:52 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE QCQX
OBJECT MODULE PLACED IN qcqx.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE qcqx.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X51.H>//11.0592MHz,看门狗工作
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define ON 0;
5 #define OFF 1;
6 #define reset() {WDT=0x1e;WDT=0xe1;}//看门狗复位宏定义
7 uchar code DATA_7SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,
8 0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的数码管段码*/
9 uint deda; //1ms计时单元
10 uchar sec; //计时秒
11 char set_min; //设定分
12 uchar min_5m; //5分钟计数器
13 uchar val; //中间变量
14 uchar pwm_val; //调宽脉冲变量值
15 char push_val; //压力变化值
16 sfr WDT=0xa6;//定义看门狗定时器
17 sbit pushdec_key=P1^4; //压力-键
18 sbit pushinc_key=P1^3; //压力+键
19 sbit timedec_key=P1^2; //时间-键
20 sbit timeinc_key=P1^1; //时间+键
21 sbit buzz=P3^5; //驱动蜂鸣器端
22 sbit out=P3^6;//调宽脉冲输出端
23 sbit relay=P3^7; //驱动继电器端
24 uchar dis_sel; //显示内容散转标志
25 bit over_5m; //5分钟溢出标志
26 bit flag_5m; //5分钟标志
27 bit flag_5s; //5秒钟标志
28 bit start; //启动标志
29 bit dis_flag; //显示标志
30 bit key_flag; //按下键标志
31 bit buzz_sound; //蜂鸣器声响标志
32 bit y; //中间变量
33 bit out_flag;//pwm输出标志
34 /*****************函数声明列表*****************/
35 void time_conv(void);// 时间计算子函数
36 void pwm_out(void);// 调宽脉冲输出子函数
37 void push_dis(void); //显示压力子函数
38 void oil_dis(void); //显示缺油子函数
39 void normal_dis(void) ;//显示正常工作子函数
40 void other_dis(void); //显示(缺油、超温)子函数
41 void temp_dis(void); //显示超温子函数
42 void oil_low(void); //缺油处理子函数
43 void temp_over(void); //超温处理子函数
44 void other(void); //(缺油、超温)处理子函数
45 void buzz_control(void); //控制蜂鸣器子函数
46 void delay(uint k); //延时子函数
47 void init(void); //初始化子函数
48 void init_timer0();//定时器0初始化子函数
49 void init_timer1();//定时器1初始化子函数
50 void key(void) ; //按键/感应开关处理子函数
51 void close(void); //关机子函数
52 void time_inc(void); //时间+子函数
53 void time_dec(void); //时间-子函数
54 void push_inc(void); //压力+子函数
55 void push_dec(void); //压力-子函数
C51 COMPILER V7.06 QCQX 11/18/2005 20:12:52 PAGE 2
56 void normal_work(void); //正常工作子函数
57 /**********************************/
58 /*******************初始化**********************/
59 void init()
60 {
61 1 IT0=1;
62 1 IE=0x8b;
63 1 reset()
64 1 }
65 /*********************定时器T0初始化************************/
66 void init_timer0()
67 {
68 1 TMOD=0x11;
69 1 TH0=-(1150/256);
70 1 TL0=-(1150%256);
71 1 TR0=0;ET0=1;EA=1;
72 1 }
73 /*************定时器T1初始化************/
74 /*定时器T1初始化*/
75 void init_timer1()
76 {
77 1 TH1=-(5000/256);
78 1 TL1=-(5000%256);
79 1 TR1=1;ET1=1;EA=1;
80 1 }
81 /*************延时子函数***************/
82 /*延时子函数*/
83 void delay(uint k)
84 {
85 1 uint i,j;
86 1 for(i=0;i<k;i++){
87 2 for(j=0;j<60;j++)
88 2 {;} reset()}
89 1 }
90
91
92 /********************外中断0服务子函数*********************/
93 void int0_serve(void) interrupt 0 using 1
94 {
95 1 delay(20);
96 1 if(P3_2==0)
97 1 start=!start;
98 1 while(P3_2==0)
99 1 {delay(20);
100 2 if(P3_2==1)break;}
101 1 }
102 /****************************************/
103 /*1mS定时中断服务子函数*/
104 void timer0(void) interrupt 1 using 2
105 {
106 1 TH0=-(1150/256);
107 1 TL0=-(1150%256);
108 1 deda++;
109 1 pwm_val++;
110 1 pwm_out();
111 1 time_conv();
112 1 }
113 /*************调宽脉冲输出子函数***************/
114 void pwm_out(void)
115 {
116 1 if(out_flag)
117 1 {
C51 COMPILER V7.06 QCQX 11/18/2005 20:12:52 PAGE 3
118 2 if(pwm_val<=(push_val+30)) {out=ON;}
119 2 else {out=OFF;}
120 2 if(pwm_val>=50) pwm_val=0;
121 2 }
122 1 else out=OFF;
123 1 }
124 /****************时间计算子函数***************/
125 void time_conv(void)
126 {
127 1 if(deda>=1000){sec++;deda=0;}
128 1 if(deda==500){buzz_sound=!buzz_sound;}
129 1 if(sec>=60)
130 1 {set_min--;sec=0;
131 2 if(flag_5m)min_5m++;
132 2 }
133 1 if(min_5m>=5){over_5m=1;min_5m=0;}
134 1 if(set_min<=0)set_min=0;
135 1 /***************/
136 1 }
137
138 /**************** T1 5ms定时中断服务子函数(显示用)******************/
139 void timer1(void) interrupt 3 using 3
140 {
141 1 TH1=-(5000/256);
142 1 TL1=-(5000%256);
143 1 if(start)
144 1 {
145 2 switch (dis_sel)
146 2 {case 0:normal_dis();break;
147 3 case 1:oil_dis();break;
148 3 case 2:temp_dis();break;
149 3 case 3:other_dis();break;
150 3 case 4:push_dis();break;
151 3 default:break;
152 3 }
153 2 }
154 1 else
155 1 { P2=0x00;P3=0xff;}
156 1 reset()
157 1 }
158 /*******************压力调整显示子函数*********************/
159 void push_dis(void)
160 {
161 1 if(dis_flag)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -