📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 06/23/2008 19:39:42 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.c DB OE
line level source
1
2 //头文件
3 /////////////////////////////
4 #include "c8051F340.h"
5 #include "stdio.h"
6 #include "intrins.h"
7 #include "Usb_FunDec.h"
8 #include "Usb_Parameter.h"
9 #include "Usb_Register.h"
10 #include "Usb_Request.h"
11 ///////////////////////////////////////////////////////////////////////////////////////
12 // 16-bit SFR declarations
13 sfr16 DP = 0x82; // data pointer
14 sfr16 TMR2RL = 0xca; // Timer2 reload
15 sfr16 TMR2 = 0xcc; // Timer2 counter
16 sfr16 TMR3 = 0x94; // Timer3 counter
17 sfr16 TMR3RL = 0x92; // Timer3 reload
18 sfr16 PCA0CP1 = 0xe9; // PCA0 Module 1 Capture/Compare
19 sfr16 PCA0CP2 = 0xeb; // PCA0 Module 2 Capture/Compare
20 sfr16 PCA0CP3 = 0xed; // PCA0 Module 3 Capture/Compare
21 sfr16 PCA0CP4 = 0xfd; // PCA0 Module 4 Capture/Compare
22 sfr16 PCA0CP0 = 0xfb; // PCA0 Module 0 Capture/Compare
23 sfr16 PCA0 = 0xf9; // PCA0 counter
24 ////////////////////////////////////////////////////////////////////////////////////////
25 //宏定义
26 #define System_Clock 48000000 //系统时钟
27 #define Baud_Rate 9600 //串口波特率
28 ////////////////////////////////////////////////////////////////////////////////////////
29 //位定义
30 sbit LED_g = P2^4; //LED控制脚
31 ////////////////////////////////////////////////////////////////////////////////////////
32 //函数申明
33 void Init_Device(void); //单片机初始化
34 void Reset_Sources_Init(void); //单片机复位源初始化
35 void Timer_Init(void); //定时器初始化
36 void UART_Init(void); //串口初始化
37 void ADC_Init(void); //AD转换器初始化
38 void Voltage_Reference_Init(void); //电压基准愿初始化
39 void Port_IO_Init(void); //IO口初始化
40 void Oscillator_Init(void); //系统时钟初始化
41 void Interrupts_Init(void); //中断源初始化
42 void Time_Delay(unsigned int time); //延时函数定义,时间为time毫秒
43 //////////////////////////////////////////////////////////////////////
44 //外部函数调用
45 extern void Flash_Init(void);
46 extern void Flash_Format16(void);
47 extern void Test_Flash(void);
48 extern void Flash_Verify(void);
49 ///////////////////////////////////////////////////////////////////////////////////////////////////
50
51 //主函数
52 void main ()
53 {
54 1 PCA0MD &= ~0x40; // 关看门狗
55 1 Init_Device(); // 单片机初始化
C51 COMPILER V7.20 MAIN 06/23/2008 19:39:42 PAGE 2
56 1 Flash_Init(); // FLASH初始化
57 1 Usb_Init(); // USB初始化
58 1 EA = 1; // 开中断中断
59 1
60 1 while (1)
61 1 {
62 2 Time_Delay(1);
63 2 LED_g=1;
64 2 }
65 1 }
66
67
68
69 ////////////////////////////////////////////////////////////////////////////////////////////////////
70 //单片机初始化
71 void Init_Device(void)
72 {
73 1 Reset_Sources_Init();
74 1 Timer_Init();
75 1 UART_Init();
76 1 ADC_Init();
77 1 Voltage_Reference_Init();
78 1 Port_IO_Init();
79 1 Oscillator_Init();
80 1 Interrupts_Init();
81 1 }
82
83 void Reset_Sources_Init()
84 {
85 1 }
86
87 //定时器0使用系统时钟,为16位定时器方式;定时器1使用系统时钟的12分频,8位重装载方式,波特率发生器
88 void Timer_Init()
89 {
90 1 TCON = 0x40;
91 1 TMOD = 0x20;
92 1 TL1 = -System_Clock/12/2/Baud_Rate;
93 1 TH1 = -System_Clock/12/2/Baud_Rate;
94 1 TR0=0;
95 1 TR1=1;
96 1 }
97
98 //8位方式,1起始位+8数据位+1停止位,接收容许,并且只有停止位为1时才触发接收中断
99 void UART_Init()
100 {
101 1 SCON0 = 0x30;
102 1 TI0=1; //为printf函数做准备
103 1 }
104
105 void ADC_Init()
106 {
107 1 }
108
109 void Voltage_Reference_Init()
110 {
111 1 }
112
113 void Port_IO_Init()
114 {
115 1 P0MDOUT = 0x10;
116 1 XBR0 = 0x01;
117 1 XBR1 = 0x40;
C51 COMPILER V7.20 MAIN 06/23/2008 19:39:42 PAGE 3
118 1 P4MDOUT = 0x00;
119 1 P3MDOUT = 0xDF;
120 1 P3=0xff;
121 1 P4=0xff;
122 1 VDM0CN = 0x80; // Enabal VDD monitor
123 1 FLSCL = 0x88; // 一次读两个字节
124 1 PFE0CN = 0x20; // 指令预取使能
125 1 }
126
127 //系统使用内部时钟,频率为48MHz,USB工作在全速,时钟为48MHz
128 void Oscillator_Init()
129 {
130 1 int i = 0;
131 1 OSCICN = 0x83;
132 1 CLKMUL = 0x80;
133 1 for (i = 0; i < 20; i++); // Wait 5us for initialization
134 1 CLKMUL |= 0xC0;
135 1 while ((CLKMUL & 0x20) == 0);
136 1 CLKSEL = 0x03;
137 1 }
138
139 void Interrupts_Init()
140 {
141 1 EIE1 |= 0x02; // 允许USB中断
142 1 }
143 //////////////////////////////////////////////////////////////////////////////////////////////////
144 void Time_Delay(unsigned int time)
145 {
146 1 unsigned int i=0,j=0;
147 1 for(i=0;i<time;i++)
148 1 {
149 2 for(j=0;j<1200;j++)
150 2 {_nop_();}
151 2 }
152 1 }
153
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 175 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -