📄 020main.lst
字号:
C51 COMPILER V7.09 020MAIN 07/04/2007 09:31:20 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE 020MAIN
OBJECT MODULE PLACED IN 020main.OBJ
COMPILER INVOKED BY: F:\Keil\C51\BIN\C51.EXE 020main.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "global.h"
2 sfr16 DP = 0x82; // 数据指针
3 sfr16 TMR3RL = 0x92; // 定时器3重装值
4 sfr16 TMR3 = 0x94; // 定时器3计数器
5 sfr16 ADC0 = 0xbe; // ADC0数据
6 sfr16 ADC0GT = 0xc4; // ADC0大于窗口
7 sfr16 ADC0LT = 0xc6; // ADC0小于窗口
8 sfr16 RCAP2 = 0xca; // 定时器2捕捉/重装
9 sfr16 T2 = 0xcc; // 定时器2
10 sfr16 RCAP4 = 0xe4; // 定时器4捕捉/重装
11 sfr16 T4 = 0xf4; // 定时器4
12 sfr16 DAC0 = 0xd2; // DAC0数据
13 sfr16 DAC1 = 0xd5; // DAC1数据
14 //-----------------------------------------------------------------------------
15 // 全局常量
16 //-----------------------------------------------------------------------------
17 #define SYSCLK 22118400 // 系统时钟频率Hz
18 #define BAUDRATE 115200 // UART波特率bps
19 #define SAMPLERATE0 50000 // ADC0采样频率Hz
20 #define NUM_SAMPLES 2048 // ADC0采样次数
21 #define TRUE 1
22 #define FALSE 0
23 sbit LED = P1^6; // LED=’1’ 意为开
24 sbit SW1 = P3^7; // SW1=’0’ 意为按压开关
25 //-----------------------------------------------------------------------------
26 // 函数原型
27 //-----------------------------------------------------------------------------
28 void SYSCLK_Init (void);
29 void PORT_Init (void);
30 void UART0_Init (void);
31 void ADC0_Init (void);
32 void Timer3_Init (int counts);
33 xdata unsigned samples[100]; // 存储ADC0结果数组
34 char flag = 0;
35
36 sfr16 TMR2RL = 0xca; // Timer2 reload value
37 sfr16 TMR2 = 0xcc; // Timer2 counter
38
39 void main(void)
40 {
41 1 long i; // 循环计数器
42 1 WDTCN = 0xde; // 禁止看门狗定时器
43 1 WDTCN = 0xad;
44 1 SYSCLK_Init (); // 初始化振荡器
45 1 PORT_Init (); // 初始化数据交叉开关和通用IO口
46 1 UART0_Init (); // 初始化UART0
47 1 Timer3_Init (SYSCLK/SAMPLERATE0); // 初始化定时器3溢出作为ADC0采样率
48 1 EA = 1; // 允许全部中断
49 1 while (1) {
50 2 // P0 = P1 = P2 = P3 = P4 = P5 = P6 = P7 = 0XFF;
51 2 flag = !flag;
52 2 LED = flag; // 在采样过程中点亮LED
53 2 wait_ms(100);
54 2 // EIE2 |= 0x02; // 允许ADC0中断
55 2 //while (ADC0_DONE == FALSE); // 等待采样结果
C51 COMPILER V7.09 020MAIN 07/04/2007 09:31:20 PAGE 2
56 2 // 上传采样值到UART0
57 2 // LED = 0; // 上传其间关LED 灭
58 2 // for (i = 0; i < NUM_SAMPLES; i++)
59 2 // {
60 2 // printf("%u", samples[i]);
61 2 //printf("%u",samples[i]);
62 2 // }
63 2 // printf ("\n");
64 2 }
65 1
66 1 }
*** WARNING C280 IN LINE 41 OF 020MAIN.C: 'i': unreferenced local variable
67
68
69 void SYSCLK_Init (void)
70 {
71 1 int i; // 延时计数器
72 1 OSCXCN = 0x67; // 开启外部振荡器22.1184MHz晶体
73 1 for (i=0; i < 256; i++) ; // 等待振荡器启振
74 1 while (!(OSCXCN & 0x80)) ; // 等待晶体振荡器稳定
75 1 OSCICN = 0x88; // 选择外部振荡器为系统时钟源并允许丢失时钟检测器
76 1 }
77
78 void PORT_Init (void)
79 {
80 1 XBR0 = 0x04; // 使能UART0
81 1 XBR1 = 0x00;
82 1 XBR2 = 0x40; // 使能数据交叉开关和弱上拉
83 1 P0MDOUT |= 0x01; // 允许TX0为推挽输出
84 1 P1MDOUT |= 0x40; // 允许P1.6(LED)为推挽输出
85 1 }
86 //-----------------------------------------------------------------------------
87 void UART0_Init (void)
88 {
89 1 SCON0 = 0x50; // SCON0: 模式1, 8位UART, 使能RX
90 1 TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位重装
91 1 TH1 = -(SYSCLK/BAUDRATE/16); // 根据波特率的值设定定时器1重装值
92 1 TR1 = 1; // 启动定时器1
93 1 CKCON |= 0x10; // 定时器1使用系统时钟作为时基
94 1 PCON |= 0x80; // SMOD00 = 1
95 1 TI0 = 1; // 表示TX0就绪
96 1 }
97
98 void Timer3_Init (int counts)
99 {
100 1 TMR3CN = 0x02; // 停止定时器3; 清除TF3;
101 1 // 使用系统时钟作为时基
102 1 TMR3RL = -counts; // 初始化重装值
103 1 TMR3 = 0xffff; // 立即开始重装
104 1 EIE2 &= ~0x01; // 禁止定时器3中断
105 1 TMR3CN |= 0x04; // 启动定时器3
106 1 }
107
108 void wait_ms(int ms)
109 {
110 1
111 1
112 1 T2CON = 0x00; // Stop Timer2; Clear TF2;
113 1
114 1 RCAP2 = -(SYSCLK/1000/12); // Timer 2 overflows at 1 kHz
115 1 TMR2 = RCAP2;
116 1
C51 COMPILER V7.09 020MAIN 07/04/2007 09:31:20 PAGE 3
117 1 ET2 = 0; // Disable Timer 2 interrupts
118 1
119 1 TR2 = 1; // Start Timer 2
120 1
121 1 ms = ms;
122 1 while(ms){
123 2 TF2 = 0;
124 2 while(!TF2); // wait until timer overflows
125 2 ms--; // decrement ms
126 2 }
127 1
128 1 TR2 = 0; // Stop Timer 2
129 1
130 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 182 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 201 4
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -