📄 mcu_ext.lst
字号:
C51 COMPILER V7.10 MCU_EXT 03/04/2008 11:51:13 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MCU_EXT
OBJECT MODULE PLACED IN .\mcu_ext.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\mcu_ext.c BROWSE DEBUG OBJECTEXTEND PRINT(.\mcu
-_ext.lst) OBJECT(.\mcu_ext.obj)
line level source
1
2 /***************************************************************************************
3 ****************************************************************************************
4 * FILE : mcu_ext.c
5 * Description :
6 *
7 * Copyright (c) 2007 by WANG SHAOWEI. All Rights Reserved.
8 *
9 * History:
10 * Version Name Date Description
11 0.1 WANG SHAOWEI 2007/05/09 Initial Version
12
13 ****************************************************************************************
14 ****************************************************************************************/
15
16
17
18
19 #include "common.h"
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #ifdef DP51
34 sbit SDA = P1^0; /*模拟串行转并行口,下降沿有效,输出为低电平可控点亮*/
35 sbit SCL = P1^1; /*模拟串并行转换的时钟信号线*/
36
37 sbit KEY = P1^2; /*键盘,低电平有效,检测位*/
38
39 sbit DISPLAY0 = P1^3; /*EBIT4, 低电平有效*/
40 sbit DISPLAY1 = P1^4; /*EBIT3*/
41 sbit DISPLAY2 = P1^5; /*EBIT2*/
42 sbit DISPLAY3 = P1^6; /*EBIT1*/
43
44 sbit LED = P1^7; /*EBIT0,低电平有效*/
45
46 U8 code LedDisplayMap[2][16] =
47 {
48 {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E},
49 {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0x08, 0x03, 0x46, 0x21, 0x06, 0x0E}
50 };
51
52
53
54
C51 COMPILER V7.10 MCU_EXT 03/04/2008 11:51:13 PAGE 2
55
56
57 U8 key_read(void)
58 {
59 1 U8 i;
60 1 U8 KeySave;
61 1 P1 = 0xFF;
62 1 SDA = 0; /*注意,原来数据为0,现在为1*/
63 1 for(i = 0; i < 8; i++) /*r先将扫描线上都置为高电平*/
64 1 {
65 2 SCL = 0;
66 2 SCL = 1;
67 2 }
68 1 uty_delay(1);
69 1 if(KEY)
70 1 {
71 2 return(ERROR);
72 2 }
73 1
74 1
75 1 SDA = 1; /*注意,原来数据为0,现在为1*/
76 1 for(i = 0; i < 8; i++) /*r先将扫描线上都置为高电平*/
77 1 {
78 2 SCL = 0;
79 2 SCL = 1;
80 2 uty_delay(1);
81 2 if(KEY)
82 2 {
83 3 KeySave = i;
84 3 break;
85 3 }
86 2
87 2 }
88 1 SDA = 0; /*注意,原来数据为0,现在为1*/
89 1 for(i = 0; i < 8; i++) /*r先将扫描线上都置为高电平*/
90 1 {
91 2 SCL = 0;
92 2 SCL = 1;
93 2 uty_delay(1);
94 2 if(!KEY)
95 2 {
96 3 if(KeySave == i)
97 3 {
98 4 return(i);
99 4 }
100 3 else
101 3 {
102 4 return(ERROR);
103 4 }
104 3 }
105 2 }
106 1
107 1
108 1 return(ERROR); /*r若没有扫描到按下键就返回ERROR*/
109 1 }
110
111
112 void SendData(U8 Val)
113 {
114 1 U8 i;
115 1
116 1 SCL = 1;
C51 COMPILER V7.10 MCU_EXT 03/04/2008 11:51:13 PAGE 3
117 1 for(i = 0; i < 8; i++)
118 1 {
119 2 if(Val & 0x80) /*判断数据*/
120 2 {
121 3 SDA = 1;
122 3 }
123 2 else
124 2 {
125 3 SDA = 0;
126 3 }
127 2 SCL = 0; /*产生时钟动作*/
128 2 SCL = 1;
129 2 Val = Val << 1;
130 2 }
131 1 }
132
133
134 void led_control(U8 LedIndex)
135 {
136 1 P1 = 0xFF;
137 1 if((LedIndex > 0) && (LedIndex < 9))
138 1 {
139 2 LedIndex = 1 << (LedIndex - 1); /*r当1左移(LedIndex-1)位后,发送到串并行转换电路*/
140 2 SendData(~LedIndex);
141 2 LED = 0; /*r开启DP-51的Q1三极管,这样就可以开启LED管点亮*/
142 2 }
143 1
144 1
145 1 }
146
147
148 void LedDisplay_control(U1 boDp, U8 LedDisplayIndex, U8 value)
149 {
150 1 U1 i;
151 1 i = boDp;
152 1 P1 = 0xFF;
153 1 SendData(LedDisplayMap[i][value]); /*r发送LED显示数据到串并转换电路*/
154 1
155 1 P1 &= ~(0x04 << LedDisplayIndex);
156 1 }
157
158 #else
/*==================================================================
* Function : key_read
* Description :
* Input Para :
* Output Para :
* Return Value:
==================================================================*/
U8 key_read(void)
{
U8 KeyRead;
U8 KeySave;
P1 = 0x0F;
uty_delay(1);
KeyRead = P1 & 0x0F;
if((KeyRead & 0x0F) == 0x0F)
{
return(ERROR);
}
C51 COMPILER V7.10 MCU_EXT 03/04/2008 11:51:13 PAGE 4
P1 = 0xF0;
uty_delay(1);
KeyRead = KeyRead |( P1 & 0xF0);
return(KeyRead);
}
#endif
191
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 238 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -