📄 zlg7289.lst
字号:
C51 COMPILER V8.02 ZLG7289 05/14/2009 13:43:31 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 "zlg7289.h"
2
3 //定义一个全局变量,用于延时
4 //该变量在调用函数zlg7289_init()时被初始化
5 char zlg7289_delay_t;
6
7 /*
8 *函数名: zlg7289_spi_init
9 *功能:初始化spi总线
10 *参数:
11 * t:延时时间
12 *说明:
13 * # t的取值可以参照以下公式:t>=5*f1/f2
14 * 其中f1表示C51的晶振频率,f2表示ZLG7289 的晶振频率
15 */
16 void zlg7289_spi_init(uchar t) {
17 1 zlg_cs=1;
18 1 zlg_clk=0;
19 1 zlg_dio=0;
20 1 zlg7289_delay_t=t;
21 1 IT0=1;
22 1 EX0=1;
23 1 }
24
25 /*
26 *函数名: zlg7289_write
27 *功能: 向总线写入一个字节
28 *参数:
29 * d:要写入的一个字节
30 */
31 void zlg7289_write(uchar d){
32 1 uchar i;
33 1 for(i=0;i<8;i++){
34 2 if(d&0x80)
35 2 zlg_dio=1;
36 2 else
37 2 zlg_dio=0;
38 2 d<<=1;
39 2 zlg_clk=1;
40 2 zlg7289_short_delay();
41 2 zlg_clk=0;
42 2 zlg7289_short_delay();
43 2
44 2 }
45 1 }
46
47 /*
48 *函数名: zlg7289_read
49 *功能: 从总线读入一个字节
50 *返回:
51 * 返回读取的一个字节
52 */
53 uchar zlg7289_read(){
54 1 uchar i,v=0;
55 1 zlg_dio = 1;//读取数据之前DIO引脚要置1以切换到输入状态
C51 COMPILER V8.02 ZLG7289 05/14/2009 13:43:31 PAGE 2
56 1 for(i=0;i<8;i++){
57 2 zlg_clk=1;
58 2 zlg7289_short_delay();
59 2 v<<=1;
60 2 if(zlg_dio)
61 2 v++;
62 2 zlg_clk=0;
63 2 zlg7289_short_delay();
64 2 }
65 1 return v;
66 1 }
67
68
69 /*
70 *函数名: zlg7289_readkey
71 *功能: 读取键值
72 *返回:
73 * 返回读取的键值
74 */
75 uchar zlg7289_readkey(){
76 1 uchar key;
77 1 zlg_cs=0;
78 1 zlg7289_long_delay();
79 1 zlg7289_write(0x15);
80 1 zlg7289_short_delay();
81 1 key=zlg7289_read();
82 1 zlg_cs=1;
83 1 zlg7289_long_delay();
84 1 return key;
85 1 }
86
87 /*
88 *函数:zlg7289_cmd()
89 *功能:执行zlg7289不带数据指令
90 *参数:
91 *cmd:命令字
92 */
93 void zlg7289_cmd(uchar cmd){
94 1 EX0=0;//关闭外部中断0
95 1 zlg_cs=0;
96 1 zlg7289_long_delay();
97 1 zlg7289_write(cmd);//写命令
98 1 zlg_cs=1;
99 1 zlg7289_long_delay();
100 1 EX0 =1;//开启外部中断0
101 1 }
102
103 /*
104 *函数:zlg7289_cmd_with_data()
105 *功能:执行zlg7289 带数据指令
106 *参数:
107 *cmd:命令字
108 *d:数据
109 */
110 void zlg7289_cmd_with_data(uchar cmd, uchar d) {
111 1 EX0=0;//关闭外部中断0
112 1 zlg_cs=0;
113 1 zlg7289_long_delay();
114 1 zlg7289_write(cmd);//写命令
115 1 zlg7289_short_delay();;
116 1 zlg7289_write(d);//写数据
117 1 zlg_cs=1;
C51 COMPILER V8.02 ZLG7289 05/14/2009 13:43:31 PAGE 3
118 1 zlg7289_long_delay();
119 1 EX0 =1;//开启外部中断0
120 1 }
121
122
123 /*
124 *函数:zlg_Download()
125 *功能:下载数据
126 *参数:
127 *mod:
128 * mod=0下载数据且按方式0 译码
129 * mod=1下载数据且按方式0 译码
130 * mod=2下载数据但不译码
131 *index:
132 * 数码管编号(横坐标),0~7
133 *dp:
134 * dp=0小数点不亮 ,dp=1小数点亮
135 *d:
136 * 要显示的数据
137 *说明:
138 * 方式0译码:
139 * 命令1 0 0 0 0 a2 a1 a0数据dp x x x d3 d2 d1 d0 显示0-9 - E H L P 空
140 * 方式1译码:
141 * 命令1 1 0 0 1 a2 a1 a0数据dp x x x d3 d2 d1 d0 显示0-F十六进制
142 * 方式2译码:
143 * 命令1 0 0 1 0 a2 a1 a0数据dp a b c d e f g 将dp-g中位值为1的点亮
144 * a2 a1 a0为数码管编号,d3 d2 d1 d0为数据
145 */
146 void zlg_download(uchar mod,uchar index , bit dp,uchar d){
147 1 code char mode_data[3]={0x80,0xC8,0x90}; //存放在程序存储区
148 1 uchar cmd;
149 1 if(mod > 2) mod = 2;
150 1 cmd=mode_data[mod];
151 1 index&=0x07;
152 1 cmd|=index;
153 1 d=d&0x7f;
154 1 if(dp)d=0x80;
155 1 zlg7289_cmd_with_data(cmd,d);
156 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 238 ----
CONSTANT SIZE = 3 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 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 + -