📄 huhu.lst
字号:
C51 COMPILER V7.02b HUHU 08/09/2008 16:17:19 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE HUHU
OBJECT MODULE PLACED IN huhu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe huhu.c DB OE
stmt level source
1 #include <c8051f020.h> // SFR声明
2 #include <stdio.h>
3 #include <INTRINS.H>
4
5 //C8051F020的16位SFR定义
6
7 sfr16 DP = 0x82; // 数据指针
8 sfr16 TMR3RL = 0x92; // 定时器T3重装值
9 sfr16 TMR3 = 0x94; // 定时器T3计数器
10 sfr16 ADC0 = 0xbe; // ADC0数据
11 sfr16 ADC0GT = 0xc4; // ADC0大于窗口
12 sfr16 ADC0LT = 0xc6; // ADC0小于窗口
13 sfr16 RCAP2 = 0xca; // 定时器T2捕捉/重装
14 sfr16 T2 = 0xcc; // 定时器T2
15 sfr16 RCAP4 = 0xe4; // 定时器T4捕捉/重装
16 sfr16 T4 = 0xf4; // 定时器T4
17 sfr16 DAC0 = 0xd2; // DAC0数据
18 sfr16 DAC1 = 0xd5; // DAC1数据
19
20
21 #define BAUDRATE 115200 // UART波特率(bps)
22 #define SYSCLK 24000000 // 系统时钟频率(Hz)
23
24 //MAX125功能口定义
25 #define MAX125_CS P2.0;
26 #define MAX125_CON P2.1;
27 #define MAX125_RD P2.2;
28 #define MAX125_WR P2.3;
29 #define MAX125_INT P2.4;
30 #define MAX125_CLK P2.5;
31
32 //DAC8164功能口定义
33 #define DAC8164_LDAC P3.0;
34 #define DAC8164_ENAB P3.1;
35 #define DAC8164_A1 P3.2;
36 #define DAC8164_SYNC P3.3;
37 #define DAC8164_SCLK P3.4;
38 #define DAC8164_DIN P3.5;
39
40
41
42 #define TIMER2H 0xc4 //10ms
43 #define TIMER2L 0x00
44 #define TIMER_NUM 8
45
46
47
48
49 #define MAX_RAW_VALUE 1024
50
51
52 struct MY_TIMER{
53 unsigned char enable;
54 unsigned int count;
55 unsigned int length;
C51 COMPILER V7.02b HUHU 08/09/2008 16:17:19 PAGE 2
56 unsigned char flag;
57 };
58
59
60 void SYSCLK_Init (void);
61 void PORT_Init (void);
62 void UART0_Init (void);
63 void UART1_Init (void);
64 void MAX125_Init (void);
65 void DAC8164_Init (void);
66 void Timer3_Init (int counts);
67 void MAX125_ISR (void);
68 void DAC8164_ISR (void);
69
70
71
72 //主程序
73 void main (void)
74 {
75 1 WDTCN = 0xde; // 禁止看门狗
76 1 WDTCN = 0xad;
77 1 SYSCLK_Init (); // 初始化振荡器
78 1 PORT_Init (); // 初始化数据交叉开关和通用I/O口
79 1 UART0_Init (); // 初始化UART0
80 1 Timer3_Init (SYSCLK/SAMPLE_RATE); // 初始化Timer3
*** ERROR C202 IN LINE 80 OF HUHU.C: 'SAMPLE_RATE': undefined identifier
81 1 ADC7934_Init (); // 初始化ADC7934
82 1 while (1) {
83 2 Timer0_Delay (100); //延时100ms
84 2 }
85 1 ADC7934_ ISR (void);
86 1 }
87 //主程序初始化
88 //系统时钟初始化
89 void SYSCLK_Init (void)
90 {
91 1 int i; //延时计数器
92 1 OSCXCN = 0x67; //启动外部振荡器
93 1 for (i=0;i<256;i++) ; //等待振荡器启动
94 1 while (!(OSCXCN & 0x80)) ; //等待晶体振荡器稳定
95 1 OSCICN = 0x88; //选择外部振荡器为系统时钟源并使能丢失时钟检测器
96 1 }
97
98 //I/O口初始化,配置数据交叉开关和通用I/O口
99 void PORT_Init (void)
100 {
101 1 XBRO = 0x06;
102 1 XBR1 = 0x80;
103 1 XBR2 = Ox40; // 使能数据交叉开关和弱上拉
104 1 P0MDIN = 0x00; // enable TX0 as a push-pull output
105 1 P1MDIN = 0x88; // P2口设为推挽方式
106 1 P2MDOUT= 0x00; // P2口设为推挽方式
107 1 P3MDOUT= 0x00;
108 1 P74OUT = 0X0F; // P4,P5口设为推挽方式
109 1 }
110
111
112 unsigned char xdata *ADC7934; // 定义ADC7934端口指针
113 unsigned char xdata *ADC7934data; // 定义ADC7934数据缓冲指针
114 void ADC7934_PORT (void)
115 {
116 1
C51 COMPILER V7.02b HUHU 08/09/2008 16:17:19 PAGE 3
117 1 }
118 //UART0配置
119 void UART0_Init (void)
120 {
121 1 SCON0 = 0x50; // UART0工作模式1, 8-bit UART, 使能RX
122 1 TMOD = 0x20; //定时器 1, 模式 2, 8-bit 重装载
123 1 TH1 = -(SYSCLK/BAUDRATE/16); //设定定时器1为重装载模式
124 1 TR1 = 1; // 启动Timer1
125 1 CKCON |= 0x10; // Timer1使用系统时钟
126 1 PCON |= 0x80; // 禁止UART0的波特率/2
127 1 TI0 = 1; // Indicate TX0 ready
128 1 }
129
130 //UART0配置
131 void UART1_Init (void)
132 {
133 1 SCON0 = 0x50; // UART0工作模式1, 8-bit UART, 使能RX
134 1 TMOD = 0x20; //定时器 1, 模式 2, 8-bit 重装载
135 1 TH1 = -(SYSCLK/BAUDRATE/16); //设定定时器1为重装载模式
136 1 TR1 = 1; // 启动Timer1
137 1 CKCON |= 0x10; // Timer1使用系统时钟
138 1 PCON |= 0x80; // 禁止UART0的波特率/2
139 1 TI0 = 1; // Indicate TX0 ready
140 1 }
141
142
143
144
145 void Timer3_Init (int counts)
146 {
147 1 TMR3CN = 0x02;
148 1 TMR3RL = -counts;
149 1 TMR3 = 0xffff;
150 1 EIE2 &= ~0x01;
151 1 TMR3CN |= 0x04;
152 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 1 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -