📄 ch451.lst
字号:
C51 COMPILER V7.07 CH451 04/06/2006 10:20:44 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE CH451
OBJECT MODULE PLACED IN ch451.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ch451.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************
2 * 作 者: Gaoshibing(ceeback@gmail.com)
3 * 编写日期: 2006/03/07
4 *----------------------------------------------------------
5 * 修改记录:
6
7 ********************************************************************/
8
9 #include <intrins.h>
10 #include <absacc.h>
11 #include "main.h"
12 #include "mcs51.h"
13 #include "io_define.h"
14 #include "ch451.h"
15
16 /****** CH451 操作命令 *********/
17 #define CMD_GET_KEY 0X07
18 #define CMD_SET_MODE_L 0X03 // 此字节 bit7 ~ bit0 与命令 bit7 ~ bit0 对应;
19 #define CMD_SET_MODE_H 0X04 // 此字节 bit3 ~ bit0 与命令 bit11 ~ bit8 对应;
20 #define CMD_DISPLAY_L 0X7F // 显示参数;
21 #define CMD_DISPLAY_H 0X05 // 设置显示命令字;
22
23 #define CMD_LOAD_DAT_H 0X08 // 加载显示内容命令字高字节;
24
25
26 /* CH451 说明:
27 /* DIN 引脚输入数据低位在前,高位在后.操作命令为12位; bit0 ~ bit11.
28 /* ch451 在 DCLK 上升沿从 DIN 引脚输入数据,在其下降沿从 DOUT 输出数据
29 /* CH451 在 LOAD 引脚上升沿加载命令数据处理.*/
30
31 /*************************************************
32 * 函数功能:
33 * 对CH451设置命令
34 * cmd_high: 命令高字节; 此字节 bit3 ~ bit0 与命令 bit11 ~ bit8 对应;
35 * cmd_low : 命令低字节; 此字节 bit7 ~ bit0 与命令 bit7 ~ bit0 对应;
36 **************************************************/
37 void ch451_set_cmd(uchar cmd_low,uchar cmd_high)
38 {
39 1 uchar i;
40 1
41 1 for(i=0;i<8;i++) //设定 CH451 系统参数命令低八位;
42 1 {
43 2 CH451_CLK=0;
44 2 if(0x01&cmd_low)
45 2 CH451_DIN = 1;
46 2 else
47 2 CH451_DIN = 0;
48 2 cmd_low >>= 1;
49 2 CH451_CLK=1;
50 2 _nop_();
51 2 }
52 1
53 1 for(i=0;i<4;i++) //设定 CH451 系统参数命令高四位;
54 1 {
55 2 CH451_CLK = 0;
C51 COMPILER V7.07 CH451 04/06/2006 10:20:44 PAGE 2
56 2 if(0x01&cmd_high)
57 2 CH451_DIN = 1;
58 2 else CH451_DIN = 0;
59 2 cmd_high >>= 1;
60 2 CH451_CLK = 1;
61 2 _nop_();
62 2 }
63 1
64 1 CH451_LOAD = 0;
65 1 _nop_();
66 1 CH451_LOAD = 1; // LOAD 上升沿加载命令;
67 1
68 1 }
69
70 /*************************************************
71 * 函数功能:
72 * 初始化设定芯片工作模式:关看门狗;开键盘扫描;开显示驱动;
73 **************************************************/
74 void init_ch451(void)
75 {
76 1 CH451_DIN=0;
77 1 DOUT=1;
78 1 CH451_LOAD=1;
79 1 CH451_DIN=1;
80 1 ch451_set_cmd(CMD_SET_MODE_L,CMD_SET_MODE_H);
81 1 }
82
83 /*************************************************
84 * 函数功能:
85 * 加载 CH451 显示内容:
86 * num: 数码管或者八只LED 的序号,0~7;
87 * content: 显示内容;
88 **************************************************/
89 void display_led(uchar num,uchar content)
90 {
91 1 num &= 0x07; // 只取低三位;
92 1 ch451_set_cmd(content,CMD_LOAD_DAT_H|num);
93 1 }
94
95 /*************************************************
96 * 函数功能:
97 * 获取7位按键代码;
98 **************************************************/
99 uchar get_key(void)
100 {
101 1 uchar i ,temp = CMD_GET_KEY;
102 1
103 1 DOUT=1;
104 1
105 1 for(i=0;i<4;i++) // 写入读取按键值命令;
106 1 {
107 2 CH451_CLK = 0;
108 2 if(0x01&temp)
109 2 CH451_DIN = 1;
110 2 else
111 2 CH451_DIN = 0;
112 2 temp >>= 1;
113 2 CH451_CLK = 1;
114 2 _nop_();
115 2 }
116 1
117 1 CH451_LOAD = 0;
C51 COMPILER V7.07 CH451 04/06/2006 10:20:44 PAGE 3
118 1 _nop_();
119 1 temp = 0;
120 1 CH451_DIN = 1;
121 1 CH451_LOAD = 1;
122 1 _nop_();
123 1
124 1 if(DOUT) // 获取7位按键代码
125 1 temp += 1;
126 1
127 1 for(i=0;i<6;i++)
128 1 {
129 2 temp <<= 1;
130 2 CH451_CLK = 0;
131 2 _nop_();
132 2 if(DOUT)
133 2 temp += 1;
134 2 CH451_CLK = 1;
135 2 _nop_();
136 2 }
137 1
138 1 //DOUT=1;
139 1
140 1 return(temp);
141 1 }
142
143 /*************************************************
144 * 函数功能:
145 * 获取7位按键代码;
146 **************************************************/
147 uchar get_key1(void)
148 {
149 1 uchar i ,temp = CMD_GET_KEY;
150 1
151 1 DOUT=1;
152 1
153 1 for(i=0;i<4;i++) // 写入读取按键值命令;
154 1 {
155 2 CH451_CLK = 0;
156 2 if(0x01&temp)
157 2 CH451_DIN = 1;
158 2 else
159 2 CH451_DIN = 0;
160 2 temp >>= 1;
161 2 CH451_CLK = 1;
162 2 _nop_();
163 2 }
164 1
165 1 CH451_LOAD = 0;
166 1 _nop_();
167 1 temp = 0;
168 1 CH451_DIN = 1;
169 1 CH451_LOAD = 1;
170 1 _nop_();
171 1
172 1 if(DOUT) // 获取7位按键代码
173 1 temp += 1;
174 1
175 1 for(i=0;i<6;i++)
176 1 {
177 2 temp <<= 1;
178 2 CH451_CLK = 0;
179 2 _nop_();
C51 COMPILER V7.07 CH451 04/06/2006 10:20:44 PAGE 4
180 2 if(DOUT)
181 2 temp += 1;
182 2 CH451_CLK = 1;
183 2 _nop_();
184 2 }
185 1
186 1 //DOUT=1;
187 1
188 1 return(temp);
189 1 }
190
191 void clear_led(void)
192 {
193 1 uchar i;
194 1
195 1 for(i=3;i<8;i++)
196 1 display_led(i,LED_NONE);
197 1
198 1 }
199
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 227 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -