📄 ad.lst
字号:
C51 COMPILER V7.00 AD 04/29/2006 21:37:58 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\安装程序\keil\C51\BIN\C51.EXE ad.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //------------------------函数声明,变量定义---------------------------------
2 #include<reg51.h>
3 #include<intrins.h>
4 sbit sle_A=P3^0;
5 sbit sle_B=P3^1;
6 sbit sle_C=P3^2;
7 sbit comp_OUT=P3^6;
8 sbit comp_IN1=P1^0;
9 sbit comp_IN2=P1^1;
10 unsigned char ABC;
11 unsigned int Tref;
12 unsigned int Tx;
13 unsigned int Vx;
14 unsigned int Vref=25000;//实际参考电压值的1000倍,以免出现小数
15
16
17 void delay(unsigned int N);//延时子程序,实现(16xN+24)US的延时
18 void timer_set();//定时器初始化函数
19 void discharge();//电容放电
20 void measure_Vref();//测量参考电压值
21 void measure_Vx(unsigned char channels);//测量指定通道的电压
22 void calculate_Vx();//计算待测电压值
23 #define delayNOP();{_nop_();_nop_();_nop_();_nop_();};
24
25
26 //------------------------------------------------------------------
27 //函数名称:DELAY
28 //入口参数:N
29 //函数功能:延时子程序,实现(16xN+24)us的延时
30 //系统采用11。0592的时钟时,延时满足要求,其他情况需要改动
31 //--------------------------------------------------------------------
32
33 void delay(unsigned int N)
34 {
35 1 int i;
36 1 for(i=0;i<N;i++);
37 1 }
38
39
40 //-----------------------------------------------------------------------
41 //函数名称:TIMER-SET()
42 //功能说明:设置定时器工作状态,与硬件有关、
43 //-----------------------------------------------------------------------
44
45
46 void timer_set()
47 {
48 1 TMOD=0X01;//设定定时器工作模式
49 1 }
50
51
52 //-----------------------------------------------------------------------
53 //函数名称:DISCHARGE()
54 //函数功能:电容放电,定时器清零
55 //-----------------------------------------------------------------------
C51 COMPILER V7.00 AD 04/29/2006 21:37:58 PAGE 2
56
57 void discharge()
58 {
59 1 comp_IN2=0;//P1,1置零,cr放电
60 1 delay(0);//延时24us
61 1 TH0=0;
62 1 TL0=0;
63 1 }
64
65 //--------------------------------------------------------------------------
66 //函数名称:MEASURE-Vref
67 //函数功能:测量参考电压
68 //--------------------------------------------------------------------------
69
70
71 void measure_Vref()
72 {
73 1 sle_A=0;
74 1 sle_B=0;
75 1 sle_C=0;//选通道0,Vref输入
76 1 delayNOP();//定时消除抖动
77 1 TR0=1;//启动计数器
78 1 comp_IN2=1;//p1.1置1,开始积分。
79 1 while(comp_OUT);//检测p3,6是否出现跳变
80 1 TR0=0;//停止计数器记数
81 1 Tref=TH0;
82 1 Tref=(Tref<<8)||TL0;
83 1 discharge();//放电
84 1 }
85
86
87 //-------------------------------------------------------------------------------------
88 //函数名称:MEASURE-Vx
89 //入口参数:CHANNELS选通通道(1-7)
90 //功能说明:测量指定通道的电压
91 //-------------------------------------------------------------------------------------
92
93
94 void measure_Vx(unsigned char channels)
95 {
96 1 sle_A=channels&0x01;
97 1 sle_B=channels&0x02;
98 1 sle_C=channels&0x04;
99 1 delayNOP();//定时消除抖动
100 1 TR0=1;//启动计数器
101 1 comp_IN2=1;//置p1,1为1,开始积分
102 1 while(comp_OUT);
103 1 TR0=0;
104 1 Tx=TH0;
105 1 Tx=(Tx<<8)||TL0;
106 1 discharge();//放电
107 1 }
108
109
110 //---------------------------------------------------------------------------------------------
111 //函数名称:CALCULATE-VX
112 //函数公式VX=Vref *Tx/Tref计算结果
113 //功能说明:计算Vx
114 //---------------------------------------------------------------------------------------------
115
116
117 void calculte_Vx()
C51 COMPILER V7.00 AD 04/29/2006 21:37:58 PAGE 3
118 {
119 1
120 1 }
121
122
123 //--------------------------------------------------------------------------------------------
124 //函数名称:MAIN
125 //函数功能:主函数
126 //--------------------------------------------------------------------------------------------
127
128
129 void main()
130 {
131 1 timer_set();
132 1 discharge();
133 1 measure_Vref();
134 1 measure_Vx(1);
135 1 calculte_Vx();//计算待测电压
136 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
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 + -