📄 system_init.lst
字号:
C51 COMPILER V8.08 SYSTEM_INIT 05/21/2008 20:12:34 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE SYSTEM_INIT
OBJECT MODULE PLACED IN System_Init.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE System_Init.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <C8051F000.h> //寄存器定义
2
3 #define uint unsigned int
4 /*
5 //外部时钟设置
6 void Sysclk_Init(void)
7 {
8 uint i = 0;
9 WDTCN = 0xDE; //关闭看门狗
10 WDTCN = 0xAD;
11 //WDTCN = 0x05; //开启看门狗
12 //WDTCN = 0xA5;
13 OSCXCN = 0x67; //使用内部时钟16MHz使能时钟丢失检测
14 for(i=0;i<256;i++);
15 while(!(OSCXCN&0x80));//等待时钟稳定
16 OSCICN = 0x88; //开启外部时钟使能时钟丢失检测0x88
17 }
18 */
19 //内部时钟设置
20 void Sysclk_Init(void)
21 {
22 1 uint i = 0;
23 1 WDTCN = 0xDE; //关闭看门狗
24 1 WDTCN = 0xAD;
25 1 //WDTCN = 0x05; //开启看门狗
26 1 //WDTCN = 0xA5;
27 1 OSCICN = 0x97; //使用内部时钟16MHz使能时钟丢失检测
28 1 for(i=0;i<=500;i++);
29 1 while(OSCXCN&0x80); //等待时钟稳定
30 1 OSCXCN = 0x00;
31 1 }
32
33 //端口设置初始化
34 void Port_Init(void)
35 {
36 1 XBR0 = 0x01; //SDA和SCL连到P0.0 P0.1
37 1 XBR1 = 0x00; //INT0和INT1连到引脚
38 1 XBR2 = 0x40; //交叉开关使能端口I/O弱上拉使能
39 1
40 1 PRT0CF = 0xFF; //P0输出方式为推挽
41 1 PRT1CF = 0xFF; //P1输出方式为推挽
42 1 PRT2CF = 0x00; //P2输出方式为推挽
43 1 PRT3CF = 0x00; //P3输出方式为推挽
44 1 }
45
46 //ADC初始化
47 void Adc_Init(void)
48 {
49 1 AMX0CF = 0x00; //均为单独输入
50 1 AMX0SL = 0x00; //00-->AN0 01-->AN1
51 1 ADC0CF = 0x80; //(16M/16)/8转换时钟为8个系统时钟,内部放大增益=1;
52 1 ADC0LTH = 0xFF; //ADC上限数据高位
53 1 ADC0LTL = 0xFF; //ADC上限数据高位
54 1 ADC0GTH = 0x00; //ADC下限数据高位
55 1 ADC0GTL = 0x00; //ADC下限数据低位
C51 COMPILER V8.08 SYSTEM_INIT 05/21/2008 20:12:34 PAGE 2
56 1 ADC0CN = 0xC0; //AD使能,C0向ADCBUSY位写1时启动AD转换 CC定时器2溢出启动AD转换
57 1 }
58
59 //串口初始化
60 void Uart_Init(void)
61 {
62 1 SCON = 0x50; //方式1和8位UART允许RX
63 1 TMOD |= 0x20; //定时器1方式2和8位重装载
64 1 TH1 = 0x64; //0xF3为115.2kbps; //0x9C重载值9.6kbps@24MHz
65 1 TR1 = 1; //启动定时器1
66 1 CKCON|= 0x18; //定时器1使用sysclk作为时其
67 1 PCON |= 0x80; //SMOD = 1 ((2^SMOD)/32)*SYSCLK/(12^T1M-1)(256-TH1)
68 1 ES = 1; //串口中断允许
69 1 TI = 0; //发送中断标志
70 1 TR1 = 1; //定时器1允许运行
71 1 }
72
73 //DAC初始化
74 void Dac_Init(void)
75 {
76 1 DAC0CN = 0x80; //DA0使能
77 1 DAC1CN = 0x80; //DA1使能
78 1 REF0CN = 0x07; //内部温度传感器使能ADC和DAC偏压使能
79 1 //系统基准电压为内部电压
80 1 }
81
82 //TIME0中断初始化
83 void Time0_Init(void)
84 {
85 1 TL0 = 0x00;//0xD7;
86 1 TH0 = 0x80;//0xFE;
87 1 TMOD |= 0x01; //定时器0允许采用十六位定时器计数
88 1 TCON |= 0x10; //TR0 = 1定时器0允许
89 1 ET0 = 1; //使能定时器0
90 1 }
91
92 //TIME3中断初始化
93 void Time3_Init(void)
94 {
95 1 TMR3RLL=0x00;
96 1 TMR3RLH=0x40;
97 1 TMR3L=0xFF;
98 1 TMR3H=0xFF;
99 1 EIE2 |= 0x01; //0x01允许定时器3中断 0x00禁止
100 1 TMR3CN|=0x04; //0x04定时器3运行允许 0x00禁止
101 1 TMR3CN|=0x02; //0x02定时器3使用系统时钟
102 1 }
103
104 void I2c_Init(void)
105 {
106 1 SMB0CN = 0x44; // 允许SMBus在应答周期发送ACK
107 1 SMB0CR = -80; // SMBus时钟频率 = 100kHz.
108 1 EIE1 |= 0x02; // SMBus中断允许
109 1 }
110 /*
111 //外部中断0初始化
112 void Int_Init(void)
113 {
114 IE = 0x15; //外部中断0和1允许
115 IP = 0x00; //串口为高优先级
116 TCON|= 0x0F; //INT1和INT0允许采用边沿触发
117 }
C51 COMPILER V8.08 SYSTEM_INIT 05/21/2008 20:12:34 PAGE 3
118 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 155 ----
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 + -