📄 i2c.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL2
Sun Feb 22 17:11:19 2009
1 processor 16F877A
2 opt pw 79
3 psect __Z49231UD_,global,delta=1
4 psect text0,local,class=CODE,delta=2
5 psect text6,local,class=CODE,delta=2
6 psect text10,local,class=CODE,delta=2
7 psect rbit_0,global,bit,class=BANK0,space=1,de
+ lta=1
8 psect rbss_0,global,class=BANK0,space=1,delta=
+ 1
9 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19 0000
20
21 psect __Z49231UD_
22 0000 _delay$delay_time set ?_delay
23
24 psect text0
25 072A _delay
26 ; _i assigned to ?a_delay+0
27 0000 _delay$i set ?a_delay
28 ;I2C.C: 21: unsigned char i;
29 072A 2F2F goto l2
30 072B l3
31 ;I2C.C: 23: {
32 072B 01A2 clrf ?a_delay
33 072C l5
34 ;I2C.C: 25: {
35 ;I2C.C: 26: }
36 072C 0AA2 incf ?a_delay
37 072D 0F22 incfsz ?a_delay,w
38 072E 2F2C goto l5
39 072F l2
40 ;I2C.C: 27: }
41 072F 1283 bcf 3,5
42 0730 1303 bcf 3,6 ;carry unused
43 0731 0822 movf ?_delay,w
44 0732 1903 btfsc 3,2
45 0733 03A3 decf ?_delay+1
46 0734 03A2 decf ?_delay
47 0735 0A22 incf ?_delay,w
48 0736 1903 btfsc 3,2
49 0737 0A23 incf ?_delay+1,w
50 0738 1903 btfsc 3,2
51 0739 0008 return
52 073A 2F2B goto l3
53
54 psect text6
55 073B _lcd_disp
56 ; _adr assigned to ?a_lcd_disp+0
57 0000 _lcd_disp$adr set ?a_lcd_disp
58 ;_adr stored from w
59 073B 0183 clrf 3 ;select bank 0
60 073C 00A3 movwf ?a_lcd_disp
61 ;I2C.C: 138: lcd_command_writedata(0x00,adr);
62 073D 00A4 movwf ?_lcd_command_writedata
63 073E 3000 movlw 0
64 073F 27BB fcall _lcd_command_writedata
65 ;I2C.C: 139: lcd_command_writedata(0xff,disp_da
+ ta);
66 0740 0822 movf ?_lcd_disp,w
67 0741 00A4 movwf ?_lcd_command_writedata
68 0742 30FF movlw -1
69 0743 2FBB ljmp _lcd_command_writedata
70 ;I2C.C: 71: unsigned char i2c_receive(void)
71 ;I2C.C: 72: {
72 0744 _i2c_receive
73 ; _temp assigned to ?a_i2c_receive+0
74 0000 _i2c_receive$temp set ?a_i2c_receive
75 ; _i assigned to ?a_i2c_receive+1
76 0000 _i2c_receive$i set ?a_i2c_receive+1
77 ;I2C.C: 73: unsigned char temp;
78 0744 1683 bsf 3,5
79 0745 1303 bcf 3,6 ;carry unused
80 0746 1411 bsf 17,0
81 ;I2C.C: 76: for (i = 2; -- i;)
82 0747 3002 movlw 2
83 0748 1283 bcf 3,5
84 0749 00A3 movwf ?a_i2c_receive+1
85 074A l33
86 ;I2C.C: 78: }
87 074A 0BA3 decfsz ?a_i2c_receive+1
88 074B 2F4A goto l33
89 ;I2C.C: 79: while (SSPIF == 0);
90 074C l34
91 074C 1D8C btfss 12,3
92 074D 2F4C goto l34
93 ;I2C.C: 80: SSPIF = 0;
94 074E 118C bcf 12,3
95 ;I2C.C: 81: SSPBUF = 0xa0;
96 074F 30A0 movlw -96
97 0750 0093 movwf 19 ;volatile
98 ;I2C.C: 82: while (SSPIF == 0);
99 0751 l37
100 0751 1D8C btfss 12,3
101 0752 2F51 goto l37
102 ;I2C.C: 83: SSPIF = 0;
103 0753 118C bcf 12,3
104 ;I2C.C: 84: SSPBUF = 0x00;
105 0754 0193 clrf 19 ;volatile
106 ;I2C.C: 85: while (SSPIF == 0);
107 0755 l40
108 0755 1D8C btfss 12,3
109 0756 2F55 goto l40
110 ;I2C.C: 86: SSPIF = 0;
111 0757 118C bcf 12,3
112 0758 l45
113 ;I2C.C: 87: do
114 ;I2C.C: 88: {
115 0758 1683 bsf 3,5
116 0759 1491 bsf 17,1
117 ;I2C.C: 90: }
118 075A 1283 bcf 3,5
119 075B 1D8C btfss 12,3
120 075C 2F58 goto l45
121 ;I2C.C: 92: SSPIF = 0;
122 075D 118C bcf 12,3
123 ;I2C.C: 93: SSPBUF = 0xa1;
124 075E 30A1 movlw -95
125 075F 0093 movwf 19 ;volatile
126 ;I2C.C: 94: while (SSPIF == 0);
127 0760 l46
128 0760 1D8C btfss 12,3
129 0761 2F60 goto l46
130 ;I2C.C: 95: SSPIF = 0;
131 0762 118C bcf 12,3
132 ;I2C.C: 96: while (SSPIF == 0);
133 0763 l49
134 0763 1D8C btfss 12,3
135 0764 2F63 goto l49
136 ;I2C.C: 97: temp = SSPBUF;
137 0765 0813 movf 19,w ;volatile
138 0766 00A2 movwf ?a_i2c_receive
139 ;I2C.C: 98: SSPIF = 0;
140 0767 118C bcf 12,3
141 ;I2C.C: 99: PEN = 1;
142 0768 1683 bsf 3,5
143 0769 1511 bsf 17,2
144 ;I2C.C: 100: while (SSPIF == 0);
145 076A l52
146 076A 1283 bcf 3,5
147 076B 1D8C btfss 12,3
148 076C 2F6A goto l52
149 ;I2C.C: 101: SSPIF = 0;
150 076D 118C bcf 12,3
151 ;I2C.C: 102: return temp;
152 076E 0822 movf ?a_i2c_receive,w
153 ;I2C.C: 103: }
154 076F 0008 return
155 ;I2C.C: 45: void i2c_send(unsigned char data)
156 ;I2C.C: 46: {
157 0770 _i2c_send
158 ; _data assigned to ?a_i2c_send+0
159 0000 _i2c_send$data set ?a_i2c_send
160 ; _i assigned to ?a_i2c_send+1
161 0000 _i2c_send$i set ?a_i2c_send+1
162 ;_data stored from w
163 0770 0183 clrf 3 ;select bank 0
164 0771 00A2 movwf ?a_i2c_send
165 ;I2C.C: 47: unsigned char i;
166 0772 1683 bsf 3,5
167 0773 1411 bsf 17,0
168 ;I2C.C: 49: for (i = 2; -- i;)
169 0774 3002 movlw 2
170 0775 1283 bcf 3,5
171 0776 00A3 movwf ?a_i2c_send+1
172 0777 l13
173 ;I2C.C: 51: }
174 0777 0BA3 decfsz ?a_i2c_send+1
175 0778 2F77 goto l13
176 0779 l16
177 ;I2C.C: 52: do
178 ;I2C.C: 53: {
179 0779 1683 bsf 3,5
180 077A 1491 bsf 17,1
181 ;I2C.C: 55: }
182 077B 1283 bcf 3,5
183 077C 1D8C btfss 12,3
184 077D 2F79 goto l16
185 ;I2C.C: 57: SSPIF = 0;
186 077E 118C bcf 12,3
187 ;I2C.C: 58: SSPBUF = 0xa0;
188 077F 30A0 movlw -96
189 0780 0093 movwf 19 ;volatile
190 ;I2C.C: 59: while (SSPIF == 0);
191 0781 l17
192 0781 1D8C btfss 12,3
193 0782 2F81 goto l17
194 ;I2C.C: 60: SSPIF = 0;
195 0783 118C bcf 12,3
196 ;I2C.C: 61: SSPBUF = 0x00;
197 0784 0193 clrf 19 ;volatile
198 ;I2C.C: 62: while (SSPIF == 0);
199 0785 l20
200 0785 1D8C btfss 12,3
201 0786 2F85 goto l20
202 ;I2C.C: 63: SSPIF = 0;
203 0787 118C bcf 12,3
204 ;I2C.C: 64: SSPBUF = data;
205 0788 0822 movf ?a_i2c_send,w
206 0789 0093 movwf 19 ;volatile
207 ;I2C.C: 65: while (SSPIF == 0);
208 078A l23
209 078A 1D8C btfss 12,3
210 078B 2F8A goto l23
211 ;I2C.C: 66: SSPIF = 0;
212 078C 118C bcf 12,3
213 ;I2C.C: 67: PEN = 1;
214 078D 1683 bsf 3,5
215 078E 1511 bsf 17,2
216 ;I2C.C: 68: while (SSPIF == 0);
217 078F l26
218 078F 1283 bcf 3,5
219 0790 1D8C btfss 12,3
220 0791 2F8F goto l26
221 ;I2C.C: 69: SSPIF = 0;
222 0792 118C bcf 12,3
223 ;I2C.C: 70: }
224 0793 0008 return
225 ;I2C.C: 30: void i2c_init(void)
226 ;I2C.C: 31: {
227 0794 _i2c_init
228 ;I2C.C: 32: INTCON = 0x00;
229 0794 018B clrf 11 ;volatile
230 ;I2C.C: 33: SSPSTAT = 0x80;
231 0795 3080 movlw -128
232 0796 1683 bsf 3,5
233 0797 1303 bcf 3,6 ;carry unused
234 0798 0094 movwf 20 ;volatile
235 ;I2C.C: 34: SSPCON = 0x08;
236 0799 3008 movlw 8
237 079A 1283 bcf 3,5
238 079B 0094 movwf 20 ;volatile
239 ;I2C.C: 35: SSPCON2 = 0x00;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -