📄 test.lst
字号:
C51 COMPILER V7.04 TEST 10/30/2004 17:52:00 PAGE 1
C51 COMPILER V7.04, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3
4 sbit LED1 = P1^2;
5 sbit LED2 = P1^4;
6 sbit IR_IN = P3^2;
7
8 void init_serialcomm(void)
9 {
10 1 SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
11 1 TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
12 1 PCON |= 0x80; //SMOD=1;
13 1 TH1 = 0xFF; //Baud:4800 fosc=11.0592MHz :f4
14 1 //IE |= 0x90; //Enable Serial Interrupt
15 1 TR1 = 1; // timer 1 run
16 1 TI=1;
17 1 }
18
19
20 unsigned char ir_timer=0,jiffies=0;
21 void clock_timer(void) interrupt 1 using 1{
22 1 ir_timer++;
23 1 jiffies++;
24 1 }
25
26 void clock_init(void){
27 1 jiffies = 0;
28 1 TMOD=0x02;
29 1 // TH0=TL0=0x9b;//12M
30 1 // TH0=TL0=0x7a;//16M
31 1 // TH0=TL0=0x75;//16.59M
32 1 // TH0=TL0=0x72;//17M
33 1 // TH0=TL0=0x37;//24M
34 1 TH0=TL0=0xa0;//22M
35 1 EA=1;
36 1 ET0=1;
37 1
38 1 TR0=1;
39 1 }
40
41 unsigned char ir_step=0;
42 unsigned int ir_addr;
43 unsigned char ir_data;
44 void ir_test(void){
45 1 bit ir_status,ir_last_status;
46 1 unsigned char __ir_timer;
47 1
48 1 ir_status=IR_IN;
49 1
50 1 if (ir_last_status==ir_status){//超时处理
51 2 if (ir_step>0 && ir_timer>0xb0){
52 3 ir_timer=0;
53 3 ir_step=0;
54 3 }
55 2 return;
C51 COMPILER V7.04 TEST 10/30/2004 17:52:00 PAGE 2
56 2 }
57 1
58 1 __ir_timer=ir_timer;
59 1 ir_timer=0;
60 1 ir_step++;
61 1 ir_last_status=ir_status;
62 1
63 1 if(ir_step < 50 && __ir_timer > 0x18){//误码处理,提前出现数据码以外的非正常宽度编码,正常数据码宽度应小于0
-x10
64 2 ir_step = 0;
65 2 return;
66 2 }
67 1
68 1 //0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 94
69 1 //0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 94
70 1
71 1 if(ir_step <= 32){
72 2 if((ir_step & 3)==2 || (ir_step & 3)==3){
73 3 ir_addr >>= 1;
74 3 if(__ir_timer < 0xa)
75 3 ir_addr &= 0x7fff;
76 3 else
77 3 ir_addr |= 0x8000;
78 3 }
79 2 if(ir_step==16){
80 3 TI=0;
81 3 SBUF=(ir_addr>>8);
82 3 }
83 2 if(ir_step==32){
84 3 TI=0;
85 3 SBUF=(ir_addr>>8);
86 3 }
87 2 }else
88 1 if(ir_step>32 && ir_step<=48){
89 2 if((ir_step & 1)==0){
90 3 ir_data >>= 1;
91 3 if(__ir_timer < 0xa)
92 3 ir_data &= 0x7f;
93 3 else
94 3 ir_data |= 0x80;
95 3 }
96 2 if(ir_step==48){
97 3 TI=0;
98 3 SBUF=(ir_data);
99 3 }
100 2 }else
101 1 if(ir_step>48 && ir_step<=50){
102 2 if(ir_step==50){
103 3 ir_timer=0;
104 3 ir_step=0;
105 3 TI=0;
106 3 if (__ir_timer > 0x90 && __ir_timer < 0xa0)
107 3 SBUF=0xaa;
108 3 else
109 3 SBUF=0x55;
110 3 }
111 2 }
112 1 }
113
114 enum eepromtype {M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256};
115 bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address,
116 unsigned char ControlByte,enum eepromtype EepromType);
C51 COMPILER V7.04 TEST 10/30/2004 17:52:00 PAGE 3
117
118 unsigned char buf[8]={1,2,3,4,5,6,7,9};
119 void eeprom_read_test(unsigned char page){
120 1 unsigned char i,j,c;
121 1 for(i=0; i<32; i++){
122 2 for(j=0; j<8; j++){
123 3 buf[j]=1;
124 3 }
125 2 c = 0xa1 | page<<1;
126 2 if(RW24XX(buf, 8, (unsigned int)((i*8)), c, M2408)){
127 3 TI=0;
128 3 SBUF=0x55;
129 3 }
130 2 for(j=0; j<8; j++){
131 3 while(!TI);
132 3 TI=0;
133 3 SBUF=buf[j];
134 3 }
135 2 }
136 1 }
137 void eeprom_write_test(unsigned char page){
138 1 unsigned char i,j,c;
139 1 for(i=0; i<32; i++){
140 2 for(j=0; j<8; j++){
141 3 buf[j]=j<<1;
142 3 }
143 2 c = 0xa0 | page<<1;
144 2 RW24XX(buf, 8, (unsigned int)(i*8), c, M2408);
145 2 }
146 1 }
147
148 void wait(unsigned int t){
149 1 while(t--)
150 1 t=t;
151 1 }
152
153
154 void clock_test(){
155 1 unsigned char i,d;
156 1 unsigned char pdata *source=0;
157 1 // for(i=0; i<128; i++){
158 1 // source=i;
159 1 // *source = i>>1;
160 1 // }
161 1 for(i=0; i<128; i++){
162 2 source=i;
163 2 d=*source;
164 2 while(!TI);
165 2 TI=0;
166 2 SBUF=d;
167 2 }
168 1 }
169
170 void setup12887(unsigned char *p);
171 void read12887(unsigned *p);
172 void start12887(void);
173
174 void main(){
175 1 clock_init();
176 1 init_serialcomm();
177 1 wait(60000);
178 1 wait(60000);
C51 COMPILER V7.04 TEST 10/30/2004 17:52:00 PAGE 4
179 1 wait(60000);
180 1
181 1 while(0){
182 2 ir_test();
183 2 }
184 1 {
185 2 unsigned char p_w;
186 2 bit ir_status,ir_last_status;
187 2 LED1=0;
188 2 LED2=1;
189 2 ir_status=ir_last_status=1;
190 2 while(1){
191 3 while(1){
192 4 ir_status=IR_IN;
193 4 if (ir_last_status!=ir_status){
194 5 ir_last_status=ir_status;
195 5 break;
196 5 }
197 4 }
198 3 p_w=jiffies;
199 3 jiffies=0;
200 3
201 3 while(!TI);
202 3 TI=0;
203 3 SBUF=p_w;
204 3 LED1=!LED1;
205 3 LED2=!LED2;
206 3 }
207 2 }
208 1 }
209
210
211
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 524 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 8
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -