📄 at89s52.lst
字号:
C51 COMPILER V8.05a AT89S52 04/24/2009 11:14:38 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE AT89S52
OBJECT MODULE PLACED IN at89s52.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE at89s52.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51.H>
2 #include <intrins.H>
3 #include <ABSACC.H>
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define SEL27C2001_0 0xFC
7 #define SEL27C2001_1 0xFD
8 #define SEL27C2001_2 0xFE
9 #define SEL27C2001_3 0xFF
10 #define SEL6264 0xEF
11 #define SPEED 2
12 #define reset() {WDT=0x1e;WDT=0xe1;}
13 sfr WDT=0xa6;
14 uint data nmpoint;
15 uchar data col,f,page;
16 bit loadX=1,loadY;
17 bit newdata;
18 uchar xdata XBUFF[160];uchar xdata YBUFF[160];
19 uchar xdata nm[3000];
20 sbit SDA=P1^6;
21 sbit SCL=P1^7;
22 bdata char com_data;
23 sbit mos_bit=com_data^7;
24 sbit low_bit=com_data^0;
25 /*********************************/
26 void delay_iic(int n);
27 uchar rd_24c01(char a);
28 void wr_24c01(char a,char b);
29 //********************************
30 uchar code ASC[];
31 uchar two_onebyte(uchar h1,uchar h2);
32 /*********************************/
33 void HZNM_32byte(uchar n,uchar m)
34 {
35 1 uint data x,y;uchar data z1,z2,i;
36 1 if((n>128)&&(m>128))
37 1 {
38 2 x=(n-0xa1)*94+(m-0xa1);
39 2 //======================================================
40 2 if(x<2048)
41 2 {y=x*32;
42 3 for(i=0;i<32;i=i+2)
43 3 {P1=SEL27C2001_0;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
44 4 P1=SEL6264;
45 4 if(loadX)
46 4 {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
47 4 else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
48 3 }
49 2 //------------------------------------------------------
50 2 if((x>=2048)&&(x<4096))
51 2 {y=x-2048;y=y*32;
52 3 for(i=0;i<32;i=i+2)
53 3 {P1=SEL27C2001_1;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
54 4 P1=SEL6264;
55 4 if(loadX)
C51 COMPILER V8.05a AT89S52 04/24/2009 11:14:38 PAGE 2
56 4 {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
57 4 else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
58 3 }
59 2 //-----------------------------------------------------
60 2 if((x>=4096)&&(x<6144))
61 2 {y=x-4096;y=y*32;
62 3 for(i=0;i<32;i=i+2)
63 3 {P1=SEL27C2001_2;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
64 4 P1=SEL6264;
65 4 if(loadX)
66 4 {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
67 4 else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
68 3 }
69 2 //-----------------------------------------------------
70 2 if(x>=6144)
71 2 {y=x-6144;y=y*32;
72 3 for(i=0;i<32;i=i+2)
73 3 {P1=SEL27C2001_3;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
74 4 P1=SEL6264;
75 4 if(loadX)
76 4 {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
77 4 else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
78 3 }
79 2 nmpoint=nmpoint+2;
80 2 }
81 1 //===========================================================
82 1 if((n<0x80)&&(m<0x80))
83 1 {
84 2 x=(n-0x20)*16;y=(m-0x20)*16;P1=SEL6264;
85 2 for(i=0;i<16;i++)
86 2 {if(loadX)
87 3 {XBUFF[10*i+2*f]=ASC[i+x];XBUFF[10*i+2*f+1]=ASC[i+y];}
88 3 else {YBUFF[10*i+2*f]=ASC[i+x];YBUFF[10*i+2*f+1]=ASC[i+y];}
89 3 }
90 2 nmpoint=nmpoint+2;
91 2 }
92 1 //============================================================
93 1 if((n<0x80)&&(m>0x80))
94 1 {
95 2 x=(n-0x20)*16;P1=SEL6264;
96 2 for(i=0;i<16;i++)
97 2 {if(loadX)
98 3 {XBUFF[10*i+2*f]=ASC[i+x];XBUFF[10*i+2*f+1]=0;}
99 3 else {YBUFF[10*i+2*f]=ASC[i+x];YBUFF[10*i+2*f+1]=0;}
100 3 }
101 2 nmpoint++;
102 2 }
103 1 }
104 /*****************************************/
105 uchar two_onebyte(uchar h1,uchar h2)
106 {
107 1 uchar temp,tempcol;
108 1 if(col<8) tempcol=col;
109 1 else tempcol=col-8;
110 1 temp=(h1<<tempcol)|(h2>>(8-tempcol));
111 1 temp=255-temp;
112 1 return temp;
113 1 }
114 /******************************************/
115 void initload(void)
116 {uint j,iiccnt=0;bit flag=0;
117 1 P1=SEL6264;
C51 COMPILER V8.05a AT89S52 04/24/2009 11:14:38 PAGE 3
118 1 for(j=0;j<8;j++)nm[j]=0x20;
119 1 for(j=8;j<3000;j++)
120 1 {
121 2 nm[j]=rd_24c01(iiccnt);delay_iic(150);iiccnt++;
122 2 if(nm[j]==0x0d||nm[j]==0x0a)j--;
123 2 if(iiccnt==256){iiccnt=0;page=page+2;}
124 2 if(nm[j]==255){flag=1;break;}
125 2 }
126 1 if(flag)
127 1 {for(iiccnt=j;iiccnt<16+j;iiccnt++)nm[iiccnt]=0x20;
128 2 flag=0;iiccnt=0;page=0;}
129 1 }
130 /*******************************************************/
131 void main(void)
132 {uint j,nmcnt=0;uchar cnt=0;
133 1 reset()
134 1 P1=SEL6264;
135 1 for(j=0;j<160;j++)XBUFF[j]=0;
136 1 for(j=0;j<160;j++)YBUFF[j]=0;
137 1 reset()
138 1 initload();
139 1 reset()
140 1 col=16;
141 1 TMOD=0x01;
142 1 IE=0x83;
143 1 IT0=1;
144 1 TH0=-(1400/256);
145 1 TL0=-(1400%256);
146 1 TR0=1;
147 1 SCON=0x00;
148 1 while(1)
149 1 {
150 2 if((loadX)||(loadY))
151 2 {
152 3 nmpoint=nmcnt;
153 3 for(f=0;f<5;f++){HZNM_32byte(nm[nmpoint],nm[nmpoint+1]);reset()}
154 3 if((nm[nmcnt]<0x80)&&(nm[nmcnt+1]>0x80))nmcnt++;
155 3 else
156 3 nmcnt=nmcnt+2;
157 3 if(nm[nmcnt]==0x20)cnt++;else cnt=0;
158 3 if(cnt>=5){nmcnt=0;cnt=0;}
159 3 loadX=0;loadY=0;
160 3 }
161 2 //--------------------------------------
162 2 if(newdata)
163 2 {
164 3 TR0=0;
165 3 XBYTE[0xFFFF]=0x10;
166 3 P1=SEL6264;
167 3 for(j=0;j<160;j++)XBUFF[j]=0;
168 3 for(j=0;j<160;j++)YBUFF[j]=0;
169 3 reset()
170 3 initload();
171 3 reset()
172 3 col=16;
173 3 newdata=0;
174 3 TR0=1;
175 3 }
176 2 }
177 1 }
178 /*******************************************************/
179 void int_zd0(void) interrupt 0 using 1
C51 COMPILER V8.05a AT89S52 04/24/2009 11:14:38 PAGE 4
180 {
181 1 newdata=1;
182 1 }
183 /******************************************************/
184 void display()interrupt 1 using 2
185 {
186 1 int data s;
187 1 static bit disXY;
188 1 static uchar disrow,num;
189 1 uchar inc,sr;
190 1 sr=P1;
191 1 reset()
192 1 if(col<8)inc=0;else inc=1;
193 1 TH0=-(1400/256);
194 1 TL0=-(1400%256);
195 1 P1=SEL6264;
196 1 //================================================================================
197 1 if(!disXY)
198 1 { switch(disrow)
199 2 {
200 3 case 0:for(s=7+inc;s>=0+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
201 3 case 1:for(s=17+inc;s>=10+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
202 3 case 2:for(s=27+inc;s>=20+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
203 3 case 3:for(s=37+inc;s>=30+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
204 3 case 4:for(s=47+inc;s>=40+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
205 3 case 5:for(s=57+inc;s>=50+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
206 3 case 6:for(s=67+inc;s>=60+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
207 3 case 7:for(s=77+inc;s>=70+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
208 3 case 8:for(s=87+inc;s>=80+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
209 3 case 9:for(s=97+inc;s>=90+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
210 3 case 10:for(s=107+inc;s>=100+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
211 3 case 11:for(s=117+inc;s>=110+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
212 3 case 12:for(s=127+inc;s>=120+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
213 3 case 13:for(s=137+inc;s>=130+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
214 3 case 14:for(s=147+inc;s>=140+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
215 3 case 15:for(s=157+inc;s>=150+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
216 3 default:break;
217 3 }
218 2 XBYTE[0xFFFF]=0x10+disrow;
219 2 XBYTE[0xFFFF]=0x20+disrow;
220 2 disrow++;
221 2 if(disrow>=16){disrow=0;num++;}
222 2 if(num>=SPEED){num=0;col++;}
223 2 if(col>=16){col=0;disXY=1;loadX=1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -