📄 ynxf.lst
字号:
C51 COMPILER V8.02 YNXF 02/21/2009 20:34:01 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE YNXF
OBJECT MODULE PLACED IN ynxf.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ynxf.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X52.H>
2
3 unsigned char code DAT[11]={0xfd,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00};
4 unsigned char code DIG[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
5 /* led"=",0x5b"[",0x25"% 空秤"0x24重秤"$"0x23有卡"#"};*/
6 void delay(int ) ;
7 sbit SCL=P2^4;
8 sbit SDA=P2^5;
9
10
11 sbit SE=P1^0; //4寸数码管
12 sbit SCK=P1^1;
13 sbit RCK=P1^2;
14
15 sbit SE1=P1^4; //汉字屏
16 sbit SCK1=P1^5;
17 sbit RCK1=P1^6;
18
19 sbit LED=P1^3; //指示灯
20 sbit DOT=P1^7; //冒号
21
22 sbit KEY=P2^7; //键盘
23 sbit IRB=P2^6; //红外
24
25 sbit GREEN=P2^3;//绿灯
26 sbit RED=P2^2;//红灯
27 sbit UP=P2^0;//升栏杆机
28 sbit DOWN=P2^1;//降栏杆机
29
30 unsigned char str1[16]={0x00};
31 unsigned char str2[16];
32 unsigned char str3[16];
33 unsigned char str4[16];
34 unsigned char str5[16];
35 unsigned char str6[16];
36 unsigned char str7[16];
37 unsigned char idata str8[16];
38
39 int tj_bytes;
40
41 void out_disp_8(unsigned char);
42 void out_disp_led(unsigned char);
43 unsigned char led_8(char);
44
45 void init_rs232();
46 void tx_char( char );
47 unsigned char rx_char();
48
49
50
51
52
53 void main()
54 { unsigned char dat1,dat2,zt,i;
55 1 delay(5000);
C51 COMPILER V8.02 YNXF 02/21/2009 20:34:01 PAGE 2
56 1 //定时器设置
57 1
58 1 TH0=0xfb;
59 1 TL0=0x30;
60 1 IE=0x82;
61 1 TMOD=0x20;
62 1 init_rs232();
63 1 EA=0;
64 1 TR0=0;
65 1
66 1 KEY =1;
67 1 GREEN =1;/*绿灯*/RED=0;/*红灯*/UP=1;/*栏杆机升*/DOWN=0;/*栏杆机降*/
68 1
69 1 P0=0x00;
70 1 out_disp_8(0x00);
71 1 out_disp_8(DAT[0]);
72 1 out_disp_8(DAT[0]);
73 1 out_disp_8(DAT[0]);
74 1 out_disp_8(DAT[0]);
75 1 out_disp_8(DAT[0]);
76 1 out_disp_8(DAT[0]);
77 1 out_disp_8(DAT[0]);
78 1 out_disp_8(DAT[0]);
79 1
80 1 RCK=0;RCK=1;
81 1
82 1 while (1){ dat1=rx_char();
83 2 if (dat1==0x23) {zt=1;tx_char(0x34);}
84 2 if((dat1==0x25) && (zt==1) && (IRB==1))/*空秤*/ {GREEN=1;/*绿灯*/RED=0;/*红灯*/UP=1;/*栏杆机升
-*/DOWN=0;/*栏杆机降*/zt=2;tx_char(0x33);}
85 2 if((dat1==0x24) && (GREEN==1) && (zt==2) && (IRB==0)) {UP=0;/*栏杆机升*/DOWN=1;/*栏杆机降*/GREEN=0;/*绿
-灯*/RED=1; zt=1; tx_char(0x32);} /*重秤*/
86 2 if(dat1==0x3d){ TR0=0;
87 3 dat2=rx_char();
88 3 if(dat2==0x30)
89 3 {out_disp_8(0x00);}/*灭*/
90 3 else
91 3 { out_disp_8(led_8(dat2));}
92 3
93 3 for(i=0;i<8;i++){ dat2=rx_char(); out_disp_8(led_8(dat2));}
94 3 RCK=0; RCK=1;
95 3 tx_char(0x31);
96 3 TR0=1;
97 3 }
98 2
99 2 if (dat1==0x5b)
100 2 { TR0=0;
101 3 for (i=0;i<16;i++){dat2=rx_char(); str1[i]=dat2;}
102 3
103 3 for (i=0;i<16;i++){dat2=rx_char(); str2[i]=dat2;}
104 3
105 3 for (i=0;i<16;i++){dat2=rx_char(); str3[i]=dat2;}
106 3
107 3 for (i=0;i<16;i++){dat2=rx_char(); str4[i]=dat2;}
108 3
109 3 for (i=0;i<16;i++){dat2=rx_char(); str5[i]=dat2;}
110 3
111 3 for (i=0;i<16;i++){dat2=rx_char(); str6[i]=dat2;}
112 3
113 3 for (i=0;i<16;i++){dat2=rx_char(); str7[i]=dat2;}
114 3
115 3 for (i=0;i<16;i++){dat2=rx_char(); str8[i]=dat2;}
C51 COMPILER V8.02 YNXF 02/21/2009 20:34:01 PAGE 3
116 3 EA=1;
117 3 TR0=1;
118 3 tx_char(0x30);
119 3 } }
120 1
121 1 LED=~LED; delay(5000);}
122
123 void init_rs232()
124 { /*PCON=0x80; 波特率加倍 */
125 1 //PCON&=0xef; // 波特率不加倍
126 1 SCON=0x50;
127 1 TMOD=0x21;
128 1 TH1=0xfd;
129 1 TL1=0xfd;
130 1 TR1=1;
131 1 TI=1;
132 1
133 1 }
134
135 unsigned char rx_char()
136 {
137 1 while(1)
138 1 if((SCON & 0x01)==0x01) break;
139 1 RI=0;
140 1 return SBUF;
141 1 }
142
143 void tx_char( char c)
144 {
145 1 while(1)
146 1 if((SCON & 0x02)==0x02) break;
147 1 TI=0;
148 1 SBUF=c;
149 1 }
150
151
152 void delay(int t) {
153 1 int i;
154 1 for (i=0;i<t;i++) ;
155 1 }
156
157 void out_disp_8(unsigned char dd) {
158 1
159 1 unsigned char i,k;
160 1 for (i=0;i<8;i++) { k=dd & 0x01;SE=k;SCK=1;dd=dd>>1;SCK=0; }
161 1 }
162
163 void out_disp_led(unsigned char dd) {
164 1 unsigned char i,k;
165 1 for (i=0;i<8;i++) { k=dd & 0x80;SE1=k;SCK1=1;dd=dd<<1;SCK1=0; }
166 1 }
167
168 unsigned char led_8( char dd){
169 1 unsigned char i;
170 1 i=0;
171 1 while(1) {if(dd==DIG[i]) break;
172 2 i++;if(i>9) break;}
173 1 if(i>9) return(DAT[0]);
174 1 return DAT[i];}
175
176
177
C51 COMPILER V8.02 YNXF 02/21/2009 20:34:01 PAGE 4
178
179 void timer0(void) interrupt 1 {
180 1
181 1 TH0=0xfb;
182 1 TL0=0x30;
183 1
184 1
185 1 out_disp_led(~str1[tj_bytes]);
186 1 // out_disp_led(~0x00);
187 1 out_disp_led(~str2[tj_bytes]);
188 1
189 1
190 1 out_disp_led(~str3[tj_bytes]);
191 1 out_disp_led(~str4[tj_bytes]);
192 1 out_disp_led(~str5[tj_bytes]);
193 1 out_disp_led(~str6[tj_bytes]);
194 1 out_disp_led(~str7[tj_bytes]);
195 1 out_disp_led(~str8[tj_bytes]);
196 1
197 1
198 1 RCK1=0;RCK1=1;
199 1 P0=tj_bytes;
200 1 tj_bytes ++;
201 1 if(tj_bytes>15) tj_bytes=0;
202 1 }
203
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 688 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 114 4
IDATA SIZE = 16 ----
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 + -