📄 main.lst
字号:
C51 COMPILER V7.09 MAIN 06/18/2004 09:19:30 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS
line level source
1 /*-----------------------------------------------------------------------------
2 -----------------------------------------------------------------------------*/
3 #include <ADUC812.H>
1 =1 /*REV. 2.0 11th February 2002
2 =1 ADuC812 Apps, Analog Devices Inc.*/
3 =1
4 =1 /* BYTE Register */
5 =1 sfr P0 = 0x80;
6 =1 sfr SP = 0x81;
7 =1 sfr DPL = 0x82;
8 =1 sfr DPH = 0x83;
9 =1 sfr DPP = 0x84;
10 =1 sfr PCON = 0x87;
11 =1 sfr TCON = 0x88;
12 =1 sfr TMOD = 0x89;
13 =1 sfr TL0 = 0x8A;
14 =1 sfr TL1 = 0x8B;
15 =1 sfr TH0 = 0x8C;
16 =1 sfr TH1 = 0x8D;
17 =1 sfr P1 = 0x90;
18 =1 sfr SCON = 0x98;
19 =1 sfr SBUF = 0x99;
20 =1 sfr I2CDAT = 0x9A;
21 =1 sfr I2CADD = 0x9B;
22 =1 sfr P2 = 0xA0;
23 =1 sfr IE = 0xA8;
24 =1 sfr IE2 = 0xA9;
25 =1 sfr P3 = 0xB0;
26 =1 sfr IP = 0xB8;
27 =1 sfr ECON = 0xB9;
28 =1 sfr ETIM1 = 0xBA; //AR
29 =1 sfr ETIM2 = 0xBB;
30 =1 sfr ETIM3 = 0xC4;
31 =1 sfr EDATA1 = 0xBC;
32 =1 sfr EDATA2 = 0xBD;
33 =1 sfr EDATA3 = 0xBE;
34 =1 sfr EDATA4 = 0xBF;
35 =1 sfr WDCON = 0xC0;
36 =1 sfr EADRL = 0xC6;
37 =1 sfr T2CON = 0xC8;
38 =1 sfr RCAP2L = 0xCA;
39 =1 sfr RCAP2H = 0xCB;
40 =1 sfr TL2 = 0xCC;
41 =1 sfr TH2 = 0xCD;
42 =1 sfr PSW = 0xD0;
43 =1 sfr DMAL = 0xD2;
44 =1 sfr DMAH = 0xD3;
45 =1 sfr DMAP = 0xD4;
46 =1 sfr ADCCON2 = 0xD8;
47 =1 sfr ADCDATAL = 0xD9;
48 =1 sfr ADCDATAH = 0xDA;
49 =1 sfr PSMCON = 0xDF;
50 =1 sfr ACC = 0xE0;
51 =1 sfr I2CCON = 0xE8;
52 =1 sfr DCON = 0xE8;
C51 COMPILER V7.09 MAIN 06/18/2004 09:19:30 PAGE 2
53 =1 sfr ADCCON1 = 0xEF;
54 =1 sfr B = 0xF0;
55 =1 sfr ADCOFSL = 0xF1;
56 =1 sfr ADCOFSH = 0xF2;
57 =1 sfr ADCGAINL = 0xF3;
58 =1 sfr ADCGAINH = 0xF4;
59 =1 sfr ADCCON3 = 0xF5;
60 =1 sfr SPIDAT = 0xF7;
61 =1 sfr SPICON = 0xF8;
62 =1 sfr DAC0L = 0xF9;
63 =1 sfr DAC0H = 0xFA;
64 =1 sfr DAC1L = 0xFB;
65 =1 sfr DAC1H = 0xFC;
66 =1 sfr DACCON = 0xFD;
67 =1
68 =1 /* BIT Register..... */
69 =1 /* TCON */
70 =1 sbit TF1 = 0x8F;
71 =1 sbit TR1 = 0x8E;
72 =1 sbit TF0 = 0x8D;
73 =1 sbit TR0 = 0x8C;
74 =1 sbit IE1 = 0x8B;
75 =1 sbit IT1 = 0x8A;
76 =1 sbit IE0 = 0x89;
77 =1 sbit IT0 = 0x88;
78 =1 /* P1 */
79 =1 sbit T2EX = 0x91;
80 =1 sbit T2 = 0x90;
81 =1 /* SCON */
82 =1 sbit SM0 = 0x9F;
83 =1 sbit SM1 = 0x9E;
84 =1 sbit SM2 = 0x9D;
85 =1 sbit REN = 0x9C;
86 =1 sbit TB8 = 0x9B;
87 =1 sbit RB8 = 0x9A;
88 =1 sbit TI = 0x99;
89 =1 sbit RI = 0x98;
90 =1 /* IE */
91 =1 sbit EA = 0xAF;
92 =1 sbit EADC = 0xAE;
93 =1 sbit ET2 = 0xAD;
94 =1 sbit ES = 0xAC;
95 =1 sbit ET1 = 0xAB;
96 =1 sbit EX1 = 0xAA;
97 =1 sbit ET0 = 0xA9;
98 =1 sbit EX0 = 0xA8;
99 =1 /* P3 */
100 =1 sbit RD = 0xB7;
101 =1 sbit WR = 0xB6;
102 =1 sbit T1 = 0xB5;
103 =1 sbit T0 = 0xB4;
104 =1 sbit INT1 = 0xB3;
105 =1 sbit INT0 = 0xB2;
106 =1 sbit TXD = 0xB1;
107 =1 sbit RXD = 0xB0;
108 =1 /* IP */
109 =1 sbit PSI = 0xBF;
110 =1 sbit PADC = 0xBE;
111 =1 sbit PT2 = 0xBD;
112 =1 sbit PS = 0xBC;
113 =1 sbit PT1 = 0xBB;
114 =1 sbit PX1 = 0xBA;
C51 COMPILER V7.09 MAIN 06/18/2004 09:19:30 PAGE 3
115 =1 sbit PT0 = 0xB9;
116 =1 sbit PX0 = 0xB8;
117 =1 /* WDCON */
118 =1 sbit PRE2 = 0xC7;
119 =1 sbit PRE1 = 0xC6;
120 =1 sbit PRE0 = 0xC5;
121 =1 sbit WDR1 = 0xC3;
122 =1 sbit WDR2 = 0xC2;
123 =1 sbit WDS = 0xC1;
124 =1 sbit WDE = 0xC0;
125 =1 /* T2CON */
126 =1 sbit TF2 = 0xCF;
127 =1 sbit EXF2 = 0xCE;
128 =1 sbit RCLK = 0xCD;
129 =1 sbit TCLK = 0xCC;
130 =1 sbit EXEN2 = 0xCB;
131 =1 sbit TR2 = 0xCA;
132 =1 sbit CNT2 = 0xC9;
133 =1 sbit CAP2 = 0xC8;
134 =1 /* PSW */
135 =1 sbit CY = 0xD7;
136 =1 sbit AC = 0xD6;
137 =1 sbit F0 = 0xD5;
138 =1 sbit RS1 = 0xD4;
139 =1 sbit RS0 = 0xD3;
140 =1 sbit OV = 0xD2;
141 =1 sbit F1 = 0xD1;
142 =1 sbit P = 0xD0;
143 =1 /* ADCCON2 */
144 =1 sbit ADCI = 0xDF;
145 =1 sbit DMA = 0xDE;
146 =1 sbit CCONV = 0xDD;
147 =1 sbit SCONV = 0xDC;
148 =1 sbit CS3 = 0xDB;
149 =1 sbit CS2 = 0xDA;
150 =1 sbit CS1 = 0xD9;
151 =1 sbit CS0 = 0xD8;
152 =1 /* I2CCON */
153 =1 sbit MDO = I2CCON^7;
154 =1 sbit MDE = I2CCON^6;
155 =1 sbit MCO = I2CCON^5;
156 =1 sbit MDI = I2CCON^4;
157 =1 sbit I2CM = I2CCON^3;
158 =1 sbit I2CRS = I2CCON^2;
159 =1 sbit I2CTX = I2CCON^1;
160 =1 sbit I2CI = I2CCON^0;
161 =1 /* DCON */
162 =1 sbit D1 = DCON^7;
163 =1 sbit D1EN = DCON^6;
164 =1 sbit D0 = DCON^5;
165 =1 sbit D0EN = DCON^3;
166 =1 /* SPICON */
167 =1 sbit ISPI = 0xFF;
168 =1 sbit WCOL = 0xFE;
169 =1 sbit SPE = 0xFD;
170 =1 sbit SPIM = 0xFC;
171 =1 sbit CPOL = 0xFB;
172 =1 sbit CPHA = 0xFA;
173 =1 sbit SPR1 = 0xF9;
174 =1 sbit SPR0 = 0xF8;
4 #include <stdio.h>
1 =1 /*--------------------------------------------------------------------------
C51 COMPILER V7.09 MAIN 06/18/2004 09:19:30 PAGE 4
2 =1 STDIO.H
3 =1
4 =1 Prototypes for standard I/O functions.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __STDIO_H__
10 =1 #define __STDIO_H__
11 =1
12 =1 #ifndef EOF
13 =1 #define EOF -1
14 =1 #endif
15 =1
16 =1 #ifndef NULL
17 =1 #define NULL ((void *) 0)
18 =1 #endif
19 =1
20 =1 #ifndef _SIZE_T
21 =1 #define _SIZE_T
22 =1 typedef unsigned int size_t;
23 =1 #endif
24 =1
25 =1 #pragma SAVE
26 =1 #pragma REGPARMS
27 =1 extern char _getkey (void);
28 =1 extern char getchar (void);
29 =1 extern char ungetchar (char);
30 =1 extern char putchar (char);
31 =1 extern int printf (const char *, ...);
32 =1 extern int sprintf (char *, const char *, ...);
33 =1 extern int vprintf (const char *, char *);
34 =1 extern int vsprintf (char *, const char *, char *);
35 =1 extern char *gets (char *, int n);
36 =1 extern int scanf (const char *, ...);
37 =1 extern int sscanf (char *, const char *, ...);
38 =1 extern int puts (const char *);
39 =1
40 =1 #pragma RESTORE
41 =1
42 =1 #endif
43 =1
5 #include "flash.h"
1 =1 /*---------------------------------------------------------
2 =1 FLASH functions.
3 =1 ---------------------------------------------------------*/
4 =1 char flash_erase_all (void);
5 =1
6 =1 unsigned long flash_size (void);
7 =1
8 =1 unsigned long flash_read (
9 =1 void *buffer, /* Buffer to fill */
10 =1 unsigned long len, /* Bytes to read */
11 =1 unsigned long address); /* FLASH address to read from */
12 =1
13 =1 unsigned long flash_write (
14 =1 const void *buffer, /* Buffer to save */
15 =1 unsigned long len, /* Buffer length */
16 =1 unsigned long address); /* FLASH address to write to */
17 =1
18 =1 /*---------------------------------------------------------
19 =1 ---------------------------------------------------------*/
C51 COMPILER V7.09 MAIN 06/18/2004 09:19:30 PAGE 5
6
7 char code msgbuf [] = "This is a test to see if this thing really works.";
8 char xdata strbuf [101];
9
10 /*-----------------------------------------------------------------------------
11 -----------------------------------------------------------------------------*/
12 long test_eeprom (void)
13 {
14 1 unsigned long i;
15 1 unsigned char dbuf;
16 1 unsigned char rbuf;
17 1
18 1 /*-----------------------------------------------
19 1 Erase the EEPROM
20 1 -----------------------------------------------*/
21 1 flash_erase_all ();
22 1
23 1 /*-----------------------------------------------
24 1 Write values into all of the EEPROM
25 1 -----------------------------------------------*/
26 1 for (dbuf=0, i=flash_size (); i>0; i--, dbuf++)
27 1 {
28 2 flash_write (&dbuf, sizeof (dbuf), i-1);
29 2 }
30 1
31 1 /*-----------------------------------------------
32 1 Read values from EEPROM and compare them to the
33 1 original value that was written. If they don't
34 1 match, return the failing address.
35 1 -----------------------------------------------*/
36 1 for (dbuf=0, i=flash_size (); i>0; i--, dbuf++)
37 1 {
38 2 flash_read (&rbuf, sizeof (dbuf), i-1);
39 2 if (rbuf != dbuf)
40 2 {
41 3 return (i-1);
42 3 }
43 2 }
44 1
45 1 /*-----------------------------------------------
46 1 -1 indicates that everything matched
47 1 -----------------------------------------------*/
48 1 return (-1);
49 1 }
50
51 /*-----------------------------------------------------------------------------
52 -----------------------------------------------------------------------------*/
53 void main (void)
54 {
55 1 long addr;
56 1
57 1 /*-----------------------------------------------
58 1 If we not talking to the monitor, then program
59 1 the on-chip UART.
60 1 -----------------------------------------------*/
61 1 #ifndef MON51
62 1 SCON = 0x50; // SCON: mode 1, 8-bit UART, enable rcvr
63 1 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload
64 1 TH1 = 0xF4; // TH1: reload value for 2400 baud @ 11.0592 MHz
65 1 TR1 = 1; // TR1: timer 1 run
66 1 TI = 1; // TI: set TI to send first char of UART
67 1 #endif
C51 COMPILER V7.09 MAIN 06/18/2004 09:19:30 PAGE 6
68 1
69 1 /*-----------------------------------------------
70 1 Test the EEPROM and print the results.
71 1 -----------------------------------------------*/
72 1 printf ("Testing the ERPROM\n");
73 1 addr = test_eeprom ();
74 1
75 1 if (addr == -1)
76 1 {
77 2 printf ("ERPROM test passed!\n");
78 2 }
79 1 else
80 1 {
81 2 printf ("ERPROM test failed at %lu\n", addr);
82 2 }
83 1
84 1 /*-----------------------------------------------
85 1 -----------------------------------------------*/
86 1 printf ("Erasing the EEPROM\n");
87 1 flash_erase_all ();
88 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -