?? zlg7289.lst
字號:
C51 COMPILER V8.02 ZLG7289 05/21/2009 18:13:49 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
line level source
1 #include "zlg7289.h"
2
3 //定義一個全局變量,用于延時
4 //該變量在調(diào)用函數(shù)zlg7289_init()時被初始化
5 char zlg7289_delay_t;
6
7 /*
8 *函數(shù)名: zlg7289_spi_init
9 *功能:初始化spi總線
10 *參數(shù):
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 *函數(shù)名: zlg7289_write
27 *功能: 向總線寫入一個字節(jié)
28 *參數(shù):
29 * d:要寫入的一個字節(jié)
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 *函數(shù)名: zlg7289_read
49 *功能: 從總線讀入一個字節(jié)
50 *返回:
51 * 返回讀取的一個字節(jié)
52 */
53 uchar zlg7289_read(){
54 1 uchar i,v=0;
55 1 zlg_dio = 1;//讀取數(shù)據(jù)之前DIO引腳要置1以切換到輸入狀態(tài)
C51 COMPILER V8.02 ZLG7289 05/21/2009 18:13:49 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 *函數(shù)名: 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 *函數(shù):zlg7289_cmd()
89 *功能:執(zhí)行zlg7289不帶數(shù)據(jù)指令
90 *參數(shù):
91 *cmd:命令字
92 */
93 void zlg7289_cmd(uchar cmd){
94 1 EX0=0;//關(guān)閉外部中斷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 *函數(shù):zlg7289_cmd_with_data()
105 *功能:執(zhí)行zlg7289 帶數(shù)據(jù)指令
106 *參數(shù):
107 *cmd:命令字
108 *d:數(shù)據(jù)
109 */
110 void zlg7289_cmd_with_data(uchar cmd, uchar d) {
111 1 EX0=0;//關(guān)閉外部中斷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);//寫數(shù)據(jù)
117 1 zlg_cs=1;
C51 COMPILER V8.02 ZLG7289 05/21/2009 18:13:49 PAGE 3
118 1 zlg7289_long_delay();
119 1 EX0 =1;//開啟外部中斷0
120 1 }
121
122
123 /*
124 *函數(shù):zlg_Download()
125 *功能:下載數(shù)據(jù)
126 *參數(shù):
127 *mod:
128 * mod=0下載數(shù)據(jù)且按方式0 譯碼
129 * mod=1下載數(shù)據(jù)且按方式0 譯碼
130 * mod=2下載數(shù)據(jù)但不譯碼
131 *index:
132 * 數(shù)碼管編號(橫坐標(biāo)),0~7
133 *dp:
134 * dp=0小數(shù)點不亮 ,dp=1小數(shù)點亮
135 *d:
136 * 要顯示的數(shù)據(jù)
137 *說明:
138 * 方式0譯碼:
139 * 命令1 0 0 0 0 a2 a1 a0數(shù)據(jù)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數(shù)據(jù)dp x x x d3 d2 d1 d0 顯示0-F十六進制
142 * 方式2譯碼:
143 * 命令1 0 0 1 0 a2 a1 a0數(shù)據(jù)dp a b c d e f g 將dp-g中位值為1的點亮
144 * a2 a1 a0為數(shù)碼管編號,d3 d2 d1 d0為數(shù)據(jù)
145 */
146 void zlg_download(uchar mod,uchar index , bit dp,uchar d){
147 1 code char mode_data[3]={0x80,0xC8,0x90}; //存放在程序存儲區(qū)
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)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -