📄 ledstatus.lst
字号:
C51 COMPILER V8.09 LEDSTATUS 04/21/2010 21:14:13 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE LEDSTATUS
OBJECT MODULE PLACED IN E:\项目\制袋机\程序\制袋机~1\LEDSTATUS.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\项目\制袋机\程序\制袋机~1\LEDSTATUS.C DB SB OE
line level source
1 /***************************************
2 * 文件名:LEDSTATUS.c
3 * 描述:
4 * 最后修改时间:2010.4.7
5 ****************************************/
6
7 #include "INCLUDES.H"
8
9 //LED的状态(共13个LED)
10 //LED1:led_status[0]
11 //LED2:led_status[1]
12 //LED3:led_status[2]
13 //LED4:led_status[3]
14 //LED5:led_status[4]
15 //LED6:led_status[5]
16 //LED7:led_status[6]
17 //LED8:led_status[7]
18 //LED9:led_status[8]
19 //LED10:led_status[9]
20 //LED11:led_status[10]
21 //LED12:led_status[11]
22 //LED13:led_status[12]
23 static uchar xdata led_status[13] = {0};
24 static bool xdata led_status_bChanged[13] = {false};
25 //static uchar xdata led_status_decode[13] = {0};
26
27 //LED13状态,0:灯亮 1:灯暗
28 // [7] [6] [5] [4] [3] [2] [1] [0]
29 // L4/L5 L6/L7 L9 L3 L8 L2 L1
30 // 极选 色选 停止 测试 运行 手动 设定
31
32 //LED状态解码查询表
33 static uchar code tab_led_status[10] = {0xFA,0x90,0x73,0xD3,0x99,0xCB,0xEB,0xD0,0xFB,0xDB};
34
35
36 //====================================================================================
37 //函数名称:void LEDSTATUS_INIT()
38 //函数功能:底板电路状态读取初始化
39 //入口参数:无
40 //出口参数:无
41 //====================================================================================
42 void LEDSTATUS_INIT()
43 {
44 1 INT1=1;//INT1输出高电平
45 1 IE1=0;//中断标志位清零
46 1 IT1=1;//下降沿触发
47 1 EX1=1;//INT1打开
48 1 }
49
50 //====================================================================================
51 //函数名称:void LEDSTATUS_ISR() interrupt 2
52 //函数功能:底板电路状态读取中断函数
53 //入口参数:无
54 //出口参数:无
55 //====================================================================================
C51 COMPILER V8.09 LEDSTATUS 04/21/2010 21:14:13 PAGE 2
56 void LEDSTATUS_ISR() interrupt 2
57 {
58 1 uchar addr = 0;
59 1 uchar temp;
60 1 EA = 0;//关中断
61 1 //编码地址输出 A3 A2 A1 A0
62 1 //对应引脚 p1.5 p1.4 p1.1 p1.0
63 1 P1 |= 0x33;
64 1 temp = P1;
65 1 addr = ((temp & 0x30) >> 2) + (temp & 0x3);//CSn片选信号编码地址
66 1 //LED1: addr = F
67 1 //LED2: addr = E
68 1 //LED3: addr = D
69 1 //LED4: addr = C
70 1 //LED5: addr = B
71 1 //LED6: addr = 9
72 1 //LED7: addr = 8
73 1 //LED8: addr = 7
74 1 //LED9: addr = 6
75 1 //LED10: addr = 5
76 1 //LED11: addr = 4
77 1 //LED12: addr = 3
78 1 //LED13: addr = A
79 1 if(addr <= 9)
80 1 {
81 2 led_status[14 - addr] = LEDSTATUS_IN_ADDR;
82 2 led_status_bChanged[14 - addr] = true;
83 2 }
84 1 else if(addr <= 10)
85 1 {
86 2 led_status[12] = LEDSTATUS_IN_ADDR;
87 2 led_status_bChanged[12] = true;
88 2 }
89 1 else if(addr <= 15)
90 1 {
91 2 led_status[15 - addr] = LEDSTATUS_IN_ADDR;
92 2 led_status_bChanged[15 - addr] = true;
93 2 }
94 1 else
95 1 {
96 2 //do nothing
97 2 }
98 1 EA = 1;//开中断
99 1 }
100
101 //====================================================================================
102 //函数名称:void Update_LEDSTATUS()
103 //函数功能:底板电路状态解码并更新到全局变量g_Status
104 //入口参数:无
105 //出口参数:无
106 //====================================================================================
107 void Update_LEDSTATUS()
108 {
109 1 uchar i,j;
110 1 uchar decode;
111 1
112 1 //12个数码管状态的解码
113 1 for(i = 0; i < 12; i++)
114 1 {
115 2 if(led_status_bChanged[i])
116 2 {
117 3 led_status_bChanged[i] = false;
C51 COMPILER V8.09 LEDSTATUS 04/21/2010 21:14:13 PAGE 3
118 3
119 3 decode = 0xff;
120 3 for(j = 0; j < 10; j++)
121 3 {
122 4 if((led_status[i]&0xfb) == tab_led_status[j])
123 4 {
124 5 decode = j;
125 5 break;
126 5 }
127 4 }
128 3 switch(i)
129 3 {
130 4 case 0:
131 4 {
132 5 //g_Status.LENGTH_4 = decode;
133 5 //g_Status.bUpdated_LENGTH_4 = true;
134 5 g_Status.ItemState[5] = decode;
135 5 g_Status.bUpdated_ItemState[5] = true;
136 5 break;
137 5 }
138 4 case 1:
139 4 {
140 5 //g_Status.LENGTH_3 = decode;
141 5 //g_Status.bUpdated_LENGTH_3 = true;
142 5 g_Status.ItemState[6] = decode;
143 5 g_Status.bUpdated_ItemState[6] = true;
144 5 break;
145 5 }
146 4 case 2:
147 4 {
148 5 //g_Status.LENGTH_2 = decode;
149 5 //g_Status.bUpdated_LENGTH_2 = true;
150 5 g_Status.ItemState[7] = decode;
151 5 g_Status.bUpdated_ItemState[7] = true;
152 5 break;
153 5 }
154 4 case 3:
155 4 {
156 5 //g_Status.LENGTH_1 = decode;
157 5 //g_Status.bUpdated_LENGTH_1 = true;
158 5 g_Status.ItemState[8] = decode;
159 5 g_Status.bUpdated_ItemState[8] = true;
160 5 break;
161 5 }
162 4 case 4:
163 4 {
164 5 //g_Status.SPEED = decode;
165 5 //g_Status.bUpdated_SPEED = true;
166 5 g_Status.ItemState[10] = decode;
167 5 g_Status.bUpdated_ItemState[10] = true;
168 5 break;
169 5 }
170 4 case 5:
171 4 {
172 5 //g_Status.GEPI_2 = decode;
173 5 //g_Status.bUpdated_GEPI_2 = true;
174 5 g_Status.ItemState[15] = decode;
175 5 g_Status.bUpdated_ItemState[15] = true;
176 5 break;
177 5 }
178 4 case 6:
179 4 {
C51 COMPILER V8.09 LEDSTATUS 04/21/2010 21:14:13 PAGE 4
180 5 //g_Status.GEPI_1 = decode;
181 5 //g_Status.bUpdated_GEPI_1 = true;
182 5 g_Status.ItemState[16] = decode;
183 5 g_Status.bUpdated_ItemState[16] = true;
184 5 break;
185 5 }
186 4 case 7:
187 4 {
188 5 //g_Status.COUNT_5 = decode;
189 5 //g_Status.bUpdated_COUNT_5 = true;
190 5 g_Status.ItemState[0] = decode;
191 5 g_Status.bUpdated_ItemState[0] = true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -