📄 cp2.lst
字号:
C51 COMPILER V8.12 CP2 12/09/2008 18:27:29 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE CP2
OBJECT MODULE PLACED IN CP2.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.exe CP2.c DB OE BR
line level source
1 /*功能:此程序可完成CP1比较器的比较功能,比较器基准信号来自于VREF引脚,
2 比较器响应后将产生中断,可在中断程序中设断点观察.
3 作者:ZHANGXUEDIAN
4 时间:2008-10-4
5 版本:V1.0
6 ***************************************************************/
7 //------------------------------------------------------------------------------------
8 // 头文件包含
9 //------------------------------------------------------------------------------------
10 #include <c8051f020.h>
11 //------------------------------------------------------------------------------------
12 //函数定义
13 //------------------------------------------------------------------------------------
14 void PORT_Init (void);
15 void CPT0_Init (void);
16 void CPT1_Init (void);
17
18 void CPT1_ISR (void);
19
20 sbit led=P2^4; //红色LED
21 sbit SCL=P0^0; //CP1
22 sbit SDA=P0^1; //CP0
23
24 //------------------------------------------------------------------------------------
25 //主程序
26 //------------------------------------------------------------------------------------
27 void main (void) {
28 1 unsigned char rbyte=0;
29 1 unsigned char i=0,j=0;
30 1 unsigned char start=0;
31 1 unsigned char rdata[3];
32 1
33 1 WDTCN = 0xde;
34 1 WDTCN = 0xad; //禁止看门狗定时器
35 1
36 1 PORT_Init ();
37 1 CPT0_Init ();
38 1 CPT1_Init ();
39 1
40 1 //EA=1; /*开总中断标志*/
41 1
42 1 while (1)
43 1
44 1 {
45 2 start=0;
46 2 i=0;
47 2 while((CPT1CN&0x40)==0x00) //CP+>CP-,led=1
48 2 {
49 3 i++;
50 3 if (i>50)
51 3 { //start=1;
52 4 // led=0;
53 4 while(start==0)
54 4 {
55 5 j=0;
C51 COMPILER V8.12 CP2 12/09/2008 18:27:29 PAGE 2
56 5
57 5 while((CPT1CN&0x40)==0x40) //CP+>CP-,led=1
58 5 {
59 6 //led=1;
60 6 j++;
61 6 if (j>10)
62 6 {
63 7 start=1;
64 7 break;
65 7 }
66 6 }
67 5 }
68 4
69 4 break;
70 4 }
71 3 }
72 2
73 2 // led=0;
74 2
75 2
76 2 if(start==1)
77 2 {
78 3 j=0;
79 3 i=0;
80 3 while(j<3)
81 3 {
82 4 if((CPT1CN&0x40)==0x40) //CP+>CP-,led=1
83 4 {
84 5
85 5 if((CPT0CN&0x40)==0x40)
86 5 {
87 6 rbyte = (rbyte >> 1) | 0x80;
88 6 }
89 5 else
90 5 {
91 6 rbyte=rbyte >> 1;
92 6 }
93 5 i++;
94 5 if (i>7)
95 5 {
96 6 i=0;
97 6 rdata[j++]=rbyte;
98 6 rbyte=0;
99 6 }
100 5 }
101 4 } //end while if j=3
102 3 //display rdata
103 3 // led=0;
104 3 }
105 2 //not low
106 2 }
107 1 }
108 //--------------------------------------------------------------------------------
109 //函数名称: CPT1_Init()
110 //函数功能: 比较器1初始化
111 //--------------------------------------------------------------------------------
112 void CPT1_Init (void)
113 {
114 1 EIE1 |=0x40; //允许CP1FIF 标志位(CPT1CN.4)的中断请求
115 1 CPT1CN =0x8F; //启用CP1比较器,CP+、-回差电压为10mV
116 1 REF0CN |= 0x00; //用基准电压作为比较信号基准,CP1-接VREF
117 1 XBR1 |=0x01; //用电位器从3.3V分压输出至CP1+,调节电位器输出电压大、小于VREF看断点变化
C51 COMPILER V8.12 CP2 12/09/2008 18:27:29 PAGE 3
118 1
119 1 }
120 void CPT0_Init (void)
121 {
122 1 //EIE1 |=0x40; //允许CP1FIF 标志位(CPT1CN.4)的中断请求
123 1 CPT0CN =0x8F; //启用CP1比较器,CP+、-回差电压为10mV
124 1 //REF0CN |= 0x01; //用基准电压作为比较信号基准,CP1-接VREF
125 1 XBR0 |=0x80; //用电位器从3.3V分压输出至CP1+,调节电位器输出电压大、小于VREF看断点变化
126 1 }
127 //------------------------------------------------------------------------------------
128 //函数名称: PORT_Init ()
129 //函数功能: 通用I/O口及交叉开关初始化
130 //------------------------------------------------------------------------------------
131 //
132 void PORT_Init (void)
133 {
134 1 P2MDOUT = 0x10; //LED 输出驱动
135 1 P0MDOUT = 0x01; //LED 输出驱动
136 1 XBR2 = 0x40; /*交叉开关使能*/
137 1 }
138 //------------------------------------------------------------------------
139 //函数名称: CPT1_ISR ()
140 //函数功能: 比较器1中断程序
141 //------------------------------------------------------------------------
142 void CPT1_ISR (void) interrupt 12
143 {
144 1 CPT1CN &=~ 0x30; //清中断标志位,在此设断点观察
145 1 led !=led;
*** WARNING C275 IN LINE 145 OF CP2.C: expression with possibly no effect
146 1
147 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 169 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -