📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/18/2007 21:54:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\main.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\main.obj)
line level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: main.C
6 * 文件标识: none
7 * 适用器件: C8051F120
8 *
9 * 摘 要: 本文件是串行外设接口总线测试程序,实现串口发送接收数据功能;使用时将跳线器JP6短接,
10 * 使用外部22.1184MHz晶振.
11 *
12 * 当前版本:1.2
13 * 作 者:张宁强
14 * 完成日期:2006年1月10日
15 *
16 * 历史版本:1.0
17 * 原作者 : 李林利 卢阳
18 * 完成日期:2005年6月1日
19 *************************************************************************************/
20
21 /************************************************************************************/
22 // 引用外部头文件
23
24 #include "c8051f040.h"
25 #include "Const.h"
26 #include "SPI.h"
27 #include "lcd.h"
28 #include "delay.h"
29
30 /*************************************************************************************/
31
32 /************************************************************************************
33 // 常量及全局变量定义
34 *************************************************************************************/
35
36 #define WDT_CLR WDTCN = 0xa5;
37
38 unsigned char code DAT[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
39 0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};
40
41 sbit LED = P2^3; // LED='1' means ON
42
43 /************************************************************************************
44 // 子函数声明
45 *************************************************************************************/
46
47 void SYSCLK_Init (void);
48 void PORT_Init (void);
49
50
51 /************************************************************************************
52 // 系统初始化功能子程序
53 *************************************************************************************/
54
55 /***********************************************************************************
C51 COMPILER V7.50 MAIN 07/18/2007 21:54:53 PAGE 2
56 * 函数名称:SYSCLK_Init;
57 *
58 * 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源,using the PLL;
59 * This routine initializes the system clock to use an external 22.1184 MHz
60 * crystal oscillator multiplied by a factor of 9/2 using the PLL as its
61 * clock source. The resulting frequency is 22.1184 MHz * 9/2 = 100(99.6) MHz
62 *
63 * 输入参数:none;
64 *
65 * 返回数据:none;
66 *
67 * 注意: none;
68 ************************************************************************************/
69
70 void SYSCLK_Init (void)
71 {
72 1 int i; // delay counter
73 1
74 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
75 1
76 1 SFRPAGE = CONFIG_PAGE; // set SFR page
77 1
78 1 OSCXCN = 0x67; // start external oscillator with
79 1 // 22.1184MHz crystal
80 1
81 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
82 1
83 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
84 1
85 1 CLKSEL = 0x01; // Select the external osc. as
86 1 // the SYSCLK source
87 1
88 1 OSCICN = 0x00; // Disable the internal osc.
89 1
90 1
91 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
92 1 }
93
94 /***********************************************************************************
95 * 函数名称:PORT_Init;
96 *
97 * 函数功能描述:配置端口初始化,配置交叉开关和端口;
98 *
99 * 输入参数:none;
100 *
101 * 返回数据:none;
102 *
103 * 注意: none;
104 ************************************************************************************/
105 void PORT_Init (void)
106 {
107 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
108 1
109 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
110 1
111 1 XBR0 = 0x07; //设置XBR0
112 1 XBR1 = 0x14; //设置XBR1
113 1 XBR2 = 0x44; //打开交叉开关和弱上拉
114 1
115 1 P0MDOUT = 0x95; //设置P0口输出
116 1 P1MDOUT = 0x01; //设置P1口输出
117 1 P2MDOUT = 0xfc; //设置P2口输出
C51 COMPILER V7.50 MAIN 07/18/2007 21:54:53 PAGE 3
118 1 P3MDOUT = 0x00; //设置P3口输出
119 1 P3MDIN = 0x00;
120 1
121 1 P4MDOUT = 0xff; //设置P4口输出
122 1 P5MDOUT = 0x0f; //设置P5口输出
123 1 P6MDOUT = 0xff; //设置P6口输出
124 1 P7MDOUT = 0xff; //设置P7口输出
125 1 P4 = 0xe0; //P4口置0
126 1
127 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
128 1
129 1 EMI0CF=0x2f; //外部存储器接口配置
130 1 EMI0TC=0xff; //外部存储器时序控制
131 1
132 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
133 1 }
134
135
136 /************************************************************************************
137 // 主循环程序
138 *************************************************************************************/
139
140 void main(void)
141 {
142 1 int j;
143 1 //禁止看门狗定时器
144 1 WDTCN=0xDE;
145 1 WDTCN=0xAD;
146 1 //初始化
147 1
148 1 PORT_Init();
149 1 lcd_init();
150 1 dis_clr();
151 1 dis_start0();
152 1
153 1 SYSCLK_Init();
154 1
155 1
156 1 SPI_Init();
157 1 LED=1;
158 1
159 1 while(1)
160 1 {
161 2 for (j=0; j<17; j++)
162 2 {
163 3 while(SPI0CFG&0x80); //判忙等待
164 3 NSS=0; //准备发送数据
165 3 SPI0DAT=DAT[j]; //送数据
166 3 while(!SPIF); //等待发送完毕
167 3 NSS=1; //发送停止
168 3 SPIF=0; //标志位清0
169 3 LED = ~LED; //改变LED状态
170 3 Delay_s(1); //延时1秒
171 3 }
172 2 }
173 1 }
174
175 /***********************************************************************************/
176 // 文件结束
177 /***********************************************************************************/
C51 COMPILER V7.50 MAIN 07/18/2007 21:54:53 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 203 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- 2
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -