📄 xu1.lst
字号:
C51 COMPILER V7.50 XU1 02/20/2006 10:03:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE XU1
OBJECT MODULE PLACED IN xu1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE xu1.c DEBUG OBJECTEXTEND
line level source
1 #include <AT89x051.H>
2 unsigned char code seg[]={
3 63, 6, 91, 79, 102,109,125, 7,127,111 ,//;0,1,2,3,4,5,6,7,8,9
4 191,134,219, 207,230,237,253,135,255,239 ,//0.,1.,.... 8.,9.
5 0x11,0xC1, 0x63, 0x85, 0x61,0x71,0x91,0x30,0x1F,0x1D ,//A,b, C,d,E,F,H,P.,_,=
6 0x00,
7 0xC0,0x40
8 };
9 bit COMOK;
10 sbit NRE = 0xB2;//max485.re#
11 sbit WDI = 0xB5;//watchdog
12 sbit CE = 0xB7;//led
13 sbit CLK = 0x91;//led
14 sbit DAT = 0x90;//led
15 unsigned char pointer,com[5],dom[5],addr;long int a,b;
16 void display(unsigned char* dis);
17
18 main()
19 {
20 1 int i,j,k,x;
21 1 bit sw;
22 1 unsigned char l;
23 1 unsigned char dis[4];
24 1 P1_7 = 1; P1_6 = 1;
25 1 P1_5 = 1; P1_4 = 1;//回读信号须先 setb 1
26 1 SP = 0x60; //stack head addr
27 1 WDI = 0;
28 1 COMOK= 0;
29 1 x=1;
30 1 for(i=0;i<20000;i++)WDI = !WDI;
31 1 dis[3]=P1_7;dis[2]=P1_6;dis[1]=P1_5;dis[0]=P1_4;
32 1 display(dis);
33 1 addr=P1;
34 1 addr=((addr&0xf0)|0x0a);
35 1 //addr=0xaa; //old
36 1 for(j=0;j<400;j++)
37 1 for(i=0;i<1000;i++)WDI = !WDI;
38 1
39 1 TMOD = 0x20;
40 1 TH1 = 0xff;
41 1 TL1 = 0xff;
42 1 TR1 = 1;
43 1 SCON = 0xf0;
44 1 PCON = 0x80;
45 1 NRE = 0;
46 1 ET1 = 0;
47 1
48 1 ES = 1;
49 1 EA = 1;
50 1 pointer = 0;
51 1 i=0;l=10;
52 1 do {
53 2 if(i<6){
54 3 if(COMOK==0){
55 4 TH1=0xfd;//255-i;//fd:19200 fc:9600 fe:38400, ff:76800
C51 COMPILER V7.50 XU1 02/20/2006 10:03:50 PAGE 2
56 4 TL1=0xfd;//255-i;//fb:4800 fa:2400
57 4 }
58 3 dis[3] = i; dis[2] = i+1;
59 3 dis[1] = i+2; dis[0] = i+3;
60 3 i++;//1234567890123456 <---
61 3 }
62 2 else{
63 3 if(COMOK==0){
64 4 TH1=0xfd;//255-l;//
65 4 TL1=0xfd;//255-l;//
66 4 if(l>15)l=0;
67 4 else l++;
68 4 }
69 3 if(sw)dis[3] = 10;
70 3 else dis[3] = 0;
71 3 dis[2] = 0; dis[1] = 0; dis[0] = COMOK;
72 3 sw=!sw;
73 3 }
74 2 WDI = !WDI;
75 2 display(dis);
76 2 for(j=0;j<10000;j++){ k=i*j; WDI = !WDI;}
77 2 }while(pointer<4);
78 1
79 1 while(x){
80 2 WDI = !WDI;
81 2 if(pointer>=4)
82 2 a=com[0]+com[1]*10+com[2]*100+com[3]*1000;
83 2 b=a;x=0; pointer=0;
84 2 display(com);}
85 1 while(1){
86 2 WDI = !WDI;
87 2 if(pointer>=4){
88 3
89 3 a=com[0]+com[1]*10+com[2]*100+com[3]*1000;
90 3 if((b-a>-50)&(b-a<50)!=0)
91 3 display(com);
92 3 b=a;
93 3 pointer=0;
94 3 }
95 2 }
96 1
97 1 }
98
99 void display(unsigned char * dis)
100 {
101 1 unsigned char i,j,k;
102 1
103 1 CLK = 0;CE = 0;
104 1 for(i=0;i<4;i++){
105 2 k=seg[dis[i]];
106 2 for(j=0;j<8;j++){
107 3 //if((seg[dis[i]]&(0x80>>j))==0) DAT = 1;
108 3 //else DAT = 0;
109 3 DAT = (k&0x80);
110 3 DAT = !DAT;
111 3 k = k<<1;
112 3 CLK = 0;
113 3 CLK = 1;CLK = 0;
114 3 }
115 2 }
116 1 CE = 1;
117 1 P3_4=!P3_4;
C51 COMPILER V7.50 XU1 02/20/2006 10:03:50 PAGE 3
118 1 }
119 void receive(void) interrupt 4 using 3
120 {
121 1
122 1 unsigned char uc;
123 1 RI=0;
124 1 P3_4=!P3_4;
125 1 if(RB8==1){
126 2 uc=SBUF;
127 2 if(uc==addr){SM2=0;COMOK=1;}
128 2 return;
129 2 }
130 1 if(pointer<4)
131 1 com[pointer++] = SBUF;//comtimes++%10;
132 1 if(pointer>3)SM2=1;
133 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 704 ----
CONSTANT SIZE = 33 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 14
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -