?? ht1380.lst
字號:
C51 COMPILER V7.09 HT1380 08/24/2007 09:34:04 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE HT1380
OBJECT MODULE PLACED IN HT1380.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE HT1380.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "HT1380.h"
3
4
5 //極短延時函數:nNop()
6 void nNop(uchar x)
7 {
8 1 for(;x>0;x--);
9 1 }
10
11 //向SPI寫一字節數據函數:SPI_WriteByte()
12 void SPI_WriteByte(uint x)
13 {
14 1 uchar i;
15 1 uint temp = 0x01;
16 1 SetPinDIO(0);
17 1 for(i=0;i<8;i++)
18 1 {
19 2 PinDIO = x & temp;
20 2 SetSCLK(1);
21 2 temp = temp << 1;
22 2 SetSCLK(0);
23 2 }
24 1 }
25
26 //向SPI讀一字節數據函數:SPI_ReadByte()
27 uint SPI_ReadByte(void)
28 {
29 1 uchar i;
30 1 uint temp = 0x00;
31 1 SetPinDIO(1);
32 1 for(i=0;i<8;i++)
33 1 {
34 2 SetSCLK(1);
35 2 temp = (temp >> 1) | PinDIO;
36 2 SetSCLK(0);
37 2 }
38 1 return(temp);
39 1 }
40
41 //寫命令加寫數據函數:WriteByte()
42 void WriteByte(uint x, uint y)
43 {
44 1 uchar i,j;
45 1 SetPinDIO(0);
46 1 for(i=0;i<8;i++)
47 1 {
48 2 PinDIO = x & 0x01;
49 2 SetSCLK(1);
50 2 x >>= 1;
51 2 SetSCLK(0);
52 2 }
53 1 for(j=0;j<8;j++)
54 1 {
55 2 PinDIO = y & 0x01;
C51 COMPILER V7.09 HT1380 08/24/2007 09:34:04 PAGE 2
56 2 SetSCLK(1);
57 2 y >>= 1;
58 2 SetSCLK(0);
59 2 }
60 1 }
61
62 //寫命令加讀數據函數:ReadByte()
63 uint ReadByte(uint x)
64 {
65 1 uchar i,j;
66 1 uint temp = 0x00;
67 1 uint temp1;
68 1 SetPinDIO(0);
69 1 for(i=0;i<8;i++)
70 1 {
71 2 PinDIO = x & 0x01;
72 2 SetSCLK(1);
73 2 x >>= 1;
74 2 SetSCLK(0);
75 2 }
76 1 SetPinDIO(1);
77 1 for(j=0;j<8;j++)
78 1 {
79 2 SetSCLK(1);
80 2 temp1 = PinDIO;
81 2 temp1 <<= j;
82 2 temp = temp | temp1;
83 2 SetSCLK(0);
84 2 }
85 1 return(temp);
86 1 }
87
88
89 //使能(啟動)時鐘函數:StartClock()
90 void StartClock(void)
91 {
92 1 SetREST(0);
93 1 nNop(1);
94 1 SetREST(1);
95 1 WriteByte(0x8e,0x00); //置WP = 0
96 1 SetREST(0);
97 1 nNop(1);
98 1 SetREST(1);
99 1 WriteByte(0x80,0x00); //置CH = 0
100 1 SetREST(0);
101 1 }
102
103 //單字節模式對HT1380寫數據函數:HT1380_Single_Write()
104 void HT1380_Single_Write(uint RegNum, uint Data)
105 {
106 1 uint Cmd;
107 1 Cmd = 0x80 | (RegNum << 1);
108 1 //StartClock();
109 1 SetREST(1);
110 1 WriteByte(Cmd,Data);
111 1 SetREST(0);
112 1 //nNop(10);
113 1 }
114
115 //單字節模式對HT1380讀數據函數:HT1380_Single_Read()
116 uint HT1380_Single_Read(uint RegNum)
117 {
C51 COMPILER V7.09 HT1380 08/24/2007 09:34:04 PAGE 3
118 1 uint Data;
119 1 uint Cmd;
120 1 Cmd = 0x81 | (RegNum << 1);
121 1 SetREST(1);
122 1 Data = ReadByte(Cmd);
123 1 SetREST(0);
124 1 return(Data);
125 1 }
126
127 //多字節模式對HT1380寫數據函數:HT1380_Burst_Write()
128 void HT1380_Burst_Write(uint Data_Array[])
129 {
130 1 uint i,j,k;
131 1 uint Cmd = 0xbe;
132 1 uint temp;
133 1 SetPinDIO(0);
134 1 SetREST(1);
135 1 for(i=0;i<8;i++)
136 1 {
137 2 PinDIO = Cmd & 0x01;
138 2 SetSCLK(1);
139 2 Cmd >>= 1;
140 2 SetSCLK(0);
141 2 }
142 1 for(j=0;j<8;j++)
143 1 {
144 2 temp = Data_Array[j];
145 2 for(k=0;k<8;k++)
146 2 {
147 3 PinDIO = temp & 0x01;
148 3 SetSCLK(1);
149 3 temp >>= 1;
150 3 SetSCLK(0);
151 3 }
152 2 }
153 1 SetREST(0);
154 1 }
155
156
157 //多字節模式對HT1380讀數據函數:HT1380_Burst_Read()
158 void HT1380_Burst_Read(uint Data_Array[])
159 {
160 1 uint i,j,k;
161 1 uint Cmd = 0xbf;
162 1 uint temp;
163 1 SetPinDIO(0);
164 1 SetREST(1);
165 1 for(i=0;i<8;i++)
166 1 {
167 2 PinDIO = Cmd & 0x01;
168 2 SetSCLK(1);
169 2 Cmd >>= 1;
170 2 SetSCLK(0);
171 2 }
172 1 SetPinDIO(1);
173 1 for(j=0;j<8;j++)
174 1 {
175 2 for(k=0;k<8;k++)
176 2 {
177 3 SetSCLK(1);
178 3 temp = PinDIO;
179 3 temp >>= k;
C51 COMPILER V7.09 HT1380 08/24/2007 09:34:04 PAGE 4
180 3 Data_Array[j] |= temp;
181 3 SetSCLK(0);
182 3 }
183 2 }
184 1 SetREST(0);
185 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 543 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 16
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 + -