📄 zlg7289.lst
字号:
C51 COMPILER V8.02 ZLG7289 09/22/2008 12:21:20 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ZLG7289
OBJECT MODULE PLACED IN zlg7289.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zlg7289.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include"zlg7289.h"
3
4
5 //函数:ZLG7289_Delay()
6 //功能:短延时
7 //说明:延时长度由Delay_T决定
8 void ZLG7289_Delay(uchar Delay_T)
9 {
10 1 uchar i;
11 1 for(i=0;i<Delay_T;i++);
12 1 }
13
14
15 //函数:SPI_WriteOneByte()
16 //功能:向SPI总线写数据
17 //说明:写入的数据长度为1字节
18 void SPI_WriteOneByte(uchar Wdata)
19 {
20 1 uchar i;
21 1 for(i=0;i<8;i++)
22 1 {
23 2 ZLG7289_DIO = (bit)(Wdata&0x80);//高位先移出
24 2 ZLG7289_CLK = 1;
25 2 Wdata <<= 1;
26 2 ZLG7289_Delay(1);
27 2 ZLG7289_CLK = 0;
28 2 ZLG7289_Delay(1);
29 2
30 2 }
31 1 }
32
33
34 //函数:SPI_ReadOneByte()
35 //功能:从SPI总线读数据
36 //说明:返回1字节数据
37 uchar SPI_ReadOneByte()
38 {
39 1 uchar i,temp;
40 1 ZLG7289_DIO = 1; //将I/O切换到输入状态
41 1 for(i=0;i<8;i++)
42 1 {
43 2 ZLG7289_CLK = 1;
44 2 ZLG7289_Delay(5);
45 2 temp <<= 1;
46 2 if(ZLG7289_DIO)
47 2 temp++;
48 2 ZLG7289_CLK = 0;
49 2 ZLG7289_Delay(5);
50 2 }
51 1 return temp; //返回所读得的数据
52 1 }
53
54 //函数:ZLG7289_Instruc()
55 //功能:执行ZLG7289纯指令
C51 COMPILER V8.02 ZLG7289 09/22/2008 12:21:20 PAGE 2
56 //说明:指令长度为1字节
57 void ZLG7289_Instruc(uchar Instruc) //Instruc为指令
58 {
59 1 uchar i;
60 1 i = IE;
61 1 IE &= 0xfa; // Disable external interrupt;
62 1 ZLG7289_CS = 0;
63 1 ZLG7289_Delay(5);
64 1 SPI_WriteOneByte(Instruc);
65 1 ZLG7289_CS = 1;
66 1 ZLG7289_Delay(5);
67 1 IE = i;
68 1 }
69
70
71 //函数:ZLG7289_Instruc_Data
72 //功能:执行ZLG7289带数据指令
73 //说明:指令长度以及数据长度均为1字节
74 void ZLG7289_Instruc_Data(uchar Instruc,uchar Data)//Instruc为指令,Data为数据
75 {
76 1 uchar i;
77 1 i = IE;
78 1 IE &= 0xfa;
79 1 ZLG7289_CS = 0;
80 1 ZLG7289_Delay(5);
81 1 SPI_WriteOneByte(Instruc);
82 1 ZLG7289_Delay(5);
83 1 SPI_WriteOneByte(Data);
84 1 ZLG7289_CS = 1;
85 1 ZLG7289_Delay(5);
86 1 IE = i;
87 1 }
88
89
90
91 //函数:ZLG7289_ReadKey()
92 //功能:执行ZLG7289读键盘指令
93 //说明:返回1字节的按键号
94 // 按键号的范围为:0 ~ 63(即0x0 ~ 0x3f)
95 // 若没有按按键被按下了,返回255(即0xff)
96 uchar ZLG7289_ReadKey()
97 {
98 1 uchar Key;
99 1 ZLG7289_CS = 0;
100 1 ZLG7289_Delay(10);
101 1 SPI_WriteOneByte(0x15);
102 1 ZLG7289_Delay(5);
103 1 Key = SPI_ReadOneByte();
104 1 ZLG7289_Delay(1);
105 1 ZLG7289_CS = 1;
106 1 ZLG7289_Delay(5);
107 1 return Key; // Key为返回的按键号
108 1 }
109
110
111 //函数:ZLG7289_Init()
112 //功能:初始化ZLG7289
113 //说明:主要是对I/O进行初始化
114 void ZLG7289_Init()
115 {
116 1 ZLG7289_CS = 1;
117 1 ZLG7289_CLK = 0;
C51 COMPILER V8.02 ZLG7289 09/22/2008 12:21:20 PAGE 3
118 1 ZLG7289_DIO = 1;
119 1 ZLG7289_INT = 1;
120 1 }
121
122
123 //函数:ZLG7289_Reset()
124 //功能:ZLG7289复位指令
125 #define ZLG7289_Reset() ZLG7289_Instruc(0xa4)
126
127
128 //函数:ZLG7289_Test()
129 //功能:ZLG7289测试指令
130 #define ZLG7289_Test() ZLG7289_Instruc(0xbf)
131
132
133 //函数:ZLG7289_SHL()
134 //功能:ZLG7289左移指令
135 #define ZLG7289_SHL() ZLG7289_Instruc(0xa0)
136
137
138 //函数:ZLG7289_SHR()
139 //功能:ZLG7289右移指令
140 #define ZLG7289_SHR() ZLG7289_Instruc(0xa1)
141
142
143 //函数:ZLG7289_ROL()
144 //功能:ZLG7289循环左移指令
145 #define ZLG7289_ROL() ZLG7289_Instruc(0xa2)
146
147
148 //函数:ZLG7289_ROR()
149 //功能:ZLG7289循环右移指令
150 #define ZLG7289_ROR() ZLG7289_Instruc(0xa3)
151
152
153 //函数:ZLG7289_Down_Data()
154 //功能:ZLG7289下载数据
155 //说明:形参Decode_mod:模式选择(取值范围:1 ~ 3):1--模式0译码;2--模式1译码;3--不译码
156 // Disp_addr: 数码管显示数据的位地址(取值范围:0 ~ 7)
157 // Disp_dp: 小数点控制:0--小数点被点亮,1--小数点被熄灭
158 // Disp_data: 显示的数据
159 void ZLG7289_Down_Data(uchar Decode_mod,uchar Disp_addr,bit Disp_dp,uchar Disp_data)
160 {
161 1 uchar Mode[] = {0x80,0xc8,0x90};
162 1 uchar temp,temp1;
163 1 if(Decode_mod==0x01)
164 1 temp = Mode[0];
165 1 else if(Decode_mod==0x02)
166 1 temp = Mode[1];
167 1 else if(Decode_mod==0x03)
168 1 temp = Mode[2];
169 1 if(Disp_dp==1)
170 1 temp1 = 0x80;
171 1 else
172 1 temp1 = 0x00;
173 1 Disp_addr=((0x07-Disp_addr)&0x07);
174 1 ZLG7289_Instruc_Data((temp | Disp_addr),(temp1 | (Disp_data&0x7f)));
175 1 }
176
177
178 //函数:ZLG7289_Glint
179 //功能:ZLG7289闪烁控制
C51 COMPILER V8.02 ZLG7289 09/22/2008 12:21:20 PAGE 4
180 //说明:形参temp为8bits数据,
181 // 从temp的最高位置(MSB)到最低位(LSB)分别代表数码管的第7到第0位
182 // 0--闪烁,1--不闪烁
183 #define ZLG7289_Glint(temp) ZLG7289_Instruc_Data(0x88,(temp))
184
185
186 //函数:ZLG7289_Hide
187 //功能:ZLG7289消隐控制
188 //说明:形参temp为8bits数据,
189 // 从temp的最高位置(MSB)到最低位(LSB)分别代表数码管的第0到第7位
190 // 0--消隐,1--显示;复位后所有位都不消隐
191 #define ZLG7289_Hide(temp) ZLG7289_Instruc_Data(0x98,(temp))
192
193
194 //函数:ZLG7289_Seg_On
195 //功能:ZLG7289段点亮指令
196 //说明:形参seg的最高位置(MSB)到最低位(LSB)的格式为“XXd5d4d3d2d1d0”
197 // 其中“XX”为无关位,d5d4d3d2d1d0为6位段地址。
198 // 点亮顺序为g、f、e、d、c、b、a、dp
199 #define ZLG7289_Seg_On(seg) ZLG7289_Instruc_Data(0xe0,(seg))
200
201
202 //函数:ZLG7289_Seg_Off
203 //功能:ZLG7289段关闭指令
204 //说明:形参seg的最高位置(MSB)到最低位(LSB)的格式为“XXd5d4d3d2d1d0”
205 // 其中“XX”为无关位,d5d4d3d2d1d0为6位段地址。
206 // 关闭顺序为g、f、e、d、c、b、a、dp
207 #define ZLG7289_Seg_Off(seg) ZLG7289_Instruc_Data(0xc0,(seg))
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 251 ----
CONSTANT SIZE = 3 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
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 + -