📄 bus.lst
字号:
C51 COMPILER V7.02b BUS 03/06/2006 15:07:52 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE BUS
OBJECT MODULE PLACED IN .\output\bus.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bus.c LARGE BROWSE DEBUG OBJECTEXTEND TABS(3) OBJECT(.\output\bus.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: bus.C
6 * 文件标识: none
7 * 适用器件: C8051F040
8 *
9 * 摘 要: 本文件是外部SRAM读写测试程序;使用外部22.1184MHz晶振.
10 *
11 * 当前版本:1.2
12 * 作 者:张宁强
13 * 完成日期:2006年1月10日
14 *
15 * 历史版本:1.0
16 * 原作者 : 李林利 卢阳
17 * 完成日期:2005年6月1日
18 *************************************************************************************/
19
20 /************************************************************************************/
21 // 引用外部头文件
22
23 #include "c8051f040.h" // SFR declarations
24 #include <INTRINS.H>
25 #include "const.h"
26 #include "uart.h"
27 #include "lcd.h"
28 #include "Delay.h"
29 /************************************************************************************/
30
31 /************************************************************************************
32 // 常量及全局变量定义
33 *************************************************************************************/
34
35 sbit LED = P3^5; // LED='1' means ON
36
37 /************************************************************************************
38 // 子函数声明
39 *************************************************************************************/
40
41 void SYSCLK_Init (void);
42 void PORT_Init (void);
43
44 /************************************************************************************
45 // 主循环程序
46 *************************************************************************************/
47
48 void main (void) {
49 1
50 1 unsigned int data i;
51 1 unsigned long j;
52 1 unsigned int k;
53 1
54 1 unsigned char xdata *x;
55 1 unsigned char xdata temp;
C51 COMPILER V7.02b BUS 03/06/2006 15:07:52 PAGE 2
56 1 char data et;
57 1
58 1 WDTCN = 0xde; // disable watchdog timer
59 1 WDTCN = 0xad;
60 1
61 1 PORT_Init(); // initialize crossbar and GPIO
62 1 lcd_init();
63 1 dis_clr();
64 1 dis_start0();
65 1 Uart0_Init(57600);
66 1
67 1 SYSCLK_Init(); // initialize oscillator
68 1
69 1 Uart0_SendString("SRAM_rw_test program running!\r\n");
70 1
71 1 while(1)
72 1 {
73 2 k=0;
74 2 i=0;
75 2 x=0x0000;
76 2
77 2 for(j=0;j<32767;j++)
78 2 {
79 3 et=*x;
80 3 i=j%256;
81 3 *x=i; //i=0~255
82 3 temp=*x;
83 3 if(temp!=i)
84 3 {
85 4 k++;
86 4 }
87 3 x++;
88 3 }
89 2
90 2 if (k==0)
91 2 Uart0_SendString("External SRAM read&write test succeed!\r\n");
92 2 else
93 2 Uart0_SendString("External SRAM read&write test fail!\r\n");
94 2
95 2 Delay_s(1);
96 2 }
97 1
98 1 }
99
100 /************************************************************************************
101 // 系统初始化功能子程序
102 *************************************************************************************/
103 /***********************************************************************************
104 * 函数名称:SYSCLK_Init;
105 *
106 * 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源,using the PLL;
107 * This routine initializes the system clock to use an external 22.1184 MHz
108 * crystal oscillator multiplied by a factor of 9/2 using the PLL as its
109 * clock source. The resulting frequency is 22.1184 MHz * 9/2 = 100(99.6) MHz
110 *
111 * 输入参数:none;
112 *
113 * 返回数据:none;
114 *
115 * 注意: none;
116 ************************************************************************************/
117
C51 COMPILER V7.02b BUS 03/06/2006 15:07:52 PAGE 3
118 void SYSCLK_Init (void)
119 {
120 1 int i; // delay counter
121 1
122 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
123 1
124 1 SFRPAGE = CONFIG_PAGE; // set SFR page
125 1
126 1 OSCXCN = 0x67; // start external oscillator with
127 1 // 22.1184MHz crystal
128 1
129 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
130 1
131 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
132 1
133 1 CLKSEL = 0x01; // Select the external osc. as
134 1 // the SYSCLK source
135 1
136 1 OSCICN = 0x00; // Disable the internal osc.
137 1
138 1
139 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
140 1 }
141
142 /***********************************************************************************
143 * 函数名称:PORT_Init;
144 *
145 * 函数功能描述:配置端口初始化,配置交叉开关和端口;
146 *
147 * 输入参数:none;
148 *
149 * 返回数据:none;
150 *
151 * 注意: none;
152 ************************************************************************************/
153 void PORT_Init (void)
154 {
155 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
156 1
157 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
158 1
159 1 XBR0 = 0x07; //设置XBR0
160 1 XBR1 = 0x14; //设置XBR1
161 1 XBR2 = 0x44; //打开交叉开关和弱上拉
162 1
163 1 P0MDOUT = 0x95; //设置P0口输出
164 1 P1MDOUT = 0x01; //设置P1口输出
165 1 P2MDOUT = 0xfc; //设置P2口输出
166 1 P3MDOUT = 0x00; //设置P3口输出
167 1 P3MDIN = 0x00;
168 1
169 1 P4MDOUT = 0xff; //设置P4口输出
170 1 P5MDOUT = 0x0f; //设置P5口输出
171 1 P6MDOUT = 0xff; //设置P6口输出
172 1 P7MDOUT = 0xff; //设置P7口输出
173 1 P4 = 0xe0; //P4口置0
174 1
175 1 SFRPAGE = SFR_PAGE_0; // set SFR page 0
176 1
177 1 EMI0CF=0x2f; //外部存储器接口配置
178 1 EMI0TC=0xff; //外部存储器时序控制
179 1
C51 COMPILER V7.02b BUS 03/06/2006 15:07:52 PAGE 4
180 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
181 1 }
182
183
184 /***********************************************************************************/
185 // 文件结束
186 /***********************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 339 ----
CONSTANT SIZE = 111 ----
XDATA SIZE = ---- 8
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -