📄 24c01.l
字号:
Mon Aug 02 15:20:23 2004
SAM4 Assembler for 57 Core Ver. 2.11T(Win32) Copyright(c) 1999 Samsung Electronics Co.
--------------------------------------------------------------------
Source File Name : 24c01.asm
Output File Name : 24c01.o
List File Name : 24c01.l
1 ;MODULE: 24C01.ASM ;
2 ;FUNCTION: READ/ WRITE DATA FROM/TO 24C01
3 ;**************************************;
4 ;USER EEPROM MAP: ;
5 ; USE TO SAVE USER INFO SUCH AS AGE/SEX AND HEIGHT ( TOTAL 2 BYTES )
6 ; USER_NUM ADDRESS ;
7 ; 1 10H ~ 17H ;
8 ; 2 18H ~ 1FH ;
9 ; 3 20H ~ 27H ;
10 ; 4 28H ~ 2FH ;
11 ; 5 30H ~ 37H ;
12 ; 6 38H ~ 3FH ;
13 ; 7 40H ~ 47H ;
14 ; 8 48H ~ 4FH ;
15 ; 9 50H ~ 57H ;
16 ; 10 58H ~ 5FH ;
17 ;----------------------- ;
18 ;00H ~ 0FH : USE TO SAVE LAST_WEIGHT,CNT10 AND CNT21 ( TOTAL 6 BYTES! )
19 ;----------------------- ;
20 00 A0 DEVICE_WR: EQU 0A0H ; USE FOR WRITE 24C01
21 00 A1 DEVICE_RD: EQU 0A1H ; USE FOR READ 24C01
22 ;SCL: BIT P3.2 ; 24C01 PIN6
23 ;SDA: BIT P3.3 ; 24C01 PIN5
24 ; ;
25 ;**************************************;
26 SET_SDA_OUTPUT: MACRO ;
27 SMB 15 ;
28 LD EA,#7FH ; 0111 1111
29 LD PMG1,EA ; SDA IS OUTPUT PIN
30 ENDM ;
31 ;
32 SET_SDA_INPUT: MACRO ;
33 SMB 15 ;
34 LD EA,#77H ; 0111 0111
35 LD PMG1,EA ; SDA IS INPUT PIN
36 ENDM ;
37 ;**************************************;
38
39 ;****************************************************************************;
40 ; WRITE 24C01 ;
41 ;****************************************************************************;
42 ;FUNCTION: WRITE BYTES TO 24C01 ;
43 ;R:[TRX_BUF] [HL] [WX] [EA] ;
44 ;INPUT: [EEP_NUM],[CPU_RAM_ADDR] [EEP_RAM_ADDR]
45 ;HL: BUFFER ADDRESS POINT ;
46 ;WX: BYTE CNT ;
47 ; ;
48 0000 WRITE_EEP: ;
49 ;START I2C ;
50 0000 DB 40 7F CALL START_I2C ;
51 ;TRANSMIT DEVICE ADDRESS ;
52 0003 81 A0 LD EA,#DEVICE_WR ;
53 0005 LD TRX_BUF,EA ;
*** ERROR 1: UNDEFINED SYMBOL IN OPERAND
54 0007 DB 40 D7 CALL TX_ABYTE ;
55 ;TRANSMIT WORD ADDRESS ;
56 000A CE 00 LD EA,EEP_RAM_ADDR ;
*** ERROR 2: UNDEFINED SYMBOL IN OPERAND
57 000C LD TRX_BUF,EA ;
*** ERROR 3: UNDEFINED SYMBOL IN OPERAND
58 000E DB 40 D7 CALL TX_ABYTE ;
59 ;BEGIN TO WRITE DATA ;
60 0011 8C 00 LD A,EEP_NUM ;
*** ERROR 4: UNDEFINED SYMBOL IN OPERAND
61 0013 DD 05 LD W,A ;
62 0015 CE 00 LD EA,CPU_RAM_ADDR ;
*** ERROR 5: UNDEFINED SYMBOL IN OPERAND
63 0017 DC F2 LD HL,EA ;
64 0019 WRITE_EEP_01: ;
65 0019 DC 08 LD EA,@HL ;
66 001B LD TRX_BUF,EA ;
*** ERROR 6: UNDEFINED SYMBOL IN OPERAND
67 001D DB 40 D7 CALL TX_ABYTE ;
68 0020 82 INCS HL ;
69 0021 82 INCS HL ; HL + = 2
70 0022 A0 NOP ;
71 0023 4D DECS W ; EEP_NUM --
72 0024 90 19 JPS WRITE_EEP_01 ;
73 0026 DB 40 95 CALL STOP_I2C ;
74 0029 81 02 LD EA,#02H ;
75 002B DB 00 00 JP DELAY_3MS ;
*** ERROR 7: UNDEFINED SYMBOL IN OPERAND
76 ;**************************************;
77
78 ;****************************************************************************;
79 ; READ 24C01 ;
80 ;****************************************************************************;
81 ;FUNCTION: READ BYTES FROM 24C01 ;
82 ;R:[TRX_BUF][HL][WX][EA] ;
83 ;INPUT:[EEP_NUM],[CPU_RAM_ADDR] [EEP_RAM_ADDR]
84 ; HL: BUFFER ADDRESS POINT ;
85 ; WX: BYTE CNT ;
86 ;**USE RANDOM READ MODE TO READ 24C01 *;
87 002E READ_EEP: ;
88 ;START I2C ;
89 002E DB 40 7F CALL START_I2C ;
90 ;WRITE DEVICE ADDRESS ;
91 0031 81 A0 LD EA,#DEVICE_WR ;
92 0033 LD TRX_BUF,EA ;
*** ERROR 8: UNDEFINED SYMBOL IN OPERAND
93 0035 DB 40 D7 CALL TX_ABYTE ; 0A0H ---> EEP
94 ;WRITE WORD ADDRESS ;
95 0038 CE 00 LD EA,EEP_RAM_ADDR ;
*** ERROR 9: UNDEFINED SYMBOL IN OPERAND
96 003A LD TRX_BUF,EA ;
*** ERROR 10: UNDEFINED SYMBOL IN OPERAND
97 003C DB 40 D7 CALL TX_ABYTE ;
98 ;RESTART I2C AGAIN ;
99 003F DB 40 7F CALL START_I2C ;
100 ;WRITE DEVICE ADDRESS ;
101 0042 81 A1 LD EA,#DEVICE_RD ; 0A1 ---> EEP
102 0044 LD TRX_BUF,EA ;
*** ERROR 11: UNDEFINED SYMBOL IN OPERAND
103 0046 DB 40 D7 CALL TX_ABYTE ;
104 ;BEGIN TO READ DATA ;
105 0049 CE 00 LD EA,CPU_RAM_ADDR ;
*** ERROR 12: UNDEFINED SYMBOL IN OPERAND
106 004B DC F2 LD HL,EA ;
107 004D 8C 00 LD A,EEP_NUM ;
*** ERROR 13: UNDEFINED SYMBOL IN OPERAND
108 004F DD 05 LD W,A ;
109 0051 READ_EEP_01: ;
110 0051 DB 40 AB CALL RX_ABYTE ;
111 0054 CE 00 LD EA,TRX_BUF ;
*** ERROR 14: UNDEFINED SYMBOL IN OPERAND
112 0056 DC 00 LD @HL,EA ;
113 0058 82 INCS HL ; POINT TO NEXT LOCATION
114 0059 82 INCS HL ; HL + = 2
115 005A A0 NOP ;
116 005B 4D DECS W ; EEP_NUM --, READ OVER ?
117 005C 90 60 JPS READ_EEP_02 ; NO. SEND ACK SIGNAL
118 005E 90 65 JPS READ_EEP_03 ; YES DON'T SEND ACK SIGNAL
119 0060 READ_EEP_02: ;
120 0060 DB 41 40 CALL TX_ACK ; CPU SEND A ACK TO 24C01
121 0063 90 51 JPS READ_EEP_01 ;
122 0065 READ_EEP_03: ;
123 <01> SET_SDA_OUTPUT ; STOP I2C
124 0065 DD 4F SMB 15 ;
125 0067 81 7F LD EA,#7FH ; 0111 1111
126 0069 LD PMG1,EA ; SDA IS OUTPUT PIN
*** ERROR 15: UNDEFINED SYMBOL IN OPERAND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -