📄 main.lst
字号:
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
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)
C51 COMPILER V7.00 Beta 5 MAIN 04/19/2002 14:12:10 PAGE 6
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
89 1 printf ("EEPROM Size = %lu bytes\n", (unsigned long) flash_size ());
90 1
91 1 printf ("Writing \"%s\" to the EEPROM\n", msgbuf);
92 1 flash_write (msgbuf, sizeof (msgbuf), 0);
93 1
94 1 flash_read (strbuf, sizeof (msgbuf), 0);
95 1 printf ("Read \"%s\" from the EEPROM\n", strbuf);
96 1
97 1 printf ("Erasing the EEPROM\n");
98 1 flash_erase_all ();
99 1
100 1 /*-----------------------------------------------
101 1 -----------------------------------------------*/
102 1 while (1);
103 1 }
104
105
106 /*-----------------------------------------------------------------------------
107 -----------------------------------------------------------------------------*/
108
C51 COMPILER V7.00 Beta 5 MAIN 04/19/2002 14:12:10 PAGE 7
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION Com000F (BEGIN)
0000 L?0016:
0000 E500 R MOV A,i+03H
0002 24FF ADD A,#0FFH
0004 F500 R MOV i+03H,A
0006 E500 R MOV A,i+02H
0008 34FF ADDC A,#0FFH
000A F500 R MOV i+02H,A
000C E500 R MOV A,i+01H
000E 34FF ADDC A,#0FFH
0010 F500 R MOV i+01H,A
0012 E500 R MOV A,i
0014 34FF ADDC A,#0FFH
0016 F500 R MOV i,A
0018 0500 R INC dbuf
001A 22 RET
001B L?0017:
001B E4 CLR A
001C FF MOV R7,A
001D FE MOV R6,A
001E FD MOV R5,A
001F FC MOV R4,A
0020 AB00 R MOV R3,i+03H
0022 AA00 R MOV R2,i+02H
0024 A900 R MOV R1,i+01H
0026 A800 R MOV R0,i
0028 D3 SETB C
0029 020000 E LJMP ?C?ULCMP
; FUNCTION Com000F (END)
; FUNCTION test_eeprom (BEGIN)
; SOURCE LINE # 12
; SOURCE LINE # 13
; SOURCE LINE # 21
0000 120000 E LCALL flash_erase_all
; SOURCE LINE # 26
0003 120000 R LCALL L?0018
0006 ?C0001:
0006 120000 R LCALL L?0017
0009 402E JC ?C0002
; SOURCE LINE # 27
; SOURCE LINE # 28
000B 7B00 MOV R3,#00H
000D 7A00 R MOV R2,#HIGH dbuf
000F 7900 R MOV R1,#LOW dbuf
0011 E500 R MOV A,i+03H
0013 24FF ADD A,#0FFH
0015 F500 E MOV ?_flash_write?BYTE+0AH,A
0017 E500 R MOV A,i+02H
0019 34FF ADDC A,#0FFH
001B F500 E MOV ?_flash_write?BYTE+09H,A
001D E500 R MOV A,i+01H
001F 34FF ADDC A,#0FFH
0021 F500 E MOV ?_flash_write?BYTE+08H,A
0023 E500 R MOV A,i
0025 34FF ADDC A,#0FFH
0027 F500 E MOV ?_flash_write?BYTE+07H,A
0029 7F01 MOV R7,#01H
002B 7E00 MOV R6,#00H
C51 COMPILER V7.00 Beta 5 MAIN 04/19/2002 14:12:10 PAGE 8
002D 7D00 MOV R5,#00H
002F 7C00 MOV R4,#00H
0031 120000 E LCALL _flash_write
; SOURCE LINE # 29
0034 120000 R LCALL L?0016
0037 80CD SJMP ?C0001
0039 ?C0002:
; SOURCE LINE # 36
0039 120000 R LCALL L?0018
003C ?C0004:
003C 120000 R LCALL L?0017
003F 4049 JC ?C0005
; SOURCE LINE # 37
; SOURCE LINE # 38
0041 7B00 MOV R3,#00H
0043 7A00 R MOV R2,#HIGH rbuf
0045 7900 R MOV R1,#LOW rbuf
0047 E500 R MOV A,i+03H
0049 24FF ADD A,#0FFH
004B F500 E MOV ?_flash_read?BYTE+0AH,A
004D E500 R MOV A,i+02H
004F 34FF ADDC A,#0FFH
0051 F500 E MOV ?_flash_read?BYTE+09H,A
0053 E500 R MOV A,i+01H
0055 34FF ADDC A,#0FFH
0057 F500 E MOV ?_flash_read?BYTE+08H,A
0059 E500 R MOV A,i
005B 34FF ADDC A,#0FFH
005D F500 E MOV ?_flash_read?BYTE+07H,A
005F 7F01 MOV R7,#01H
0061 7E00 MOV R6,#00H
0063 7D00 MOV R5,#00H
0065 7C00 MOV R4,#00H
0067 120000 E LCALL _flash_read
; SOURCE LINE # 39
006A E500 R MOV A,rbuf
006C 6500 R XRL A,dbuf
006E 6015 JZ ?C0006
; SOURCE LINE # 40
; SOURCE LINE # 41
0070 E500 R MOV A,i+03H
0072 24FF ADD A,#0FFH
0074 FF MOV R7,A
0075 E500 R MOV A,i+02H
0077 34FF ADDC A,#0FFH
0079 FE MOV R6,A
007A E500 R MOV A,i+01H
007C 34FF ADDC A,#0FFH
007E FD MOV R5,A
007F E500 R MOV A,i
0081 34FF ADDC A,#0FFH
0083 FC MOV R4,A
0084 22 RET
; SOURCE LINE # 42
; SOURCE LINE # 43
0085 ?C0006:
0085 120000 R LCALL L?0016
0088 80B2 SJMP ?C0004
008A ?C0005:
; SOURCE LINE # 48
008A 74FF MOV A,#0FFH
008C FF MOV R7,A
C51 COMPILER V7.00 Beta 5 MAIN 04/19/2002 14:12:10 PAGE 9
008D FE MOV R6,A
008E FD MOV R5,A
008F FC MOV R4,A
; SOURCE LINE # 49
0090 ?C0008:
0090 22 RET
0091 L?0018:
0091 E4 CLR A
0092 F500 R MOV dbuf,A
0094 120000 E LCALL flash_size
0097 8F00 R MOV i+03H,R7
0099 8E00 R MOV i+02H,R6
009B 8D00 R MOV i+01H,R5
009D 8C00 R MOV i,R4
009F 22 RET
; FUNCTION test_eeprom (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 53
; SOURCE LINE # 54
; SOURCE LINE # 62
0000 759850 MOV SCON,#050H
; SOURCE LINE # 63
0003 438920 ORL TMOD,#020H
; SOURCE LINE # 64
0006 758DF4 MOV TH1,#0F4H
; SOURCE LINE # 65
0009 D28E SETB TR1
; SOURCE LINE # 66
000B D299 SETB TI
; SOURCE LINE # 72
000D 7BFF MOV R3,#0FFH
000F 7A00 R MOV R2,#HIGH ?SC_0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -