📄 模拟比较器.lst
字号:
C51 COMPILER V7.06 腳拟_冉_器 06/08/2005 23:00:18 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 腳拟_冉_器
OBJECT MODULE PLACED IN 模拟比较器.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE 模拟比较器.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------函数声明,变量定义--------------------------------------------------------
2 #include <reg51.h>
3 #include <intrins.h>
4 sbit sel_A = P3^0;
5 sbit sel_B = P3^1;
6 sbit sel_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 void delay(unsigned int N); //延时子程序,实现(16*N+24)us的延时
17 void timer_set(); //定时器初始化函数
18 void discharge(); //电容放电
19 void measure_Vref(); //测量参考电压值
20 void measure_Vx(unsigned char channels);//测量指定通道的电压
21 void calculate_Vx(); //计算待测电压值
22 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
23 //--------------------------------------------------------------------------------------------------
24 // 函数名称: delay
25 // 入口参数: N
26 // 函数功能:延时子程序,实现(16*N+24)us的延时
27 // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
28 //--------------------------------------------------------------------------------------------------
29 void delay(unsigned int N)
30 {
31 1 int i;
32 1 for(i=0;i<N;i++);
33 1 }
34 //-------------------------------------------------------------------------------------------------------
35 // 函数名称: timer_set
36 // 功能说明: 设置定时器工作状态,与硬件有关
37 //--------------------------------------------------------------------------------------------------------
38 void timer_set()
39 {
40 1 TMOD=0x01; //设定定时器工作模式
41 1 }
42 //--------------------------------------------------------------------------------------------------
43 // 函数名称: discharge
44 // 函数功能: 电容放电,定时器清零
45 //--------------------------------------------------------------------------------------------------
46 void discharge()
47 {
48 1 comp_IN2=0; //P1.1置零,Cr放电
49 1 delay(0); //延时24us
50 1 TH0=0; //计数器清零
51 1 TL0=0;
52 1 }
53 //-------------------------------------------------------------------------------------------------------
54 // 函数名称: measure_Vref
55 // 功能说明: 测量参考电压
C51 COMPILER V7.06 腳拟_冉_器 06/08/2005 23:00:18 PAGE 2
56 //--------------------------------------------------------------------------------------------------------
57 void measure_Vref()
58 {
59 1 sel_A=0;
60 1 sel_B=0;
61 1 sel_C=0; //选通0通道,Vref输入
62 1 delayNOP(); //定时消除抖动
63 1 TR0=1; //启动计数器
64 1 comp_IN2=1; //P1.1置1,开始积分
65 1 while(comp_OUT); //检测P3.6是否出现跳变
66 1 TR0=0; //停止计数器计数
67 1 Tref=TH0;
68 1 Tref=(Tref<<8)||TL0;
69 1 discharge(); //放电
70 1 }
71 //-------------------------------------------------------------------------------------------------------
72 // 函数名称: measure_Vx
73 // 入口参数: channels选通通道(1-7)
74 // 功能说明: 测量指定通道的电压
75 //--------------------------------------------------------------------------------------------------------
76 void measure_Vx(unsigned char channels)
77 {
78 1 sel_A=channels&0x01;
79 1 sel_B=channels&0x02;
80 1 sel_C=channels&0x04;
81 1 delayNOP(); //定时消除抖动
82 1 TR0=1; //启动计数器
83 1 comp_IN2=1; //P1.1置1,开始积分
84 1 while(comp_OUT); //检测P3.6是否出现跳变
85 1 TR0=0; //停止计数器计数
86 1 Tx=TH0;
87 1 Tx=(Tx<<8)||TL0;
88 1 discharge(); //放电
89 1 }
90 //-------------------------------------------------------------------------------------------------------
91 // 函数名称: calculate_Vx
92 // 根据公式Vx=Vref*Tx/Tref计算结果;
93 // 功能说明: 计算Vx
94 //--------------------------------------------------------------------------------------------------------
95 void calculate_Vx()
96 {
97 1 //根据公式Vx=Vref*Tx/Tref计算结果;
98 1 }
99 //-------------------------------------------------------------------------------------------------------
100 // 函数名称: main
101 // 功能说明: 主函数
102 //--------------------------------------------------------------------------------------------------------
103 void main()
104 {
105 1 timer_set();
106 1 discharge(); //放电
107 1 measure_Vref();
108 1 measure_Vx(1);
109 1 calculate_Vx(); //计算待测电压值
110 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.06 腳拟_冉_器 06/08/2005 23:00:18 PAGE 3
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 + -