📄 main.lst
字号:
C51 COMPILER V7.02b MAIN 03/06/2006 15:01:38 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND TABS(3) OBJECT(.\output\main.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: main.c
6 * 文件标识: none
7 * 适用器件: C8051F040
8 *
9 * 摘 要: 本文件是DA测试实验程序;使用外部22.1184MHz晶振.
10 * 功能:开机显示"铭朗科技,WWW.MLARM.COM"信息,为待机界面。定义'A'~'F'为功能
11 * 键。按"A" 键,输出250HZ的方波,按"B" 键,输出250HZ的正弦波形,按"C"
12 * 键,输出250HZ的三角波,按"D" 键,输出250HZ的锯齿波,按"reset"返回显示待
13 * 机界面。
14 *
15 * 当前版本:1.2
16 * 作 者:张宁强
17 * 完成日期:2006年1月10日
18 *
19 * 历史版本:1.0
20 * 原作者 : 李林利 卢阳
21 * 完成日期:2005年6月1日
22 *************************************************************************************/
23
24 /************************************************************************************/
25 // 引用外部头文件
26
27 #include "common.h"
28
29 /************************************************************************************/
30
31 /************************************************************************************
32 // 常量及全局变量定义
33 *************************************************************************************/
34
35 unsigned char data sf;
36 unsigned int xdata TABLE[256];
37
38 /************************************************************************************
39 // 系统初始化功能子程序
40 *************************************************************************************/
41
42 /***********************************************************************************
43 * 函数名称:SYSCLK_Init;
44 *
45 * 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源,using the PLL;
46 * This routine initializes the system clock to use an external 22.1184 MHz
47 * crystal oscillator multiplied by a factor of 9/2 using the PLL as its
48 * clock source. The resulting frequency is 22.1184 MHz * 9/2 = 100(99.6) MHz
49 *
50 * 输入参数:none;
51 *
52 * 返回数据:none;
53 *
54 * 注意: none;
55 ************************************************************************************/
C51 COMPILER V7.02b MAIN 03/06/2006 15:01:38 PAGE 2
56
57 void SYSCLK_Init (void)
58 {
59 1 int i; // delay counter
60 1
61 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
62 1
63 1 SFRPAGE = CONFIG_PAGE; // set SFR page
64 1
65 1 OSCXCN = 0x67; // start external oscillator with
66 1 // 22.1184MHz crystal
67 1
68 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
69 1
70 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
71 1
72 1 CLKSEL = 0x01; // Select the external osc. as
73 1 // the SYSCLK source
74 1
75 1 OSCICN = 0x00; // Disable the internal osc.
76 1
77 1
78 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
79 1 }
80
81 /***********************************************************************************
82 * 函数名称:PORT_Init;
83 *
84 * 函数功能描述:配置端口初始化,配置交叉开关和端口;
85 *
86 * 输入参数:none;
87 *
88 * 返回数据:none;
89 *
90 * 注意: none;
91 ************************************************************************************/
92 void PORT_Init (void)
93 {
94 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
95 1
96 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
97 1
98 1 XBR0 = 0x07; //设置XBR0
99 1 XBR1 = 0x14; //设置XBR1
100 1 XBR2 = 0x44; //打开交叉开关和弱上拉
101 1
102 1 P0MDOUT = 0x95; //设置P0口输出
103 1 P1MDOUT = 0x01; //设置P1口输出
104 1 P2MDOUT = 0xfc; //设置P2口输出
105 1 P3MDOUT = 0x00; //设置P3口输出
106 1 P3MDIN = 0x00;
107 1
108 1 P4MDOUT = 0xff; //设置P4口输出
109 1 P5MDOUT = 0x0f; //设置P5口输出
110 1 P6MDOUT = 0xff; //设置P6口输出
111 1 P7MDOUT = 0xff; //设置P7口输出
112 1 P4 = 0xe0; //P4口置0
113 1
114 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
115 1
116 1 EMI0CF=0x2f; //外部存储器接口配置
117 1 EMI0TC=0xff; //外部存储器时序控制
C51 COMPILER V7.02b MAIN 03/06/2006 15:01:38 PAGE 3
118 1
119 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
120 1 }
121
122 /***********************************************************************************
123 * 函数名称:sine;
124 *
125 * 函数功能描述:计算正弦波;
126 *
127 * 输入参数:none;
128 *
129 * 返回数据:none;
130 *
131 * 注意: none;
132 ************************************************************************************/
133
134 void sine(void)
135 {
136 1 unsigned int data y;
137 1 unsigned int data i;
138 1 for(i=0;i<256;i++)
139 1 {
140 2 y=sin(3.1415*2*i/256)*2048+2048;
141 2 if (y>4095)
142 2 y=4095;
143 2 TABLE[i]=y;
144 2 }
145 1 }
146
147 /***********************************************************************************
148 * 函数名称:saw;
149 *
150 * 函数功能描述:计算锯齿波;
151 *
152 * 输入参数:none;
153 *
154 * 返回数据:none;
155 *
156 * 注意: none;
157 ************************************************************************************/
158
159 void saw(void)
160 {
161 1 unsigned int data y;
162 1 unsigned int data i;
163 1 for(i=0;i<256;i++)
164 1 {
165 2 y=16*i;
166 2 if (y>4095)
167 2 y=4095;
168 2 TABLE[i]=y;
169 2 }
170 1 }
171
172 /***********************************************************************************
173 * 函数名称:triangle;
174 *
175 * 函数功能描述:计算三角波;
176 *
177 * 输入参数:none;
178 *
179 * 返回数据:none;
C51 COMPILER V7.02b MAIN 03/06/2006 15:01:38 PAGE 4
180 *
181 * 注意: none;
182 ************************************************************************************/
183
184 void triangle(void)
185 {
186 1 unsigned long data y;
187 1 unsigned int data i;
188 1 for(i=0;i<256;i++)
189 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -