📄 ide2.lst
字号:
C51 COMPILER V7.07 IDE2 05/13/2007 22:42:10 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE IDE2
OBJECT MODULE PLACED IN ide2.OBJ
COMPILER INVOKED BY: D:\万解程序\keilc\C51\BIN\c51.exe ide2.c DB OE
stmt level source
1
2 #include <c8051f020.h> // SFR声明
3 #include <stdio.h>
4 //-----------------------------------------------------------------------------
5 // C8051F02X的16位SFR定义
6 //-----------------------------------------------------------------------------
7 sfr16 DP = 0x82; // 数据指针
8 sfr16 TMR3RL = 0x92; // 定时器3重装值
9 sfr16 TMR3 = 0x94; // 定时器3计数器
10 sfr16 ADC0 = 0xbe; // ADC0数据
11 sfr16 ADC0GT = 0xc4; // ADC0大于窗口
12 sfr16 ADC0LT = 0xc6; // ADC0小于窗口
13 sfr16 RCAP2 = 0xca; // 定时器2捕捉/重装
14 sfr16 T2 = 0xcc; // 定时器2
15 sfr16 RCAP4 = 0xe4; // 定时器4捕捉/重装
16 sfr16 T4 = 0xf4; // 定时器4
17 sfr16 DAC0 = 0xd2; // DAC0数据
18 sfr16 DAC1 = 0xd5; // DAC1数据
19 //-----------------------------------------------------------------------------
20 // 全局常量
21 //-----------------------------------------------------------------------------
22 #define SYSCLK 22118400 // 系统时钟频率
23
24 #define BAUDRATE 9600 // UART波特率
25
26
27
28 sbit LED = P1^6; // LED=’1’ 意为开
29 sbit SW1 = P3^7; // SW1=’0’ 意为按压开关
30 //-----------------------------------------------------------------------------
31 // 函数原型
32 //-----------------------------------------------------------------------------
33 void SYSCLK_Init (void);
34 void PORT_Init (void);
35 void UART0_Init (void);
36
37
38
39
40 //-----------------------------------------------------------------------------
41 // 主程序
42 //-----------------------------------------------------------------------------
43 void main (void) {
44 1
45 1 WDTCN = 0xde; // 禁止看门狗定时器
46 1 WDTCN = 0xad;
47 1 SYSCLK_Init (); // 初始化振荡器
48 1 PORT_Init (); // 初始化数据交叉开关和通用IO口
49 1 UART0_Init (); // 初始化UART0
50 1 //Timer3_Init (SYSCLK/SAMPLERATE0); // 初始化定时器3溢出作为ADC0采样率
51 1 //ADC0_Init (); // 初始化ADC
52 1 EA = 1; // 允许全部中断
53 1 ES0 = 1;
54 1 while (1);
55 1
C51 COMPILER V7.07 IDE2 05/13/2007 22:42:10 PAGE 2
56 1
57 1
58 1 }
59
60 void SYSCLK_Init (void)
61 {
62 1 int i; // 延时计数器
63 1 OSCXCN = 0x67; // 开启外部振荡器
64 1 //22.1184MHz晶体
65 1 for (i=0; i < 256; i++); // 等待振荡器启振
66 1 while (!(OSCXCN & 0x80)) ; // 等待晶体振荡器稳定
67 1 OSCICN = 0x88; // 选择外部振荡器为系统时钟源并允许丢失时钟检测器
68 1 }
69
70 void PORT_Init (void)
71 {
72 1 XBR0 = 0x04; // 使能UART0
73 1 XBR1 = 0x00;
74 1 XBR2 = 0x40; // 使能数据交叉开关和弱上拉
75 1 P0MDOUT |= 0x01; // 允许TX0为推挽输出
76 1 P1MDOUT |= 0x40; // 允许P1.6(LED)为推挽输出
77 1 }
78
79 void UART0_Init (void)
80 {
81 1 SCON0 = 0x50; // SCON0: 模式1, 8位UART, 使能RX
82 1 TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位重装
83 1 TH1 = -(SYSCLK/BAUDRATE/16); // 根据波特率的值设定定时器1重装值
84 1 TR1 = 1; // 启动定时器1
85 1 CKCON |= 0x10; // 定时器1使用系统时钟作为时基
86 1 PCON |= 0x80; // SMOD00 = 1
87 1 TI0 = 1; // 表示TX0就绪
88 1 }
89
90 void UartInt(void) interrupt 4
91 {
92 1 unsigned char temp;
93 1 RI0 = 0;
94 1 LED =~LED;
95 1 temp = SBUF0;
96 1 SBUF0 =temp;
97 1 while(TI0==0);
98 1 TI0 = 0;
99 1 }
100
101
102
103
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 110 ----
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 + -