📄 fm_i2cdrv2.lst
字号:
################################################################################
# #
# IAR Systems Z80/64180 Assembler V3.03A/WIN 25/Feb/109 14:30:23 #
# #
# Target option = z80 #
# Source file = d:\case_i_d95f\ap\ap_radio\fm_i2cdrv2.msa #
# List file = d:\case_i_d95f\ap\ap_radio\list\fm_i2cdrv2.lst #
# Object file = d:\case_i_d95f\ap\ap_radio\obj\fm_i2cdrv2.r01 #
# Command line = -v0 -OD:\case_i_d95f\ap\ap_radio\Obj\ -s+ -M<> #
# -w+ -r -LD:\case_i_d95f\ap\ap_radio\List\ -t8 #
# -Id:\sdk_i_95f\inc\ -Id:\case_i_d95f\inc\ #
# d:\case_i_d95f\ap\ap_radio\FM_i2cdrv2.msa #
# #
# (c) Copyright IAR Systems 1996 #
################################################################################
1 000000 /***************************************************
*****************************************
2 000000 philips TEA5767 FM module driver(I2C DRIVER)
3 000000 writen by Xuezhi. for 3951 S1
4 000000 last update 04-2-13 15:03
5 000000 ****************************************************
**************************
**************/
6 000000 //for FM_i2cdrv1
7 000000 module FM_I2CDRV2
8 000000
9 000000 public I2C_init
10 000000 public I2C_exit
11 000000 public WRITE_ONEFRAME
12 000000 public READ_STATUS
13 000000 public FMwait50ms
14 000000
15 000000 //from FM_i2cdrv1
16 000000 extern FREQ_RF
17 000000 extern WSET_PLLLB
18 000000 extern WSET_PLLHB
19 000000 extern WRITE_BUFFER
20 000000 extern READ_BUFFER
21 000000 extern WSET_HLSI
22 000000 extern FM_result
23 000000 extern disable_hosc
24 000000
25 000000 //--------------------------------------------------
---
26 000000
27 000000 //output enable port
28 000000 #define SDA_outport 0F3H
29 000000 #define SDA_outport_num 01H
30 000000 //input enable port
31 000000 #define SDA_inport 0F3H
32 000000 #define SDA_inport_num 05H
33 000000
34 000000 #define SCL_outport 0F3H
35 000000 #define SCL_outport_num 00h
36 000000 #define SCL_inport 0F3h
37 000000 #define SCL_inport_num 004h
38 000000
39 000000 //data port
40 000000 #define SDA_doport 0F4h
41 000000 #define SDA_doport_num 01h
42 000000 #define SDA_dinport 0F4h
43 000000 #define SDA_dinport_num 01h
44 000000
45 000000 #define SCL_doport 0F4h
46 000000 #define SCL_doport_num 00h
47 000000 #define SCL_dinport 0F4h
48 000000 #define SCL_dinport_num 00h
49 000000
50 000000
51 000000 //==================================================
===
52 000000 rseg FM_CTRL_D
53 000000 //==================================================
===
54 000000 FMupdatestatus:
55 000000 F5 PUSH AF
56 000001 C5 PUSH BC
57 000002 E5 PUSH HL
58 000003 CD.... CALL LWRD I2C_start
59 000006 3EC0 LD A,0C0H
60 000008 0600 LD B,00H
61 00000A CD.... CALL LWRD I2Ctransbyte
62 00000D FE00 CP 00H
63 00000F 2014 JR NZ,FMupdatestatus_exit
64 000011
65 000011 21.... LD HL,LWRD WRITE_BUFFER
66 000014 7E LD A,(HL)
67 000015 0600 LD B,00H
68 000017 CD.... CALL LWRD I2Ctransbyte
69 00001A FE00 CP 00H
70 00001C 2007 JR NZ,FMupdatestatus_exit
71 00001E
72 00001E 3E01 LD A,01H
73 000020 32.... LD (LWRD FM_result),A
74 000023 1805 JR FMupdatestatus_ok
75 000025 FMupdatestatus_exit:
76 000025 3E00 LD A,00H
77 000027 32.... LD (LWRD FM_result),A
78 00002A FMupdatestatus_ok:
79 00002A CD.... CALL LWRD I2C_stop
80 00002D E1 POP HL
81 00002E C1 POP BC
82 00002F F1 POP AF
83 000030 C9 RET
84 000031 //==================================================
=======
85 000031 WRITE_ONEFRAME:
86 000031 E5 PUSH HL
87 000032 C5 PUSH BC
88 000033 CD.... CALL LWRD I2C_start
89 000036
90 000036 3E20 LD A,020H
91 000038 0600 LD B,00H
92 00003A CD.... CALL LWRD I2Ctransbyte
93 00003D FE00 CP 00H
94 00003F 2018 JR NZ,I2C_werror_exit
95 000041
96 000041 //LD C,8
97 000041 21.... LD HL,LWRD WRITE_BUFFER
98 000044 I2C_wr_nextbyte:
99 000044 7E LD A,(HL)
100 000045 0600 LD B,00H
101 000047 CD.... CALL LWRD I2Ctransbyte
102 00004A FE00 CP 00H
103 00004C 200B JR NZ,I2C_werror_exit
104 00004E 23 INC HL
105 00004F 0D DEC C
106 000050 20F2 JR NZ,I2C_wr_nextbyte
107 000052 3E01 LD A,01H
108 000054 32.... LD (LWRD FM_result),A
109 000057 1805 JR I2Cwstop_exit
110 000059 I2C_werror_exit:
111 000059 3E00 LD A,00H
112 00005B 32.... LD (LWRD FM_result),A
113 00005E I2Cwstop_exit:
114 00005E CD.... CALL LWRD I2C_stop
115 000061 3A.... LD A,(LWRD FM_result)
116 000064 C1 POP BC
117 000065 E1 POP HL
118 000066 C9 RET
119 000067 //======================================
120 000067 READ_ONEFRAME:
121 000067 C5 PUSH BC
122 000068 E5 PUSH HL
123 000069 CD.... CALL LWRD I2C_start
124 00006C
125 00006C 3E21 LD A,021H
126 00006E 0601 LD B,01H
127 000070 CD.... CALL LWRD I2Ctransbyte
128 000073 FE00 CP 00H
129 000075 201C JR NZ,I2C_rerror_exit
130 000077
131 000077 0E04 LD C,04H
132 000079 21.... LD HL,LWRD READ_BUFFER
133 00007C I2C_rd_nextbyte:
134 00007C 3E00 LD A,00h
135 00007E CD.... CALL LWRD I2Crecebyte
136 000081 77 LD (HL),A
137 000082 23 INC HL
138 000083 0D DEC C
139 000084 20F6 JR NZ,I2C_rd_nextbyte
140 000086 3E01 LD A,01h
141 000088 CD.... CALL LWRD I2Crecebyte
142 00008B 77 LD (HL),A
143 00008C
144 00008C 3E01 LD A,01H
145 00008E 32.... LD (LWRD FM_result),A
146 000091 1805 JR I2Crstop_exit
147 000093 I2C_rerror_exit:
148 000093 3E00 LD A,00H
149 000095 32.... LD (LWRD FM_result),A
150 000098 I2Crstop_exit:
151 000098 CD.... CALL LWRD I2C_stop
152 00009B 3A.... LD A,(LWRD FM_result)
153 00009E E1 POP HL
154 00009F C1 POP BC
155 0000A0 C9 RET
156 0000A1 //==================================================
=
157 0000A1 I2C_init:
158 0000A1 F5 PUSH AF
159 0000A2 DBF4 IN A,(SDA_doport)
160 0000A4 CBCF SET SDA_doport_num,A
161 0000A6 D3F4 OUT (SDA_doport),A
162 0000A8 DBF4 IN A,(SCL_doport)
163 0000AA CBC7 SET SCL_doport_num,A
164 0000AC D3F4 OUT (SCL_doport),A
165 0000AE
166 0000AE DBF3 IN A,(SDA_outport)
167 0000B0 CBCF SET SDA_outport_num,A
168 0000B2 D3F3 OUT (SDA_outport),A
169 0000B4 DBF3 IN A,(SCL_outport)
170 0000B6 CBC7 SET SCL_outport_num,A
171 0000B8 D3F3 OUT (SCL_outport),A
172 0000BA F1 POP AF
173 0000BB C9 RET
174 0000BC //--------------------------------------
175 0000BC I2C_exit:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -