📄 led移位显示测试.lst
字号:
C51 COMPILER V8.02 LED_莆幌允_测试 06/02/2007 00:52:55 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LED_莆幌允_测试
OBJECT MODULE PLACED IN LED移位显示测试.OBJ
COMPILER INVOKED BY: G:\8.02\C51\BIN\C51.EXE LED移位显示测试.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X52.H>
2 #include <INTRINS.h>
3 unsigned char code Tab[]={0xff,0Xfd,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xff,0xdf,0xff,0xef,0xff,0x7f,0xff,0xbf
-,
4 0Xfd,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xff,0xdf,0xff,0xef,0xff,0x7f,0xff,0xbf,0xff
-};
5 unsigned char code codedisplay[]={0xDF,0xBF,0xDF,0xBF,0xDF,0xBF,0xDC,0x03,0x03,0xBF,0xDF,0xBF,0x88,0x01,0
-x97,0xFF,
6 0x97,0xBF,0x5F,0xBF,0xDC,0x03,0xDF,0xBF,0xDF,0xBF,0xDF,0xBF,0xD0,0x01,0xDF,0xFF,/*"桂",0*/
7 0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,0x02,0x01,0xEF,0xDF,0xEF,0x9F,0xC7,0x8F,
8 0xCB,0x4F,0xAB,0x57,0xAE,0xD7,0x6D,0xD9,0xEB,0xDB,0xEF,0xDF,0xEF,0xDF,0
-xEF,0xDF,/*"林",1*/
9 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,
10 0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xFE,0xFD,0xFE,0xFD,0xFF,0x01,0xFF,0xFF,/*"电",2*/
11 0xFF,0xFF,0xC0,0x1F,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,
12 0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF};/*"子",3*/
13 unsigned char display_buff[8];
14 unsigned char m,addr,dat=0;
15 #ifndef I2C_H
16 #define I2C_H
17 typedef unsigned char uchar; //重新定义数据类型
18 typedef unsigned int uint;
19 const uchar WR24C02 = 0xa0; //读写控制命令 //EEPROM地址+写命令
20 const uchar RD24C02 = 0xA1; //EEPROM地址+读命令
21 sbit I2C_SCL = P2^4; //I/O口定义
22 sbit I2C_SDA = P2^5;
23 bit ErrorBit; //用户变量声明 //读写错误标志 1错误 0 正确
24 uchar idata ErrorCode; //错误码
25 uchar da=0;
26 //************************函数声明***************************
27 void Start(void);
28 void Stop(void);
29 void Ack(void);
30 void NoAck(void);
31 void TestAck(void);
32 void Write_I2c(uchar date);
33 uchar Read_I2c(void);
34 void DelayMs(uchar time);
35 void Write_Date(uchar StartAddress,uchar *date,uchar bytes);
36 void Read_Date(uchar StartAddress,uchar *date,uchar bytes);
37 #endif
38 unsigned int result,count=0;
39 void Start(void)
40 { I2C_SDA = 1; //起始条件的数据信号
41 1 _nop_();
42 1 I2C_SCL = 1; //起始条件时钟信号
43 1 _nop_(); //信号建立时间>4.7us
44 1 _nop_();
45 1 _nop_();
46 1 _nop_();
47 1 _nop_();
48 1 I2C_SDA = 0; //起始信号
49 1 _nop_();
50 1 _nop_();
51 1 _nop_();
C51 COMPILER V8.02 LED_莆幌允_测试 06/02/2007 00:52:55 PAGE 2
52 1 _nop_();
53 1 _nop_();
54 1 I2C_SCL = 0; //钳住I2C总线, 准备发送或者接受数据
55 1 _nop_();
56 1 _nop_();
57 1 }
58 void Stop(void)
59 { I2C_SDA = 0; //结束条件的数据信号
60 1 _nop_();
61 1 I2C_SCL = 1; //结束条件的时钟信号
62 1 _nop_();
63 1 _nop_();
64 1 _nop_();
65 1 _nop_();
66 1 _nop_();
67 1 I2C_SDA = 1; //结束信号
68 1 _nop_();
69 1 _nop_();
70 1 _nop_();
71 1 _nop_();
72 1 }
73 void Ack(void)
74 { I2C_SDA = 0;
75 1 _nop_();
76 1 _nop_();
77 1 I2C_SCL = 1;
78 1 _nop_();
79 1 _nop_();
80 1 _nop_();
81 1 _nop_();
82 1 _nop_();
83 1 I2C_SCL = 0;
84 1 _nop_();
85 1 _nop_();
86 1 I2C_SDA = 1;
87 1 }
88 void NoAck(void)
89 { I2C_SDA = 1;
90 1 _nop_();
91 1 _nop_();
92 1 I2C_SCL = 1;
93 1 _nop_();
94 1 _nop_();
95 1 _nop_();
96 1 _nop_();
97 1 _nop_();
98 1 I2C_SCL = 0;
99 1 _nop_();
100 1 _nop_();
101 1 }
102 void TestAck(void)
103 { I2C_SDA = 1;
104 1 _nop_();
105 1 _nop_();
106 1 I2C_SCL = 1;
107 1 _nop_();
108 1 _nop_();
109 1 _nop_();
110 1 ErrorBit = I2C_SDA;
111 1 I2C_SCL = 0;
112 1 _nop_();
113 1 _nop_();
C51 COMPILER V8.02 LED_莆幌允_测试 06/02/2007 00:52:55 PAGE 3
114 1 }
115 void Write_I2c(uchar date)
116 { uchar i;
117 1 for(i=0;i<8;i++)
118 1 {
119 2 I2C_SDA=date&0x80; //送数据到数据线上
120 2 date<<=1;
121 2 _nop_();
122 2 I2C_SCL=1; //置时钟信号为高电平,使数据有效
123 2 _nop_();
124 2 _nop_();
125 2 _nop_();
126 2 _nop_();
127 2 _nop_();
128 2 I2C_SCL=0;
129 2 _nop_();
130 2 _nop_();
131 2
132 2 }
133 1 }
134 uchar Read_I2c(void)
135 { uchar i;
136 1 uchar byte = 0;
137 1 for(i = 0; i < 8; i++)
138 1 { I2C_SCL = 0; //置时钟为低电平,准备接受数据
139 2 _nop_();
140 2 _nop_();
141 2 _nop_();
142 2 _nop_();
143 2 _nop_();
144 2 I2C_SCL = 1; //置时钟为高电平,使数据线数据有效
145 2 _nop_();
146 2 _nop_();
147 2 byte <<= 1;
148 2 byte |= I2C_SDA;
149 2 _nop_();
150 2 _nop_();
151 2 I2C_SCL = 0;
152 2 }
153 1 return(byte);
154 1 }
155 void DelayMs(uchar time)
156 { uchar i;
157 1 do
158 1 { for(i=0; i<125 ; i++); //*延时 8us x 125 = 1ms
159 2 }
160 1 while (time--);
161 1 }
162 void Write_Date(uchar StartAddress,uchar *date,uchar bytes)
163 { uchar i = 0;
164 1 Start();
165 1 Write_I2c(WR24C02);
166 1 TestAck();
167 1 Write_I2c(StartAddress);
168 1 TestAck();
169 1 for(i = 0;i < bytes; i++)
170 1 {
171 2 Write_I2c(*date);
172 2 TestAck();
173 2 date++;
174 2 }
175 1
C51 COMPILER V8.02 LED_莆幌允_测试 06/02/2007 00:52:55 PAGE 4
176 1 Stop();
177 1 DelayMs(20);
178 1 }
179 void Read_Date(uchar StartAddress,uchar *date,uchar bytes)
180 { uchar i;
181 1 Start();
182 1 Write_I2c(WR24C02);
183 1 TestAck();
184 1 Write_I2c(StartAddress);
185 1 TestAck();
186 1 Start();
187 1 Write_I2c(RD24C02);
188 1 TestAck();
189 1 for (i = 0; i<bytes; i++)
190 1 {
191 2 *date= Read_I2c();
192 2
193 2 Ack();
194 2 date++;
195 2 }
196 1
197 1 NoAck();
198 1 Stop();
199 1
200 1 }
201
202 void delay(void)
203 { unsigned char i,j;
204 1 for(i=0;i<15;i++){ for(j=0;j<50;j++) ; }
205 1 }
206
207 void main(void)
208 { SCON=0; P1=0; SP=0x70;
209 1 // dat=&display_buff;
210 1 //for(addr=0;addr<113;addr++)
211 1 // { Write_Date(addr,codedisplay+dat,1);dat++; }
212 1 Write_Date(0+16,codedisplay,16);Write_Date(16+16,codedisplay+16,16);Write_Date(32+16,codedisplay+32,16
-);Write_Date(48+16,codedisplay+48,16);
213 1 Write_Date(64+16,codedisplay+64,16);Write_Date(80+16,codedisplay+80,16);Write_Date(96+16,codedisplay+96,1
-6);Write_Date(112+16,codedisplay+112,16);
214 1 while(1)
215 1 {
216 2 for(m=0;m<16;m++)
217 2 { Read_Date(2*m+16,display_buff,1);Read_Date(2*m+1+16,display_buff+1,1);Read_Date(32+2*m+16,displ
-ay_buff+2,1);Read_Date(32+2*m+1+16,display_buff+3,1);
218 3 Read_Date(64+2*m+16,display_buff+4,1);Read_Date(64+2*m+1+16,display_buff+5,1);Read_Date(96+2*m+
-16,display_buff+6,1);Read_Date(16+96+2*m+1,display_buff+7,1);
219 3 SBUF=display_buff[0]; while(!TI) ; TI=0;
220 3 SBUF=display_buff[1]; while(!TI) ; TI=0;
221 3 SBUF=display_buff[2]; while(!TI) ; TI=0;
222 3 SBUF=display_buff[3]; while(!TI) ; TI=0;
223 3 SBUF=display_buff[4]; while(!TI) ; TI=0;
224 3 SBUF=display_buff[5]; while(!TI) ; TI=0;
225 3 SBUF=display_buff[6]; while(!TI) ; TI=0;
226 3 SBUF=display_buff[7]; while(!TI) ; TI=0;
227 3 SBUF=Tab[2*m]; while(!TI) ; TI=0;
228 3 SBUF=Tab[2*m+1];while(!TI) ; TI=0;
229 3
230 3 P3_4=0;P3_4=1; P3_4=0;
231 3 //delay();
232 3 }
233 2 }
C51 COMPILER V8.02 LED_莆幌允_测试 06/02/2007 00:52:55 PAGE 5
234 1 }
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 656 ----
CONSTANT SIZE = 160 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 10
IDATA SIZE = 1 ----
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 + -