📄 i2c_driver.lst
字号:
################################################################################
# #
# IAR Systems Z80/64180 Assembler V3.03A/WIN 25/Sep/107 23:48:59 #
# #
# Target option = z80 #
# Source file = d:\case_i_d913f\ap\ap_radio\philips\i2c_driver.msa#
# List file = d:\case_i_d913f\ap\ap_radio\list\i2c_driver.lst #
# Object file = d:\case_i_d913f\ap\ap_radio\obj\i2c_driver.r01 #
# Command line = -v0 -OD:\case_i_d913f\ap\ap_radio\Obj\ -s+ -M<> #
# -w+ -r -LD:\case_i_d913f\ap\ap_radio\List\ -t8 #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_RADIO\PHILIPS\I2C_Driver.msa #
# #
# (c) Copyright IAR Systems 1996 #
################################################################################
1 000000 /***************************************************
************************
2 000000 GL3961 I2C Driver Interface
3 000000 writen by GONGJIAN
4 000000 last update 05-3-30 10:04
5 000000 ****************************************************
****************
********/
6 000000 #include "I2C_register.h"
7 000000
8 000000 public I2C_Init
9 000000 public I2C_Start
10 000000 //public I2C_Write
11 000000 public I2C_Writeonebyte
12 000000 //public I2C_Read
13 000000 public I2C_ReadOneByte
14 000000 //public I2C_Restart
15 000000 public I2C_Stop
16 000000 public I2C_Exit
17 000000 public I2C_Transaddr
18 000000 //public Wait_Stop
19 000000 //public Trans_complete
20 000000 //public Recv_complete
21 000000 public DELAY_15us
22 000000
23 000000 //**************************************************
*********
24 000000 rseg I2C_driver
25 000000
26 000000 40 I2CSPEED DEFB 40H
27 000001
28 000001 /***************************************************
**************************
29 000001 I2C Init
30 000001 input parameter:E:00H for 100k;40H for 400
K
31 000001 output parameter:NO
32 000001 ****************************************************
**********************
***/
33 000001 I2C_Init:
34 000001 7B LD A,E
35 000002 32.... LD (I2CSPEED),A //I2C SP
EED
36 000005
37 000005 // LD A,00H
38 000005 // OUT (MFPSEL),A
39 000005 DBEE IN A,(MFPSEL)
40 000007 F620 OR 20H
41 000009 E63F AND 3FH //by jmzhang f
rom 80h->20h
42 00000B D3EE OUT (MFPSEL),A //Mode c
hange to
F2
43 00000D
44 00000D 3A.... LD A,(I2CSPEED)
45 000010 C680 ADD A,80H
46 000012 D37A OUT (I2CCTL),A //Enable
I2C;Dis
able IRQ
47 000014 C9 RET
48 000015
49 000015 /***************************************************
**************************
50 000015 I2C Start
51 000015 input parameter:E:slave address;
52 000015 output parameter:A:01-sucess;00-fail.
53 000015 ****************************************************
**************************/
54 000015 I2C_Start:
55 000015 D5 PUSH DE
56 000016 7B LD A,E
57 000017 D371 OUT (I2CADDR),A //Sla
ve address
58 000019
59 000019 3A.... LD A,(I2CSPEED)
60 00001C C686 ADD A,86H
61 00001E D37A OUT (I2CCTL),A //Sta
rt condition
62 000020
63 000020 CD.... CALL LWRD Trans_complete //Jud
ge address tansmit complete
64 000023
65 000023 D1 POP DE
66 000024 C9 RET
67 000025
68 000025 /***************************************************
**************************
69 000025 I2C Write One Frame
70 000025 input parameter:DE:Sendbuffer address
71 000025 C:byte length
72 000025 output parameter:A:01-sucess;00-fail.
73 000025 ****************************************************
*************************/
74 000025 //I2C_Write:
75 000025 // PUSH BC
76 000025 // PUSH DE
77 000025 //
78 000025 // LD L,E
79 000025 // LD H,D
80 000025 // LD B,C
81 000025 //I2C_Write_loop:
82 000025 // LD A,(HL)
83 000025 // OUT (I2CDAT),A
84 000025 // LD A,(I2CSPEED)
85 000025 // ADD A,82H
86 000025 // //LD A,82H+I2Cmode
87 000025 // OUT (I2CCTL),A
//release i2c;Must need!!!
88 000025 //
89 000025 // CALL LWRD Trans_complete
//Judge address tansmit complete?
90 000025 // CP 00H
91 000025 // JR Z,I2C_Write_exit
92 000025 //
93 000025 // INC HL
94 000025 //
95 000025 // DJNZ I2C_Write_loop
96 000025 //
97 000025 // LD A,01H
98 000025 //I2C_Write_exit:
99 000025 // POP DE
100 000025 // POP BC
101 000025 // RET
102 000025
103 000025 /***************************************************
**************************
104 000025 I2C Write One Byte
105 000025 input parameter:E:Write data.
106 000025 C:02H-Stop;01H-Restart;els
e send one b
yte.
107 000025 output parameter:A:1-success;0:fail.
108 000025 ****************************************************
*************************/
109 000025 I2C_Writeonebyte:
110 000025 C5 PUSH BC
111 000026 D5 PUSH DE
112 000027
113 000027 7B LD A,E
114 000028 D37C OUT (I2CDAT),A
115 00002A
116 00002A 79 LD A,C
117 00002B FE01 CP 01H
118 00002D 2811 JR Z,Wr_Send_Restart
119 00002F FE02 CP 02H
120 000031 281E JR Z,Wr_Send_Stop
121 000033
122 000033 3A.... LD A,(I2CSPEED) //
send one byte
123 000036 C682 ADD A,82H
124 000038 D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
125 00003A
126 00003A CD.... CALL LWRD Trans_complete
127 00003D
128 00003D C3.... JP I2C_Writeonebyte_exit
129 000040
130 000040 Wr_Send_Restart:
131 000040 CD.... CALL LWRD I2C_Restart //S
end Restart & the last data
132 000043 CD.... CALL LWRD Trans_complete
133 000046
134 000046 3A.... LD A,(I2CSPEED)
135 000049 C682 ADD A,82H
136 00004B D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -