📄 init_sys.lst
字号:
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE INIT_SYS
OBJECT MODULE PLACED IN .\out\init_sys.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE init_sys.c LARGE OPTIMIZE(SIZE) REGFILE(.\out\mbtest.ORC) BROWSE INCDIR(C:\
-Keil\C51\LIB\;D:\TEST_C020\MC_55_C\) DEBUG OBJECTEXTEND OBJECT(.\out\init_sys.obj)
line level source
1
2 #include "all.h"
3
4
5 void SMBus_Init();
6 void SYSCLK_Init (void);
7 void PORT_Init (void);
8 void ADC0_Init (void);
9 //void Timer0_Init (int counts);
10 void Timer3_Init (int counts);
11 void Timer4_Init (int counts); //5ms
12
13
14 void FLASH_INIT(uchar ttt ) ;
15
16 //-----------------------------------------------------------------------------
17 // Global VARIABLES
18 //-----------------------------------------------------------------------------
19
20
21
22
23
24 //-----------------------------------------------------------------------------
25 // SYSCLK配置
26 //-----------------------------------------------------------------------------
27 // 配置系统时钟使用外部晶振22.1184MHz
28
29 void SYSCLK_Init (void)
30 {
31 1 int i; // delay counter
32 1
33 1 OSCXCN = 0x67; // start external oscillator with 0110x111 不分频
34 1 // 22.1184MHz crystal
35 1 for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
36 1
37 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
38 1
39 1 OSCICN = 0x88; // select external oscillator as SYSCLK
40 1 // source and enable missing clock
41 1 // detector bit7 时钟丢失检测便能
42 1 }
43
44 // Configure the Crossbar and GPIO ports
45 void PORT_Init (void)
46 {
47 1 EA=0;
48 1 XBR0 = 0x05; //0x2C; // Enable UART0 / smsc
49 1 XBR1 = 0x04; //en int0
50 1 // XBR2 = 0xc4; //0x44; // Enable crossbar and weak pull-ups,Enable UART1
51 1
52 1
53 1 P0MDOUT = 0; // enable TX0 TX1 as a push-pull output
54 1 P1MDOUT = 0; //P1.1 output
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 2
55 1 P2MDOUT = 0;
56 1 P3MDOUT = 0;
57 1 P74OUT=0;
58 1
59 1 P1=0;
60 1 P2=0;
61 1 P3=0;
62 1 P4=0;
63 1 P0MDOUT |= 0x7f; //0x11; // enable sda scl TX0 TX1 as a push-pull output
64 1 P0|=0x84;
65 1 P1MDOUT |= 0x00; //
66 1 P1|=0x3f;
67 1 P2MDOUT |= 0x80; //
68 1 P2|=0x3f;
69 1 P3MDOUT |= 0x3e;
70 1 P3|=0xa0;
71 1 P74OUT|= 0X30; //bit7 bit 6 bit 5 bit4 bit3 bit2 bit1 bit0
72 1 //p7H P7L P6H P6L P5H P5L P4H P4L
73 1 // 0 0 1 1 0 0 0 0
74 1 P7=0XFF;
75 1 P6=0X00;
76 1 P5=0X1f;
77 1 P4=0XF3;
78 1
79 1
80 1 XBR0 = 0x0d; //0x5; // Enable UART0 / smsc
81 1 //xbr0.3 cex0
82 1 XBR1 = 0x04; //en int0
83 1 XBR2 = 0xc4; //0x44; // Enable crossbar and weak pull-ups,Enable UART1
84 1
85 1
86 1
87 1
88 1 }
89
90
91
92 void INT0_Init() // CK RING
93 {
94 1 IT0=1 ; // EDGE DOWN
95 1 EX0=1;
96 1
97 1 }
98
99
100
101 void SMBus_Init()
102 {
103 1
104 1
105 1 //DISABLE();
106 1
107 1 SMB0CN = 0x42;
108 1 SMB0CR = IIC_SMB0CR;
109 1
110 1 EIP1=EIP1|0x02; //SMBUS中断为高优先级
111 1 EIE1 = EIE1|0x02; //允许SMBUS中断
112 1 sm_busy=0;
113 1 //ENABLE();
114 1
115 1
116 1
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 3
117 1 }
118
119
120
121
122 void ADC0_Init (void)
123 {
124 1 AMX0CF=0; //sing end
125 1 ADC0CN = 0x04; // ADC0 enable; normal tracking
126 1 // mode; ADC0 conversions are initiated
127 1 // on overflow of Timer3; ADC0 data is
128 1 // right-justified
129 1
130 1 REF0CN = 0x03; // disenable temp sensor, on-chip VREF,
131 1 // and VREF output buffer
132 1 AMX0SL = 0x00; // Select ain0 sens as ADC mux output
133 1 ADC0CF = (SYSCLK/2500000) << 3; // ADC conversion clock = 2.5MHz
134 1 ADC0CF |= 0x00; // PGA gain = 1
135 1
136 1 // EIE2 |= 0x02; // enable ADC interrupts
137 1
138 1 //DAC0CN = 0x80; // DAC0 Control Register
139 1 DAC0L = 0x00; // DAC0 Low Byte Register
140 1 DAC0H = 0x00; // DAC0 High Byte Register
141 1
142 1 //DAC1CN = 0x80; // DAC1 Control Register
143 1 DAC1L = 0xFF; // DAC1 Low Byte Register
144 1 DAC1H = 0xFF; // DAC1 High Byte Register
145 1 }
146
147
148
149
150
151 /**********************************************************************
152 **函数原型: void Attand_485(void)
153 **入口参数: Xin_485_b=1
154 **出口参数: 无
155 **返 回 值: 无
156 **说 明: T0定时中断子程序INIT
157 ************************************************************************/
158 /*
159 void Timer0_Init (int counts)
160 {
161 CKCON|=0x8;
162 TMOD|=0x1; //16Bit
163 TH0=(65536-counts)/256;
164 TL0=(65536-counts)%256;
165 IE|= 0x2;
166 TR0=1;
167 }
168
169 */
170
171
172
173 /**********************************************************************
174 **函数原型: void Attand_485(void)
175 **入口参数: Xin_485_b=1
176 **出口参数: 无
177 **返 回 值: 无
178 **说 明: T3定时中断子程序INIT
C51 COMPILER V7.50 INIT_SYS 06/10/2007 23:11:21 PAGE 4
179 ************************************************************************/
180
181 void Timer3_Init (int counts)
182 {
183 1 TMR3CN = 0x00; // Stop Timer3; Clear TF3; scale 12
184 1 // use SYSCLK as timebase
185 1 TMR3RL = -counts; // Init reload values
186 1 TMR3 = 0xffff; // set to reload immediately
187 1 EIE2 &= ~0x01; // disable Timer3 interrupts
188 1 // EIE2 |= 0x01;
189 1 TMR3CN |= 0x04; // start Timer3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -