📄 ad.lst
字号:
C51 COMPILER V8.02 AD 06/28/2007 16:35:03 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define ulong unsigned long
5 #define _rrca_() CY = ACC & 0x01 //产生RRC A指令
6 #define _rlca_() CY = ACC & 0x80 //产生RLC A指令
7 sbit bADcs=P1^4;
8 sbit bADcl=P1^5;
9 sbit bADda=P1^6;
10 sbit flag=P1^7;
11 sbit str=P2^7;
12 sbit d=P2^6;
13 sbit clk=P2^5;
14 bit choose=0;
15 unsigned char data1;
16 unsigned char count;
17 unsigned char cycle;
18 uint ge,xiao1,xiao2;
19 unsigned long data2;
20 //无小数点
21 const uchar table1[17]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09,0x71,0x31,0x93,0x61,0x13,0x17,0x
-ff};
22
23
24 //有小数点
25 const uchar table2[17]={0x80,0xec,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08,0x70,0x30,0x92,0x60,0x12,0x16,0x
-ff};
26 uchar buffer[4]={0x00,0x00,0x00,0x00};
27
28
29 void Delayus(uchar i)
30 {
31 1 while(--i);
32 1 }
33
34 void display(void)
35 {
36 1
37 1 uchar bit_count=0;
38 1 uchar table_counter=0;
39 1 uchar byte_counter=0;
40 1 uchar temp_i=0;
41 1 buffer[0]=xiao2;
42 1 buffer[1]=xiao1;
43 1 buffer[2]=ge;
44 1 buffer[3]=0x00;
45 1
46 1
47 1 //led_str_off;//先清零
48 1 str=0;
49 1 //led_clk_off;
50 1 clk=0;
51 1 for(byte_counter=0;byte_counter<4;byte_counter++)
52 1 {
53 2 bit_count=8;
C51 COMPILER V8.02 AD 06/28/2007 16:35:03 PAGE 2
54 2 if(byte_counter==2)temp_i=table2[buffer[byte_counter]];
55 2 else
56 2 temp_i=table1[buffer[byte_counter]];
57 2 // nop;
58 2 while(bit_count>0)
59 2 {
60 3 if((temp_i&0x80)==0)
61 3 {
62 4 //led_d_off;
63 4 d=0;
64 4 }
65 3 else
66 3 {
67 4 //led_d_on;
68 4 d=1;
69 4 }
70 3 temp_i=(temp_i<<1);
71 3
72 3 // nop;
73 3 //led_clk_on;
74 3 clk=1;
75 3 // nop;
76 3 //led_clk_off;
77 3 clk=0;
78 3 // nop;
79 3
80 3 bit_count--;
81 3
82 3 }
83 2
84 2 }
85 1
86 1 //led_str_on;
87 1 str=1;
88 1 }
89
90 /*
91 void ad()
92 {
93 choose=0;
94 count = 0;
95 bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
96 bADcl = 0;
97 bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.
98 bADcl = 1;
99 bADcl = 0;//pulse 1 down
100 bADda = 1;
101 bADcl = 1; bADcl = 0;//pulse 2 down
102 if(choose == 0)
103 bADda = 0;
104 else
105 bADda = 1;
106 bADcl = 1; bADcl = 0;//pulse 3 down
107 bADcl = 1; bADcl = 0;//pulse 4 down
108 //bADcl = 1;
109
110
111 for(cycle = 8; cycle > 0; cycle-- )
112 {
113 bADda = 1;
114
115 //bADcl = 0;//pulse
C51 COMPILER V8.02 AD 06/28/2007 16:35:03 PAGE 3
116 bADcl = 1;
117 CY = bADda;
118 _rlca_(); //RRC A
119 bADcl = 0;//pulse
120 }
121 data1= ACC;
122
123
124 for(cycle = 8; cycle > 0; cycle-- )
125 {
126 bADda = 1;
127
128 bADcl = 1;
129 CY = bADda;
130 _rrca_(); //RLC A
131 bADcl = 0;//pulse
132 }
133
134 //bADcl = 0;//pulse
135
136 } */
137 void ad(void)
138 { uchar i;
139 1 //data1=0;
140 1 bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
141 1 bADcl=0;
142 1 bADda=1;
143 1 bADcl=1;
144 1 bADcl=0;//i down
145 1 bADda=1;
146 1 bADcl=1;
147 1 bADcl=0; // 2 down
148 1 bADda=0;
149 1 bADcl=1;
150 1 bADcl=0; // 3 down
151 1 bADda=1;
152 1 bADcl=1;
153 1 bADcl=0; // 4 down
154 1
155 1 for(i=8;i>0;i--)
156 1 {
157 2
158 2 data1<<=1;
159 2 bADcl=0;
160 2 bADcl=1;
161 2 if(bADda==1) data1|=0x01;
162 2 bADda=1;
163 2 }
164 1 /* for(i=8;i>0;i--)
165 1 {
166 1 bADcl=0;
167 1 bADcl=1;
168 1 } */
169 1 bADcs=1;
170 1
171 1 }
172 void cal()
173 {
174 1 data2=((ulong)data1*493)/256;
175 1 ge=data2/100;
176 1 xiao1=(data2%100)/10;
177 1 xiao2=data2%10;
C51 COMPILER V8.02 AD 06/28/2007 16:35:03 PAGE 4
178 1 }
179
180 main()
181 {
182 1 flag=1;
183 1 while(1){
184 2 ad();
185 2 cal();
186 2 display();
187 2 }
188 1 }
189
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 253 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 51 1
IDATA SIZE = ---- ----
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 + -