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