📄 zlg7290.lst
字号:
C51 COMPILER V8.02 ZLG7290 03/26/2007 19:14:28 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ZLG7290
OBJECT MODULE PLACED IN ..\Output\zlg7290.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\app\zlg7290.c LARGE BROWSE INCDIR(..\app;..\Main;..\Port;..\SOURCE) DEBU
-G OBJECTEXTEND PRINT(..\Output\zlg7290.lst) OBJECT(..\Output\zlg7290.obj)
line level source
1 #include "zlg7290.h"
2 #include "IIC.h"
3 #include <C8051F020.H>
4
5 /***********************************************************************
6 *函数: ZLG7290_WriteReg()
7 *调用函数: bit SmbSend (unsigned char slaveAddr, unsigned char subAddr,
8 * unsigned char subMod, unsigned char size, unsigned char *sendPtr)
9 *功能: 向ZLG7290 的某个内部寄存器写入数据
10 *参数:
11 * RegAddr:ZLG7290 的内部寄存器地址
12 * dat:要写入的数据
13 *返回:
14 * 1:正常
15 * 0:访问ZLG7290 时出现异常
16 ************************************************************************/
17 unsigned char ZLG7290_WriteReg(unsigned char regAddr, unsigned char dat)
18 {
19 1 unsigned char b;
20 1 b = SmbSend(ZLG7290_I2C_ADDR, ®Addr, 1, 1, &dat);
21 1 return b;
22 1 }
23 /***********************************************************************
24 *函数: ZLG7290_ReadReg()
25 *功能: 从ZLG7290 的某个内部寄存器读出数据
26 *调用函数:bit SmbRec(unsigned char slaveAddr,unsigned char subAddr,
27 unsigned char subMod,unsigned char size, unsigned char *recPtr )
28 *参数:
29 * RegAddr:ZLG7290 的内部寄存器地址
30 * *dat:保存读出的数据
31 *返回:
32 * 1:正常
33 * 0:访问ZLG7290 时出现异常
34 ************************************************************************/
35 unsigned char ZLG7290_ReadReg(unsigned char regAddr, unsigned char *dat)
36 {
37 1 unsigned char b;
38 1 b = SmbRec(ZLG7290_I2C_ADDR, ®Addr, 1, 1, dat);
39 1 return b;
40 1 }
41
42 /***********************************************************************
43 *函数:ZLG7290_Cmd()
44 *功能:向ZLG7290 发送控制命令
45 *调用函数: bit SmbSend (unsigned char slaveAddr, unsigned char subAddr,
46 * unsigned char subMod, unsigned char size, unsigned char *sendPtr)
47 *参数:
48 * cmd0:写入CmdBuf0 寄存器的命令字(第1 字节)
49 * cmd1:写入CmdBuf1 寄存器的命令字(第2 字节)
50 *返回:
51 * 1:正常
52 * 0:访问ZLG7290 时出现异常
53 **********************************************************************/
54 unsigned char ZLG7290_Cmd(unsigned char cmd0, unsigned char cmd1) reentrant
C51 COMPILER V8.02 ZLG7290 03/26/2007 19:14:28 PAGE 2
55 {
56 1 unsigned b;
57 1 unsigned char buf[2];
58 1 unsigned char cmdBuf;
59 1 cmdBuf = ZLG7290_CmdBuf;
60 1 buf[0] = cmd0;
61 1 buf[1] = cmd1;
62 1 b = SmbSend(ZLG7290_I2C_ADDR,&cmdBuf,1,2,buf);
63 1 return b;
64 1 }
65
66 /*******************************************************************
67 *函数:ZLG7290_SegOnOff()
68 *功能:段寻址,单独点亮或熄灭数码管(或LED)中的某一段
69 *参数:
70 * seg:取值0~63,表示数码管(或LED)的段号
71 * b:0 表示熄灭,1 表示点亮
72 *返回:
73 * 0:正常
74 * 1:访问ZLG7290 时出现异常
75 *说明:
76 * 在每一位数码管中,段号顺序按照“a,b,c,d,e,f,g,dp”进行
77 *******************************************************************/
78 unsigned char ZLG7290_SegOnOff(unsigned char seg, unsigned char b)
79 {
80 1 unsigned char cmd;
81 1 cmd = seg & 0x3F;
82 1 if ( b )
83 1 cmd |= 0x80;
84 1 return ZLG7290_Cmd(0x01,cmd);
85 1 }
86
87 /*****************************************************************
88 *函数:ZLG7290_Download()
89 *功能:下载数据并译码
90 *
91 *参数:
92 * addr:取值0~7,显示缓存DpRam0~DpRam7 的编号
93 * dp:是否点亮该位的小数点,0-熄灭,1-点亮
94 * flash:控制该位是否闪烁,0-不闪烁,1-闪烁
95 * dat:取值0~31,表示要显示的数据
96 *返回:
97 * 1:正常
98 * 0:访问ZLG7290 时出现异常
99 *说明:
100 * 显示数据具体的译码方式请参见ZLG7290 的数据手册
101 *****************************************************************/
102 unsigned char ZLG7290_Download(unsigned char addr, unsigned char dp, unsigned char flash, unsigned char
- dat)
103 {
104 1 unsigned char cmd0;
105 1 unsigned char cmd1;
106 1 cmd0 = addr & 0x0F;
107 1 cmd0 |= 0x60;
108 1 cmd1 = dat & 0x1F;
109 1 if ( dp )
110 1 cmd1 |= 0x80;
111 1 if ( flash )
112 1 cmd1 |= 0x40;
113 1 return ZLG7290_Cmd(cmd0,cmd1);
114 1 }
115
C51 COMPILER V8.02 ZLG7290 03/26/2007 19:14:28 PAGE 3
116 void ZLG7290_GetKey(unsigned char * keyValue)
117 {
118 1 while(IE0==0);
119 1 ZLG7290_ReadReg(ZLG7290_Key,keyValue); //读取键值、
120 1
121 1
122 1 }
123 void ZLG7290_GetRepeatCnt(unsigned char *repeatCnt)
124 {
125 1 while(IE0==0);
126 1 ZLG7290_ReadReg(ZLG7290_RepeatCnt,repeatCnt); // 连击计数器值
127 1
128 1 }
129 /*****************************************************************
130 *函数:ZLG7290_Clear(char a)
131 *功能:清除指定位的显示
132 *
133 *参数:
134 * a: 取小于-1全部清除,a>=0,a<=7 时清楚该位的显示
135
136 *返回: 无
137
138 *说明:
139 * 显示数据具体的译码方式请参见ZLG7290 的数据手册
140 */
141 void ZLG7290_Clear(char a)
142 {
143 1 unsigned char i = 0;
144 1 if(a<=-1)
145 1 {
146 2 for(i=0;i<8;i++)
147 2 ZLG7290_Download(i,0,0,0x1f);
148 2 }
149 1 if(a>-1&&a<8)
150 1 ZLG7290_Download(a,0,0,0x1f);
151 1 if(a>=8)
152 1 return;
153 1 }
154 unsigned char ZLG7290_DispValue(unsigned char x, unsigned long int dat)
155 {
156 1 unsigned char d[8];
157 1 unsigned char i = 0;
158 1 unsigned char j;
159 1 while(dat>0)
160 1 {
161 2 d[i] = dat%10;
162 2 dat /= 10;
163 2 i++;
164 2 }
165 1 if(x<i-1)
166 1 return 0;
167 1 for(j=0;j<i;j++)
168 1 {
169 2 ZLG7290_Download(x-j,0,0,d[j]);
170 2 }
171 1 return 1;
172 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 562 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.02 ZLG7290 03/26/2007 19:14:28 PAGE 4
XDATA SIZE = ---- 27
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 + -