📄 init.lst
字号:
C51 COMPILER V7.10 INIT 02/03/2005 10:45:40 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE INIT
OBJECT MODULE PLACED IN init.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE init.c OPTIMIZE(7,SIZE) BROWSE INCDIR(E:\WorkHome\932-DDSF\DDSF-932-002\;F:
-\WorkHome\932-DDSF\DDSF-932-003\) DEBUG OBJECTEXTEND
line level source
1 /*========================================*/
2 /*系统名称:DDSF-CECG-JiangSu */
3 /*函数名称:初始化 */
4 /*程序编写:步爱军 */
5 /*开始日期:2005-01-01 */
6 /*完成日期: */
7 /*修改记录: */
8 /*软件版本:DDSF-CECG-002 */
9 /*版本说明:用户数据保存在外部 */
10 /*外部器件:LM75、AT24C02、HT1621、LPC932 */
11 /* R8025、ADE7755 */
12 /*========================================*/
13
14 #include <REG932.H>
15 #include <define.h>
16 #include <Stdio.h>
17 #include <Intrins.h>
18
19 //-----***-CPU寄存器以及外围接口初始化-***-----//
20 void InitSeries(void)
21 {
22 1 PCON=PCON | 0x30; //SMOD1=0;SMOD0=0;通讯速率不加倍,SCON.7作为UART的SM0位
23 1 SCON=SCON | 0xd0; //串口工作在模式3,禁止串口接收
24 1 SSTAT=0x60; //串口工作在普通模式
25 1 BRGCON=BRGCON | 0x02; //选择波特率发生器用于产生UART的波特率,禁止使能
26 1 //晶振12M通讯速率1200
27 1 BRGR1=0x27; //装载高字节
28 1 BRGR0=0x00; //装载低字节
29 1 //晶振11.0592通讯速率1200
30 1 //BRGR1=0x23; //装载高字节
31 1 //BRGR0=0xF0; //装载低字节
32 1 BRGCON=BRGCON | 0x01; //使能拨特率发生器
33 1 DIR=1;
34 1 ESR=1; //使能串口中断
35 1 }
36 void InitCpuIo(void)
37 {
38 1 P0M1=0x00;
39 1 P0M2=0x38; //设置P0.3、P0.4、P0.5为仅为输入
40 1 P1M1=0x2c;
41 1 P1M2=0x0c;
42 1 P2M1=0x40; //设置P26为开漏
43 1 P2M2=0x40;
44 1 }
45 void InitTime0(void)
46 {
47 1 TMOD=TMOD | 0X01; //
48 1 TAMOD=TAMOD | 0X00; //定时器工作于模式1
49 1 TH0=0X02;
50 1 TL0=0X40;
51 1 AUXR1=AUXR1 | 0X10; //定时器0中断反转IO口
52 1 TR0=0;
53 1 ET0=0; //使能中断
54 1 }
C51 COMPILER V7.10 INIT 02/03/2005 10:45:40 PAGE 2
55 void InitTime1(void)
56 {
57 1 TMOD=TMOD | 0X10; //
58 1 TAMOD=TAMOD | 0X00; //定时器工作于模式1
59 1 TH1=0X00;
60 1 TL1=0X00;
61 1 TR1=1;
62 1 ET1=1; //使能中断
63 1 }
64 void InitWDT(void)
65 {
66 1 ACC=WDCON; //看门狗启动,并选择看门狗定时器作为定时
67 1 ACC=ACC|0x84;
68 1 WDL=0x4E;
69 1 WDCON=ACC;
70 1 WFEED1=0xA5; //喂狗
71 1 WFEED2=0x5A;
72 1 }
73 void InitINT0(void)
74 {
75 1 TCON=TCON | 0X00; //外部中断0采用低电平触发中断
76 1 EX0=1; //开启中断
77 1 }
78 void InitINT1(void)
79 {
80 1 TCON=TCON | 0X00; //外部中断1采用低电平触发中断
81 1 EX1=1; //使能外部中断
82 1 }
83 void Initkey(void) //初始化键盘中断
84 {
85 1 //KBPATN=0xff; //
86 1 KBCON=0x00;
87 1 KBMASK=0x38; //设置P0.1->P0.0为中断源
88 1 EKBI=0;
89 1 }
90 void InitCclk(void)
91 {
92 1 DIVM=0x00; //CCLK=11059200/2;
93 1 }
94 void InitEEPROM(void)
95 {
96 1 DEECON=0x30;
97 1 EIEE=0;
98 1 }
99 void InitPWM() //使用外部12M振荡器时:CCU频率=((12000000/2)/6)*16=16000000MHz
100 {
101 1 TOR2H=0x03; //定时器重装值=CCU频率/红外线载频=16000000/38000=421=0x1a5
102 1 TOR2L=0x4a;
103 1 OCRAH=0x01; //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比为50%
104 1 OCRAL=0xa4;
105 1 TCR21=0x85; //PLL预分频为5+1
106 1 CCCRA=1; //非反相的PWM比较匹配时置位,在CCU定时器向下溢出时清0
107 1 PLLEN=1; //启动PLL
108 1 PWM=1;
109 1 while(PLLEN==0);
110 1 TCR20=0x82; // 设置输出模式,非反相PWM
111 1 }
112 void InitCMP(void)
113 {
114 1 PT0AD=0x06; //禁止CIN2A上的数字输入功能
115 1 CMP2=0x28; //0010 1000,CMP1使能,内部Ref,CIN1A
116 1 Delay(10); //延迟10us,以等待比较器稳定
C51 COMPILER V7.10 INIT 02/03/2005 10:45:40 PAGE 3
117 1 CMP2&=0xFE; //清除比较器中断标志位
118 1 EC=1; //比较器中断输出使能
119 1 }
120 void InitCpu(void)
121 {
122 1 InitWDT();
123 1 InitSeries();
124 1 InitCpuIo();
125 1 InitTime0();
126 1 InitTime1();
127 1 InitINT0();
128 1 InitINT1();
129 1 InitCclk();
130 1 Initkey();
131 1 InitEEPROM();
132 1 InitPWM();
133 1 InitCMP();
134 1 }
135 //-----***-液晶显示驱动器初始化-***-----//
136
137 void InitLcd(void)
138 {
139 1 LcdSendCommand(0x01);
140 1 LcdSendCommand(0x29);
141 1 LcdSendCommand(0x18);
142 1 LcdSendCommand(0x03);
143 1 }
144 //-----***-时钟发生器运行初始化-***-----//
145 void InitRTC(void)
146 {
147 1 IicByteWrite(0x64,0xe0,0x23);
148 1 IicByteWrite(0x64,0xf0,0xa0);
149 1 }
150 //-----***-命令以及重要参数检验、初始化-***-----//
151 void InitCmd(void)
152 {
153 1 unsigned char data ii;
154 1 if((PowerStA==0x55)|(PowerStB==0xAA))
155 1 {
156 2 PowerStA=0x55;
157 2 PowerStB=0xaa;
158 2 }
159 1 else
160 1 {
161 2 DIR=1;
162 2 ClerBuf();
163 2 DataPickup();
164 2 SeriesBufDptr=0;
165 2 SendOverFg=1;
166 2 LcdDelay=20;
167 2 InfraredBufDptr=0;
168 2 TimeSendFg=0;
169 2 DataProtectFg=0;
170 2 InfraredBufDptr=0;
171 2 SeriesBufDptr=0;
172 2 LcdRunData=1;
173 2 LcdTimeFg=1;
174 2 ReverseFgToLcd=0;
175 2 ReverseFgToData=0;
176 2 PulseParseFg=0;
177 2 PowerStA=0x55;
178 2 PowerStB=0xaa;
C51 COMPILER V7.10 INIT 02/03/2005 10:45:40 PAGE 4
179 2 ii=IicByteRead(0xa0,0x00);
180 2 if(ii==0xff)
181 2 {
182 3 ii=IicByteRead(0xa0,0x80);
183 3 if(ii==0xbb)
184 3 {
185 4 ii=IicByteRead(0xa0,0xf0);
186 4 if(ii==0xff)
187 4 {
188 5 IicByteWrite(0xa0,0x00,0xbb);
189 5 ii=IicByteRead(0xa0,0x00);
190 5 if(ii==0xaa)
191 5 {
192 6 IicByteWrite(0xa0,0x80,0xaa);
193 6 ii=IicByteRead(0xa0,0x80);
194 6 if(ii==0xaa)
195 6 {
196 7 IicByteWrite(0xa0,0xf0,0xaa);
197 7 ii=IicByteRead(0xa0,0xf0);
198 7 if(ii==0xaa)
199 7 {
200 8 ClerData();
201 8 }
202 7 }
203 6 }
204 5 }
205 4 }
206 3 }
207 2 }
208 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 424 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -