📄 tem_ctrl.lst
字号:
C51 COMPILER V8.15 TEM_CTRL 03/21/2009 11:30:42 PAGE 1
C51 COMPILER V8.15, COMPILATION OF MODULE TEM_CTRL
OBJECT MODULE PLACED IN tem_ctrl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tem_ctrl.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************/
2 /* Copyright (c) 2009, 电子信息工程学院 */
3 /* All rights reserved. */
4 /* 作 者:王明兴 */
5 /*****************************************/
6
7 #include "main.h"
8 #include "DS18B20.h"
9 #include "MAX7219.h"
10
11 extern uint data Disp_Count ;
12 extern uint data Temp_Count ;
13 extern uint data Temp_Read;
14 extern uchar data Read_flag;
15 extern uchar data Key_Start_flag ;
16 extern uchar data Key_Setup_flag ;
17 extern uchar data Key_Up_flag ;
18 extern uchar data Key_Down_flag ;
19 extern uchar data Key_Enter_flag ;
20 extern uchar tplsb,tpmsb; // 温度值低位、高位字节
21 extern uchar data Buffer0[4];
22 extern uchar data Buffer1[4];
23 extern char data Cur_Temp;
24 extern uchar DisBuffer[8]; // 显示缓存区
25
26 void Da_Trans(void) //温度传感器数据处理
27 {
28 1 uchar n = 0;
29 1 if(tpmsb & 0x80)
30 1 {
31 2 n = 1;
32 2 tpmsb = ~tpmsb;
33 2 tplsb = ~tplsb + 1;
34 2 }
35 1 Cur_Temp = (tpmsb << 4) | (tplsb >> 4);
36 1 Buffer0[3] = ((tplsb & 0x0f) * 625 + 500) / 1000;
37 1 Buffer0[2] = Cur_Temp % 10 | 0x80;
38 1 Buffer0[1] = (Cur_Temp % 100) / 10;
39 1 Buffer0[0] = Cur_Temp / 100;
40 1 if(n)
41 1 {
42 2 if(Buffer0[1])
43 2 Buffer0[0] = 0x0a;
44 2 else
45 2 {
46 3 Buffer0[0] = 0x0f;
47 3 Buffer0[1] = 0x0a;
48 3 }
49 2 }
50 1 else
51 1 if(Buffer0[0] == 0)
52 1 {
53 2 Buffer0[0] = 0x0f;
54 2 if(Buffer0[1] == 0)
55 2 Buffer0[1] = 0x0f;
C51 COMPILER V8.15 TEM_CTRL 03/21/2009 11:30:42 PAGE 2
56 2 }
57 1 }
58
59 void Display(uchar *addr) //显示
60 {
61 1 uchar i;
62 1 for(i = 0;i < 4;i ++)
63 1 DisBuffer[i]= *addr ++;
64 1 WriteWord (Digit0,DisBuffer[0]);
65 1 WriteWord (Digit1,DisBuffer[1]);
66 1 WriteWord (Digit2,DisBuffer[2]);
67 1 WriteWord (Digit3,DisBuffer[3]);
68 1 }
69
70 void Da_Tran(uchar temp) //设置模式数据处理
71 {
72 1 Buffer1[3] = 0x00;
73 1 Buffer1[2] = (temp % 10) | 0x80;
74 1 Buffer1[1] = (temp % 100) / 10;
75 1 Buffer1[0] = temp / 100;
76 1 if(Buffer1[0] == 0)
77 1 {
78 2 Buffer1[0] = 0x0f;
79 2 if(Buffer1[1] == 0)
80 2 Buffer1[1] = 0x0f;
81 2 }
82 1 }
83
84 void Key_Process() //键盘处理
85 {
86 1 uchar Current_Key_Value,Last_Key_Value;
87 1 if((P1 >> 3) != 0x1f)
88 1 {
89 2 Last_Key_Value = P1 >> 3;
90 2 delay(100);
91 2 Current_Key_Value = P1 >> 3;
92 2 if(Current_Key_Value == Last_Key_Value)
93 2 {
94 3 switch(Current_Key_Value)
95 3 {
96 4 case 0x1e :
97 4 Key_Start_flag = !Key_Start_flag;
98 4 if(Key_Start_flag == 0)
99 4 {
100 5 Key_Setup_flag = 0;
101 5 LED_NORMAL = 1;
102 5 LED_WARING = 1;
103 5 TEMP_CTRL = 1;
104 5 }
105 4 break;
106 4 case 0x1d :
107 4 Key_Setup_flag = 1;
108 4 break;
109 4 case 0x1b :
110 4 Key_Up_flag = 1;
111 4 break;
112 4 case 0x17 :
113 4 Key_Down_flag = 1;
114 4 break;
115 4 case 0x0f :
116 4 Key_Enter_flag = 1;
117 4 break;
C51 COMPILER V8.15 TEM_CTRL 03/21/2009 11:30:42 PAGE 3
118 4 }
119 3 }
120 2 }
121 1 }
122
123 void T0_ISR() interrupt 1 using 1 //T0中断服务程序
124 {
125 1 static uint counter = 0;
126 1 TH0 = 0xf0;
127 1 TL0 = 0xd8;
128 1 counter ++;
129 1 if(counter == 200)
130 1 {
131 2 counter = 0;
132 2 LED_STATE = !LED_STATE;
133 2 }
134 1 }
135
136 void T1_ISR() interrupt 3 using 2 //T1中断服务程序
137 {
138 1 TH1 = 0xf0;
139 1 TL1 = 0xd8;
140 1 Disp_Count ++;
141 1 Temp_Count ++;
142 1 if(Read_flag)
143 1 Temp_Read ++;
144 1 }
145
146
147
148
149
150
151
152
153
154
155
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 419 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 4
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 + -