📄 msn.lst
字号:
C51 COMPILER V7.50 MSN 03/25/2010 16:51:24 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MSN
OBJECT MODULE PLACED IN msn.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE msn.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>//数码管动态显示电压值0V~1.33V(不知道什么原因,电压再大就又从0开始)
2 #define uint unsigned int
3 #define uchar unsigned char
4
5 sbit beeper=P2^0;
6 sbit led=P1^3;
7 sbit SEGSEL1 = P1^4;
8 sbit SEGSEL2 = P1^5;
9 sbit SEGSEL3 = P1^6;
10 sbit SEGSEL4 = P1^7;
11 sbit ADCCS = P2^4;
12 sbit ADCOUT = P2^3;
13 sbit SCLK = P2^6;
14
15 //共阴数码管段码
16 uchar code dat[]={
17 0x3f,0x06,0x5b,0x4f,0x66,0x6d,//0,1,2,3,4,5
18 0x7d,0x07,0x7f,0x6f,0x77,0x7c,//6,7,8,9,a,b
19 0x39,0x5e,0x79,0x71 //c,d,e,f
20 };
21 //带有小数点的段码
22 uchar code dat1[]={
23 0xbf,0x86,0xdb,0xcf,0xe6,0xed,//0,1,2,3,4,5
24 0xfd,0x87,0xff,0xef,0xf7,0xfc,//6,7,8,9,a,b
25 0xb9,0xde,0xf9,0xf1 //c,d,e,f
26 };
27
28
29 void delay(uint);
30 void delay1();
31 void init();
32 void display(uint);
33 uchar adc();
34
35
36 void main(void)
37 {
38 1 int j,q=0;
39 1 float p ,m,n;
40 1 int a,b,c,d,e,f ;
41 1 init();
42 1
43 1 while(1)
44 1 {
45 2 // led=1;
46 2 q=adc();
47 2 // P0=q;
48 2
49 2 //电压数据处理
50 2 p=(q*1.35)/256;
51 2 m=p;n=p ;
52 2 a=(int)(p/10);
53 2 b=((int)p)%10;
54 2 c=((int)(m*10))%10;
55 2 d=((int)(n*100))%10;
C51 COMPILER V7.50 MSN 03/25/2010 16:51:24 PAGE 2
56 2 e=((int)(n*1000))%10;
57 2 f=e+10*d+100*c+1000*b;
58 2 // 显示数据;
59 2 for(j = 0; j < 50; j++)
60 2 {
61 3 display(f);
62 3 }
63 2
64 2 }
65 1 }
66
67 void init()
68 {
69 1 P0=0;//对P0口初始化
70 1 P1=0;//对P1口初始化,关led灯,关数码管
71 1 beeper=0;//关蜂鸣器
72 1 }
73
74 //延时z ms时间
75 void delay(uint z)
76 {
77 1 uint x,y;
78 1 for(x=0;x<z;x++)
79 1 for(y=0;y<1000;y++);
80 1 }
81
82 //延时14us时间
83 void delay1()
84 {
85 1 uint m;
86 1 for(m=0;m<4;m++);
87 1 }
88
89 //四位数码管显示
90 void display(uint n)
91 {
92 1 uint ge=0,shi=0,bai=0,qian=0;
93 1 qian=n/1000;
94 1 bai=n%1000/100;
95 1 shi=n%100/10;
96 1 ge=n%10;
97 1 //显示个位数据
98 1 SEGSEL1 = 0;
99 1 SEGSEL2 = 0;
100 1 SEGSEL3 = 0;
101 1 SEGSEL4 = 1;
102 1 P0=dat[ge];
103 1 delay(2);
104 1 //显示十位数据
105 1 SEGSEL1 = 0;
106 1 SEGSEL2 = 0;
107 1 SEGSEL4 = 0;
108 1 SEGSEL3 = 1;
109 1 P0=dat[shi];
110 1 delay(2);
111 1 //显示百位数据
112 1 SEGSEL1 = 0;
113 1 SEGSEL3 = 0;
114 1 SEGSEL4 = 0;
115 1 SEGSEL2 = 1;
116 1 P0=dat[bai];
117 1 delay(2);
C51 COMPILER V7.50 MSN 03/25/2010 16:51:24 PAGE 3
118 1 //显示千位数据
119 1 SEGSEL2 = 0;
120 1 SEGSEL3 = 0;
121 1 SEGSEL4 = 0;
122 1 SEGSEL1 = 1;
123 1 P0=dat1[qian];
124 1 delay(2);
125 1 }
126
127 //AD转换过程
128 uchar adc(void)
129 {
130 1 uchar rbyte,i;
131 1 //置IO口为高,输入状态
132 1 ADCOUT = 1;
133 1 SCLK = 0;
134 1 //启动转换
135 1 ADCCS = 0;
136 1 delay1();
137 1 for(i = 0; i < 8; i++)
138 1 {
139 2 if(ADCOUT) rbyte += 1;
140 2 rbyte <<= 1;
141 2 SCLK = 1;
142 2 delay1();
143 2 SCLK = 0;
144 2 }
145 1 //开始下次转换
146 1 ADCCS = 1;
147 1 return(rbyte);
148 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 559 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 32
IDATA SIZE = ---- ----
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 + -