📄 i2c_driver.lst
字号:
################################################################################
# #
# IAR Systems Z80/64180 Assembler V3.03A/WIN 25/Dec/106 17:01:39 #
# #
# Target option = z80 #
# Source file = d:\case_i_d90f\ap\ap_radio\philips\i2c_driver.msa #
# List file = d:\case_i_d90f\ap\ap_radio\list\i2c_driver.lst #
# Object file = d:\case_i_d90f\ap\ap_radio\obj\i2c_driver.r01 #
# Command line = -v0 -OD:\case_i_d90f\ap\ap_radio\Obj\ -s+ -M<> #
# -w+ -r -LD:\case_i_d90f\ap\ap_radio\List\ -t8 #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\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 3E20 LD A,20H //by jmzhan
g from 80h->20h
40 000007 D3EE OUT (MFPSEL),A //Mode c
hange to
F2
41 000009
42 000009 3A.... LD A,(I2CSPEED)
43 00000C C680 ADD A,80H
44 00000E D37A OUT (I2CCTL),A //Enable
I2C;Dis
able IRQ
45 000010 C9 RET
46 000011
47 000011 /***************************************************
**************************
48 000011 I2C Start
49 000011 input parameter:E:slave address;
50 000011 output parameter:A:01-sucess;00-fail.
51 000011 ****************************************************
**************************/
52 000011 I2C_Start:
53 000011 D5 PUSH DE
54 000012 7B LD A,E
55 000013 D371 OUT (I2CADDR),A //Sla
ve address
56 000015
57 000015 3A.... LD A,(I2CSPEED)
58 000018 C686 ADD A,86H
59 00001A D37A OUT (I2CCTL),A //Sta
rt condition
60 00001C
61 00001C CD.... CALL LWRD Trans_complete //Jud
ge address tansmit complete
62 00001F
63 00001F D1 POP DE
64 000020 C9 RET
65 000021
66 000021 /***************************************************
**************************
67 000021 I2C Write One Frame
68 000021 input parameter:DE:Sendbuffer address
69 000021 C:byte length
70 000021 output parameter:A:01-sucess;00-fail.
71 000021 ****************************************************
*************************/
72 000021 //I2C_Write:
73 000021 // PUSH BC
74 000021 // PUSH DE
75 000021 //
76 000021 // LD L,E
77 000021 // LD H,D
78 000021 // LD B,C
79 000021 //I2C_Write_loop:
80 000021 // LD A,(HL)
81 000021 // OUT (I2CDAT),A
82 000021 // LD A,(I2CSPEED)
83 000021 // ADD A,82H
84 000021 // //LD A,82H+I2Cmode
85 000021 // OUT (I2CCTL),A
//release i2c;Must need!!!
86 000021 //
87 000021 // CALL LWRD Trans_complete
//Judge address tansmit complete?
88 000021 // CP 00H
89 000021 // JR Z,I2C_Write_exit
90 000021 //
91 000021 // INC HL
92 000021 //
93 000021 // DJNZ I2C_Write_loop
94 000021 //
95 000021 // LD A,01H
96 000021 //I2C_Write_exit:
97 000021 // POP DE
98 000021 // POP BC
99 000021 // RET
100 000021
101 000021 /***************************************************
**************************
102 000021 I2C Write One Byte
103 000021 input parameter:E:Write data.
104 000021 C:02H-Stop;01H-Restart;els
e send one b
yte.
105 000021 output parameter:A:1-success;0:fail.
106 000021 ****************************************************
*************************/
107 000021 I2C_Writeonebyte:
108 000021 C5 PUSH BC
109 000022 D5 PUSH DE
110 000023
111 000023 7B LD A,E
112 000024 D37C OUT (I2CDAT),A
113 000026
114 000026 79 LD A,C
115 000027 FE01 CP 01H
116 000029 2811 JR Z,Wr_Send_Restart
117 00002B FE02 CP 02H
118 00002D 281E JR Z,Wr_Send_Stop
119 00002F
120 00002F 3A.... LD A,(I2CSPEED) //
send one byte
121 000032 C682 ADD A,82H
122 000034 D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
123 000036
124 000036 CD.... CALL LWRD Trans_complete
125 000039
126 000039 C3.... JP I2C_Writeonebyte_exit
127 00003C
128 00003C Wr_Send_Restart:
129 00003C CD.... CALL LWRD I2C_Restart //S
end Restart & the last data
130 00003F CD.... CALL LWRD Trans_complete
131 000042
132 000042 3A.... LD A,(I2CSPEED)
133 000045 C682 ADD A,82H
134 000047 D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
135 000049
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -