📄 init.lst
字号:
C51 COMPILER V8.08 INIT 03/26/2008 23:01:13 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE INIT
OBJECT MODULE PLACED IN Init.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 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 1 uint i = 0;
9 1 WDTCN = 0xDE; //关闭看门狗
10 1 WDTCN = 0xAD;
11 1 //WDTCN = 0x05; //开启看门狗
12 1 //WDTCN = 0xA5;
13 1 OSCXCN = 0x67; //使用内部时钟16MHz使能时钟丢失检测
14 1 for(i=0;i<256;i++);
15 1 while(!(OSCXCN&0x80));//等待时钟稳定
16 1 OSCICN = 0x88; //开启外部时钟使能时钟丢失检测0x88
17 1 }
18 /*
19 //内部时钟设置
20 void Sysclk_Init(void)
21 {
22 uint i = 0;
23 WDTCN = 0xDE; //关闭看门狗
24 WDTCN = 0xAD;
25 //WDTCN = 0x05; //开启看门狗
26 //WDTCN = 0xA5;
27 OSCICN = 0x97; //使用内部时钟16MHz使能时钟丢失检测
28 for(i=0;i<=500;i++);
29 while(OSCXCN&0x80); //等待时钟稳定
30 REF0CN|= 0x07; //温度传感器工作,使用内部AD和DA基准;内部偏压允许
31 }
32 */
33 //端口设置初始化
34 void Port_Init(void)
35 {
36 1 XBR0 = 0x04; //RX和TX连到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 INIT 03/26/2008 23:01:13 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|= 0x10; //定时器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 Time3_Init(void)
84 {
85 1 TMR3CN=0x00;
86 1 TMR3RLL=0x00;
87 1 TMR3RLH=0xF5;
88 1 TMR3L=0xFF;
89 1 TMR3H=0xFF;
90 1 EIE2 |= 0x01; //0x01允许定时器3中断 0x00禁止
91 1 TMR3CN|=0x04; //0x04定时器3运行允许 0x00禁止
92 1 }
93 /*
94 void I2c_Init(void)
95 {
96 SMB0CN = 0x44; // 允许SMBus在应答周期发送ACK
97 SMB0CR = -80; // SMBus时钟频率 = 100kHz.
98 EIE1 |= 0x02; // SMBus中断允许
99 }
100
101 //外部中断0初始化
102 void Int_Init(void)
103 {
104 IE = 0x15; //外部中断0和1允许
105 IP = 0x00; //串口为高优先级
106 TCON|= 0x0F; //INT1和INT0允许采用边沿触发
107 }
108 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 131 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
C51 COMPILER V8.08 INIT 03/26/2008 23:01:13 PAGE 3
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 + -