comparecof.lst
来自「菜鸟,详细NRF24E1运用,程序,电路」· LST 代码 · 共 231 行
LST
231 行
C51 COMPILER V9.00 COMPARECOF 11/13/2010 14:52:13 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE COMPARECOF
OBJECT MODULE PLACED IN comparecof.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL C V4\C51\BIN\C51.EXE comparecof.c BROWSE DEBUG OBJECTEXTEND
line level source
*** WARNING C500 IN LINE 1 OF COMPARECOF.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))
1 /******************************************************************
2 / 头文件包含
3 *******************************************************************/
4
5 #include "reg24le1.h"
6 #include "comparecof.h"
7 /*******************************************************************
8 /
9 /软件延时函数,函数名称:delay()
10 /
11 *******************************************************************/
12 void delay(unsigned char x)
13 {
14 1 unsigned char di;
15 1 for(;x>0;x--)
16 1 for(di=120;di>0;di--)
17 1 {
18 2 ;
19 2 }
20 1
21 1 }
22
23 /*******************************************************************
24 /
25 /初始化I/O口的输入输出以及电平
26 /
27 ********************************************************************/
28
29 void io_config()
30 {
31 1 P1DIR&=0XFE; /*设置P1.0为输出 */
32 1 P10=0;
33 1
34 1 P0DIR|=0X01;
35 1 P00=0;
36 1
37 1 }
38
39 /********************************************************************
40 /
41 /配置模拟比较器
42 /
43 ********************************************************************/
44
45 void compcof()
46 {
47 1 ADCCON1=(0x80|0x02);/*设置PWR位,设置模拟输入从0通道,参考输入从3通道*/
48 1 COMPCON|=0x05; /*唤醒的电压高于0.5Vdd */
49 1
50 1 }
51 /*******************************************************************
52 /
53 /LED灯闪烁的函数
54 /
C51 COMPILER V9.00 COMPARECOF 11/13/2010 14:52:13 PAGE 2
55 ********************************************************************/
56
57 void lightled()
58 {
59 1 LED=!LED;
60 1 delay(5000);
61 1 }
62 /********************************************************************
63 /
64 /串口初始化函数
65 /
66 *********************************************************************/
67
68 void uart_init()
69 {
70 1
71 1 EA = 0;
72 1 CLKCTRL = 0x28; /* nRF24LE1的主时钟采用 XCOSC 16MHz */
73 1 CLKLFCTRL = 0x01; /* RTC 时钟采用XCOSC 32.768kHz */
74 1
75 1 P0DIR &= 0xF7; /* 配置P0.3 (TxD)为输出 */
76 1 P0DIR |= 0x10; /* 配置P0.4 (RxD)为输入 */
77 1 S0CON = 0x50;
78 1 PCON |= 0x80; /* 波特率倍增 */
79 1 WDCON |= 0x80; /* 设置采用内部波特率发生器 */
80 1
81 1 S0RELL = 0xF3; /* 配置波特率为38400 */
82 1 S0RELH = 0x03;
83 1
84 1 }
85 /********************************************************************
86 /
87 /定时器0初始化
88 /
89 ********************************************************************/
90
91 void t0_init()
92 {
93 1 TMOD=0X01;
94 1 TH0=(65536-ONESTEP)/256;
95 1 TL0=(65536-ONESTEP)%256;
96 1 ET0=1;
97 1 TR0=1;
98 1 }
99 /******************************************************************
100 /
101 /定时器中断服务函数
102 /
103 *******************************************************************/
104 int sleep=0;
105
106 void t0_service() interrupt 1 /*定时10s就进入低功耗模式 */
107 {
108 1
109 1 static char num=0,s=0;
110 1 TR0=0;
111 1 TH0=(65536-ONESTEP)/256;
112 1 TL0=(65536-ONESTEP)%256;
113 1 num++;
114 1 if(num==20)
115 1 {
116 2 num=0;
C51 COMPILER V9.00 COMPARECOF 11/13/2010 14:52:13 PAGE 3
117 2 s++;
118 2 LED=!LED;
119 2 puts("time left : ");
120 2 putchar((10-s+'0'));
121 2 putchar('\n');
122 2
123 2 if(s==10) /*定时时间满10秒 */
124 2 {sleep=1;
125 3 s=0;
126 3 }
127 2 }
128 1
129 1 if(sleep) /*设置nRF24LE1进入低功耗 */
130 1 {
131 2 sleep=0;
132 2 mcufallasleep(timeron);
133 2 }
134 1
135 1 TR0=1;
136 1 }
137 /*****************************************************************
138 /
139 /串口打印一个字符
140 /
141 *****************************************************************/
142
143 void putchar( unsigned char dat)
144 {
145 1 S0BUF = dat;
146 1 while(!TI0);
147 1 TI0 = 0;
148 1 }
149 /****************************************************************
150 /
151 /串口发送一个字符串
152 /
153 *****************************************************************/
154 void puts( char * s)
155 {
156 1 while(*s!='\0')
157 1 {
158 2 putchar(*s);
159 2 s++;
160 2 }
161 1 }
162 /*****************************************************************
163 /
164 /配置nRF24LE1进入低功耗模式,输入参数:which为模式类型
165 /
166 *****************************************************************/
167
168 void mcufallasleep(char which)
169 {
170 1 OPMCON=0X02;
171 1 PWRDWN&=0XF8;
172 1 PWRDWN|=which;
173 1 }
174 /****************************************************************
175 /
176 /获取上一次低功耗模式类型,并利用串口打印相关信息
177 /
178 *****************************************************************/
C51 COMPILER V9.00 COMPARECOF 11/13/2010 14:52:13 PAGE 4
179
180 void getwakeuptype()
181 {
182 1 char type=0;
183 1 type=PWRDWN&0x07; /*读取上一次低功耗模式 */
184 1 if(PWRDWN&0x20)
185 1 switch(type)
186 1 {
187 2 case 0x00:puts("power off \n");break;
188 2 case 0x01:puts("deep sleep \n");break;
189 2 case 0x02:puts("Memory retention, timer off \n");break;
190 2 case 0x03:puts("Memory retention, timer on \n");break;
191 2 case 0x04:puts("Register retention \n");break;
192 2 case 0x07:puts("standby \n");break;
193 2 }
194 1
195 1 putchar('\n'); /*换行函数 */
196 1
197 1 }
198
199
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 341 ----
CONSTANT SIZE = 144 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?