📄 6961.lst
字号:
C51 COMPILER V8.05a 6961 03/27/2008 20:11:59 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 6961
OBJECT MODULE PLACED IN 6961.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 6961.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 /********************************************************************
4 *
5 * 模 块 名:显示模块 型号:PT6961
6 *
7 * 创 建 人:yingjiangan 日期:2008-03-04
8 * 修 改 人: 日期:2000-00-00
9 * 功能描述:
10 * 其他说明:
11 * 版 本:V1.0
12 **********************************************************************/
13
14 /************头文件************/
15 #include <intrins.h>
16 #include <sm5964.h>
17 #include "my_type.h"
18 #include "6961.h"
19
20
21 uint8 dsplay_dat[6];
22 uint8 dsplay_dot[6];
23
24 uint8 no_row;
25
26
27
28
29 /*********************************************************************
30 *
31 * 函 数 名: Dsplay
32 * 功能描述: 6961显示
33 * 函数说明:
34 * 输 入: p_dsp_dat数码管显示的数组指针,p_dsp_dot二极管显示执
35 * 返 回: 无
36 * 设 计 者:ying 日期:2008-03-07
37 * 修 改 者:ying 日期:2000-00-00
38 ***********************************************************************/
39 void Dsplay()
40 {
41 1
42 1 uint8 dsplay_table[64]=
43 1 {0x3F, 0x12, 0x4F, 0x5B, 0x72, 0x79, 0x7D, 0x13,
44 1 // 0 1 2 3 4 5 6 7
45 1 0x7F, 0x7B, 0x77, 0x7C, 0x4C, 0x5E, 0x6D, 0x65,
46 1 // 8 9 A B C D E F
47 1 0x76, 0x10, 0x1A, 0x64, 0x2C, 0x55, 0x54, 0x5C,
48 1 // H I J K L M N O
49 1 0x67, 0x00, 0x44, 0x6C, 0x3E, 0x7A, 0x40, 0x00,
50 1 // P W R T U Y -
51 1 0xBF, 0x92, 0xCF, 0xDB, 0xF2, 0xF9, 0xFD, 0x93,
52 1 // 0. 1. 2. 3. 4. 5. 6. 7.
53 1 0xFF, 0xFB, 0xF7, 0xFC, 0xCC, 0xDE, 0xED, 0xE5,
54 1 // 8. 9. A. B. C. D. E. F.
55 1 0xF6, 0x90, 0x9A, 0xE4, 0xAC, 0xD5, 0xD4, 0xDC,
C51 COMPILER V8.05a 6961 03/27/2008 20:11:59 PAGE 2
56 1 // H. I. J. K. L. M. N. O.
57 1 0xE7, 0x80, 0xC4, 0xEE, 0xBE, 0xFA, 0xC0, 0x80 };
58 1 // P. W. R. T. U. Y. -. .
59 1
60 1 uint8 *p_dsp_dat;
61 1 uint8 *p_dsp_dot;
62 1 uint8 *p_dsp_table;
63 1 p_dsp_dat=dsplay_dat;
64 1 p_dsp_dot=dsplay_dot;
65 1 p_dsp_table=dsplay_table;
66 1
67 1 Set_6961();
68 1
69 1 Write_6961_data(*(p_dsp_table + *(p_dsp_dat+4)));//5
70 1 Write_6961_data(*(p_dsp_dot + 4));
71 1 Write_6961_data(*(p_dsp_table + *(p_dsp_dat+5)));//6
72 1 Write_6961_data(*(p_dsp_dot + 5));
73 1 Write_6961_data(*(p_dsp_table + *(p_dsp_dat+2)));//3
74 1 Write_6961_data(*(p_dsp_dot + 2));
75 1 Write_6961_data(*(p_dsp_table + *(p_dsp_dat+3)));//4
76 1 Write_6961_data(*(p_dsp_dot + 3));
77 1 Write_6961_data(*(p_dsp_table + *(p_dsp_dat+0)));//1
78 1 Write_6961_data(*(p_dsp_dot + 0));
79 1 Write_6961_data(*(p_dsp_table + *(p_dsp_dat+1)));//2
80 1 Write_6961_data(*(p_dsp_dot + 1));
81 1
82 1 }
83
84
85 /*********************************************************************
86 *
87 * 函 数 名: Set_6961
88 * 功能描述: 6961初始化
89 * 函数说明:
90 * 输 入: 无
91 * 返 回: 无
92 * 设 计 者:ying 日期:2008-03-05
93 * 修 改 者:ying 日期:2000-00-00
94 ***********************************************************************/
95 void Set_6961(void)
96 {
97 1 Write_6961_cmd(0x02);//显示模式6位12段
98 1 Write_6961_cmd(0x40);//设置数据读写 00写、10读键扫
99 1 Write_6961_cmd(0xc0);//地址设定
100 1 Write_6961_cmd(0x89);//消光度设置
101 1 }
102
103
104 /*********************************************************************
105 *
106 * 函 数 名: Read_key_6961
107 * 功能描述: 读出6961键扫值
108 * 函数说明: 功能层
109 * 输 入: 无
110 * 返 回: 键值
111 * 设 计 者:ying 日期:2008-03-19
112 * 修 改 者:ying 日期:2000-00-00
113 ***********************************************************************/
114 uint8 Read_key_6961()
115 {
116 1 uint8 i,r_data=0x00;
117 1
C51 COMPILER V8.05a 6961 03/27/2008 20:11:59 PAGE 3
118 1 Write_6961_cmd(0x42);
119 1
120 1 for(i=0;i<=3;i++)
121 1 {
122 2 r_data=Read_6961();
123 2 r_data&=0x3f;
124 2
125 2 if (r_data)
126 2 {
127 3 no_row=i;
128 3 break;
129 3 }
130 2 else
131 2 {
132 3 no_row=0x00;
133 3 r_data=0x00;
134 3 }
135 2
136 2 }
137 1 return(r_data);
138 1
139 1 }
140
141
142
143 /*********************************************************************
144 *
145 * 函 数 名: key_value
146 * 功能描述: 读出6961键值
147 * 函数说明: 功能层
148 * 输 入: 无
149 * 返 回: 键值
150 * 设 计 者:ying 日期:2008-03-20
151 * 修 改 者:ying 日期:2000-00-00
152 ***********************************************************************/
153
154 uint8 Key_value()
155 {
156 1 uint8 idata key_table[30]=
157 1 { 0x07,0x04,0x01,0x0b,0x05,0x02,
158 1 0x08,0x06,0x03,0x0a,0x09,0x0d,
159 1 0x0c,0x0e,0x12,0x11,0x0f,0x13,
160 1 0x15,0x14,0x16,0x19,0x18,0x17 };
161 1 uint8 temp,add,i,j,*p4;
162 1 bit low;
163 1
164 1 p4=key_table;
165 1
166 1 temp=Read_key_6961();
167 1 add=no_row;
168 1 if(temp)
169 1 {
170 2 for(i=0;i<=6;i++)
171 2 {
172 3 low=temp&0x01;
173 3
174 3 if (low)
175 3 {
176 4 j=i;
177 4 break;
178 4 }
179 3 temp>>=1;
C51 COMPILER V8.05a 6961 03/27/2008 20:11:59 PAGE 4
180 3 }
181 2 temp=6*add+j;
182 2 temp=*(p4+temp);
183 2
184 2
185 2 }
186 1 else
187 1 {
188 2 temp=0x00;
189 2 }
190 1 return(temp);
191 1
192 1 }
193
194
195 /*********************************************************************
196 *
197 * 函 数 名: Write_6961_cmd
198 * 功能描述: 写入6961一个字节命令
199 * 函数说明: 物理层 6961将SCL下降沿后的第一个字节做为命令
200 * 输 入: 要写入的命令
201 * 返 回: 无
202 * 设 计 者:ying 日期:2008-03-05
203 * 修 改 者:ying 日期:2000-00-00
204 ***********************************************************************/
205
206 void Write_6961_cmd(uint8 cmd)
207 {
208 1 PT6961_RESET;
209 1 Write_6961_data(cmd);
210 1 }
211
212
213 /*********************************************************************
214 *
215 * 函 数 名: Write_6961_data
216 * 功能描述: 写入6961一个字节数据
217 * 函数说明: 物理层
218 * 输 入: 要写入的数据
219 * 返 回: 无
220 * 设 计 者:ying 日期:2008-03-04
221 * 修 改 者:ying 日期:2000-00-00
222 ***********************************************************************/
223
224 void Write_6961_data(uint8 temp)
225 {
226 1 uint8 i;
227 1 for(i=0;i<8;i++)
228 1 {
229 2 DIO=temp&LSB;
230 2 CLK=0;
231 2 temp>>=1;
232 2 CLK=1;
233 2 }
234 1 }
235
236
237
238 /*********************************************************************
239 *
240 * 函 数 名: Read_6961
241 * 功能描述: 读6961数据
C51 COMPILER V8.05a 6961 03/27/2008 20:11:59 PAGE 5
242 * 函数说明: 物理层
243 * 输 入: 要读出的地址
244 * 返 回: 无
245 * 设 计 者:ying 日期:2008-03-04
246 * 修 改 者:ying 日期:2000-00-00
247 ***********************************************************************/
248
249 uint8 Read_6961()
250 {
251 1 uint8 i,temp=0x00;
252 1 DIO=1;
253 1 for (i=0;i<7;i++) //循环7次 读取数据
254 1 {
255 2 CLK=0;
256 2 if(DIO)
257 2 {
258 3 temp|=0x80; //每次传输低字节
259 3 }
260 2 CLK=1;
261 2 temp>>=1; //右移一位
262 2 }
263 1 CLK=0;
264 1 CLK=1;
265 1 return (temp);
266 1 }
267
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 417 ----
CONSTANT SIZE = 94 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 79
IDATA SIZE = ---- 30
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 + -