📄 hd7279.lst
字号:
125 1 DBYTE[0X00A6]=0xe1; /*启动看门狗*/
126 1 Send_Byte(0xa4); /*HD7279复位*/
127 1 Write_Hd7279(ACT_CTL,0x1f); /*HD7279启动消隐功能,能提高灯的亮度*/
128 1 Write_Hd7279(0xc9,0x03); /*上电显示6、5、4、3*/
129 1 Write_Hd7279(0xca,0x04);
130 1 Write_Hd7279(0xcb,0x05);
131 1 Write_Hd7279(0xcc,0x06);
132 1 }
133
134
135 void int1_Hd7279key(void) interrupt 0 /*外部中断0函数*/
136 {
137 1 Keyboard_Out=Read_Hd7279(0x15); /*读取键值*/
138 1 switch(Keyboard_Out)
139 1 {/*键盘设置*/
140 2 case 16:Keyboard_Out=0;
141 2 Set_Bit(Keyboard_Flag); break;/*设置键标志*/
142 2 case 27:Keyboard_Out=1;
143 2 Set_Bit(Keyboard_Flag); break;
144 2 case 19:Keyboard_Out=2;
145 2 Set_Bit(Keyboard_Flag); break;
146 2 case 11:Keyboard_Out=3;
147 2 Set_Bit(Keyboard_Flag); break;
148 2 case 26:Keyboard_Out=4;
149 2 Set_Bit(Keyboard_Flag); break;
150 2 case 18:Keyboard_Out=5;
151 2 Set_Bit(Keyboard_Flag); break;
152 2 case 10:Keyboard_Out=6;
153 2 Set_Bit(Keyboard_Flag); break;
154 2 case 25:Keyboard_Out=7;
155 2 Set_Bit(Keyboard_Flag); break;
156 2 case 17:Keyboard_Out=8;
157 2 Set_Bit(Keyboard_Flag); break;
158 2 case 9:Keyboard_Out=9;
159 2 Set_Bit(Keyboard_Flag); break;
160 2 case 3:Keyboard_Out=10;
161 2 Set_Bit(Keyboard_Flag); break;
162 2 case 2:Keyboard_Out=11;
163 2 Set_Bit(Keyboard_Flag); break;
164 2 case 1:Keyboard_Out=12;
165 2 Set_Bit(Keyboard_Flag); break;
166 2 case 0:Keyboard_Out=13;
167 2 Set_Bit(Keyboard_Flag); break;
168 2 case 24:Keyboard_Out=14; /* "*"号键 */
169 2 Set_Bit(Keyboard_Flag); break;
170 2 case 8:Keyboard_Out=15; /* "#"号键 */
171 2 Set_Bit(Keyboard_Flag); break;
C51 COMPILER V7.20 HD7279 04/28/2007 16:48:04 PAGE 4
172 2 default:break;
173 2 }
174 1 }
175
176 void Short_Delay(void) /*短延时函数*/
177 {
178 1 BYTE i;
179 1 for(i=0;i<0x08;i++);
180 1 }
181
182 void Long_Delay(void) /*长延时函数*/
183 {
184 1 BYTE i;
185 1 for(i=0;i<0x30;i++);
186 1 }
187
188 void Led_On(BYTE Led_Num) /*点亮LED灯函数*/
189 {
190 1 Write_Hd7279(SEG_ON,Led_Num); /*让Led_Num个数码管亮*/
191 1 }
192
193 void Led_Off(BYTE Led_Num) /*熄灭LED灯函数*/
194 {
195 1 Write_Hd7279(SEG_OFF,Led_Num);
196 1 }
197
198 void Write_Hd7279(BYTE Command,BYTE Data) /*HD7279写函数*/
199 {
200 1 Send_Byte(Command); /*先发送命令*/
201 1 Send_Byte(Data); /*再接收字节*/
202 1 }
203
204 BYTE Read_Hd7279(BYTE Command) /*HD7279读函数*/
205 {
206 1 Send_Byte(Command); /*先发送命令*/
207 1 return(Receive_Byte()); /*再接收字节*/
208 1 }
209
210
211 void Send_Byte(BYTE Data_Out) /*向HD7279发送字节函数*/
212 {
213 1 BYTE i;
214 1 Long_Delay();
215 1 for(i=0;i<8;i++)
216 1 {
217 2 if(Data_Out&0x80)
218 2 Set_Bit(Hd7279_Data);
219 2 else
220 2 Clear_Bit(Hd7279_Data);
221 2 Set_Bit(Hd7279_Clk);
222 2 Short_Delay();
223 2 Clear_Bit(Hd7279_Clk);/*下降沿发出数据*/
224 2 Short_Delay();
225 2 Data_Out=Data_Out<<1;
226 2 }
227 1 Clear_Bit(Hd7279_Data);
228 1 }
229
230
231 BYTE Receive_Byte(void) /*从HD7279接收字节函数*/
232 {
233 1 BYTE i,Data_In;
C51 COMPILER V7.20 HD7279 04/28/2007 16:48:04 PAGE 5
234 1 Set_Bit(Hd7279_Data);
235 1 Long_Delay();
236 1 for(i=0;i<8;i++)
237 1 {
238 2 Set_Bit(Hd7279_Clk);
239 2 Short_Delay();
240 2 Data_In=Data_In<<1;
241 2 if(Hd7279_Data) /*数据线上为1时*/
242 2 Data_In=Data_In|0x01;
243 2 Clear_Bit(Hd7279_Clk);
244 2 Short_Delay();
245 2 }
246 1 Clear_Bit(Hd7279_Data);
247 1 return(Data_In);
248 1 }
249 /*END*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 585 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -