📄 text1.lst
字号:
C51 COMPILER V7.06 TEXT1 11/29/2007 14:20:41 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "C8051F340.h"
2 #include <stdio.h>
3 #include <intrins.h>
4 // Peripheral specific initialization functions,
5 // Called from the Init_Device() function
6
7 void Reset_Sources_Init(void);
8 void Timer_Init(void);
9 void UART_Init(void);
10 void EMI_Init(void);
11 void Port_IO_Init(void);
12 void Oscillator_Init(void);
13 void Interrupts_Init(void);
14 void SendCommBuffer(unsigned char *base, unsigned int size);
15
16 #define DB_SENDMAXSIZE 10
17 #define DB_RECMAXSIZE 10
18
19 bit CommRecDataOverflowFlag,FlagRecComm,SendbufferOver;
20 unsigned int SendSize;
21 unsigned char CommSendBufferHead, CommSendBufferTail;
22 unsigned char xdata CommSendBuffer[DB_SENDMAXSIZE];
23 unsigned char CommRecBufferHead, CommRecBufferTail;
24 unsigned char xdata CommRecBuffer[DB_RECMAXSIZE];
25
26
27 void main()
28 {
29 1 PCA0MD &= ~0x40;
30 1 Port_IO_Init();
31 1 Oscillator_Init();
32 1 Reset_Sources_Init();
33 1 Timer_Init();
34 1 Interrupts_Init();
35 1 UART_Init();
36 1 EMI_Init();
37 1
38 1 TR1 = 1;
39 1 SendCommBuffer("1234567890987654\n",17);
40 1 SendCommBuffer("liaoww12345\n",12);
41 1 SendCommBuffer("liqiao ai liaowuwu\n",19);
42 1 while(1);
43 1 }
44
45 void Reset_Sources_Init()
46 {
47 1 int i = 0;
48 1 VDM0CN = 0x80;
49 1 for (i = 0; i < 350; i++); // Wait 100us for initialization
50 1 RSTSRC = 0x86;
51 1 }
52
53 void Timer_Init()
54 {
55 1 TMOD = 0x22;
C51 COMPILER V7.06 TEXT1 11/29/2007 14:20:41 PAGE 2
56 1 CKCON = 0x00;
57 1 TL1 = 0xD0;
58 1 TH1 = 0xD0;
59 1 }
60
61 void UART_Init()
62 {
63 1 SCON0 = 0x10;
64 1 SBRLL1 = 0xD0;
65 1 SBRLH1 = 0xFF;
66 1 SCON1 = 0x10;
67 1 SBCON1 = 0x43;
68 1 }
69
70 void EMI_Init()
71 {
72 1 EMI0CF = 0x43;
73 1 }
74
75 void Port_IO_Init()
76 {
77 1 P0MDIN = 0x3F;
78 1 P0MDOUT = 0x0F;
79 1 P0SKIP = 0xC8;
80 1 P1SKIP = 0xF9;
81 1 XBR0 = 0x09;
82 1 XBR1 = 0x70;
83 1 XBR2 = 0x01;
84 1 }
85
86 void Oscillator_Init()
87 {
88 1 int i = 0;
89 1 OSCXCN = 0x67;
90 1 for (i = 0; i < 3000; i++); // Wait 1ms for initialization
91 1 while ((OSCXCN & 0x80) == 0);
92 1 CLKSEL = 0x01;
93 1 OSCICN = 0xA3; //内部振荡器使能,但不接USB时不工作
94 1 CLKMUL = 0x80;
95 1 for (i = 0; i < 20; i++); // Wait 5us for initialization
96 1 CLKMUL |= 0xC0;
97 1 while ((CLKMUL & 0x20) == 0);
98 1 REG0CN = 0xB0;
99 1 }
100
101 void Interrupts_Init()
102 {
103 1 EIE1 = 0x02;
104 1 EIE2 = 0x02;
105 1 IE = 0x90;
106 1 }
107
108 void SendCommBuffer(unsigned char *base, unsigned int size)
109 {
110 1 unsigned int i,k;
111 1 unsigned char j,t;
112 1 i = 0;
113 1 j = 0;
114 1 k = DB_SENDMAXSIZE;
115 1 if (!size) { return; }
116 1 SendSize = size;
117 1 if (!(size%DB_SENDMAXSIZE))
C51 COMPILER V7.06 TEXT1 11/29/2007 14:20:41 PAGE 3
118 1 t = size/DB_SENDMAXSIZE;
119 1 else
120 1 t = size/DB_SENDMAXSIZE+1;
121 1 for (j =0 ;j<t;j++)
122 1 {
123 2 while (i < k)
124 2 {
125 3 CommSendBuffer[CommSendBufferTail]=base[i];
126 3 i++;
127 3 CommSendBufferTail++;
128 3 }
129 2 SBUF0=CommSendBuffer[CommSendBufferHead];
130 2 while (!SendbufferOver);
131 2 SendbufferOver = 0;
132 2 k = DB_SENDMAXSIZE+k;
133 2 CommSendBufferTail = 0;
134 2 }
135 1 CommSendBufferHead =0;
136 1 CommSendBufferTail = 0;
137 1 }
138
139
140
141
142 void CommISR(void) interrupt 4
143 {
144 1 if (TI0 == 1)
145 1 {
146 2 TI0 = 0;
147 2 if (SendSize--) //SendSize--和--SendSize效果一样
148 2 {
149 3 CommSendBufferHead++;
150 3 if (CommSendBufferHead==DB_SENDMAXSIZE)
151 3 {
152 4 CommSendBufferHead=0;
153 4 SendbufferOver = 1;
154 4 }
155 3 else
156 3 {
157 4 SBUF0=CommSendBuffer[CommSendBufferHead];
158 4 }
159 3 }
160 2
161 2 else
162 2 {
163 3 SendbufferOver = 1;
164 3 }
165 2 }
166 1 if (RI0 == 1)
167 1 {
168 2 RI0 = 0;
169 2 if (CommRecBufferTail==CommRecBufferHead)
170 2 {
171 3 CommRecDataOverflowFlag=1; //接收缓冲区溢出
172 3 }
173 2 CommRecBuffer[CommRecBufferTail]=SBUF0; //receive data
174 2 CommRecBufferTail++;
175 2 if (CommRecBufferTail==DB_RECMAXSIZE)
176 2 {
177 3 CommRecBufferTail=0;
178 3 }
179 2 FlagRecComm=1;
C51 COMPILER V7.06 TEXT1 11/29/2007 14:20:41 PAGE 4
180 2 }
181 1 }
182 //-----------------------------------------------------------------------------
183 // End Of File
184 //-----------------------------------------------------------------------------
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 500 ----
CONSTANT SIZE = 51 ----
XDATA SIZE = 20 ----
PDATA SIZE = ---- ----
DATA SIZE = 6 9
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -