Go to most recent revision | Blame | Last modification | View Log | RSS feed
Microchip Technology PIC LITE Macro Assembler V1.20 build 52243
Sun Jan 26 16:29:58 2014
Microchip Technology Omniscient Code Generator (Lite mode) build 52243
1 processor 16F1829
2 opt pw 120
3 opt lm
4 psect idataBANK0,global,class=CODE,delta=2
5 psect nvCOMMON,global,class=COMMON,space=1,delta=1
6 psect nvBANK0,global,class=BANK0,space=1,delta=1
7 psect cinit,global,class=CODE,merge=1,delta=2
8 psect dataBANK0,global,class=BANK0,space=1,delta=1
9 psect inittext,global,class=CODE,delta=2
10 psect cstackBANK2,global,class=BANK2,space=1,delta=1
11 psect cstackBANK1,global,class=BANK1,space=1,delta=1
12 psect cstackCOMMON,global,class=COMMON,space=1,delta=1
13 psect cstackBANK0,global,class=BANK0,space=1,delta=1
14 psect maintext,global,class=CODE,merge=1,split=1,delta=2
15 psect text1,local,class=CODE,merge=1,delta=2
16 psect text2,local,class=CODE,merge=1,delta=2
17 psect text3,local,class=CODE,merge=1,delta=2
18 psect text4,local,class=CODE,merge=1,delta=2
19 psect text5,local,class=CODE,merge=1,delta=2
20 psect text6,local,class=CODE,merge=1,delta=2
21 psect text7,local,class=CODE,merge=1,delta=2
22 psect text8,local,class=CODE,merge=1,delta=2
23 psect text9,local,class=CODE,merge=1,delta=2
24 psect text10,local,class=CODE,merge=1,delta=2
25 psect text11,local,class=CODE,merge=1,delta=2
26 psect text12,local,class=CODE,merge=1,delta=2
27 psect text13,local,class=CODE,merge=1,delta=2
28 psect text14,local,class=CODE,merge=1,delta=2
29 psect text15,local,class=CODE,merge=1,delta=2
30 psect text16,local,class=CODE,merge=1,delta=2
31 psect intentry,global,class=CODE,delta=2
32 psect text18,local,class=CODE,merge=1,delta=2
33 psect text19,local,class=CODE,merge=1,delta=2
34 psect text20,local,class=CODE,merge=1,delta=2
35 psect text21,local,class=CODE,merge=1,delta=2
36 psect text22,local,class=CODE,merge=1,delta=2
37 psect text23,local,class=CODE,merge=1,delta=2
38 psect text24,local,class=CODE,merge=1,delta=2
39 psect text25,local,class=CODE,merge=1,delta=2
40 dabs 1,0x7E,2
41 0000 ;#
42 0001 ;#
43 0002 ;#
44 0003 ;#
45 0004 ;#
46 0005 ;#
47 0006 ;#
48 0007 ;#
49 0008 ;#
50 0009 ;#
51 000A ;#
52 000B ;#
53 000C ;#
54 000D ;#
55 000E ;#
56 0011 ;#
57 0012 ;#
58 0013 ;#
59 0014 ;#
60 0015 ;#
61 0016 ;#
62 0016 ;#
63 0017 ;#
64 0018 ;#
65 0019 ;#
66 001A ;#
67 001B ;#
68 001C ;#
69 001E ;#
70 001F ;#
71 008C ;#
72 008D ;#
73 008E ;#
74 0091 ;#
75 0092 ;#
76 0093 ;#
77 0094 ;#
78 0095 ;#
79 0096 ;#
80 0097 ;#
81 0098 ;#
82 0099 ;#
83 009A ;#
84 009B ;#
85 009B ;#
86 009C ;#
87 009D ;#
88 009E ;#
89 010C ;#
90 010D ;#
91 010E ;#
92 0111 ;#
93 0112 ;#
94 0113 ;#
95 0114 ;#
96 0115 ;#
97 0116 ;#
98 0117 ;#
99 0118 ;#
100 0119 ;#
101 011A ;#
102 011B ;#
103 011D ;#
104 011E ;#
105 018C ;#
106 018D ;#
107 018E ;#
108 0191 ;#
109 0191 ;#
110 0192 ;#
111 0193 ;#
112 0193 ;#
113 0193 ;#
114 0194 ;#
115 0195 ;#
116 0196 ;#
117 0199 ;#
118 019A ;#
119 019B ;#
120 019B ;#
121 019C ;#
122 019D ;#
123 019E ;#
124 019F ;#
125 020C ;#
126 020D ;#
127 020E ;#
128 0211 ;#
129 0211 ;#
130 0212 ;#
131 0212 ;#
132 0213 ;#
133 0213 ;#
134 0214 ;#
135 0214 ;#
136 0215 ;#
137 0215 ;#
138 0215 ;#
139 0216 ;#
140 0216 ;#
141 0217 ;#
142 0217 ;#
143 0219 ;#
144 021A ;#
145 021B ;#
146 021C ;#
147 021D ;#
148 021E ;#
149 021F ;#
150 0291 ;#
151 0292 ;#
152 0293 ;#
153 0294 ;#
154 0295 ;#
155 0295 ;#
156 0296 ;#
157 0298 ;#
158 0299 ;#
159 029A ;#
160 029B ;#
161 029C ;#
162 029D ;#
163 029E ;#
164 0311 ;#
165 0312 ;#
166 0313 ;#
167 0318 ;#
168 0319 ;#
169 031A ;#
170 038C ;#
171 038D ;#
172 038E ;#
173 0391 ;#
174 0392 ;#
175 0393 ;#
176 0394 ;#
177 0395 ;#
178 0396 ;#
179 039A ;#
180 039C ;#
181 039D ;#
182 039E ;#
183 039F ;#
184 0415 ;#
185 0416 ;#
186 0417 ;#
187 041C ;#
188 041D ;#
189 041E ;#
190 0FE4 ;#
191 0FE5 ;#
192 0FE6 ;#
193 0FE7 ;#
194 0FE8 ;#
195 0FE9 ;#
196 0FEA ;#
197 0FEB ;#
198 0FED ;#
199 0FEE ;#
200 0FEF ;#
201 0000 ;#
202 0001 ;#
203 0002 ;#
204 0003 ;#
205 0004 ;#
206 0005 ;#
207 0006 ;#
208 0007 ;#
209 0008 ;#
210 0009 ;#
211 000A ;#
212 000B ;#
213 000C ;#
214 000D ;#
215 000E ;#
216 0011 ;#
217 0012 ;#
218 0013 ;#
219 0014 ;#
220 0015 ;#
221 0016 ;#
222 0016 ;#
223 0017 ;#
224 0018 ;#
225 0019 ;#
226 001A ;#
227 001B ;#
228 001C ;#
229 001E ;#
230 001F ;#
231 008C ;#
232 008D ;#
233 008E ;#
234 0091 ;#
235 0092 ;#
236 0093 ;#
237 0094 ;#
238 0095 ;#
239 0096 ;#
240 0097 ;#
241 0098 ;#
242 0099 ;#
243 009A ;#
244 009B ;#
245 009B ;#
246 009C ;#
247 009D ;#
248 009E ;#
249 010C ;#
250 010D ;#
251 010E ;#
252 0111 ;#
253 0112 ;#
254 0113 ;#
255 0114 ;#
256 0115 ;#
257 0116 ;#
258 0117 ;#
259 0118 ;#
260 0119 ;#
261 011A ;#
262 011B ;#
263 011D ;#
264 011E ;#
265 018C ;#
266 018D ;#
267 018E ;#
268 0191 ;#
269 0191 ;#
270 0192 ;#
271 0193 ;#
272 0193 ;#
273 0193 ;#
274 0194 ;#
275 0195 ;#
276 0196 ;#
277 0199 ;#
278 019A ;#
279 019B ;#
280 019B ;#
281 019C ;#
282 019D ;#
283 019E ;#
284 019F ;#
285 020C ;#
286 020D ;#
287 020E ;#
288 0211 ;#
289 0211 ;#
290 0212 ;#
291 0212 ;#
292 0213 ;#
293 0213 ;#
294 0214 ;#
295 0214 ;#
296 0215 ;#
297 0215 ;#
298 0215 ;#
299 0216 ;#
300 0216 ;#
301 0217 ;#
302 0217 ;#
303 0219 ;#
304 021A ;#
305 021B ;#
306 021C ;#
307 021D ;#
308 021E ;#
309 021F ;#
310 0291 ;#
311 0292 ;#
312 0293 ;#
313 0294 ;#
314 0295 ;#
315 0295 ;#
316 0296 ;#
317 0298 ;#
318 0299 ;#
319 029A ;#
320 029B ;#
321 029C ;#
322 029D ;#
323 029E ;#
324 0311 ;#
325 0312 ;#
326 0313 ;#
327 0318 ;#
328 0319 ;#
329 031A ;#
330 038C ;#
331 038D ;#
332 038E ;#
333 0391 ;#
334 0392 ;#
335 0393 ;#
336 0394 ;#
337 0395 ;#
338 0396 ;#
339 039A ;#
340 039C ;#
341 039D ;#
342 039E ;#
343 039F ;#
344 0415 ;#
345 0416 ;#
346 0417 ;#
347 041C ;#
348 041D ;#
349 041E ;#
350 0FE4 ;#
351 0FE5 ;#
352 0FE6 ;#
353 0FE7 ;#
354 0FE8 ;#
355 0FE9 ;#
356 0FEA ;#
357 0FEB ;#
358 0FED ;#
359 0FEE ;#
360 0FEF ;#
361 0000 ;#
362 0001 ;#
363 0002 ;#
364 0003 ;#
365 0004 ;#
366 0005 ;#
367 0006 ;#
368 0007 ;#
369 0008 ;#
370 0009 ;#
371 000A ;#
372 000B ;#
373 000C ;#
374 000D ;#
375 000E ;#
376 0011 ;#
377 0012 ;#
378 0013 ;#
379 0014 ;#
380 0015 ;#
381 0016 ;#
382 0016 ;#
383 0017 ;#
384 0018 ;#
385 0019 ;#
386 001A ;#
387 001B ;#
388 001C ;#
389 001E ;#
390 001F ;#
391 008C ;#
392 008D ;#
393 008E ;#
394 0091 ;#
395 0092 ;#
396 0093 ;#
397 0094 ;#
398 0095 ;#
399 0096 ;#
400 0097 ;#
401 0098 ;#
402 0099 ;#
403 009A ;#
404 009B ;#
405 009B ;#
406 009C ;#
407 009D ;#
408 009E ;#
409 010C ;#
410 010D ;#
411 010E ;#
412 0111 ;#
413 0112 ;#
414 0113 ;#
415 0114 ;#
416 0115 ;#
417 0116 ;#
418 0117 ;#
419 0118 ;#
420 0119 ;#
421 011A ;#
422 011B ;#
423 011D ;#
424 011E ;#
425 018C ;#
426 018D ;#
427 018E ;#
428 0191 ;#
429 0191 ;#
430 0192 ;#
431 0193 ;#
432 0193 ;#
433 0193 ;#
434 0194 ;#
435 0195 ;#
436 0196 ;#
437 0199 ;#
438 019A ;#
439 019B ;#
440 019B ;#
441 019C ;#
442 019D ;#
443 019E ;#
444 019F ;#
445 020C ;#
446 020D ;#
447 020E ;#
448 0211 ;#
449 0211 ;#
450 0212 ;#
451 0212 ;#
452 0213 ;#
453 0213 ;#
454 0214 ;#
455 0214 ;#
456 0215 ;#
457 0215 ;#
458 0215 ;#
459 0216 ;#
460 0216 ;#
461 0217 ;#
462 0217 ;#
463 0219 ;#
464 021A ;#
465 021B ;#
466 021C ;#
467 021D ;#
468 021E ;#
469 021F ;#
470 0291 ;#
471 0292 ;#
472 0293 ;#
473 0294 ;#
474 0295 ;#
475 0295 ;#
476 0296 ;#
477 0298 ;#
478 0299 ;#
479 029A ;#
480 029B ;#
481 029C ;#
482 029D ;#
483 029E ;#
484 0311 ;#
485 0312 ;#
486 0313 ;#
487 0318 ;#
488 0319 ;#
489 031A ;#
490 038C ;#
491 038D ;#
492 038E ;#
493 0391 ;#
494 0392 ;#
495 0393 ;#
496 0394 ;#
497 0395 ;#
498 0396 ;#
499 039A ;#
500 039C ;#
501 039D ;#
502 039E ;#
503 039F ;#
504 0415 ;#
505 0416 ;#
506 0417 ;#
507 041C ;#
508 041D ;#
509 041E ;#
510 0FE4 ;#
511 0FE5 ;#
512 0FE6 ;#
513 0FE7 ;#
514 0FE8 ;#
515 0FE9 ;#
516 0FEA ;#
517 0FEB ;#
518 0FED ;#
519 0FEE ;#
520 0FEF ;#
521 0000 ;#
522 0001 ;#
523 0002 ;#
524 0003 ;#
525 0004 ;#
526 0005 ;#
527 0006 ;#
528 0007 ;#
529 0008 ;#
530 0009 ;#
531 000A ;#
532 000B ;#
533 000C ;#
534 000D ;#
535 000E ;#
536 0011 ;#
537 0012 ;#
538 0013 ;#
539 0014 ;#
540 0015 ;#
541 0016 ;#
542 0016 ;#
543 0017 ;#
544 0018 ;#
545 0019 ;#
546 001A ;#
547 001B ;#
548 001C ;#
549 001E ;#
550 001F ;#
551 008C ;#
552 008D ;#
553 008E ;#
554 0091 ;#
555 0092 ;#
556 0093 ;#
557 0094 ;#
558 0095 ;#
559 0096 ;#
560 0097 ;#
561 0098 ;#
562 0099 ;#
563 009A ;#
564 009B ;#
565 009B ;#
566 009C ;#
567 009D ;#
568 009E ;#
569 010C ;#
570 010D ;#
571 010E ;#
572 0111 ;#
573 0112 ;#
574 0113 ;#
575 0114 ;#
576 0115 ;#
577 0116 ;#
578 0117 ;#
579 0118 ;#
580 0119 ;#
581 011A ;#
582 011B ;#
583 011D ;#
584 011E ;#
585 018C ;#
586 018D ;#
587 018E ;#
588 0191 ;#
589 0191 ;#
590 0192 ;#
591 0193 ;#
592 0193 ;#
593 0193 ;#
594 0194 ;#
595 0195 ;#
596 0196 ;#
597 0199 ;#
598 019A ;#
599 019B ;#
600 019B ;#
601 019C ;#
602 019D ;#
603 019E ;#
604 019F ;#
605 020C ;#
606 020D ;#
607 020E ;#
608 0211 ;#
609 0211 ;#
610 0212 ;#
611 0212 ;#
612 0213 ;#
613 0213 ;#
614 0214 ;#
615 0214 ;#
616 0215 ;#
617 0215 ;#
618 0215 ;#
619 0216 ;#
620 0216 ;#
621 0217 ;#
622 0217 ;#
623 0219 ;#
624 021A ;#
625 021B ;#
626 021C ;#
627 021D ;#
628 021E ;#
629 021F ;#
630 0291 ;#
631 0292 ;#
632 0293 ;#
633 0294 ;#
634 0295 ;#
635 0295 ;#
636 0296 ;#
637 0298 ;#
638 0299 ;#
639 029A ;#
640 029B ;#
641 029C ;#
642 029D ;#
643 029E ;#
644 0311 ;#
645 0312 ;#
646 0313 ;#
647 0318 ;#
648 0319 ;#
649 031A ;#
650 038C ;#
651 038D ;#
652 038E ;#
653 0391 ;#
654 0392 ;#
655 0393 ;#
656 0394 ;#
657 0395 ;#
658 0396 ;#
659 039A ;#
660 039C ;#
661 039D ;#
662 039E ;#
663 039F ;#
664 0415 ;#
665 0416 ;#
666 0417 ;#
667 041C ;#
668 041D ;#
669 041E ;#
670 0FE4 ;#
671 0FE5 ;#
672 0FE6 ;#
673 0FE7 ;#
674 0FE8 ;#
675 0FE9 ;#
676 0FEA ;#
677 0FEB ;#
678 0FED ;#
679 0FEE ;#
680 0FEF ;#
681 0000 ;#
682 0001 ;#
683 0002 ;#
684 0003 ;#
685 0004 ;#
686 0005 ;#
687 0006 ;#
688 0007 ;#
689 0008 ;#
690 0009 ;#
691 000A ;#
692 000B ;#
693 000C ;#
694 000D ;#
695 000E ;#
696 0011 ;#
697 0012 ;#
698 0013 ;#
699 0014 ;#
700 0015 ;#
701 0016 ;#
702 0016 ;#
703 0017 ;#
704 0018 ;#
705 0019 ;#
706 001A ;#
707 001B ;#
708 001C ;#
709 001E ;#
710 001F ;#
711 008C ;#
712 008D ;#
713 008E ;#
714 0091 ;#
715 0092 ;#
716 0093 ;#
717 0094 ;#
718 0095 ;#
719 0096 ;#
720 0097 ;#
721 0098 ;#
722 0099 ;#
723 009A ;#
724 009B ;#
725 009B ;#
726 009C ;#
727 009D ;#
728 009E ;#
729 010C ;#
730 010D ;#
731 010E ;#
732 0111 ;#
733 0112 ;#
734 0113 ;#
735 0114 ;#
736 0115 ;#
737 0116 ;#
738 0117 ;#
739 0118 ;#
740 0119 ;#
741 011A ;#
742 011B ;#
743 011D ;#
744 011E ;#
745 018C ;#
746 018D ;#
747 018E ;#
748 0191 ;#
749 0191 ;#
750 0192 ;#
751 0193 ;#
752 0193 ;#
753 0193 ;#
754 0194 ;#
755 0195 ;#
756 0196 ;#
757 0199 ;#
758 019A ;#
759 019B ;#
760 019B ;#
761 019C ;#
762 019D ;#
763 019E ;#
764 019F ;#
765 020C ;#
766 020D ;#
767 020E ;#
768 0211 ;#
769 0211 ;#
770 0212 ;#
771 0212 ;#
772 0213 ;#
773 0213 ;#
774 0214 ;#
775 0214 ;#
776 0215 ;#
777 0215 ;#
778 0215 ;#
779 0216 ;#
780 0216 ;#
781 0217 ;#
782 0217 ;#
783 0219 ;#
784 021A ;#
785 021B ;#
786 021C ;#
787 021D ;#
788 021E ;#
789 021F ;#
790 0291 ;#
791 0292 ;#
792 0293 ;#
793 0294 ;#
794 0295 ;#
795 0295 ;#
796 0296 ;#
797 0298 ;#
798 0299 ;#
799 029A ;#
800 029B ;#
801 029C ;#
802 029D ;#
803 029E ;#
804 0311 ;#
805 0312 ;#
806 0313 ;#
807 0318 ;#
808 0319 ;#
809 031A ;#
810 038C ;#
811 038D ;#
812 038E ;#
813 0391 ;#
814 0392 ;#
815 0393 ;#
816 0394 ;#
817 0395 ;#
818 0396 ;#
819 039A ;#
820 039C ;#
821 039D ;#
822 039E ;#
823 039F ;#
824 0415 ;#
825 0416 ;#
826 0417 ;#
827 041C ;#
828 041D ;#
829 041E ;#
830 0FE4 ;#
831 0FE5 ;#
832 0FE6 ;#
833 0FE7 ;#
834 0FE8 ;#
835 0FE9 ;#
836 0FEA ;#
837 0FEB ;#
838 0FED ;#
839 0FEE ;#
840 0FEF ;#
841 0000 ;#
842 0001 ;#
843 0002 ;#
844 0003 ;#
845 0004 ;#
846 0005 ;#
847 0006 ;#
848 0007 ;#
849 0008 ;#
850 0009 ;#
851 000A ;#
852 000B ;#
853 000C ;#
854 000D ;#
855 000E ;#
856 0011 ;#
857 0012 ;#
858 0013 ;#
859 0014 ;#
860 0015 ;#
861 0016 ;#
862 0016 ;#
863 0017 ;#
864 0018 ;#
865 0019 ;#
866 001A ;#
867 001B ;#
868 001C ;#
869 001E ;#
870 001F ;#
871 008C ;#
872 008D ;#
873 008E ;#
874 0091 ;#
875 0092 ;#
876 0093 ;#
877 0094 ;#
878 0095 ;#
879 0096 ;#
880 0097 ;#
881 0098 ;#
882 0099 ;#
883 009A ;#
884 009B ;#
885 009B ;#
886 009C ;#
887 009D ;#
888 009E ;#
889 010C ;#
890 010D ;#
891 010E ;#
892 0111 ;#
893 0112 ;#
894 0113 ;#
895 0114 ;#
896 0115 ;#
897 0116 ;#
898 0117 ;#
899 0118 ;#
900 0119 ;#
901 011A ;#
902 011B ;#
903 011D ;#
904 011E ;#
905 018C ;#
906 018D ;#
907 018E ;#
908 0191 ;#
909 0191 ;#
910 0192 ;#
911 0193 ;#
912 0193 ;#
913 0193 ;#
914 0194 ;#
915 0195 ;#
916 0196 ;#
917 0199 ;#
918 019A ;#
919 019B ;#
920 019B ;#
921 019C ;#
922 019D ;#
923 019E ;#
924 019F ;#
925 020C ;#
926 020D ;#
927 020E ;#
928 0211 ;#
929 0211 ;#
930 0212 ;#
931 0212 ;#
932 0213 ;#
933 0213 ;#
934 0214 ;#
935 0214 ;#
936 0215 ;#
937 0215 ;#
938 0215 ;#
939 0216 ;#
940 0216 ;#
941 0217 ;#
942 0217 ;#
943 0219 ;#
944 021A ;#
945 021B ;#
946 021C ;#
947 021D ;#
948 021E ;#
949 021F ;#
950 0291 ;#
951 0292 ;#
952 0293 ;#
953 0294 ;#
954 0295 ;#
955 0295 ;#
956 0296 ;#
957 0298 ;#
958 0299 ;#
959 029A ;#
960 029B ;#
961 029C ;#
962 029D ;#
963 029E ;#
964 0311 ;#
965 0312 ;#
966 0313 ;#
967 0318 ;#
968 0319 ;#
969 031A ;#
970 038C ;#
971 038D ;#
972 038E ;#
973 0391 ;#
974 0392 ;#
975 0393 ;#
976 0394 ;#
977 0395 ;#
978 0396 ;#
979 039A ;#
980 039C ;#
981 039D ;#
982 039E ;#
983 039F ;#
984 0415 ;#
985 0416 ;#
986 0417 ;#
987 041C ;#
988 041D ;#
989 041E ;#
990 0FE4 ;#
991 0FE5 ;#
992 0FE6 ;#
993 0FE7 ;#
994 0FE8 ;#
995 0FE9 ;#
996 0FEA ;#
997 0FEB ;#
998 0FED ;#
999 0FEE ;#
1000 0FEF ;#
1001
1002 psect idataBANK0
1003 0BB3 __pidataBANK0:
1004
1005 ;initializer for main@F3130
1006 0BB3 3400 retlw 0
1007 0BB4 3400 retlw 0
1008 0BB5 3400 retlw 0
1009 0BB6 3400 retlw 0
1010 0BB7 3400 retlw 0
1011 0BB8 3400 retlw 0
1012 0BB9 3400 retlw 0
1013 0BBA 3400 retlw 0
1014 0BBB 3410 retlw 16
1015 0BBC 3410 retlw 16
1016 0BBD 3410 retlw 16
1017 0BBE 3410 retlw 16
1018 0BBF 3410 retlw 16
1019 0BC0 3410 retlw 16
1020 0BC1 3410 retlw 16
1021 0BC2 3410 retlw 16
1022
1023 ;initializer for MCP23009_Query@F3053
1024 0BC3 3409 retlw 9
1025 0BC4 3400 retlw 0
1026
1027 psect nvCOMMON
1028 0079 __pnvCOMMON:
1029 0079 _i2c_data_p:
1030 0079 ds 1
1031
1032 psect nvBANK0
1033 0069 __pnvBANK0:
1034 0069 I2C2@i2c_data_p:
1035 0069 ds 1
1036 000B _INTCONbits set 11
1037 0011 _PIR1bits set 17
1038 0014 _PIR4bits set 20
1039 0095 _OPTION_REGbits set 149
1040 0099 _OSCCONbits set 153
1041 0091 _PIE1bits set 145
1042 0094 _PIE4bits set 148
1043 008C _TRISAbits set 140
1044 008D _TRISBbits set 141
1045 008E _TRISCbits set 142
1046 010E _LATCbits set 270
1047 018C _ANSELA set 396
1048 018D _ANSELB set 397
1049 018E _ANSELC set 398
1050 0212 _SSP1ADD set 530
1051 0211 _SSP1BUF set 529
1052 0215 _SSP1CON1 set 533
1053 0215 _SSP1CON1bits set 533
1054 0216 _SSP1CON2 set 534
1055 0216 _SSP1CON2bits set 534
1056 0214 _SSP1STAT set 532
1057 0214 _SSP1STATbits set 532
1058 021A _SSP2ADD set 538
1059 0219 _SSP2BUF set 537
1060 021D _SSP2CON1 set 541
1061 021D _SSP2CON1bits set 541
1062 021E _SSP2CON2 set 542
1063 021E _SSP2CON2bits set 542
1064 021C _SSP2STAT set 540
1065 021C _SSP2STATbits set 540
1066 0212 _SSPADD set 530
1067 020E _WPUCbits set 526
1068
1069 ; #config settings
1070 0000
1071 psect cinit
1072 0BA5 start_initialization:
1073 0BA5 __initialization:
1074
1075 ; Initialize objects allocated to BANK0
1076 0BA5 30B3 movlw low __pidataBANK0
1077 0BA6 0084 movwf 4
1078 0BA7 308B movlw (high __pidataBANK0)| (0+128)
1079 0BA8 0085 movwf 5
1080 0BA9 3057 movlw low __pdataBANK0
1081 0BAA 0086 movwf 6
1082 0BAB 3000 movlw high __pdataBANK0
1083 0BAC 0087 movwf 7
1084 0BAD 3012 movlw 18
1085 0BAE 318B 238B fcall init_ram
1086 0BB0 end_of_initialization:
1087 ;End of C runtime variable initialization code
1088
1089 0BB0 __end_of__initialization:
1090 0BB0 0020 movlb 0
1091 0BB1 3186 2EDC ljmp _main ;jump to C main() function
1092
1093 psect dataBANK0
1094 0057 __pdataBANK0:
1095 0057 main@F3130:
1096 0057 ds 16
1097 0067 MCP23009_Query@F3053:
1098 0067 ds 2
1099
1100 psect inittext
1101 0B8B init_ram:
1102 0B8B 00FE movwf 126
1103 0B8C initloop:
1104 0B8C 0012 moviw fsr0++
1105 0B8D 001E movwi fsr1++
1106 0B8E 0BFE decfsz 126,f
1107 0B8F 2B8C goto initloop
1108 0B90 3400 retlw 0
1109
1110 psect cstackBANK2
1111 0120 __pcstackBANK2:
1112 0120 main@i2c2_data:
1113
1114 ; 77 bytes @ 0x0
1115 0120 ds 77
1116
1117 psect cstackBANK1
1118 00A0 __pcstackBANK1:
1119 00A0 main@i2c1_data:
1120
1121 ; 77 bytes @ 0x0
1122 00A0 ds 77
1123
1124 psect cstackCOMMON
1125 0070 __pcstackCOMMON:
1126 0070 ?_I2C1_Init:
1127 0070 ?_I2C1_Configure_Slave:
1128 ; 0 bytes @ 0x0
1129
1130 0070 ?_I2C2_Init:
1131 ; 0 bytes @ 0x0
1132
1133 0070 ?_I2C2_Configure_Master:
1134 ; 0 bytes @ 0x0
1135
1136 0070 ?_Interrupt_Init:
1137 ; 0 bytes @ 0x0
1138
1139 0070 ?_Interrupt_Enable:
1140 ; 0 bytes @ 0x0
1141
1142 0070 ?_TLC59116_Init:
1143 ; 0 bytes @ 0x0
1144
1145 0070 ?_TLC59116_Write_All:
1146 ; 0 bytes @ 0x0
1147
1148 0070 ?_MCP23009_Init:
1149 ; 0 bytes @ 0x0
1150
1151 0070 ?_I2C1_Interrupt_Master:
1152 ; 0 bytes @ 0x0
1153
1154 0070 ??_I2C1_Interrupt_Master:
1155 ; 0 bytes @ 0x0
1156
1157 0070 ?_I2C1_Interrupt_Slave:
1158 ; 0 bytes @ 0x0
1159
1160 0070 ??_I2C1_Process_Receive:
1161 ; 0 bytes @ 0x0
1162
1163 0070 ?_I2C2_Interrupt_Handler:
1164 ; 0 bytes @ 0x0
1165
1166 0070 ?_I2C2_Interrupt_Master:
1167 ; 0 bytes @ 0x0
1168
1169 0070 ??_I2C2_Interrupt_Master:
1170 ; 0 bytes @ 0x0
1171
1172 0070 ?_I2C2_Interrupt_Slave:
1173 ; 0 bytes @ 0x0
1174
1175 0070 ??_I2C2_Process_Receive:
1176 ; 0 bytes @ 0x0
1177
1178 0070 ?_Pins_Init:
1179 ; 0 bytes @ 0x0
1180
1181 0070 ?_I2C1_Interrupt_Handler:
1182 ; 0 bytes @ 0x0
1183
1184 0070 ?_InterruptHandler:
1185 ; 0 bytes @ 0x0
1186
1187 0070 ?_MCP23009_Query:
1188 ; 0 bytes @ 0x0
1189
1190 0070 ?_I2C1_Process_Receive:
1191 ; 1 bytes @ 0x0
1192
1193 0070 ?_I2C2_Process_Receive:
1194 ; 1 bytes @ 0x0
1195
1196 0070 ?_Read_Address:
1197 ; 1 bytes @ 0x0
1198
1199 0070 ?_I2C2_Get_Status:
1200 ; 1 bytes @ 0x0
1201
1202 0070 ?_I2C2_Read_Buffer:
1203 ; 1 bytes @ 0x0
1204
1205 0070 ?_main:
1206 ; 1 bytes @ 0x0
1207
1208 0070 I2C1_Process_Receive@c:
1209 ; 2 bytes @ 0x0
1210
1211 0070 I2C2_Process_Receive@c:
1212 ; 1 bytes @ 0x0
1213
1214
1215 ; 1 bytes @ 0x0
1216 0070 ds 1
1217 0071 I2C1_Process_Receive@ret:
1218 0071 I2C2_Process_Receive@ret:
1219 ; 1 bytes @ 0x1
1220
1221
1222 ; 1 bytes @ 0x1
1223 0071 ds 1
1224 0072 ??_I2C1_Interrupt_Slave:
1225 0072 ??_I2C2_Interrupt_Slave:
1226 ; 0 bytes @ 0x2
1227
1228 0072 I2C1_Interrupt_Master@tmp:
1229 ; 0 bytes @ 0x2
1230
1231 0072 I2C2_Interrupt_Master@tmp:
1232 ; 1 bytes @ 0x2
1233
1234
1235 ; 1 bytes @ 0x2
1236 0072 ds 1
1237 0073 I2C1_Interrupt_Master@tmp_611:
1238 0073 I2C2_Interrupt_Master@tmp_923:
1239 ; 1 bytes @ 0x3
1240
1241
1242 ; 1 bytes @ 0x3
1243 0073 ds 1
1244 0074 I2C1_Interrupt_Slave@overrun_error:
1245 0074 I2C2_Interrupt_Slave@overrun_error:
1246 ; 1 bytes @ 0x4
1247
1248
1249 ; 1 bytes @ 0x4
1250 0074 ds 1
1251 0075 I2C1_Interrupt_Slave@data_written_to_buffer:
1252 0075 I2C2_Interrupt_Slave@data_written_to_buffer:
1253 ; 1 bytes @ 0x5
1254
1255
1256 ; 1 bytes @ 0x5
1257 0075 ds 1
1258 0076 I2C1_Interrupt_Slave@received_data:
1259 0076 I2C2_Interrupt_Slave@received_data:
1260 ; 1 bytes @ 0x6
1261
1262
1263 ; 1 bytes @ 0x6
1264 0076 ds 1
1265 0077 I2C1_Interrupt_Slave@data_read_from_buffer:
1266 0077 I2C2_Interrupt_Slave@data_read_from_buffer:
1267 ; 1 bytes @ 0x7
1268
1269
1270 ; 1 bytes @ 0x7
1271 0077 ds 1
1272 0078 ??_I2C2_Interrupt_Handler:
1273 0078 ??_I2C1_Interrupt_Handler:
1274 ; 0 bytes @ 0x8
1275
1276 0078 ??_InterruptHandler:
1277 ; 0 bytes @ 0x8
1278
1279
1280 ; 0 bytes @ 0x8
1281 0078 ds 1
1282
1283 psect cstackBANK0
1284 0020 __pcstackBANK0:
1285 0020 ??_I2C1_Init:
1286 0020 ??_I2C1_Configure_Slave:
1287 ; 0 bytes @ 0x0
1288
1289 0020 ??_I2C2_Init:
1290 ; 0 bytes @ 0x0
1291
1292 0020 ??_I2C2_Configure_Master:
1293 ; 0 bytes @ 0x0
1294
1295 0020 ??_Interrupt_Init:
1296 ; 0 bytes @ 0x0
1297
1298 0020 ??_Interrupt_Enable:
1299 ; 0 bytes @ 0x0
1300
1301 0020 ??_Pins_Init:
1302 ; 0 bytes @ 0x0
1303
1304 0020 ??_Read_Address:
1305 ; 0 bytes @ 0x0
1306
1307 0020 ?_I2C2_Master_Send:
1308 ; 0 bytes @ 0x0
1309
1310 0020 ?_I2C2_Master_Recv:
1311 ; 0 bytes @ 0x0
1312
1313 0020 ??_I2C2_Get_Status:
1314 ; 0 bytes @ 0x0
1315
1316 0020 ??_I2C2_Read_Buffer:
1317 ; 0 bytes @ 0x0
1318
1319 0020 I2C2_Master_Send@length:
1320 ; 0 bytes @ 0x0
1321
1322 0020 I2C2_Master_Recv@length:
1323 ; 1 bytes @ 0x0
1324
1325
1326 ; 1 bytes @ 0x0
1327 0020 ds 1
1328 0021 ??_I2C2_Master_Recv:
1329 0021 I2C1_Init@data:
1330 ; 0 bytes @ 0x1
1331
1332 0021 I2C1_Configure_Slave@addr:
1333 ; 1 bytes @ 0x1
1334
1335 0021 I2C2_Init@data:
1336 ; 1 bytes @ 0x1
1337
1338 0021 I2C2_Configure_Master@speed:
1339 ; 1 bytes @ 0x1
1340
1341 0021 I2C2_Master_Send@msg:
1342 ; 1 bytes @ 0x1
1343
1344
1345 ; 1 bytes @ 0x1
1346 0021 ds 1
1347 0022 ??_I2C2_Master_Send:
1348 0022 I2C2_Master_Recv@address:
1349 ; 0 bytes @ 0x2
1350
1351
1352 ; 1 bytes @ 0x2
1353 0022 ds 1
1354 0023 Read_Address@ret:
1355 0023 I2C2_Read_Buffer@buffer:
1356 ; 1 bytes @ 0x3
1357
1358
1359 ; 1 bytes @ 0x3
1360 0023 ds 1
1361 0024 I2C2_Read_Buffer@i:
1362
1363 ; 1 bytes @ 0x4
1364 0024 ds 1
1365 0025 I2C2_Master_Send@address:
1366
1367 ; 1 bytes @ 0x5
1368 0025 ds 1
1369 0026 I2C2_Master_Send@i:
1370
1371 ; 1 bytes @ 0x6
1372 0026 ds 1
1373 0027 ??_TLC59116_Init:
1374 0027 ??_TLC59116_Write_All:
1375 ; 0 bytes @ 0x7
1376
1377 0027 ??_MCP23009_Init:
1378 ; 0 bytes @ 0x7
1379
1380 0027 ??_MCP23009_Query:
1381 ; 0 bytes @ 0x7
1382
1383
1384 ; 0 bytes @ 0x7
1385 0027 ds 1
1386 0028 MCP23009_Query@buffer:
1387
1388 ; 2 bytes @ 0x8
1389 0028 ds 1
1390 0029 MCP23009_Init@buffer:
1391 0029 TLC59116_Write_All@buffer:
1392 ; 8 bytes @ 0x9
1393
1394 0029 TLC59116_Init@buffer:
1395 ; 17 bytes @ 0x9
1396
1397
1398 ; 25 bytes @ 0x9
1399 0029 ds 1
1400 002A MCP23009_Query@result:
1401
1402 ; 1 bytes @ 0xA
1403 002A ds 7
1404 0031 MCP23009_Init@result:
1405
1406 ; 1 bytes @ 0x11
1407 0031 ds 9
1408 003A TLC59116_Write_All@result:
1409
1410 ; 1 bytes @ 0x1A
1411 003A ds 1
1412 003B TLC59116_Write_All@values:
1413
1414 ; 1 bytes @ 0x1B
1415 003B ds 7
1416 0042 TLC59116_Init@result:
1417
1418 ; 1 bytes @ 0x22
1419 0042 ds 1
1420 0043 ??_main:
1421
1422 ; 0 bytes @ 0x23
1423 0043 ds 1
1424 0044 main@leds:
1425
1426 ; 16 bytes @ 0x24
1427 0044 ds 16
1428 0054 main@i2c_slave_addr:
1429
1430 ; 1 bytes @ 0x34
1431 0054 ds 1
1432 0055 main@btn_value:
1433
1434 ; 1 bytes @ 0x35
1435 0055 ds 1
1436 0056 main@i:
1437
1438 ; 1 bytes @ 0x36
1439 0056 ds 1
1440
1441 psect maintext
1442 06DC __pmaintext:
1443 ;;
1444 ;;Main: autosize = 0, tempsize = 1, incstack = 0, save=0
1445 ;;
1446 ;; *************** function _main *****************
1447 ;; Defined at:
1448 ;; line 87 in file "main.c"
1449 ;; Parameters: Size Location Type
1450 ;; None
1451 ;; Auto vars: Size Location Type
1452 ;; i 1 54[BANK0 ] unsigned char
1453 ;; btn_value 1 53[BANK0 ] unsigned char
1454 ;; i2c2_data 77 0[BANK2 ] struct .
1455 ;; i2c1_data 77 0[BANK1 ] struct .
1456 ;; buffer 32 0 unsigned char [32]
1457 ;; leds 16 36[BANK0 ] unsigned char [16]
1458 ;; i2c_slave_ad 1 52[BANK0 ] unsigned char
1459 ;; length 1 0 unsigned char
1460 ;; result 1 0 unsigned char
1461 ;; Return value: Size Location Type
1462 ;; 2 54[COMMON] int
1463 ;; Registers used:
1464 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, fsr1l, fsr1h, status,2, status,0, btemp+1, pclath, cstack
1465 ;; Tracked objects:
1466 ;; On entry : 17F/0
1467 ;; On exit : 0/0
1468 ;; Unchanged: 0/0
1469 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
1470 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
1471 ;; Locals: 0 19 77 77 0 0 0 0 0 0 0 0
+0 0
1472 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
1473 ;; Totals: 0 20 77 77 0 0 0 0 0 0 0 0
+0 0
1474 ;;Total ram usage: 174 bytes
1475 ;; Hardware stack levels required when called: 6
1476 ;; This function calls:
1477 ;; _Pins_Init
1478 ;; _Read_Address
1479 ;; _I2C1_Init
1480 ;; _I2C1_Configure_Slave
1481 ;; _I2C2_Init
1482 ;; _I2C2_Configure_Master
1483 ;; _Interrupt_Init
1484 ;; _Interrupt_Enable
1485 ;; _TLC59116_Init
1486 ;; _TLC59116_Write_All
1487 ;; _MCP23009_Init
1488 ;; _MCP23009_Query
1489 ;; This function is called by:
1490 ;; Startup code after reset
1491 ;; This function uses a non-reentrant model
1492 ;;
1493
1494
1495 ;psect for function _main
1496 06DC _main:
1497
1498 ;main.c: 88: uint8_t buffer[32];
1499 ;main.c: 89: uint8_t result, length;
1500 ;main.c: 90: uint8_t i2c_slave_addr;
1501 ;main.c: 93: OSCCONbits.SPLLEN = 1;
1502
1503 ;incstack = 0
1504 ; Regs used in _main: [allreg]
1505 06DC 0021 movlb 1 ; select bank1
1506 06DD 1799 bsf 25,7 ;volatile
1507
1508 ;main.c: 94: OSCCONbits.IRCF = 0xE;
1509 06DE 0819 movf 25,w ;volatile
1510 06DF 3987 andlw -121
1511 06E0 3870 iorlw 112
1512 06E1 0099 movwf 25 ;volatile
1513
1514 ;main.c: 95: OSCCONbits.SCS = 0b00;
1515 06E2 30FC movlw -4
1516 06E3 0599 andwf 25,f ;volatile
1517
1518 ;main.c: 102: Pins_Init();
1519 06E4 318B 23F5 3186 fcall _Pins_Init
1520
1521 ;main.c: 104: i2c_slave_addr = Read_Address();
1522 06E7 318C 24A7 3186 fcall _Read_Address
1523 06EA 0020 movlb 0 ; select bank0
1524 06EB 00C3 movwf ??_main
1525 06EC 0843 movf ??_main,w
1526 06ED 00D4 movwf main@i2c_slave_addr
1527
1528 ;main.c: 107: I2C1_DATA i2c1_data;
1529 ;main.c: 108: I2C1_Init(&i2c1_data);
1530 06EE 30A0 movlw main@i2c1_data& (0+255)
1531 06EF 318D 259E 3186 fcall _I2C1_Init
1532
1533 ;main.c: 109: I2C1_Configure_Slave(i2c_slave_addr);
1534 06F2 0020 movlb 0 ; select bank0
1535 06F3 0854 movf main@i2c_slave_addr,w
1536 06F4 318C 240F 3186 fcall _I2C1_Configure_Slave
1537
1538 ;main.c: 112: I2C2_DATA i2c2_data;
1539 ;main.c: 113: I2C2_Init(&i2c2_data);
1540 06F7 3020 movlw main@i2c2_data& (0+255)
1541 06F8 318E 263F 3186 fcall _I2C2_Init
1542
1543 ;main.c: 114: I2C2_Configure_Master(0x0);
1544 06FB 3000 movlw 0
1545 06FC 318C 242B 3186 fcall _I2C2_Configure_Master
1546
1547 ;main.c: 117: Interrupt_Init();
1548 06FF 3187 27FE 3186 fcall _Interrupt_Init
1549
1550 ;main.c: 118: Interrupt_Enable();
1551 0702 3187 27FB 3186 fcall _Interrupt_Enable
1552
1553 ;main.c: 120: TLC59116_Init();
1554 0705 318D 2512 3186 fcall _TLC59116_Init
1555
1556 ;main.c: 122: uint8_t leds[16] = {0x00, 0x00, 0x00, 0x00,
1557 ;main.c: 123: 0x00, 0x00, 0x00, 0x00,
1558 ;main.c: 124: 0x10, 0x10, 0x10, 0x10,
1559 ;main.c: 125: 0x10, 0x10, 0x10, 0x10};
1560 0708 3057 movlw low main@F3130
1561 0709 0086 movwf 6
1562 070A 3000 movlw high main@F3130
1563 070B 0087 movwf 7
1564 070C 3044 movlw low main@leds
1565 070D 0084 movwf 4
1566 070E 3000 movlw high main@leds
1567 070F 0085 movwf 5
1568 0710 3010 movlw 16
1569 0711 00FF movwf 127
1570 0712 u1080:
1571 0712 0016 moviw fsr1++
1572 0713 001A movwi fsr0++
1573 0714 0BFF decfsz 127,f
1574 0715 2F12 goto u1080
1575
1576 ;main.c: 126: TLC59116_Write_All(leds);
1577 0716 3044 movlw main@leds& (0+255)
1578 0717 3187 274D 3186 fcall _TLC59116_Write_All
1579
1580 ;main.c: 128: MCP23009_Init();
1581 071A 318C 244D 3186 fcall _MCP23009_Init
1582 071D l2157:
1583 ;main.c: 131: while (1) {
1584
1585
1586 ;main.c: 132: uint8_t btn_value = MCP23009_Query();
1587 071D 318C 2476 3186 fcall _MCP23009_Query
1588 0720 0020 movlb 0 ; select bank0
1589 0721 00C3 movwf ??_main
1590 0722 0843 movf ??_main,w
1591 0723 00D5 movwf main@btn_value
1592
1593 ;main.c: 133: uint8_t i;
1594 ;main.c: 134: for (i = 0; i < 8; i++) {
1595 0724 01D6 clrf main@i
1596 0725 3008 movlw 8
1597 0726 0256 subwf main@i,w
1598 0727 1803 btfsc 3,0
1599 0728 2F48 goto l2175
1600 0729 l2165:
1601
1602 ;main.c: 135: if ((btn_value >> i) & 0x1) {
1603 0729 0855 movf main@btn_value,w
1604 072A 00C3 movwf ??_main
1605 072B 0A56 incf main@i,w
1606 072C 2F2E goto u1104
1607 072D u1105:
1608 072D 36C3 lsrf ??_main,f
1609 072E u1104:
1610 072E 0B89 decfsz 9,f
1611 072F 2F2D goto u1105
1612 0730 1C43 btfss ??_main,0
1613 0731 2F38 goto l2169
1614
1615 ;main.c: 136: leds[i] = 0x00;
1616 0732 0856 movf main@i,w
1617 0733 3E44 addlw main@leds& (0+255)
1618 0734 0086 movwf 6
1619 0735 0187 clrf 7
1620 0736 0181 clrf 1
1621
1622 ;main.c: 137: } else {
1623 0737 2F40 goto l2171
1624 0738 l2169:
1625
1626 ;main.c: 138: leds[i] = 0x10;
1627 0738 3010 movlw 16
1628 0739 00C3 movwf ??_main
1629 073A 0856 movf main@i,w
1630 073B 3E44 addlw main@leds& (0+255)
1631 073C 0086 movwf 6
1632 073D 0187 clrf 7
1633 073E 0843 movf ??_main,w
1634 073F 0081 movwf 1
1635 0740 l2171:
1636 0740 3001 movlw 1
1637 0741 00C3 movwf ??_main
1638 0742 0843 movf ??_main,w
1639 0743 07D6 addwf main@i,f
1640 0744 3008 movlw 8
1641 0745 0256 subwf main@i,w
1642 0746 1C03 skipc
1643 0747 2F29 goto l2165
1644 0748 l2175:
1645
1646 ;main.c: 139: }
1647 ;main.c: 140: }
1648 ;main.c: 141: TLC59116_Write_All(leds);
1649 0748 3044 movlw main@leds& (0+255)
1650 0749 3187 274D 3186 fcall _TLC59116_Write_All
1651 074C 2F1D goto l2157
1652 074D __end_of_main:
1653
1654 psect text1
1655 0C76 __ptext1:
1656 ;; *************** function _MCP23009_Query *****************
1657 ;; Defined at:
1658 ;; line 25 in file "MCP23009.c"
1659 ;; Parameters: Size Location Type
1660 ;; None
1661 ;; Auto vars: Size Location Type
1662 ;; buffer 2 8[BANK0 ] unsigned char [2]
1663 ;; result 1 10[BANK0 ] unsigned char
1664 ;; Return value: Size Location Type
1665 ;; 1 wreg unsigned char
1666 ;; Registers used:
1667 ;; wreg, fsr1l, fsr1h, status,2, status,0, pclath, cstack
1668 ;; Tracked objects:
1669 ;; On entry : 0/0
1670 ;; On exit : 0/0
1671 ;; Unchanged: 0/0
1672 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
1673 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
1674 ;; Locals: 0 3 0 0 0 0 0 0 0 0 0 0
+0 0
1675 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
1676 ;; Totals: 0 4 0 0 0 0 0 0 0 0 0 0
+0 0
1677 ;;Total ram usage: 4 bytes
1678 ;; Hardware stack levels used: 1
1679 ;; Hardware stack levels required when called: 5
1680 ;; This function calls:
1681 ;; _I2C2_Master_Send
1682 ;; _I2C2_Master_Recv
1683 ;; _I2C2_Get_Status
1684 ;; _I2C2_Read_Buffer
1685 ;; This function is called by:
1686 ;; _main
1687 ;; This function uses a non-reentrant model
1688 ;;
1689
1690
1691 ;psect for function _MCP23009_Query
1692 0C76 _MCP23009_Query:
1693
1694 ;MCP23009.c: 26: uint8_t buffer[2] = {0x09};
1695
1696 ;incstack = 0
1697 ; Regs used in _MCP23009_Query: [wreg+fsr1l+fsr1h+status,2+status,0+pclath+cstack]
1698 0C76 0020 movlb 0 ; select bank0
1699 0C77 0868 movf MCP23009_Query@F3053+1,w
1700 0C78 01A9 clrf MCP23009_Query@buffer+1
1701 0C79 07A9 addwf MCP23009_Query@buffer+1,f
1702 0C7A 0867 movf MCP23009_Query@F3053,w
1703 0C7B 01A8 clrf MCP23009_Query@buffer
1704 0C7C 07A8 addwf MCP23009_Query@buffer,f
1705
1706 ;MCP23009.c: 28: I2C2_Master_Send(0x20, 1, buffer);
1707 0C7D 01A0 clrf ?_I2C2_Master_Send
1708 0C7E 0AA0 incf ?_I2C2_Master_Send,f
1709 0C7F 3028 movlw MCP23009_Query@buffer& (0+255)
1710 0C80 00A7 movwf ??_MCP23009_Query
1711 0C81 0827 movf ??_MCP23009_Query,w
1712 0C82 00A1 movwf ?_I2C2_Master_Send+1
1713 0C83 3020 movlw 32
1714 0C84 318D 25EC 318C fcall _I2C2_Master_Send
1715 0C87 l2393:
1716 ;MCP23009.c: 29: uint8_t result;
1717 ;MCP23009.c: 30: do {
1718
1719
1720 ;MCP23009.c: 31: result = I2C2_Get_Status();
1721 0C87 3187 27BD 318C fcall _I2C2_Get_Status
1722 0C8A 0020 movlb 0 ; select bank0
1723 0C8B 00A7 movwf ??_MCP23009_Query
1724 0C8C 0827 movf ??_MCP23009_Query,w
1725 0C8D 00AA movwf MCP23009_Query@result
1726
1727 ;MCP23009.c: 32: } while (!result);
1728 0C8E 082A movf MCP23009_Query@result,w
1729 0C8F 1903 btfsc 3,2
1730 0C90 2C87 goto l2393
1731
1732 ;MCP23009.c: 34: I2C2_Master_Recv(0x20, 1);
1733 0C91 01A0 clrf ?_I2C2_Master_Recv
1734 0C92 0AA0 incf ?_I2C2_Master_Recv,f
1735 0C93 3020 movlw 32
1736 0C94 318C 24DA 318C fcall _I2C2_Master_Recv
1737 0C97 l500:
1738 ;MCP23009.c: 35: uint8_t result;
1739 ;MCP23009.c: 36: do {
1740
1741
1742 ;MCP23009.c: 37: result = I2C2_Get_Status();
1743 0C97 3187 27BD 318C fcall _I2C2_Get_Status
1744 0C9A 0020 movlb 0 ; select bank0
1745 0C9B 00A7 movwf ??_MCP23009_Query
1746 0C9C 0827 movf ??_MCP23009_Query,w
1747 0C9D 00AA movwf MCP23009_Query@result
1748
1749 ;MCP23009.c: 38: } while (!result);
1750 0C9E 082A movf MCP23009_Query@result,w
1751 0C9F 1903 btfsc 3,2
1752 0CA0 2C97 goto l500
1753
1754 ;MCP23009.c: 39: I2C2_Read_Buffer(buffer);
1755 0CA1 3028 movlw MCP23009_Query@buffer& (0+255)
1756 0CA2 318D 2558 fcall _I2C2_Read_Buffer
1757
1758 ;MCP23009.c: 41: return buffer[0];
1759 0CA4 0020 movlb 0 ; select bank0
1760 0CA5 0828 movf MCP23009_Query@buffer,w
1761 0CA6 0008 return
1762 0CA7 __end_of_MCP23009_Query:
1763
1764 psect text2
1765 0D58 __ptext2:
1766 ;; *************** function _I2C2_Read_Buffer *****************
1767 ;; Defined at:
1768 ;; line 506 in file "I2C2.c"
1769 ;; Parameters: Size Location Type
1770 ;; buffer 1 wreg PTR unsigned char
1771 ;; -> MCP23009_Query@buffer(2),
1772 ;; Auto vars: Size Location Type
1773 ;; buffer 1 3[BANK0 ] PTR unsigned char
1774 ;; -> MCP23009_Query@buffer(2),
1775 ;; i 1 4[BANK0 ] unsigned char
1776 ;; Return value: Size Location Type
1777 ;; 1 wreg unsigned char
1778 ;; Registers used:
1779 ;; wreg, fsr1l, fsr1h, status,2, status,0
1780 ;; Tracked objects:
1781 ;; On entry : 0/0
1782 ;; On exit : 0/0
1783 ;; Unchanged: 0/0
1784 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
1785 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
1786 ;; Locals: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
1787 ;; Temps: 0 3 0 0 0 0 0 0 0 0 0 0
+0 0
1788 ;; Totals: 0 5 0 0 0 0 0 0 0 0 0 0
+0 0
1789 ;;Total ram usage: 5 bytes
1790 ;; Hardware stack levels used: 1
1791 ;; Hardware stack levels required when called: 4
1792 ;; This function calls:
1793 ;; Nothing
1794 ;; This function is called by:
1795 ;; _MCP23009_Query
1796 ;; This function uses a non-reentrant model
1797 ;;
1798
1799
1800 ;psect for function _I2C2_Read_Buffer
1801 0D58 _I2C2_Read_Buffer:
1802
1803 ;incstack = 0
1804 ; Regs used in _I2C2_Read_Buffer: [wreg+fsr1l+fsr1h+status,2+status,0]
1805 ;I2C2_Read_Buffer@buffer stored from wreg
1806 0D58 0020 movlb 0 ; select bank0
1807 0D59 00A3 movwf I2C2_Read_Buffer@buffer
1808
1809 ;I2C2.c: 507: uint8_t i = 0;
1810 0D5A 01A4 clrf I2C2_Read_Buffer@i
1811 0D5B l445:
1812 ;I2C2.c: 508: while (i2c_data_p->buffer_in_len != 0) {
1813
1814 0D5B 0869 movf I2C2@i2c_data_p,w
1815 0D5C 3E20 addlw 32
1816 0D5D 0086 movwf 6
1817 0D5E 3001 movlw 1 ; select bank2/3
1818 0D5F 0087 movwf 7
1819 0D60 0881 movf 1,f
1820 0D61 1903 btfsc 3,2
1821 0D62 0008 return
1822
1823 ;I2C2.c: 509: buffer[i] = i2c_data_p->buffer_in[i2c_data_p->buffer_in_read_ind];
1824 0D63 0869 movf I2C2@i2c_data_p,w
1825 0D64 3E22 addlw 34
1826 0D65 0086 movwf 6
1827 0D66 3001 movlw 1 ; select bank2/3
1828 0D67 0087 movwf 7
1829 0D68 0801 movf 1,w
1830 0D69 0769 addwf I2C2@i2c_data_p,w
1831 0D6A 00A0 movwf ??_I2C2_Read_Buffer
1832 0D6B 0820 movf ??_I2C2_Read_Buffer,w
1833 0D6C 0086 movwf 6
1834 0D6D 3001 movlw 1 ; select bank2/3
1835 0D6E 0087 movwf 7
1836 0D6F 0801 movf 1,w
1837 0D70 00A1 movwf ??_I2C2_Read_Buffer+1
1838 0D71 0824 movf I2C2_Read_Buffer@i,w
1839 0D72 0723 addwf I2C2_Read_Buffer@buffer,w
1840 0D73 00A2 movwf ??_I2C2_Read_Buffer+2
1841 0D74 0822 movf ??_I2C2_Read_Buffer+2,w
1842 0D75 0086 movwf 6
1843 0D76 0187 clrf 7
1844 0D77 0821 movf ??_I2C2_Read_Buffer+1,w
1845 0D78 0081 movwf 1
1846
1847 ;I2C2.c: 510: i++;
1848 0D79 3001 movlw 1
1849 0D7A 00A0 movwf ??_I2C2_Read_Buffer
1850 0D7B 0820 movf ??_I2C2_Read_Buffer,w
1851 0D7C 07A4 addwf I2C2_Read_Buffer@i,f
1852
1853 ;I2C2.c: 511: if (i2c_data_p->buffer_in_read_ind == 32-1) {
1854 0D7D 0869 movf I2C2@i2c_data_p,w
1855 0D7E 3E22 addlw 34
1856 0D7F 0086 movwf 6
1857 0D80 3001 movlw 1 ; select bank2/3
1858 0D81 0087 movwf 7
1859 0D82 0801 movf 1,w
1860 0D83 3A1F xorlw 31
1861 0D84 1D03 skipz
1862 0D85 2D8D goto l2909
1863
1864 ;I2C2.c: 512: i2c_data_p->buffer_in_read_ind = 0;
1865 0D86 0869 movf I2C2@i2c_data_p,w
1866 0D87 3E22 addlw 34
1867 0D88 0086 movwf 6
1868 0D89 3001 movlw 1 ; select bank2/3
1869 0D8A 0087 movwf 7
1870 0D8B 0181 clrf 1
1871
1872 ;I2C2.c: 513: } else {
1873 0D8C 2D96 goto l448
1874 0D8D l2909:
1875
1876 ;I2C2.c: 514: i2c_data_p->buffer_in_read_ind++;
1877 0D8D 3001 movlw 1
1878 0D8E 00A0 movwf ??_I2C2_Read_Buffer
1879 0D8F 0869 movf I2C2@i2c_data_p,w
1880 0D90 3E22 addlw 34
1881 0D91 0086 movwf 6
1882 0D92 3001 movlw 1 ; select bank2/3
1883 0D93 0087 movwf 7
1884 0D94 0820 movf ??_I2C2_Read_Buffer,w
1885 0D95 0781 addwf 1,f
1886 0D96 l448:
1887
1888 ;I2C2.c: 515: }
1889 ;I2C2.c: 516: i2c_data_p->buffer_in_len--;
1890 0D96 0869 movf I2C2@i2c_data_p,w
1891 0D97 3E20 addlw 32
1892 0D98 0086 movwf 6
1893 0D99 3001 movlw 1 ; select bank2/3
1894 0D9A 0087 movwf 7
1895 0D9B 3001 movlw 1
1896 0D9C 0281 subwf 1,f
1897 0D9D 2D5B goto l445
1898 0D9E __end_of_I2C2_Read_Buffer:
1899 ;I2C2.c: 517: }
1900 ;I2C2.c: 518: return i;
1901 ; Return value of _I2C2_Read_Buffer is never used
1902
1903
1904 psect text3
1905 0CDA __ptext3:
1906 ;; *************** function _I2C2_Master_Recv *****************
1907 ;; Defined at:
1908 ;; line 77 in file "I2C2.c"
1909 ;; Parameters: Size Location Type
1910 ;; address 1 wreg unsigned char
1911 ;; length 1 0[BANK0 ] unsigned char
1912 ;; Auto vars: Size Location Type
1913 ;; address 1 2[BANK0 ] unsigned char
1914 ;; Return value: Size Location Type
1915 ;; None void
1916 ;; Registers used:
1917 ;; wreg, fsr1l, fsr1h, status,2, status,0
1918 ;; Tracked objects:
1919 ;; On entry : 0/0
1920 ;; On exit : 0/0
1921 ;; Unchanged: 0/0
1922 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
1923 ;; Params: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
1924 ;; Locals: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
1925 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
1926 ;; Totals: 0 3 0 0 0 0 0 0 0 0 0 0
+0 0
1927 ;;Total ram usage: 3 bytes
1928 ;; Hardware stack levels used: 1
1929 ;; Hardware stack levels required when called: 4
1930 ;; This function calls:
1931 ;; Nothing
1932 ;; This function is called by:
1933 ;; _MCP23009_Query
1934 ;; This function uses a non-reentrant model
1935 ;;
1936
1937
1938 ;psect for function _I2C2_Master_Recv
1939 0CDA _I2C2_Master_Recv:
1940
1941 ;incstack = 0
1942 ; Regs used in _I2C2_Master_Recv: [wreg+fsr1l+fsr1h+status,2+status,0]
1943 ;I2C2_Master_Recv@address stored from wreg
1944 0CDA 0020 movlb 0 ; select bank0
1945 0CDB 00A2 movwf I2C2_Master_Recv@address
1946
1947 ;I2C2.c: 78: if (length == 0)
1948 0CDC 08A0 movf I2C2_Master_Recv@length,f
1949 0CDD 1903 btfsc 3,2
1950 0CDE 0008 return
1951
1952 ;I2C2.c: 82: i2c_data_p->buffer_in_len = length;
1953
1954 ;I2C2.c: 79: return;
1955 0CDF 0820 movf I2C2_Master_Recv@length,w
1956 0CE0 00A1 movwf ??_I2C2_Master_Recv
1957 0CE1 0869 movf I2C2@i2c_data_p,w
1958 0CE2 3E20 addlw 32
1959 0CE3 0086 movwf 6
1960 0CE4 3001 movlw 1 ; select bank2/3
1961 0CE5 0087 movwf 7
1962 0CE6 0821 movf ??_I2C2_Master_Recv,w
1963 0CE7 0081 movwf 1
1964
1965 ;I2C2.c: 83: i2c_data_p->master_dest_addr = address;
1966 0CE8 0822 movf I2C2_Master_Recv@address,w
1967 0CE9 00A1 movwf ??_I2C2_Master_Recv
1968 0CEA 0869 movf I2C2@i2c_data_p,w
1969 0CEB 3E49 addlw 73
1970 0CEC 0086 movwf 6
1971 0CED 3001 movlw 1 ; select bank2/3
1972 0CEE 0087 movwf 7
1973 0CEF 0821 movf ??_I2C2_Master_Recv,w
1974 0CF0 0081 movwf 1
1975
1976 ;I2C2.c: 84: i2c_data_p->buffer_in_read_ind = 0;
1977 0CF1 0869 movf I2C2@i2c_data_p,w
1978 0CF2 3E22 addlw 34
1979 0CF3 0086 movwf 6
1980 0CF4 3001 movlw 1 ; select bank2/3
1981 0CF5 0087 movwf 7
1982 0CF6 0181 clrf 1
1983
1984 ;I2C2.c: 85: i2c_data_p->buffer_in_write_ind = 0;
1985 0CF7 0869 movf I2C2@i2c_data_p,w
1986 0CF8 3E23 addlw 35
1987 0CF9 0086 movwf 6
1988 0CFA 3001 movlw 1 ; select bank2/3
1989 0CFB 0087 movwf 7
1990 0CFC 0181 clrf 1
1991
1992 ;I2C2.c: 88: i2c_data_p->operating_state = 0x5;
1993 0CFD 3005 movlw 5
1994 0CFE 00A1 movwf ??_I2C2_Master_Recv
1995 0CFF 0869 movf I2C2@i2c_data_p,w
1996 0D00 3E47 addlw 71
1997 0D01 0086 movwf 6
1998 0D02 3001 movlw 1 ; select bank2/3
1999 0D03 0087 movwf 7
2000 0D04 0821 movf ??_I2C2_Master_Recv,w
2001 0D05 0081 movwf 1
2002
2003 ;I2C2.c: 89: i2c_data_p->master_status = 0x21;
2004 0D06 3021 movlw 33
2005 0D07 00A1 movwf ??_I2C2_Master_Recv
2006 0D08 0869 movf I2C2@i2c_data_p,w
2007 0D09 3E4A addlw 74
2008 0D0A 0086 movwf 6
2009 0D0B 3001 movlw 1 ; select bank2/3
2010 0D0C 0087 movwf 7
2011 0D0D 0821 movf ??_I2C2_Master_Recv,w
2012 0D0E 0081 movwf 1
2013
2014 ;I2C2.c: 92: SSP2CON2bits.SEN = 1;
2015 0D0F 0024 movlb 4 ; select bank4
2016 0D10 141E bsf 30,0 ;volatile
2017 0D11 0008 return
2018 0D12 __end_of_I2C2_Master_Recv:
2019
2020 psect text4
2021 0C4D __ptext4:
2022 ;; *************** function _MCP23009_Init *****************
2023 ;; Defined at:
2024 ;; line 6 in file "MCP23009.c"
2025 ;; Parameters: Size Location Type
2026 ;; None
2027 ;; Auto vars: Size Location Type
2028 ;; buffer 8 9[BANK0 ] unsigned char [8]
2029 ;; result 1 17[BANK0 ] unsigned char
2030 ;; Return value: Size Location Type
2031 ;; None void
2032 ;; Registers used:
2033 ;; wreg, fsr1l, fsr1h, status,2, status,0, pclath, cstack
2034 ;; Tracked objects:
2035 ;; On entry : 0/0
2036 ;; On exit : 0/0
2037 ;; Unchanged: 0/0
2038 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2039 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2040 ;; Locals: 0 9 0 0 0 0 0 0 0 0 0 0
+0 0
2041 ;; Temps: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
2042 ;; Totals: 0 11 0 0 0 0 0 0 0 0 0 0
+0 0
2043 ;;Total ram usage: 11 bytes
2044 ;; Hardware stack levels used: 1
2045 ;; Hardware stack levels required when called: 5
2046 ;; This function calls:
2047 ;; _I2C2_Master_Send
2048 ;; _I2C2_Get_Status
2049 ;; This function is called by:
2050 ;; _main
2051 ;; This function uses a non-reentrant model
2052 ;;
2053
2054
2055 ;psect for function _MCP23009_Init
2056 0C4D _MCP23009_Init:
2057
2058 ;MCP23009.c: 7: uint8_t buffer[8];
2059 ;MCP23009.c: 9: buffer[0] = 0x00;
2060
2061 ;incstack = 0
2062 ; Regs used in _MCP23009_Init: [wreg+fsr1l+fsr1h+status,2+status,0+pclath+cstack]
2063 0C4D 0020 movlb 0 ; select bank0
2064 0C4E 01A9 clrf MCP23009_Init@buffer
2065
2066 ;MCP23009.c: 10: buffer[1] = 0xFF;
2067 0C4F 30FF movlw 255
2068 0C50 00A7 movwf ??_MCP23009_Init
2069 0C51 0827 movf ??_MCP23009_Init,w
2070 0C52 00AA movwf MCP23009_Init@buffer+1
2071
2072 ;MCP23009.c: 11: buffer[2] = 0xFF;
2073 0C53 30FF movlw 255
2074 0C54 00A7 movwf ??_MCP23009_Init
2075 0C55 0827 movf ??_MCP23009_Init,w
2076 0C56 00AB movwf MCP23009_Init@buffer+2
2077
2078 ;MCP23009.c: 12: buffer[3] = 0x00;
2079 0C57 01AC clrf MCP23009_Init@buffer+3
2080
2081 ;MCP23009.c: 13: buffer[4] = 0x00;
2082 0C58 01AD clrf MCP23009_Init@buffer+4
2083
2084 ;MCP23009.c: 14: buffer[5] = 0x00;
2085 0C59 01AE clrf MCP23009_Init@buffer+5
2086
2087 ;MCP23009.c: 15: buffer[6] = 0x00;
2088 0C5A 01AF clrf MCP23009_Init@buffer+6
2089
2090 ;MCP23009.c: 16: buffer[7] = 0xFF;
2091 0C5B 30FF movlw 255
2092 0C5C 00A7 movwf ??_MCP23009_Init
2093 0C5D 0827 movf ??_MCP23009_Init,w
2094 0C5E 00B0 movwf MCP23009_Init@buffer+7
2095
2096 ;MCP23009.c: 18: I2C2_Master_Send(0x20, 8, buffer);
2097 0C5F 3008 movlw 8
2098 0C60 00A7 movwf ??_MCP23009_Init
2099 0C61 0827 movf ??_MCP23009_Init,w
2100 0C62 00A0 movwf ?_I2C2_Master_Send
2101 0C63 3029 movlw MCP23009_Init@buffer& (0+255)
2102 0C64 00A8 movwf ??_MCP23009_Init+1
2103 0C65 0828 movf ??_MCP23009_Init+1,w
2104 0C66 00A1 movwf ?_I2C2_Master_Send+1
2105 0C67 3020 movlw 32
2106 0C68 318D 25EC 318C fcall _I2C2_Master_Send
2107 0C6B l2385:
2108 ;MCP23009.c: 19: uint8_t result;
2109 ;MCP23009.c: 20: do {
2110
2111
2112 ;MCP23009.c: 21: result = I2C2_Get_Status();
2113 0C6B 3187 27BD 318C fcall _I2C2_Get_Status
2114 0C6E 0020 movlb 0 ; select bank0
2115 0C6F 00A7 movwf ??_MCP23009_Init
2116 0C70 0827 movf ??_MCP23009_Init,w
2117 0C71 00B1 movwf MCP23009_Init@result
2118
2119 ;MCP23009.c: 22: } while (!result);
2120 0C72 0831 movf MCP23009_Init@result,w
2121 0C73 1D03 skipz
2122 0C74 0008 return
2123 0C75 2C6B goto l2385
2124 0C76 __end_of_MCP23009_Init:
2125
2126 psect text5
2127 074D __ptext5:
2128 ;; *************** function _TLC59116_Write_All *****************
2129 ;; Defined at:
2130 ;; line 54 in file "TLC59116.c"
2131 ;; Parameters: Size Location Type
2132 ;; values 1 wreg PTR unsigned char
2133 ;; -> main@leds(16),
2134 ;; Auto vars: Size Location Type
2135 ;; values 1 27[BANK0 ] PTR unsigned char
2136 ;; -> main@leds(16),
2137 ;; buffer 17 9[BANK0 ] unsigned char [17]
2138 ;; result 1 26[BANK0 ] unsigned char
2139 ;; i 1 0 unsigned char
2140 ;; Return value: Size Location Type
2141 ;; None void
2142 ;; Registers used:
2143 ;; wreg, fsr1l, fsr1h, status,2, status,0, pclath, cstack
2144 ;; Tracked objects:
2145 ;; On entry : 0/0
2146 ;; On exit : 0/0
2147 ;; Unchanged: 0/0
2148 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2149 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2150 ;; Locals: 0 19 0 0 0 0 0 0 0 0 0 0
+0 0
2151 ;; Temps: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
2152 ;; Totals: 0 21 0 0 0 0 0 0 0 0 0 0
+0 0
2153 ;;Total ram usage: 21 bytes
2154 ;; Hardware stack levels used: 1
2155 ;; Hardware stack levels required when called: 5
2156 ;; This function calls:
2157 ;; _I2C2_Master_Send
2158 ;; _I2C2_Get_Status
2159 ;; This function is called by:
2160 ;; _main
2161 ;; This function uses a non-reentrant model
2162 ;;
2163
2164
2165 ;psect for function _TLC59116_Write_All
2166 074D _TLC59116_Write_All:
2167
2168 ;incstack = 0
2169 ; Regs used in _TLC59116_Write_All: [wreg+fsr1l+fsr1h+status,2+status,0+pclath+cstack]
2170 ;TLC59116_Write_All@values stored from wreg
2171 074D 0020 movlb 0 ; select bank0
2172 074E 00BB movwf TLC59116_Write_All@values
2173
2174 ;TLC59116.c: 55: uint8_t buffer[17];
2175 ;TLC59116.c: 56: uint8_t i;
2176 ;TLC59116.c: 58: buffer[0] = buffer[0] = 0x80 | 0x02;
2177 074F 3082 movlw 130
2178 0750 00A9 movwf TLC59116_Write_All@buffer
2179 0751 00A7 movwf ??_TLC59116_Write_All
2180 0752 0827 movf ??_TLC59116_Write_All,w
2181 0753 00A9 movwf TLC59116_Write_All@buffer
2182
2183 ;TLC59116.c: 59: buffer[1] = values[0];
2184 0754 083B movf TLC59116_Write_All@values,w
2185 0755 0086 movwf 6
2186 0756 0187 clrf 7
2187 0757 0801 movf 1,w
2188 0758 00A7 movwf ??_TLC59116_Write_All
2189 0759 0827 movf ??_TLC59116_Write_All,w
2190 075A 00AA movwf TLC59116_Write_All@buffer+1
2191
2192 ;TLC59116.c: 60: buffer[2] = values[1];
2193 075B 083B movf TLC59116_Write_All@values,w
2194 075C 0086 movwf 6
2195 075D 0187 clrf 7
2196 075E 3F41 moviw [1]fsr1
2197 075F 00AB movwf TLC59116_Write_All@buffer+2
2198
2199 ;TLC59116.c: 61: buffer[3] = values[2];
2200 0760 083B movf TLC59116_Write_All@values,w
2201 0761 0086 movwf 6
2202 0762 0187 clrf 7
2203 0763 3F42 moviw [2]fsr1
2204 0764 00AC movwf TLC59116_Write_All@buffer+3
2205
2206 ;TLC59116.c: 62: buffer[4] = values[3];
2207 0765 083B movf TLC59116_Write_All@values,w
2208 0766 0086 movwf 6
2209 0767 0187 clrf 7
2210 0768 3F43 moviw [3]fsr1
2211 0769 00AD movwf TLC59116_Write_All@buffer+4
2212
2213 ;TLC59116.c: 63: buffer[5] = values[4];
2214 076A 083B movf TLC59116_Write_All@values,w
2215 076B 0086 movwf 6
2216 076C 0187 clrf 7
2217 076D 3F44 moviw [4]fsr1
2218 076E 00AE movwf TLC59116_Write_All@buffer+5
2219
2220 ;TLC59116.c: 64: buffer[6] = values[5];
2221 076F 083B movf TLC59116_Write_All@values,w
2222 0770 0086 movwf 6
2223 0771 0187 clrf 7
2224 0772 3F45 moviw [5]fsr1
2225 0773 00AF movwf TLC59116_Write_All@buffer+6
2226
2227 ;TLC59116.c: 65: buffer[7] = values[6];
2228 0774 083B movf TLC59116_Write_All@values,w
2229 0775 0086 movwf 6
2230 0776 0187 clrf 7
2231 0777 3F46 moviw [6]fsr1
2232 0778 00B0 movwf TLC59116_Write_All@buffer+7
2233
2234 ;TLC59116.c: 66: buffer[8] = values[7];
2235 0779 083B movf TLC59116_Write_All@values,w
2236 077A 0086 movwf 6
2237 077B 0187 clrf 7
2238 077C 3F47 moviw [7]fsr1
2239 077D 00B1 movwf TLC59116_Write_All@buffer+8
2240
2241 ;TLC59116.c: 67: buffer[9] = values[8];
2242 077E 083B movf TLC59116_Write_All@values,w
2243 077F 0086 movwf 6
2244 0780 0187 clrf 7
2245 0781 3F48 moviw [8]fsr1
2246 0782 00B2 movwf TLC59116_Write_All@buffer+9
2247
2248 ;TLC59116.c: 68: buffer[10] = values[9];
2249 0783 083B movf TLC59116_Write_All@values,w
2250 0784 0086 movwf 6
2251 0785 0187 clrf 7
2252 0786 3F49 moviw [9]fsr1
2253 0787 00B3 movwf TLC59116_Write_All@buffer+10
2254
2255 ;TLC59116.c: 69: buffer[11] = values[10];
2256 0788 083B movf TLC59116_Write_All@values,w
2257 0789 0086 movwf 6
2258 078A 0187 clrf 7
2259 078B 3F4A moviw [10]fsr1
2260 078C 00B4 movwf TLC59116_Write_All@buffer+11
2261
2262 ;TLC59116.c: 70: buffer[12] = values[11];
2263 078D 083B movf TLC59116_Write_All@values,w
2264 078E 0086 movwf 6
2265 078F 0187 clrf 7
2266 0790 3F4B moviw [11]fsr1
2267 0791 00B5 movwf TLC59116_Write_All@buffer+12
2268
2269 ;TLC59116.c: 71: buffer[13] = values[12];
2270 0792 083B movf TLC59116_Write_All@values,w
2271 0793 0086 movwf 6
2272 0794 0187 clrf 7
2273 0795 3F4C moviw [12]fsr1
2274 0796 00B6 movwf TLC59116_Write_All@buffer+13
2275
2276 ;TLC59116.c: 72: buffer[14] = values[13];
2277 0797 083B movf TLC59116_Write_All@values,w
2278 0798 0086 movwf 6
2279 0799 0187 clrf 7
2280 079A 3F4D moviw [13]fsr1
2281 079B 00B7 movwf TLC59116_Write_All@buffer+14
2282
2283 ;TLC59116.c: 73: buffer[15] = values[14];
2284 079C 083B movf TLC59116_Write_All@values,w
2285 079D 0086 movwf 6
2286 079E 0187 clrf 7
2287 079F 3F4E moviw [14]fsr1
2288 07A0 00B8 movwf TLC59116_Write_All@buffer+15
2289
2290 ;TLC59116.c: 74: buffer[16] = values[15];
2291 07A1 083B movf TLC59116_Write_All@values,w
2292 07A2 0086 movwf 6
2293 07A3 0187 clrf 7
2294 07A4 3F4F moviw [15]fsr1
2295 07A5 00B9 movwf TLC59116_Write_All@buffer+16
2296
2297 ;TLC59116.c: 76: I2C2_Master_Send(0x60, 17, buffer);
2298 07A6 3011 movlw 17
2299 07A7 00A7 movwf ??_TLC59116_Write_All
2300 07A8 0827 movf ??_TLC59116_Write_All,w
2301 07A9 00A0 movwf ?_I2C2_Master_Send
2302 07AA 3029 movlw TLC59116_Write_All@buffer& (0+255)
2303 07AB 00A8 movwf ??_TLC59116_Write_All+1
2304 07AC 0828 movf ??_TLC59116_Write_All+1,w
2305 07AD 00A1 movwf ?_I2C2_Master_Send+1
2306 07AE 3060 movlw 96
2307 07AF 318D 25EC 3187 fcall _I2C2_Master_Send
2308 07B2 l2373:
2309 ;TLC59116.c: 77: uint8_t result;
2310 ;TLC59116.c: 78: do {
2311
2312
2313 ;TLC59116.c: 79: result = I2C2_Get_Status();
2314 07B2 3187 27BD 3187 fcall _I2C2_Get_Status
2315 07B5 0020 movlb 0 ; select bank0
2316 07B6 00A7 movwf ??_TLC59116_Write_All
2317 07B7 0827 movf ??_TLC59116_Write_All,w
2318 07B8 00BA movwf TLC59116_Write_All@result
2319
2320 ;TLC59116.c: 80: } while (!result);
2321 07B9 083A movf TLC59116_Write_All@result,w
2322 07BA 1D03 skipz
2323 07BB 0008 return
2324 07BC 2FB2 goto l2373
2325 07BD __end_of_TLC59116_Write_All:
2326
2327 psect text6
2328 0D12 __ptext6:
2329 ;; *************** function _TLC59116_Init *****************
2330 ;; Defined at:
2331 ;; line 5 in file "TLC59116.c"
2332 ;; Parameters: Size Location Type
2333 ;; None
2334 ;; Auto vars: Size Location Type
2335 ;; buffer 25 9[BANK0 ] unsigned char [25]
2336 ;; result 1 34[BANK0 ] unsigned char
2337 ;; Return value: Size Location Type
2338 ;; None void
2339 ;; Registers used:
2340 ;; wreg, fsr1l, fsr1h, status,2, status,0, pclath, cstack
2341 ;; Tracked objects:
2342 ;; On entry : 0/0
2343 ;; On exit : 0/0
2344 ;; Unchanged: 0/0
2345 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2346 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2347 ;; Locals: 0 26 0 0 0 0 0 0 0 0 0 0
+0 0
2348 ;; Temps: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
2349 ;; Totals: 0 28 0 0 0 0 0 0 0 0 0 0
+0 0
2350 ;;Total ram usage: 28 bytes
2351 ;; Hardware stack levels used: 1
2352 ;; Hardware stack levels required when called: 5
2353 ;; This function calls:
2354 ;; _I2C2_Master_Send
2355 ;; _I2C2_Get_Status
2356 ;; This function is called by:
2357 ;; _main
2358 ;; This function uses a non-reentrant model
2359 ;;
2360
2361
2362 ;psect for function _TLC59116_Init
2363 0D12 _TLC59116_Init:
2364
2365 ;TLC59116.c: 6: uint8_t buffer[25];
2366 ;TLC59116.c: 8: buffer[0] = 0x80 | 0x00;
2367
2368 ;incstack = 0
2369 ; Regs used in _TLC59116_Init: [wreg+fsr1l+fsr1h+status,2+status,0+pclath+cstack]
2370 0D12 3080 movlw 128
2371 0D13 0020 movlb 0 ; select bank0
2372 0D14 00A7 movwf ??_TLC59116_Init
2373 0D15 0827 movf ??_TLC59116_Init,w
2374 0D16 00A9 movwf TLC59116_Init@buffer
2375
2376 ;TLC59116.c: 9: buffer[1] = 0x80 | 0x00;
2377 0D17 3080 movlw 128
2378 0D18 00A7 movwf ??_TLC59116_Init
2379 0D19 0827 movf ??_TLC59116_Init,w
2380 0D1A 00AA movwf TLC59116_Init@buffer+1
2381
2382 ;TLC59116.c: 10: buffer[2] = 0x00;
2383 0D1B 01AB clrf TLC59116_Init@buffer+2
2384
2385 ;TLC59116.c: 11: buffer[3] = 0x00;
2386 0D1C 01AC clrf TLC59116_Init@buffer+3
2387
2388 ;TLC59116.c: 12: buffer[4] = 0x00;
2389 0D1D 01AD clrf TLC59116_Init@buffer+4
2390
2391 ;TLC59116.c: 13: buffer[5] = 0x00;
2392 0D1E 01AE clrf TLC59116_Init@buffer+5
2393
2394 ;TLC59116.c: 14: buffer[6] = 0x00;
2395 0D1F 01AF clrf TLC59116_Init@buffer+6
2396
2397 ;TLC59116.c: 15: buffer[7] = 0x00;
2398 0D20 01B0 clrf TLC59116_Init@buffer+7
2399
2400 ;TLC59116.c: 16: buffer[8] = 0x00;
2401 0D21 01B1 clrf TLC59116_Init@buffer+8
2402
2403 ;TLC59116.c: 17: buffer[9] = 0x00;
2404 0D22 01B2 clrf TLC59116_Init@buffer+9
2405
2406 ;TLC59116.c: 18: buffer[10] = 0x00;
2407 0D23 01B3 clrf TLC59116_Init@buffer+10
2408
2409 ;TLC59116.c: 19: buffer[11] = 0x00;
2410 0D24 01B4 clrf TLC59116_Init@buffer+11
2411
2412 ;TLC59116.c: 20: buffer[12] = 0x00;
2413 0D25 01B5 clrf TLC59116_Init@buffer+12
2414
2415 ;TLC59116.c: 21: buffer[13] = 0x00;
2416 0D26 01B6 clrf TLC59116_Init@buffer+13
2417
2418 ;TLC59116.c: 22: buffer[14] = 0x00;
2419 0D27 01B7 clrf TLC59116_Init@buffer+14
2420
2421 ;TLC59116.c: 23: buffer[15] = 0x00;
2422 0D28 01B8 clrf TLC59116_Init@buffer+15
2423
2424 ;TLC59116.c: 24: buffer[16] = 0x00;
2425 0D29 01B9 clrf TLC59116_Init@buffer+16
2426
2427 ;TLC59116.c: 25: buffer[17] = 0x00;
2428 0D2A 01BA clrf TLC59116_Init@buffer+17
2429
2430 ;TLC59116.c: 26: buffer[18] = 0x00;
2431 0D2B 01BB clrf TLC59116_Init@buffer+18
2432
2433 ;TLC59116.c: 27: buffer[19] = 0xFF;
2434 0D2C 30FF movlw 255
2435 0D2D 00A7 movwf ??_TLC59116_Init
2436 0D2E 0827 movf ??_TLC59116_Init,w
2437 0D2F 00BC movwf TLC59116_Init@buffer+19
2438
2439 ;TLC59116.c: 28: buffer[20] = 0x00;
2440 0D30 01BD clrf TLC59116_Init@buffer+20
2441
2442 ;TLC59116.c: 29: buffer[21] = 0xFF;
2443 0D31 30FF movlw 255
2444 0D32 00A7 movwf ??_TLC59116_Init
2445 0D33 0827 movf ??_TLC59116_Init,w
2446 0D34 00BE movwf TLC59116_Init@buffer+21
2447
2448 ;TLC59116.c: 30: buffer[22] = 0xFF;
2449 0D35 30FF movlw 255
2450 0D36 00A7 movwf ??_TLC59116_Init
2451 0D37 0827 movf ??_TLC59116_Init,w
2452 0D38 00BF movwf TLC59116_Init@buffer+22
2453
2454 ;TLC59116.c: 31: buffer[23] = 0xFF;
2455 0D39 30FF movlw 255
2456 0D3A 00A7 movwf ??_TLC59116_Init
2457 0D3B 0827 movf ??_TLC59116_Init,w
2458 0D3C 00C0 movwf TLC59116_Init@buffer+23
2459
2460 ;TLC59116.c: 32: buffer[24] = 0xFF;
2461 0D3D 30FF movlw 255
2462 0D3E 00A7 movwf ??_TLC59116_Init
2463 0D3F 0827 movf ??_TLC59116_Init,w
2464 0D40 00C1 movwf TLC59116_Init@buffer+24
2465
2466 ;TLC59116.c: 34: I2C2_Master_Send(0x60, 25, buffer);
2467 0D41 3019 movlw 25
2468 0D42 00A7 movwf ??_TLC59116_Init
2469 0D43 0827 movf ??_TLC59116_Init,w
2470 0D44 00A0 movwf ?_I2C2_Master_Send
2471 0D45 3029 movlw TLC59116_Init@buffer& (0+255)
2472 0D46 00A8 movwf ??_TLC59116_Init+1
2473 0D47 0828 movf ??_TLC59116_Init+1,w
2474 0D48 00A1 movwf ?_I2C2_Master_Send+1
2475 0D49 3060 movlw 96
2476 0D4A 318D 25EC 318D fcall _I2C2_Master_Send
2477 0D4D l2333:
2478 ;TLC59116.c: 35: uint8_t result;
2479 ;TLC59116.c: 36: do {
2480
2481
2482 ;TLC59116.c: 37: result = I2C2_Get_Status();
2483 0D4D 3187 27BD 318D fcall _I2C2_Get_Status
2484 0D50 0020 movlb 0 ; select bank0
2485 0D51 00A7 movwf ??_TLC59116_Init
2486 0D52 0827 movf ??_TLC59116_Init,w
2487 0D53 00C2 movwf TLC59116_Init@result
2488
2489 ;TLC59116.c: 38: } while (!result);
2490 0D54 0842 movf TLC59116_Init@result,w
2491 0D55 1D03 skipz
2492 0D56 0008 return
2493 0D57 2D4D goto l2333
2494 0D58 __end_of_TLC59116_Init:
2495
2496 psect text7
2497 07BD __ptext7:
2498 ;; *************** function _I2C2_Get_Status *****************
2499 ;; Defined at:
2500 ;; line 485 in file "I2C2.c"
2501 ;; Parameters: Size Location Type
2502 ;; None
2503 ;; Auto vars: Size Location Type
2504 ;; None
2505 ;; Return value: Size Location Type
2506 ;; 1 wreg unsigned char
2507 ;; Registers used:
2508 ;; wreg, fsr1l, fsr1h, status,2, status,0
2509 ;; Tracked objects:
2510 ;; On entry : 0/0
2511 ;; On exit : 0/0
2512 ;; Unchanged: 0/0
2513 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2514 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2515 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2516 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2517 ;; Totals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2518 ;;Total ram usage: 0 bytes
2519 ;; Hardware stack levels used: 1
2520 ;; Hardware stack levels required when called: 4
2521 ;; This function calls:
2522 ;; Nothing
2523 ;; This function is called by:
2524 ;; _TLC59116_Init
2525 ;; _TLC59116_Write_All
2526 ;; _MCP23009_Init
2527 ;; _MCP23009_Query
2528 ;; _TLC59116_Write
2529 ;; _TLC59116_Write_BC
2530 ;; This function uses a non-reentrant model
2531 ;;
2532
2533
2534 ;psect for function _I2C2_Get_Status
2535 07BD _I2C2_Get_Status:
2536
2537 ;I2C2.c: 486: if (i2c_data_p->operating_mode == 0x11) {
2538
2539 ;incstack = 0
2540 ; Regs used in _I2C2_Get_Status: [wreg+fsr1l+fsr1h+status,2+status,0]
2541 07BD 0020 movlb 0 ; select bank0
2542 07BE 0869 movf I2C2@i2c_data_p,w
2543 07BF 3E46 addlw 70
2544 07C0 0086 movwf 6
2545 07C1 3001 movlw 1 ; select bank2/3
2546 07C2 0087 movwf 7
2547 07C3 0801 movf 1,w
2548 07C4 3A11 xorlw 17
2549 07C5 1D03 skipz
2550 07C6 2FE1 goto l2885
2551
2552 ;I2C2.c: 487: if (i2c_data_p->master_status != 0x23 || i2c_data_p->buffer_in_len == 0) {
2553 07C7 0869 movf I2C2@i2c_data_p,w
2554 07C8 3E4A addlw 74
2555 07C9 0086 movwf 6
2556 07CA 3001 movlw 1 ; select bank2/3
2557 07CB 0087 movwf 7
2558 07CC 0801 movf 1,w
2559 07CD 3A23 xorlw 35
2560 07CE 1D03 skipz
2561 07CF 2FD8 goto l2875
2562 07D0 0869 movf I2C2@i2c_data_p,w
2563 07D1 3E20 addlw 32
2564 07D2 0086 movwf 6
2565 07D3 3001 movlw 1 ; select bank2/3
2566 07D4 0087 movwf 7
2567 07D5 0881 movf 1,f
2568 07D6 1D03 skipz
2569 07D7 2FDA goto l2881
2570 07D8 l2875:
2571
2572 ;I2C2.c: 488: return 0;
2573 07D8 3000 movlw 0
2574
2575 ;I2C2.c: 489: } else {
2576 07D9 0008 return
2577 07DA l2881:
2578
2579 ;I2C2.c: 490: return i2c_data_p->return_status;
2580 07DA 0869 movf I2C2@i2c_data_p,w
2581 07DB 3E48 addlw 72
2582 07DC 0086 movwf 6
2583 07DD 3001 movlw 1 ; select bank2/3
2584 07DE 0087 movwf 7
2585 07DF 0801 movf 1,w
2586
2587 ;I2C2.c: 491: }
2588 ;I2C2.c: 492: } else {
2589 07E0 0008 return
2590 07E1 l2885:
2591
2592 ;I2C2.c: 493: if (i2c_data_p->operating_state != 0x1 || i2c_data_p->buffer_in_len == 0) {
2593 07E1 0869 movf I2C2@i2c_data_p,w
2594 07E2 3E47 addlw 71
2595 07E3 0086 movwf 6
2596 07E4 3001 movlw 1 ; select bank2/3
2597 07E5 0087 movwf 7
2598 07E6 0801 movf 1,w
2599 07E7 3A01 xorlw 1
2600 07E8 1D03 skipz
2601 07E9 2FF2 goto l2889
2602 07EA 0869 movf I2C2@i2c_data_p,w
2603 07EB 3E20 addlw 32
2604 07EC 0086 movwf 6
2605 07ED 3001 movlw 1 ; select bank2/3
2606 07EE 0087 movwf 7
2607 07EF 0881 movf 1,f
2608 07F0 1D03 skipz
2609 07F1 2FF4 goto l2895
2610 07F2 l2889:
2611
2612 ;I2C2.c: 494: return 0;
2613 07F2 3000 movlw 0
2614
2615 ;I2C2.c: 495: } else {
2616 07F3 0008 return
2617 07F4 l2895:
2618
2619 ;I2C2.c: 496: return i2c_data_p->return_status;
2620 07F4 0869 movf I2C2@i2c_data_p,w
2621 07F5 3E48 addlw 72
2622 07F6 0086 movwf 6
2623 07F7 3001 movlw 1 ; select bank2/3
2624 07F8 0087 movwf 7
2625 07F9 0801 movf 1,w
2626 07FA 0008 return
2627 07FB __end_of_I2C2_Get_Status:
2628
2629 psect text8
2630 0DEC __ptext8:
2631 ;; *************** function _I2C2_Master_Send *****************
2632 ;; Defined at:
2633 ;; line 54 in file "I2C2.c"
2634 ;; Parameters: Size Location Type
2635 ;; address 1 wreg unsigned char
2636 ;; length 1 0[BANK0 ] unsigned char
2637 ;; msg 1 1[BANK0 ] PTR unsigned char
2638 ;; -> MCP23009_Query@buffer(2), MCP23009_Init@buffer(8), TLC59116_Write_BC@buffer(2), TLC59116_Write_All@buffer(17),
2639 ;; -> TLC59116_Write@buffer(2), TLC59116_Init@buffer(25), I2C2_Master_Restart@c(1),
2640 ;; Auto vars: Size Location Type
2641 ;; address 1 5[BANK0 ] unsigned char
2642 ;; i 1 6[BANK0 ] unsigned char
2643 ;; Return value: Size Location Type
2644 ;; None void
2645 ;; Registers used:
2646 ;; wreg, fsr1l, fsr1h, status,2, status,0
2647 ;; Tracked objects:
2648 ;; On entry : 0/0
2649 ;; On exit : 0/0
2650 ;; Unchanged: 0/0
2651 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2652 ;; Params: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
2653 ;; Locals: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
2654 ;; Temps: 0 3 0 0 0 0 0 0 0 0 0 0
+0 0
2655 ;; Totals: 0 7 0 0 0 0 0 0 0 0 0 0
+0 0
2656 ;;Total ram usage: 7 bytes
2657 ;; Hardware stack levels used: 1
2658 ;; Hardware stack levels required when called: 4
2659 ;; This function calls:
2660 ;; Nothing
2661 ;; This function is called by:
2662 ;; _TLC59116_Init
2663 ;; _TLC59116_Write_All
2664 ;; _MCP23009_Init
2665 ;; _MCP23009_Query
2666 ;; _I2C2_Master_Restart
2667 ;; _TLC59116_Write
2668 ;; _TLC59116_Write_BC
2669 ;; This function uses a non-reentrant model
2670 ;;
2671
2672
2673 ;psect for function _I2C2_Master_Send
2674 0DEC _I2C2_Master_Send:
2675
2676 ;incstack = 0
2677 ; Regs used in _I2C2_Master_Send: [wreg+fsr1l+fsr1h+status,2+status,0]
2678 ;I2C2_Master_Send@address stored from wreg
2679 0DEC 0020 movlb 0 ; select bank0
2680 0DED 00A5 movwf I2C2_Master_Send@address
2681
2682 ;I2C2.c: 55: uint8_t i;
2683 ;I2C2.c: 56: if (length == 0)
2684 0DEE 08A0 movf I2C2_Master_Send@length,f
2685 0DEF 1903 btfsc 3,2
2686 0DF0 0008 return
2687
2688 ;I2C2.c: 60: for (i = 0; i < length; i++) {
2689
2690 ;I2C2.c: 57: return;
2691 0DF1 01A6 clrf I2C2_Master_Send@i
2692 0DF2 l2661:
2693 0DF2 0820 movf I2C2_Master_Send@length,w
2694 0DF3 0226 subwf I2C2_Master_Send@i,w
2695 0DF4 1803 btfsc 3,0
2696 0DF5 2E0C goto l2663
2697
2698 ;I2C2.c: 61: i2c_data_p->buffer_in[i] = msg[i];
2699 0DF6 0826 movf I2C2_Master_Send@i,w
2700 0DF7 0721 addwf I2C2_Master_Send@msg,w
2701 0DF8 00A2 movwf ??_I2C2_Master_Send
2702 0DF9 0822 movf ??_I2C2_Master_Send,w
2703 0DFA 0086 movwf 6
2704 0DFB 0187 clrf 7
2705 0DFC 0801 movf 1,w
2706 0DFD 00A3 movwf ??_I2C2_Master_Send+1
2707 0DFE 0826 movf I2C2_Master_Send@i,w
2708 0DFF 0769 addwf I2C2@i2c_data_p,w
2709 0E00 00A4 movwf ??_I2C2_Master_Send+2
2710 0E01 0824 movf ??_I2C2_Master_Send+2,w
2711 0E02 0086 movwf 6
2712 0E03 3001 movlw 1 ; select bank2/3
2713 0E04 0087 movwf 7
2714 0E05 0823 movf ??_I2C2_Master_Send+1,w
2715 0E06 0081 movwf 1
2716 0E07 3001 movlw 1
2717 0E08 00A2 movwf ??_I2C2_Master_Send
2718 0E09 0822 movf ??_I2C2_Master_Send,w
2719 0E0A 07A6 addwf I2C2_Master_Send@i,f
2720 0E0B 2DF2 goto l2661
2721 0E0C l2663:
2722
2723 ;I2C2.c: 62: }
2724 ;I2C2.c: 63: i2c_data_p->buffer_in_len = length;
2725 0E0C 0820 movf I2C2_Master_Send@length,w
2726 0E0D 00A2 movwf ??_I2C2_Master_Send
2727 0E0E 0869 movf I2C2@i2c_data_p,w
2728 0E0F 3E20 addlw 32
2729 0E10 0086 movwf 6
2730 0E11 3001 movlw 1 ; select bank2/3
2731 0E12 0087 movwf 7
2732 0E13 0822 movf ??_I2C2_Master_Send,w
2733 0E14 0081 movwf 1
2734
2735 ;I2C2.c: 64: i2c_data_p->master_dest_addr = address;
2736 0E15 0825 movf I2C2_Master_Send@address,w
2737 0E16 00A2 movwf ??_I2C2_Master_Send
2738 0E17 0869 movf I2C2@i2c_data_p,w
2739 0E18 3E49 addlw 73
2740 0E19 0086 movwf 6
2741 0E1A 3001 movlw 1 ; select bank2/3
2742 0E1B 0087 movwf 7
2743 0E1C 0822 movf ??_I2C2_Master_Send,w
2744 0E1D 0081 movwf 1
2745
2746 ;I2C2.c: 65: i2c_data_p->buffer_in_read_ind = 0;
2747 0E1E 0869 movf I2C2@i2c_data_p,w
2748 0E1F 3E22 addlw 34
2749 0E20 0086 movwf 6
2750 0E21 3001 movlw 1 ; select bank2/3
2751 0E22 0087 movwf 7
2752 0E23 0181 clrf 1
2753
2754 ;I2C2.c: 66: i2c_data_p->buffer_in_write_ind = 0;
2755 0E24 0869 movf I2C2@i2c_data_p,w
2756 0E25 3E23 addlw 35
2757 0E26 0086 movwf 6
2758 0E27 3001 movlw 1 ; select bank2/3
2759 0E28 0087 movwf 7
2760 0E29 0181 clrf 1
2761
2762 ;I2C2.c: 69: i2c_data_p->operating_state = 0x5;
2763 0E2A 3005 movlw 5
2764 0E2B 00A2 movwf ??_I2C2_Master_Send
2765 0E2C 0869 movf I2C2@i2c_data_p,w
2766 0E2D 3E47 addlw 71
2767 0E2E 0086 movwf 6
2768 0E2F 3001 movlw 1 ; select bank2/3
2769 0E30 0087 movwf 7
2770 0E31 0822 movf ??_I2C2_Master_Send,w
2771 0E32 0081 movwf 1
2772
2773 ;I2C2.c: 70: i2c_data_p->master_status = 0x20;
2774 0E33 3020 movlw 32
2775 0E34 00A2 movwf ??_I2C2_Master_Send
2776 0E35 0869 movf I2C2@i2c_data_p,w
2777 0E36 3E4A addlw 74
2778 0E37 0086 movwf 6
2779 0E38 3001 movlw 1 ; select bank2/3
2780 0E39 0087 movwf 7
2781 0E3A 0822 movf ??_I2C2_Master_Send,w
2782 0E3B 0081 movwf 1
2783
2784 ;I2C2.c: 73: SSP2CON2bits.SEN = 1;
2785 0E3C 0024 movlb 4 ; select bank4
2786 0E3D 141E bsf 30,0 ;volatile
2787 0E3E 0008 return
2788 0E3F __end_of_I2C2_Master_Send:
2789
2790 psect text9
2791 07FB __ptext9:
2792 ;; *************** function _Interrupt_Enable *****************
2793 ;; Defined at:
2794 ;; line 10 in file "INTERRUPTS.c"
2795 ;; Parameters: Size Location Type
2796 ;; None
2797 ;; Auto vars: Size Location Type
2798 ;; None
2799 ;; Return value: Size Location Type
2800 ;; None void
2801 ;; Registers used:
2802 ;; None
2803 ;; Tracked objects:
2804 ;; On entry : 0/0
2805 ;; On exit : 0/0
2806 ;; Unchanged: 0/0
2807 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2808 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2809 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2810 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2811 ;; Totals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2812 ;;Total ram usage: 0 bytes
2813 ;; Hardware stack levels used: 1
2814 ;; Hardware stack levels required when called: 4
2815 ;; This function calls:
2816 ;; Nothing
2817 ;; This function is called by:
2818 ;; _main
2819 ;; This function uses a non-reentrant model
2820 ;;
2821
2822
2823 ;psect for function _Interrupt_Enable
2824 07FB _Interrupt_Enable:
2825
2826 ;INTERRUPTS.c: 12: INTCONbits.PEIE = 1;
2827
2828 ;incstack = 0
2829 ; Regs used in _Interrupt_Enable: []
2830 07FB 170B bsf 11,6 ;volatile
2831
2832 ;INTERRUPTS.c: 13: INTCONbits.GIE = 1;
2833 07FC 178B bsf 11,7 ;volatile
2834 07FD 0008 return
2835 07FE __end_of_Interrupt_Enable:
2836
2837 psect text10
2838 07FE __ptext10:
2839 ;; *************** function _Interrupt_Init *****************
2840 ;; Defined at:
2841 ;; line 6 in file "INTERRUPTS.c"
2842 ;; Parameters: Size Location Type
2843 ;; None
2844 ;; Auto vars: Size Location Type
2845 ;; None
2846 ;; Return value: Size Location Type
2847 ;; None void
2848 ;; Registers used:
2849 ;; None
2850 ;; Tracked objects:
2851 ;; On entry : 0/0
2852 ;; On exit : 0/0
2853 ;; Unchanged: 0/0
2854 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2855 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2856 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2857 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2858 ;; Totals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2859 ;;Total ram usage: 0 bytes
2860 ;; Hardware stack levels used: 1
2861 ;; Hardware stack levels required when called: 4
2862 ;; This function calls:
2863 ;; Nothing
2864 ;; This function is called by:
2865 ;; _main
2866 ;; This function uses a non-reentrant model
2867 ;;
2868
2869
2870 ;psect for function _Interrupt_Init
2871 07FE _Interrupt_Init:
2872
2873 ;incstack = 0
2874 ; Regs used in _Interrupt_Init: []
2875 07FE 0008 return
2876 07FF __end_of_Interrupt_Init:
2877
2878 psect text11
2879 0C2B __ptext11:
2880 ;; *************** function _I2C2_Configure_Master *****************
2881 ;; Defined at:
2882 ;; line 34 in file "I2C2.c"
2883 ;; Parameters: Size Location Type
2884 ;; speed 1 wreg unsigned char
2885 ;; Auto vars: Size Location Type
2886 ;; speed 1 1[BANK0 ] unsigned char
2887 ;; Return value: Size Location Type
2888 ;; None void
2889 ;; Registers used:
2890 ;; wreg, fsr1l, fsr1h, status,2, status,0
2891 ;; Tracked objects:
2892 ;; On entry : 0/0
2893 ;; On exit : 0/0
2894 ;; Unchanged: 0/0
2895 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
2896 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
2897 ;; Locals: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
2898 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
2899 ;; Totals: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
2900 ;;Total ram usage: 2 bytes
2901 ;; Hardware stack levels used: 1
2902 ;; Hardware stack levels required when called: 4
2903 ;; This function calls:
2904 ;; Nothing
2905 ;; This function is called by:
2906 ;; _main
2907 ;; This function uses a non-reentrant model
2908 ;;
2909
2910
2911 ;psect for function _I2C2_Configure_Master
2912 0C2B _I2C2_Configure_Master:
2913
2914 ;incstack = 0
2915 ; Regs used in _I2C2_Configure_Master: [wreg+fsr1l+fsr1h+status,2+status,0]
2916 ;I2C2_Configure_Master@speed stored from wreg
2917 0C2B 0020 movlb 0 ; select bank0
2918 0C2C 00A1 movwf I2C2_Configure_Master@speed
2919
2920 ;I2C2.c: 35: i2c_data_p->operating_mode = 0x11;
2921 0C2D 3011 movlw 17
2922 0C2E 00A0 movwf ??_I2C2_Configure_Master
2923 0C2F 0869 movf I2C2@i2c_data_p,w
2924 0C30 3E46 addlw 70
2925 0C31 0086 movwf 6
2926 0C32 3001 movlw 1 ; select bank2/3
2927 0C33 0087 movwf 7
2928 0C34 0820 movf ??_I2C2_Configure_Master,w
2929 0C35 0081 movwf 1
2930
2931 ;I2C2.c: 37: TRISBbits.TRISB7 = 1;
2932 0C36 0021 movlb 1 ; select bank1
2933 0C37 178D bsf 13,7 ;volatile
2934
2935 ;I2C2.c: 38: TRISBbits.TRISB5 = 1;
2936 0C38 168D bsf 13,5 ;volatile
2937
2938 ;I2C2.c: 40: SSP2STAT = 0x0;
2939 0C39 0024 movlb 4 ; select bank4
2940 0C3A 019C clrf 28 ;volatile
2941
2942 ;I2C2.c: 41: SSP2CON1 = 0x0;
2943 0C3B 019D clrf 29 ;volatile
2944
2945 ;I2C2.c: 42: SSP2CON2 = 0x0;
2946 0C3C 019E clrf 30 ;volatile
2947
2948 ;I2C2.c: 43: SSP2CON1bits.SSPM = 0x8;
2949 0C3D 081D movf 29,w ;volatile
2950 0C3E 39F0 andlw -16
2951 0C3F 3808 iorlw 8
2952 0C40 009D movwf 29 ;volatile
2953
2954 ;I2C2.c: 44: if (!speed) {
2955 0C41 0020 movlb 0 ; select bank0
2956 0C42 08A1 movf I2C2_Configure_Master@speed,f
2957 0C43 1D03 skipz
2958 0C44 2C47 goto l2277
2959
2960 ;I2C2.c: 45: SSP2ADD = 0x13;
2961 0C45 3013 movlw 19
2962 0C46 2C48 goto L1
2963 0C47 l2277:
2964 ;I2C2.c: 46: } else {
2965
2966
2967 ;I2C2.c: 47: SSP2ADD = 0x4F;
2968 0C47 304F movlw 79
2969 0C48 L1:
2970 0C48 0024 movlb 4 ; select bank4
2971 0C49 009A movwf 26 ;volatile
2972
2973 ;I2C2.c: 48: }
2974 ;I2C2.c: 49: SSP2STATbits.SMP = 1;
2975 0C4A 179C bsf 28,7 ;volatile
2976
2977 ;I2C2.c: 50: SSP2CON1bits.SSPEN = 1;
2978 0C4B 169D bsf 29,5 ;volatile
2979 0C4C 0008 return
2980 0C4D __end_of_I2C2_Configure_Master:
2981
2982 psect text12
2983 0E3F __ptext12:
2984 ;; *************** function _I2C2_Init *****************
2985 ;; Defined at:
2986 ;; line 8 in file "I2C2.c"
2987 ;; Parameters: Size Location Type
2988 ;; data 1 wreg PTR struct .
2989 ;; -> main@i2c2_data(77),
2990 ;; Auto vars: Size Location Type
2991 ;; data 1 1[BANK0 ] PTR struct .
2992 ;; -> main@i2c2_data(77),
2993 ;; Return value: Size Location Type
2994 ;; None void
2995 ;; Registers used:
2996 ;; wreg, fsr1l, fsr1h, status,2
2997 ;; Tracked objects:
2998 ;; On entry : 0/0
2999 ;; On exit : 0/0
3000 ;; Unchanged: 0/0
3001 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3002 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3003 ;; Locals: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3004 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3005 ;; Totals: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
3006 ;;Total ram usage: 2 bytes
3007 ;; Hardware stack levels used: 1
3008 ;; Hardware stack levels required when called: 4
3009 ;; This function calls:
3010 ;; Nothing
3011 ;; This function is called by:
3012 ;; _main
3013 ;; This function uses a non-reentrant model
3014 ;;
3015
3016
3017 ;psect for function _I2C2_Init
3018 0E3F _I2C2_Init:
3019
3020 ;incstack = 0
3021 ; Regs used in _I2C2_Init: [wreg+fsr1l+fsr1h+status,2]
3022 ;I2C2_Init@data stored from wreg
3023 0E3F 0020 movlb 0 ; select bank0
3024 0E40 00A1 movwf I2C2_Init@data
3025
3026 ;I2C2.c: 9: i2c_data_p = data;
3027 0E41 0821 movf I2C2_Init@data,w
3028 0E42 00A0 movwf ??_I2C2_Init
3029 0E43 0820 movf ??_I2C2_Init,w
3030 0E44 00E9 movwf I2C2@i2c_data_p
3031
3032 ;I2C2.c: 11: i2c_data_p->buffer_in_len = 0;
3033 0E45 0869 movf I2C2@i2c_data_p,w
3034 0E46 3E20 addlw 32
3035 0E47 0086 movwf 6
3036 0E48 3001 movlw 1 ; select bank2/3
3037 0E49 0087 movwf 7
3038 0E4A 0181 clrf 1
3039
3040 ;I2C2.c: 12: i2c_data_p->buffer_in_len_tmp = 0;
3041 0E4B 0869 movf I2C2@i2c_data_p,w
3042 0E4C 3E21 addlw 33
3043 0E4D 0086 movwf 6
3044 0E4E 3001 movlw 1 ; select bank2/3
3045 0E4F 0087 movwf 7
3046 0E50 0181 clrf 1
3047
3048 ;I2C2.c: 13: i2c_data_p->buffer_in_read_ind = 0;
3049 0E51 0869 movf I2C2@i2c_data_p,w
3050 0E52 3E22 addlw 34
3051 0E53 0086 movwf 6
3052 0E54 3001 movlw 1 ; select bank2/3
3053 0E55 0087 movwf 7
3054 0E56 0181 clrf 1
3055
3056 ;I2C2.c: 14: i2c_data_p->buffer_in_write_ind = 0;
3057 0E57 0869 movf I2C2@i2c_data_p,w
3058 0E58 3E23 addlw 35
3059 0E59 0086 movwf 6
3060 0E5A 3001 movlw 1 ; select bank2/3
3061 0E5B 0087 movwf 7
3062 0E5C 0181 clrf 1
3063
3064 ;I2C2.c: 16: i2c_data_p->buffer_out_ind = 0;
3065 0E5D 0869 movf I2C2@i2c_data_p,w
3066 0E5E 3E45 addlw 69
3067 0E5F 0086 movwf 6
3068 0E60 3001 movlw 1 ; select bank2/3
3069 0E61 0087 movwf 7
3070 0E62 0181 clrf 1
3071
3072 ;I2C2.c: 17: i2c_data_p->buffer_out_len = 0;
3073 0E63 0869 movf I2C2@i2c_data_p,w
3074 0E64 3E44 addlw 68
3075 0E65 0086 movwf 6
3076 0E66 3001 movlw 1 ; select bank2/3
3077 0E67 0087 movwf 7
3078 0E68 0181 clrf 1
3079
3080 ;I2C2.c: 19: i2c_data_p->operating_mode = 0;
3081 0E69 0869 movf I2C2@i2c_data_p,w
3082 0E6A 3E46 addlw 70
3083 0E6B 0086 movwf 6
3084 0E6C 3001 movlw 1 ; select bank2/3
3085 0E6D 0087 movwf 7
3086 0E6E 0181 clrf 1
3087
3088 ;I2C2.c: 20: i2c_data_p->operating_state = 0x1;
3089 0E6F 0869 movf I2C2@i2c_data_p,w
3090 0E70 3E47 addlw 71
3091 0E71 0086 movwf 6
3092 0E72 3001 movlw 1 ; select bank2/3
3093 0E73 0087 movwf 7
3094 0E74 0181 clrf 1
3095 0E75 0A81 incf 1,f
3096
3097 ;I2C2.c: 21: i2c_data_p->return_status = 0;
3098 0E76 0869 movf I2C2@i2c_data_p,w
3099 0E77 3E48 addlw 72
3100 0E78 0086 movwf 6
3101 0E79 3001 movlw 1 ; select bank2/3
3102 0E7A 0087 movwf 7
3103 0E7B 0181 clrf 1
3104
3105 ;I2C2.c: 23: i2c_data_p->slave_in_last_byte = 0;
3106 0E7C 0869 movf I2C2@i2c_data_p,w
3107 0E7D 3E4B addlw 75
3108 0E7E 0086 movwf 6
3109 0E7F 3001 movlw 1 ; select bank2/3
3110 0E80 0087 movwf 7
3111 0E81 0181 clrf 1
3112
3113 ;I2C2.c: 24: i2c_data_p->slave_sending_data = 0;
3114 0E82 0869 movf I2C2@i2c_data_p,w
3115 0E83 3E4C addlw 76
3116 0E84 0086 movwf 6
3117 0E85 3001 movlw 1 ; select bank2/3
3118 0E86 0087 movwf 7
3119 0E87 0181 clrf 1
3120
3121 ;I2C2.c: 26: i2c_data_p->master_dest_addr = 0;
3122 0E88 0869 movf I2C2@i2c_data_p,w
3123 0E89 3E49 addlw 73
3124 0E8A 0086 movwf 6
3125 0E8B 3001 movlw 1 ; select bank2/3
3126 0E8C 0087 movwf 7
3127 0E8D 0181 clrf 1
3128
3129 ;I2C2.c: 27: i2c_data_p->master_status = 0x23;
3130 0E8E 3023 movlw 35
3131 0E8F 00A0 movwf ??_I2C2_Init
3132 0E90 0869 movf I2C2@i2c_data_p,w
3133 0E91 3E4A addlw 74
3134 0E92 0086 movwf 6
3135 0E93 3001 movlw 1 ; select bank2/3
3136 0E94 0087 movwf 7
3137 0E95 0820 movf ??_I2C2_Init,w
3138 0E96 0081 movwf 1
3139
3140 ;I2C2.c: 30: PIE4bits.SSP2IE = 1;
3141 0E97 0021 movlb 1 ; select bank1
3142 0E98 1414 bsf 20,0 ;volatile
3143 0E99 0008 return
3144 0E9A __end_of_I2C2_Init:
3145
3146 psect text13
3147 0C0F __ptext13:
3148 ;; *************** function _I2C1_Configure_Slave *****************
3149 ;; Defined at:
3150 ;; line 120 in file "I2C1.c"
3151 ;; Parameters: Size Location Type
3152 ;; addr 1 wreg unsigned char
3153 ;; Auto vars: Size Location Type
3154 ;; addr 1 1[BANK0 ] unsigned char
3155 ;; Return value: Size Location Type
3156 ;; None void
3157 ;; Registers used:
3158 ;; wreg, fsr1l, fsr1h, status,2, status,0
3159 ;; Tracked objects:
3160 ;; On entry : 0/0
3161 ;; On exit : 0/0
3162 ;; Unchanged: 0/0
3163 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3164 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3165 ;; Locals: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3166 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3167 ;; Totals: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
3168 ;;Total ram usage: 2 bytes
3169 ;; Hardware stack levels used: 1
3170 ;; Hardware stack levels required when called: 4
3171 ;; This function calls:
3172 ;; Nothing
3173 ;; This function is called by:
3174 ;; _main
3175 ;; This function uses a non-reentrant model
3176 ;;
3177
3178
3179 ;psect for function _I2C1_Configure_Slave
3180 0C0F _I2C1_Configure_Slave:
3181
3182 ;incstack = 0
3183 ; Regs used in _I2C1_Configure_Slave: [wreg+fsr1l+fsr1h+status,2+status,0]
3184 ;I2C1_Configure_Slave@addr stored from wreg
3185 0C0F 0020 movlb 0 ; select bank0
3186 0C10 00A1 movwf I2C1_Configure_Slave@addr
3187
3188 ;I2C1.c: 121: i2c_data_p->operating_mode = 0x10;
3189 0C11 3010 movlw 16
3190 0C12 00A0 movwf ??_I2C1_Configure_Slave
3191 0C13 0879 movf _i2c_data_p,w
3192 0C14 3E46 addlw 70
3193 0C15 0086 movwf 6
3194 0C16 0187 clrf 7
3195 0C17 0820 movf ??_I2C1_Configure_Slave,w
3196 0C18 0081 movwf 1
3197
3198 ;I2C1.c: 124: TRISBbits.TRISB6 = 1;
3199 0C19 0021 movlb 1 ; select bank1
3200 0C1A 170D bsf 13,6 ;volatile
3201
3202 ;I2C1.c: 125: TRISBbits.TRISB4 = 1;
3203 0C1B 160D bsf 13,4 ;volatile
3204
3205 ;I2C1.c: 127: SSP1ADD = addr << 1;
3206 0C1C 0020 movlb 0 ; select bank0
3207 0C1D 3521 lslf I2C1_Configure_Slave@addr,w
3208 0C1E 0024 movlb 4 ; select bank4
3209 0C1F 0092 movwf 18 ;volatile
3210
3211 ;I2C1.c: 129: SSP1STAT = 0x0;
3212 0C20 0194 clrf 20 ;volatile
3213
3214 ;I2C1.c: 130: SSP1CON1 = 0x0;
3215 0C21 0195 clrf 21 ;volatile
3216
3217 ;I2C1.c: 131: SSP1CON2 = 0x0;
3218 0C22 0196 clrf 22 ;volatile
3219
3220 ;I2C1.c: 132: SSP1CON1bits.SSPM = 0xE;
3221 0C23 0815 movf 21,w ;volatile
3222 0C24 39F0 andlw -16
3223 0C25 380E iorlw 14
3224 0C26 0095 movwf 21 ;volatile
3225
3226 ;I2C1.c: 133: SSP1STATbits.SMP = 1;
3227 0C27 1794 bsf 20,7 ;volatile
3228
3229 ;I2C1.c: 134: SSP1CON2bits.SEN = 1;
3230 0C28 1416 bsf 22,0 ;volatile
3231
3232 ;I2C1.c: 135: SSP1CON1bits.SSPEN = 1;
3233 0C29 1695 bsf 21,5 ;volatile
3234 0C2A 0008 return
3235 0C2B __end_of_I2C1_Configure_Slave:
3236
3237 psect text14
3238 0D9E __ptext14:
3239 ;; *************** function _I2C1_Init *****************
3240 ;; Defined at:
3241 ;; line 8 in file "I2C1.c"
3242 ;; Parameters: Size Location Type
3243 ;; data 1 wreg PTR struct .
3244 ;; -> main@i2c1_data(77),
3245 ;; Auto vars: Size Location Type
3246 ;; data 1 1[BANK0 ] PTR struct .
3247 ;; -> main@i2c1_data(77),
3248 ;; Return value: Size Location Type
3249 ;; None void
3250 ;; Registers used:
3251 ;; wreg, fsr1l, fsr1h, status,2
3252 ;; Tracked objects:
3253 ;; On entry : 0/0
3254 ;; On exit : 0/0
3255 ;; Unchanged: 0/0
3256 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3257 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3258 ;; Locals: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3259 ;; Temps: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3260 ;; Totals: 0 2 0 0 0 0 0 0 0 0 0 0
+0 0
3261 ;;Total ram usage: 2 bytes
3262 ;; Hardware stack levels used: 1
3263 ;; Hardware stack levels required when called: 4
3264 ;; This function calls:
3265 ;; Nothing
3266 ;; This function is called by:
3267 ;; _main
3268 ;; This function uses a non-reentrant model
3269 ;;
3270
3271
3272 ;psect for function _I2C1_Init
3273 0D9E _I2C1_Init:
3274
3275 ;incstack = 0
3276 ; Regs used in _I2C1_Init: [wreg+fsr1l+fsr1h+status,2]
3277 ;I2C1_Init@data stored from wreg
3278 0D9E 0020 movlb 0 ; select bank0
3279 0D9F 00A1 movwf I2C1_Init@data
3280
3281 ;I2C1.c: 9: i2c_data_p = data;
3282 0DA0 0821 movf I2C1_Init@data,w
3283 0DA1 00A0 movwf ??_I2C1_Init
3284 0DA2 0820 movf ??_I2C1_Init,w
3285 0DA3 00F9 movwf _i2c_data_p
3286
3287 ;I2C1.c: 11: i2c_data_p->buffer_in_len = 0;
3288 0DA4 0879 movf _i2c_data_p,w
3289 0DA5 3E20 addlw 32
3290 0DA6 0086 movwf 6
3291 0DA7 0187 clrf 7
3292 0DA8 0181 clrf 1
3293
3294 ;I2C1.c: 12: i2c_data_p->buffer_in_len_tmp = 0;
3295 0DA9 0879 movf _i2c_data_p,w
3296 0DAA 3E21 addlw 33
3297 0DAB 0086 movwf 6
3298 0DAC 0187 clrf 7
3299 0DAD 0181 clrf 1
3300
3301 ;I2C1.c: 13: i2c_data_p->buffer_in_read_ind = 0;
3302 0DAE 0879 movf _i2c_data_p,w
3303 0DAF 3E22 addlw 34
3304 0DB0 0086 movwf 6
3305 0DB1 0187 clrf 7
3306 0DB2 0181 clrf 1
3307
3308 ;I2C1.c: 14: i2c_data_p->buffer_in_write_ind = 0;
3309 0DB3 0879 movf _i2c_data_p,w
3310 0DB4 3E23 addlw 35
3311 0DB5 0086 movwf 6
3312 0DB6 0187 clrf 7
3313 0DB7 0181 clrf 1
3314
3315 ;I2C1.c: 16: i2c_data_p->buffer_out_ind = 0;
3316 0DB8 0879 movf _i2c_data_p,w
3317 0DB9 3E45 addlw 69
3318 0DBA 0086 movwf 6
3319 0DBB 0187 clrf 7
3320 0DBC 0181 clrf 1
3321
3322 ;I2C1.c: 17: i2c_data_p->buffer_out_len = 0;
3323 0DBD 0879 movf _i2c_data_p,w
3324 0DBE 3E44 addlw 68
3325 0DBF 0086 movwf 6
3326 0DC0 0187 clrf 7
3327 0DC1 0181 clrf 1
3328
3329 ;I2C1.c: 19: i2c_data_p->operating_mode = 0;
3330 0DC2 0879 movf _i2c_data_p,w
3331 0DC3 3E46 addlw 70
3332 0DC4 0086 movwf 6
3333 0DC5 0187 clrf 7
3334 0DC6 0181 clrf 1
3335
3336 ;I2C1.c: 20: i2c_data_p->operating_state = 0x1;
3337 0DC7 0879 movf _i2c_data_p,w
3338 0DC8 3E47 addlw 71
3339 0DC9 0086 movwf 6
3340 0DCA 0187 clrf 7
3341 0DCB 0181 clrf 1
3342 0DCC 0A81 incf 1,f
3343
3344 ;I2C1.c: 21: i2c_data_p->return_status = 0;
3345 0DCD 0879 movf _i2c_data_p,w
3346 0DCE 3E48 addlw 72
3347 0DCF 0086 movwf 6
3348 0DD0 0187 clrf 7
3349 0DD1 0181 clrf 1
3350
3351 ;I2C1.c: 23: i2c_data_p->slave_in_last_byte = 0;
3352 0DD2 0879 movf _i2c_data_p,w
3353 0DD3 3E4B addlw 75
3354 0DD4 0086 movwf 6
3355 0DD5 0187 clrf 7
3356 0DD6 0181 clrf 1
3357
3358 ;I2C1.c: 24: i2c_data_p->slave_sending_data = 0;
3359 0DD7 0879 movf _i2c_data_p,w
3360 0DD8 3E4C addlw 76
3361 0DD9 0086 movwf 6
3362 0DDA 0187 clrf 7
3363 0DDB 0181 clrf 1
3364
3365 ;I2C1.c: 26: i2c_data_p->master_dest_addr = 0;
3366 0DDC 0879 movf _i2c_data_p,w
3367 0DDD 3E49 addlw 73
3368 0DDE 0086 movwf 6
3369 0DDF 0187 clrf 7
3370 0DE0 0181 clrf 1
3371
3372 ;I2C1.c: 27: i2c_data_p->master_status = 0x23;
3373 0DE1 3023 movlw 35
3374 0DE2 00A0 movwf ??_I2C1_Init
3375 0DE3 0879 movf _i2c_data_p,w
3376 0DE4 3E4A addlw 74
3377 0DE5 0086 movwf 6
3378 0DE6 0187 clrf 7
3379 0DE7 0820 movf ??_I2C1_Init,w
3380 0DE8 0081 movwf 1
3381
3382 ;I2C1.c: 30: PIE1bits.SSP1IE = 1;
3383 0DE9 0021 movlb 1 ; select bank1
3384 0DEA 1591 bsf 17,3 ;volatile
3385 0DEB 0008 return
3386 0DEC __end_of_I2C1_Init:
3387
3388 psect text15
3389 0CA7 __ptext15:
3390 ;; *************** function _Read_Address *****************
3391 ;; Defined at:
3392 ;; line 67 in file "main.c"
3393 ;; Parameters: Size Location Type
3394 ;; None
3395 ;; Auto vars: Size Location Type
3396 ;; ret 1 3[BANK0 ] unsigned char
3397 ;; Return value: Size Location Type
3398 ;; 1 wreg unsigned char
3399 ;; Registers used:
3400 ;; wreg, status,2, status,0
3401 ;; Tracked objects:
3402 ;; On entry : 0/0
3403 ;; On exit : 0/0
3404 ;; Unchanged: 0/0
3405 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3406 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3407 ;; Locals: 0 1 0 0 0 0 0 0 0 0 0 0
+0 0
3408 ;; Temps: 0 3 0 0 0 0 0 0 0 0 0 0
+0 0
3409 ;; Totals: 0 4 0 0 0 0 0 0 0 0 0 0
+0 0
3410 ;;Total ram usage: 4 bytes
3411 ;; Hardware stack levels used: 1
3412 ;; Hardware stack levels required when called: 4
3413 ;; This function calls:
3414 ;; Nothing
3415 ;; This function is called by:
3416 ;; _main
3417 ;; This function uses a non-reentrant model
3418 ;;
3419
3420
3421 ;psect for function _Read_Address
3422 0CA7 _Read_Address:
3423
3424 ;main.c: 68: uint8_t ret = 0;
3425
3426 ;incstack = 0
3427 ; Regs used in _Read_Address: [wreg+status,2+status,0]
3428 0CA7 0020 movlb 0 ; select bank0
3429 0CA8 01A3 clrf Read_Address@ret
3430
3431 ;main.c: 69: ret |= LATCbits.LATC3 << 3;
3432 0CA9 0022 movlb 2 ; select bank2
3433 0CAA 0C0E rrf 14,w ;volatile
3434 0CAB 0020 movlb 0 ; select bank0
3435 0CAC 00A0 movwf ??_Read_Address
3436 0CAD 0CA0 rrf ??_Read_Address,f
3437 0CAE 0C20 rrf ??_Read_Address,w
3438 0CAF 3901 andlw 1
3439 0CB0 00A1 movwf ??_Read_Address+1
3440 0CB1 3002 movlw 2
3441 0CB2 u1065:
3442 0CB2 35A1 lslf ??_Read_Address+1,f
3443 0CB3 3EFF addlw -1
3444 0CB4 1D03 skipz
3445 0CB5 2CB2 goto u1065
3446 0CB6 3521 lslf ??_Read_Address+1,w
3447 0CB7 00A2 movwf ??_Read_Address+2
3448 0CB8 0822 movf ??_Read_Address+2,w
3449 0CB9 04A3 iorwf Read_Address@ret,f
3450
3451 ;main.c: 70: ret |= LATCbits.LATC2 << 2;
3452 0CBA 0022 movlb 2 ; select bank2
3453 0CBB 0C0E rrf 14,w ;volatile
3454 0CBC 0C89 rrf 9,f
3455 0CBD 3901 andlw 1
3456 0CBE 0020 movlb 0 ; select bank0
3457 0CBF 00A0 movwf ??_Read_Address
3458 0CC0 3001 movlw 1
3459 0CC1 u1075:
3460 0CC1 35A0 lslf ??_Read_Address,f
3461 0CC2 3EFF addlw -1
3462 0CC3 1D03 skipz
3463 0CC4 2CC1 goto u1075
3464 0CC5 3520 lslf ??_Read_Address,w
3465 0CC6 00A1 movwf ??_Read_Address+1
3466 0CC7 0821 movf ??_Read_Address+1,w
3467 0CC8 04A3 iorwf Read_Address@ret,f
3468
3469 ;main.c: 71: ret |= LATCbits.LATC1 << 1;
3470 0CC9 0022 movlb 2 ; select bank2
3471 0CCA 0C0E rrf 14,w ;volatile
3472 0CCB 3901 andlw 1
3473 0CCC 0709 addwf 9,w
3474 0CCD 0020 movlb 0 ; select bank0
3475 0CCE 00A0 movwf ??_Read_Address
3476 0CCF 0820 movf ??_Read_Address,w
3477 0CD0 04A3 iorwf Read_Address@ret,f
3478
3479 ;main.c: 72: ret |= LATCbits.LATC0;
3480 0CD1 0022 movlb 2 ; select bank2
3481 0CD2 080E movf 14,w ;volatile
3482 0CD3 3901 andlw 1
3483 0CD4 0020 movlb 0 ; select bank0
3484 0CD5 00A0 movwf ??_Read_Address
3485 0CD6 0820 movf ??_Read_Address,w
3486 0CD7 04A3 iorwf Read_Address@ret,f
3487
3488 ;main.c: 74: return ret;
3489 0CD8 0823 movf Read_Address@ret,w
3490 0CD9 0008 return
3491 0CDA __end_of_Read_Address:
3492
3493 psect text16
3494 0BF5 __ptext16:
3495 ;; *************** function _Pins_Init *****************
3496 ;; Defined at:
3497 ;; line 31 in file "main.c"
3498 ;; Parameters: Size Location Type
3499 ;; None
3500 ;; Auto vars: Size Location Type
3501 ;; None
3502 ;; Return value: Size Location Type
3503 ;; None void
3504 ;; Registers used:
3505 ;; status,2
3506 ;; Tracked objects:
3507 ;; On entry : 0/0
3508 ;; On exit : 0/0
3509 ;; Unchanged: 0/0
3510 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3511 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3512 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3513 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3514 ;; Totals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3515 ;;Total ram usage: 0 bytes
3516 ;; Hardware stack levels used: 1
3517 ;; Hardware stack levels required when called: 4
3518 ;; This function calls:
3519 ;; Nothing
3520 ;; This function is called by:
3521 ;; _main
3522 ;; This function uses a non-reentrant model
3523 ;;
3524
3525
3526 ;psect for function _Pins_Init
3527 0BF5 _Pins_Init:
3528
3529 ;main.c: 33: ANSELA = 0x0;
3530
3531 ;incstack = 0
3532 ; Regs used in _Pins_Init: [status,2]
3533 0BF5 0023 movlb 3 ; select bank3
3534 0BF6 018C clrf 12 ;volatile
3535
3536 ;main.c: 34: ANSELB = 0x0;
3537 0BF7 018D clrf 13 ;volatile
3538
3539 ;main.c: 35: ANSELC = 0x0;
3540 0BF8 018E clrf 14 ;volatile
3541
3542 ;main.c: 38: OPTION_REGbits.nWPUEN = 0;
3543 0BF9 0021 movlb 1 ; select bank1
3544 0BFA 1395 bcf 21,7 ;volatile
3545
3546 ;main.c: 41: TRISAbits.TRISA5 = 1;
3547 0BFB 168C bsf 12,5 ;volatile
3548
3549 ;main.c: 42: TRISAbits.TRISA4 = 1;
3550 0BFC 160C bsf 12,4 ;volatile
3551
3552 ;main.c: 43: TRISAbits.TRISA2 = 1;
3553 0BFD 150C bsf 12,2 ;volatile
3554
3555 ;main.c: 46: TRISCbits.TRISC5 = 1;
3556 0BFE 168E bsf 14,5 ;volatile
3557
3558 ;main.c: 47: TRISCbits.TRISC4 = 0;
3559 0BFF 120E bcf 14,4 ;volatile
3560
3561 ;main.c: 50: TRISCbits.TRISC0 = 1;
3562 0C00 140E bsf 14,0 ;volatile
3563
3564 ;main.c: 51: TRISCbits.TRISC1 = 1;
3565 0C01 148E bsf 14,1 ;volatile
3566
3567 ;main.c: 52: TRISCbits.TRISC2 = 1;
3568 0C02 150E bsf 14,2 ;volatile
3569
3570 ;main.c: 53: TRISCbits.TRISC3 = 1;
3571 0C03 158E bsf 14,3 ;volatile
3572
3573 ;main.c: 55: WPUCbits.WPUC0 = 1;
3574 0C04 0024 movlb 4 ; select bank4
3575 0C05 140E bsf 14,0 ;volatile
3576
3577 ;main.c: 56: WPUCbits.WPUC1 = 1;
3578 0C06 148E bsf 14,1 ;volatile
3579
3580 ;main.c: 57: WPUCbits.WPUC2 = 1;
3581 0C07 150E bsf 14,2 ;volatile
3582
3583 ;main.c: 58: WPUCbits.WPUC3 = 1;
3584 0C08 158E bsf 14,3 ;volatile
3585
3586 ;main.c: 61: TRISBbits.TRISB6 = 1;
3587 0C09 0021 movlb 1 ; select bank1
3588 0C0A 170D bsf 13,6 ;volatile
3589
3590 ;main.c: 62: TRISBbits.TRISB4 = 1;
3591 0C0B 160D bsf 13,4 ;volatile
3592
3593 ;main.c: 63: TRISBbits.TRISB7 = 1;
3594 0C0C 178D bsf 13,7 ;volatile
3595
3596 ;main.c: 64: TRISBbits.TRISB5 = 1;
3597 0C0D 168D bsf 13,5 ;volatile
3598 0C0E 0008 return
3599 0C0F __end_of_Pins_Init:
3600
3601 psect intentry
3602 0004 __pintentry:
3603 ;; *************** function _InterruptHandler *****************
3604 ;; Defined at:
3605 ;; line 21 in file "INTERRUPTS.c"
3606 ;; Parameters: Size Location Type
3607 ;; None
3608 ;; Auto vars: Size Location Type
3609 ;; None
3610 ;; Return value: Size Location Type
3611 ;; None void
3612 ;; Registers used:
3613 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0, pclath, cstack
3614 ;; Tracked objects:
3615 ;; On entry : 0/0
3616 ;; On exit : 0/0
3617 ;; Unchanged: 0/0
3618 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3619 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3620 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3621 ;; Temps: 1 0 0 0 0 0 0 0 0 0 0 0
+0 0
3622 ;; Totals: 1 0 0 0 0 0 0 0 0 0 0 0
+0 0
3623 ;;Total ram usage: 1 bytes
3624 ;; Hardware stack levels used: 1
3625 ;; Hardware stack levels required when called: 3
3626 ;; This function calls:
3627 ;; _I2C1_Interrupt_Handler
3628 ;; _I2C2_Interrupt_Handler
3629 ;; This function is called by:
3630 ;; Interrupt level 1
3631 ;; This function uses a non-reentrant model
3632 ;;
3633
3634 0004 _InterruptHandler:
3635
3636 ;incstack = 0
3637 ; Regs used in _InterruptHandler: [wreg-fsr1h+status,2+status,0+pclath+cstack]
3638 0004 3180 pagesel $
3639 0005 0020 movlb 0 ; select bank0
3640 0006 087F movf 127,w
3641 0007 00F8 movwf ??_InterruptHandler
3642
3643 ;INTERRUPTS.c: 37: if (PIR1bits.SSP1IF) {
3644 0008 1D91 btfss 17,3 ;volatile
3645 0009 2810 goto i1l271
3646
3647 ;INTERRUPTS.c: 40: I2C1_Interrupt_Handler();
3648 000A 318B 23C5 3180 fcall _I2C1_Interrupt_Handler
3649
3650 ;INTERRUPTS.c: 43: PIR1bits.SSP1IF = 0;
3651 000D 0020 movlb 0 ; select bank0
3652 000E 1191 bcf 17,3 ;volatile
3653
3654 ;INTERRUPTS.c: 45: return;
3655 000F 2816 goto i1l272
3656 0010 i1l271:
3657
3658 ;INTERRUPTS.c: 46: }
3659 ;INTERRUPTS.c: 49: if (PIR4bits.SSP2IF) {
3660 0010 1C14 btfss 20,0 ;volatile
3661 0011 2816 goto i1l272
3662
3663 ;INTERRUPTS.c: 51: I2C2_Interrupt_Handler();
3664 0012 318B 23DB fcall _I2C2_Interrupt_Handler
3665
3666 ;INTERRUPTS.c: 54: PIR4bits.SSP2IF = 0;
3667 0014 0020 movlb 0 ; select bank0
3668 0015 1014 bcf 20,0 ;volatile
3669 0016 i1l272:
3670 ;INTERRUPTS.c: 56: return;
3671
3672 0016 0878 movf ??_InterruptHandler,w
3673 0017 00FF movwf 127
3674 0018 0009 retfie
3675 0019 __end_of_InterruptHandler:
3676
3677 psect text18
3678 0BDB __ptext18:
3679 ;; *************** function _I2C2_Interrupt_Handler *****************
3680 ;; Defined at:
3681 ;; line 138 in file "I2C2.c"
3682 ;; Parameters: Size Location Type
3683 ;; None
3684 ;; Auto vars: Size Location Type
3685 ;; None
3686 ;; Return value: Size Location Type
3687 ;; None void
3688 ;; Registers used:
3689 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0, pclath, cstack
3690 ;; Tracked objects:
3691 ;; On entry : 0/0
3692 ;; On exit : 0/0
3693 ;; Unchanged: 0/0
3694 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3695 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3696 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3697 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3698 ;; Totals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3699 ;;Total ram usage: 0 bytes
3700 ;; Hardware stack levels used: 1
3701 ;; Hardware stack levels required when called: 2
3702 ;; This function calls:
3703 ;; _I2C2_Interrupt_Master
3704 ;; _I2C2_Interrupt_Slave
3705 ;; This function is called by:
3706 ;; _InterruptHandler
3707 ;; This function uses a non-reentrant model
3708 ;;
3709
3710
3711 ;psect for function _I2C2_Interrupt_Handler
3712 0BDB _I2C2_Interrupt_Handler:
3713
3714 ;I2C2.c: 140: if (i2c_data_p->operating_mode == 0x11) {
3715
3716 ;incstack = 0
3717 ; Regs used in _I2C2_Interrupt_Handler: [wreg-fsr1h+status,2+status,0+pclath+cstack]
3718 0BDB 0020 movlb 0 ; select bank0
3719 0BDC 0869 movf I2C2@i2c_data_p,w
3720 0BDD 3E46 addlw 70
3721 0BDE 0086 movwf 6
3722 0BDF 3001 movlw 1 ; select bank2/3
3723 0BE0 0087 movwf 7
3724 0BE1 0801 movf 1,w
3725 0BE2 3A11 xorlw 17
3726 0BE3 1D03 skipz
3727 0BE4 2BE8 goto i1l3171
3728
3729 ;I2C2.c: 141: I2C2_Interrupt_Master();
3730 0BE5 3180 201B fcall _I2C2_Interrupt_Master
3731
3732 ;I2C2.c: 142: } else if (i2c_data_p->operating_mode == 0x10) {
3733 0BE7 0008 return
3734 0BE8 i1l3171:
3735 0BE8 0020 movlb 0 ; select bank0
3736 0BE9 0869 movf I2C2@i2c_data_p,w
3737 0BEA 3E46 addlw 70
3738 0BEB 0086 movwf 6
3739 0BEC 3001 movlw 1 ; select bank2/3
3740 0BED 0087 movwf 7
3741 0BEE 0801 movf 1,w
3742 0BEF 3A10 xorlw 16
3743 0BF0 1D03 skipz
3744 0BF1 0008 return
3745
3746 ;I2C2.c: 143: I2C2_Interrupt_Slave();
3747 0BF2 3185 2534 fcall _I2C2_Interrupt_Slave
3748 0BF4 0008 return
3749 0BF5 __end_of_I2C2_Interrupt_Handler:
3750
3751 psect text19
3752 0534 __ptext19:
3753 ;; *************** function _I2C2_Interrupt_Slave *****************
3754 ;; Defined at:
3755 ;; line 327 in file "I2C2.c"
3756 ;; Parameters: Size Location Type
3757 ;; None
3758 ;; Auto vars: Size Location Type
3759 ;; data_read_fr 1 7[COMMON] unsigned char
3760 ;; received_dat 1 6[COMMON] unsigned char
3761 ;; data_written 1 5[COMMON] unsigned char
3762 ;; overrun_erro 1 4[COMMON] unsigned char
3763 ;; Return value: Size Location Type
3764 ;; None void
3765 ;; Registers used:
3766 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0, pclath, cstack
3767 ;; Tracked objects:
3768 ;; On entry : 0/0
3769 ;; On exit : 0/0
3770 ;; Unchanged: 0/0
3771 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
3772 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
3773 ;; Locals: 4 0 0 0 0 0 0 0 0 0 0 0
+0 0
3774 ;; Temps: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
3775 ;; Totals: 6 0 0 0 0 0 0 0 0 0 0 0
+0 0
3776 ;;Total ram usage: 6 bytes
3777 ;; Hardware stack levels used: 1
3778 ;; Hardware stack levels required when called: 1
3779 ;; This function calls:
3780 ;; _I2C2_Process_Receive
3781 ;; This function is called by:
3782 ;; _I2C2_Interrupt_Handler
3783 ;; This function uses a non-reentrant model
3784 ;;
3785
3786
3787 ;psect for function _I2C2_Interrupt_Slave
3788 0534 _I2C2_Interrupt_Slave:
3789
3790 ;I2C2.c: 328: uint8_t received_data;
3791 ;I2C2.c: 329: uint8_t data_read_from_buffer = 0;
3792
3793 ;incstack = 0
3794 ; Regs used in _I2C2_Interrupt_Slave: [wreg-fsr1h+status,2+status,0+pclath+cstack]
3795 0534 01F7 clrf I2C2_Interrupt_Slave@data_read_from_buffer
3796
3797 ;I2C2.c: 330: uint8_t data_written_to_buffer = 0;
3798 0535 01F5 clrf I2C2_Interrupt_Slave@data_written_to_buffer
3799
3800 ;I2C2.c: 331: uint8_t overrun_error = 0;
3801 0536 01F4 clrf I2C2_Interrupt_Slave@overrun_error
3802
3803 ;I2C2.c: 334: if (SSP2CON1bits.SSPOV == 1) {
3804 0537 0024 movlb 4 ; select bank4
3805 0538 1F1D btfss 29,6 ;volatile
3806 0539 2D4E goto i1l3053
3807
3808 ;I2C2.c: 335: SSP2CON1bits.SSPOV = 0;
3809 053A 131D bcf 29,6 ;volatile
3810
3811 ;I2C2.c: 339: i2c_data_p->operating_state = 0x1;
3812 053B 0020 movlb 0 ; select bank0
3813 053C 0869 movf I2C2@i2c_data_p,w
3814 053D 3E47 addlw 71
3815 053E 0086 movwf 6
3816 053F 3001 movlw 1 ; select bank2/3
3817 0540 0087 movwf 7
3818 0541 0181 clrf 1
3819 0542 0A81 incf 1,f
3820
3821 ;I2C2.c: 340: overrun_error = 1;
3822 0543 01F4 clrf I2C2_Interrupt_Slave@overrun_error
3823 0544 0AF4 incf I2C2_Interrupt_Slave@overrun_error,f
3824
3825 ;I2C2.c: 341: i2c_data_p->return_status = 0x36;
3826 0545 3036 movlw 54
3827 0546 00F2 movwf ??_I2C2_Interrupt_Slave
3828 0547 0869 movf I2C2@i2c_data_p,w
3829 0548 3E48 addlw 72
3830 0549 0086 movwf 6
3831 054A 3001 movlw 1 ; select bank2/3
3832 054B 0087 movwf 7
3833 054C 0872 movf ??_I2C2_Interrupt_Slave,w
3834 054D 0081 movwf 1
3835 054E i1l3053:
3836
3837 ;I2C2.c: 342: }
3838 ;I2C2.c: 345: if (SSP2STATbits.BF == 1) {
3839 054E 0024 movlb 4 ; select bank4
3840 054F 1C1C btfss 28,0 ;volatile
3841 0550 2D57 goto i1l3059
3842
3843 ;I2C2.c: 346: received_data = SSP2BUF;
3844 0551 0819 movf 25,w ;volatile
3845 0552 00F2 movwf ??_I2C2_Interrupt_Slave
3846 0553 0872 movf ??_I2C2_Interrupt_Slave,w
3847 0554 00F6 movwf I2C2_Interrupt_Slave@received_data
3848
3849 ;I2C2.c: 348: data_read_from_buffer = 1;
3850 0555 01F7 clrf I2C2_Interrupt_Slave@data_read_from_buffer
3851 0556 0AF7 incf I2C2_Interrupt_Slave@data_read_from_buffer,f
3852 0557 i1l3059:
3853
3854 ;I2C2.c: 349: }
3855 ;I2C2.c: 351: if (!overrun_error) {
3856 0557 08F4 movf I2C2_Interrupt_Slave@overrun_error,f
3857 0558 1903 btfsc 3,2
3858 0559 2EBE goto i1l3151
3859 055A 2ED2 goto i1l3153
3860 055B i1l388:
3861 ;I2C2.c: 353: case 0x1:
3862
3863 ;I2C2.c: 352: switch (i2c_data_p->operating_state) {
3864
3865
3866 ;I2C2.c: 354: {
3867 ;I2C2.c: 356: if (SSP2STATbits.S == 1) {
3868 055B 0024 movlb 4 ; select bank4
3869 055C 1D9C btfss 28,3 ;volatile
3870 055D 2ED2 goto i1l3153
3871
3872 ;I2C2.c: 357: i2c_data_p->buffer_in_len_tmp = 0;
3873 055E 0020 movlb 0 ; select bank0
3874 055F 0869 movf I2C2@i2c_data_p,w
3875 0560 3E21 addlw 33
3876 0561 0086 movwf 6
3877 0562 3001 movlw 1 ; select bank2/3
3878 0563 0087 movwf 7
3879 0564 0181 clrf 1
3880
3881 ;I2C2.c: 358: i2c_data_p->operating_state = 0x2;
3882 0565 3002 movlw 2
3883 0566 00F2 movwf ??_I2C2_Interrupt_Slave
3884 0567 2D78 goto L2
3885 0568 i1l391:
3886 ;I2C2.c: 361: }
3887 ;I2C2.c: 362: case 0x2:
3888
3889 ;I2C2.c: 359: }
3890 ;I2C2.c: 360: break;
3891
3892
3893 ;I2C2.c: 363: {
3894 ;I2C2.c: 365: if (SSP2STATbits.P == 1) {
3895 0568 0024 movlb 4 ; select bank4
3896 0569 1E1C btfss 28,4 ;volatile
3897 056A 2D6D goto i1l3069
3898
3899 ;I2C2.c: 367: i2c_data_p->operating_state = 0x1;
3900 056B 0020 movlb 0 ; select bank0
3901 056C 2E4C goto i1l3123
3902 056D i1l3069:
3903 ;I2C2.c: 368: } else if (data_read_from_buffer) {
3904
3905 056D 0877 movf I2C2_Interrupt_Slave@data_read_from_buffer,w
3906 056E 1903 btfsc 3,2
3907 056F 2ED2 goto i1l3153
3908
3909 ;I2C2.c: 369: if (SSP2STATbits.D_nA == 0) {
3910 0570 0024 movlb 4 ; select bank4
3911 0571 1A9C btfsc 28,5 ;volatile
3912 0572 2EAC goto i1l3147
3913
3914 ;I2C2.c: 371: if (SSP2STATbits.R_nW == 0) {
3915 0573 191C btfsc 28,2 ;volatile
3916 0574 2D7B goto i1l3077
3917
3918 ;I2C2.c: 373: i2c_data_p->operating_state = 0x3;
3919 0575 3003 movlw 3
3920 0576 00F2 movwf ??_I2C2_Interrupt_Slave
3921 0577 0020 movlb 0 ; select bank0
3922 0578 L2:
3923 0578 0869 movf I2C2@i2c_data_p,w
3924 0579 3E47 addlw 71
3925 057A 2EB8 goto L7
3926 057B i1l3077:
3927 ;I2C2.c: 374: } else {
3928
3929
3930 ;I2C2.c: 376: i2c_data_p->operating_state = 0x4;
3931 057B 3004 movlw 4
3932 057C 00F2 movwf ??_I2C2_Interrupt_Slave
3933 057D 0020 movlb 0 ; select bank0
3934 057E L4:
3935 057E 0869 movf I2C2@i2c_data_p,w
3936 057F 3E47 addlw 71
3937 0580 0086 movwf 6
3938 0581 3001 movlw 1 ; select bank2/3
3939 0582 0087 movwf 7
3940 0583 0872 movf ??_I2C2_Interrupt_Slave,w
3941 0584 0081 movwf 1
3942 0585 i1l3081:
3943 ;I2C2.c: 388: case 0x4:
3944
3945 ;I2C2.c: 386: }
3946 ;I2C2.c: 387: send:
3947
3948 ;I2C2.c: 383: }
3949 ;I2C2.c: 384: }
3950 ;I2C2.c: 385: break;
3951
3952 ;I2C2.c: 382: i2c_data_p->return_status = 0x37;
3953
3954 ;I2C2.c: 381: i2c_data_p->operating_state = 0x1;
3955
3956 ;I2C2.c: 379: }
3957 ;I2C2.c: 380: } else {
3958
3959 ;I2C2.c: 378: goto send;
3960
3961
3962 ;I2C2.c: 389: {
3963 ;I2C2.c: 390: if (!i2c_data_p->slave_sending_data) {
3964 0585 0869 movf I2C2@i2c_data_p,w
3965 0586 3E4C addlw 76
3966 0587 0086 movwf 6
3967 0588 3001 movlw 1 ; select bank2/3
3968 0589 0087 movwf 7
3969 058A 0881 movf 1,f
3970 058B 1D03 skipz
3971 058C 2DB4 goto i1l3093
3972
3973 ;I2C2.c: 392: if (I2C2_Process_Receive(i2c_data_p->slave_in_last_byte)) {
3974 058D 0869 movf I2C2@i2c_data_p,w
3975 058E 3E4B addlw 75
3976 058F 0086 movwf 6
3977 0590 3001 movlw 1 ; select bank2/3
3978 0591 0087 movwf 7
3979 0592 0801 movf 1,w
3980 0593 318B 239B 3185 fcall _I2C2_Process_Receive
3981 0596 3A00 xorlw 0
3982 0597 1903 skipnz
3983 0598 2DB2 goto i1l3089
3984
3985 ;I2C2.c: 394: SSP2BUF = i2c_data_p->buffer_out[0];
3986 0599 0020 movlb 0 ; select bank0
3987 059A 0869 movf I2C2@i2c_data_p,w
3988 059B 3E24 addlw 36
3989 059C 0086 movwf 6
3990 059D 3001 movlw 1 ; select bank2/3
3991 059E 0087 movwf 7
3992 059F 0801 movf 1,w
3993 05A0 0024 movlb 4 ; select bank4
3994 05A1 0099 movwf 25 ;volatile
3995
3996 ;I2C2.c: 395: i2c_data_p->buffer_out_ind = 1;
3997 05A2 0020 movlb 0 ; select bank0
3998 05A3 0869 movf I2C2@i2c_data_p,w
3999 05A4 3E45 addlw 69
4000 05A5 0086 movwf 6
4001 05A6 3001 movlw 1 ; select bank2/3
4002 05A7 0087 movwf 7
4003 05A8 0181 clrf 1
4004 05A9 0A81 incf 1,f
4005
4006 ;I2C2.c: 396: i2c_data_p->slave_sending_data = 1;
4007 05AA 0869 movf I2C2@i2c_data_p,w
4008 05AB 3E4C addlw 76
4009 05AC 0086 movwf 6
4010 05AD 3001 movlw 1 ; select bank2/3
4011 05AE 0087 movwf 7
4012 05AF 0181 clrf 1
4013 05B0 0A81 incf 1,f
4014 05B1 2DDC goto i1l3097
4015 05B2 i1l3089:
4016 ;I2C2.c: 398: } else {
4017
4018 ;I2C2.c: 397: data_written_to_buffer = 1;
4019
4020
4021 ;I2C2.c: 400: i2c_data_p->slave_sending_data = 0;
4022 05B2 0020 movlb 0 ; select bank0
4023 05B3 2DDF goto i1l3099
4024 05B4 i1l3093:
4025 ;I2C2.c: 402: }
4026 ;I2C2.c: 403: } else {
4027
4028 ;I2C2.c: 401: i2c_data_p->operating_state = 0x1;
4029
4030
4031 ;I2C2.c: 405: if (i2c_data_p->buffer_out_ind < i2c_data_p->buffer_out_len) {
4032 05B4 0869 movf I2C2@i2c_data_p,w
4033 05B5 3E45 addlw 69
4034 05B6 0086 movwf 6
4035 05B7 3001 movlw 1 ; select bank2/3
4036 05B8 0087 movwf 7
4037 05B9 0869 movf I2C2@i2c_data_p,w
4038 05BA 3E44 addlw 68
4039 05BB 0084 movwf 4
4040 05BC 3001 movlw 1 ; select bank2/3
4041 05BD 0085 movwf 5
4042 05BE 0800 movf 0,w
4043 05BF 0201 subwf 1,w
4044 05C0 1803 skipnc
4045 05C1 2DDF goto i1l3099
4046
4047 ;I2C2.c: 406: SSP2BUF = i2c_data_p->buffer_out[i2c_data_p->buffer_out_ind];
4048 05C2 0869 movf I2C2@i2c_data_p,w
4049 05C3 3E45 addlw 69
4050 05C4 0086 movwf 6
4051 05C5 3001 movlw 1 ; select bank2/3
4052 05C6 0087 movwf 7
4053 05C7 0801 movf 1,w
4054 05C8 3E24 addlw 36
4055 05C9 0769 addwf I2C2@i2c_data_p,w
4056 05CA 00F2 movwf ??_I2C2_Interrupt_Slave
4057 05CB 0872 movf ??_I2C2_Interrupt_Slave,w
4058 05CC 0086 movwf 6
4059 05CD 3001 movlw 1 ; select bank2/3
4060 05CE 0087 movwf 7
4061 05CF 0801 movf 1,w
4062 05D0 0024 movlb 4 ; select bank4
4063 05D1 0099 movwf 25 ;volatile
4064
4065 ;I2C2.c: 407: i2c_data_p->buffer_out_ind++;
4066 05D2 3001 movlw 1
4067 05D3 00F2 movwf ??_I2C2_Interrupt_Slave
4068 05D4 0020 movlb 0 ; select bank0
4069 05D5 0869 movf I2C2@i2c_data_p,w
4070 05D6 3E45 addlw 69
4071 05D7 0086 movwf 6
4072 05D8 3001 movlw 1 ; select bank2/3
4073 05D9 0087 movwf 7
4074 05DA 0872 movf ??_I2C2_Interrupt_Slave,w
4075 05DB 0781 addwf 1,f
4076 05DC i1l3097:
4077
4078 ;I2C2.c: 408: data_written_to_buffer = 1;
4079 05DC 01F5 clrf I2C2_Interrupt_Slave@data_written_to_buffer
4080 05DD 0AF5 incf I2C2_Interrupt_Slave@data_written_to_buffer,f
4081
4082 ;I2C2.c: 409: } else {
4083 05DE 2ED2 goto i1l3153
4084 05DF i1l3099:
4085
4086 ;I2C2.c: 411: i2c_data_p->slave_sending_data = 0;
4087 05DF 0869 movf I2C2@i2c_data_p,w
4088 05E0 3E4C addlw 76
4089 05E1 0086 movwf 6
4090 05E2 3001 movlw 1 ; select bank2/3
4091 05E3 0087 movwf 7
4092 05E4 0181 clrf 1
4093 05E5 2E4C goto i1l3123
4094 05E6 i1l407:
4095 ;I2C2.c: 416: }
4096 ;I2C2.c: 417: case 0x3:
4097
4098 ;I2C2.c: 413: }
4099 ;I2C2.c: 414: }
4100 ;I2C2.c: 415: break;
4101
4102 ;I2C2.c: 412: i2c_data_p->operating_state = 0x1;
4103
4104
4105 ;I2C2.c: 418: {
4106 ;I2C2.c: 420: if (SSP2STATbits.P == 1) {
4107 05E6 0024 movlb 4 ; select bank4
4108 05E7 1E1C btfss 28,4 ;volatile
4109 05E8 2E54 goto i1l3125
4110
4111 ;I2C2.c: 422: if (data_read_from_buffer) {
4112 05E9 0877 movf I2C2_Interrupt_Slave@data_read_from_buffer,w
4113 05EA 1903 btfsc 3,2
4114 05EB 2E3D goto i1l3121
4115
4116 ;I2C2.c: 423: if (SSP2STATbits.D_nA == 1) {
4117 05EC 1E9C btfss 28,5 ;volatile
4118 05ED 2E2C goto i1l3119
4119
4120 ;I2C2.c: 426: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = received_data;
4121 05EE 0876 movf I2C2_Interrupt_Slave@received_data,w
4122 05EF 00F2 movwf ??_I2C2_Interrupt_Slave
4123 05F0 0020 movlb 0 ; select bank0
4124 05F1 0869 movf I2C2@i2c_data_p,w
4125 05F2 3E23 addlw 35
4126 05F3 0086 movwf 6
4127 05F4 3001 movlw 1 ; select bank2/3
4128 05F5 0087 movwf 7
4129 05F6 0801 movf 1,w
4130 05F7 0769 addwf I2C2@i2c_data_p,w
4131 05F8 00F3 movwf ??_I2C2_Interrupt_Slave+1
4132 05F9 0873 movf ??_I2C2_Interrupt_Slave+1,w
4133 05FA 0086 movwf 6
4134 05FB 3001 movlw 1 ; select bank2/3
4135 05FC 0087 movwf 7
4136 05FD 0872 movf ??_I2C2_Interrupt_Slave,w
4137 05FE 0081 movwf 1
4138
4139 ;I2C2.c: 427: if (i2c_data_p->buffer_in_write_ind == 32-1) {
4140 05FF 0869 movf I2C2@i2c_data_p,w
4141 0600 3E23 addlw 35
4142 0601 0086 movwf 6
4143 0602 3001 movlw 1 ; select bank2/3
4144 0603 0087 movwf 7
4145 0604 0801 movf 1,w
4146 0605 3A1F xorlw 31
4147 0606 1D03 skipz
4148 0607 2E0F goto i1l3113
4149
4150 ;I2C2.c: 428: i2c_data_p->buffer_in_write_ind = 0;
4151 0608 0869 movf I2C2@i2c_data_p,w
4152 0609 3E23 addlw 35
4153 060A 0086 movwf 6
4154 060B 3001 movlw 1 ; select bank2/3
4155 060C 0087 movwf 7
4156 060D 0181 clrf 1
4157
4158 ;I2C2.c: 429: } else {
4159 060E 2E18 goto i1l412
4160 060F i1l3113:
4161
4162 ;I2C2.c: 430: i2c_data_p->buffer_in_write_ind++;
4163 060F 3001 movlw 1
4164 0610 00F2 movwf ??_I2C2_Interrupt_Slave
4165 0611 0869 movf I2C2@i2c_data_p,w
4166 0612 3E23 addlw 35
4167 0613 0086 movwf 6
4168 0614 3001 movlw 1 ; select bank2/3
4169 0615 0087 movwf 7
4170 0616 0872 movf ??_I2C2_Interrupt_Slave,w
4171 0617 0781 addwf 1,f
4172 0618 i1l412:
4173
4174 ;I2C2.c: 431: }
4175 ;I2C2.c: 432: i2c_data_p->buffer_in_len_tmp++;
4176 0618 3001 movlw 1
4177 0619 00F2 movwf ??_I2C2_Interrupt_Slave
4178 061A 0869 movf I2C2@i2c_data_p,w
4179 061B 3E21 addlw 33
4180 061C 0086 movwf 6
4181 061D 3001 movlw 1 ; select bank2/3
4182 061E 0087 movwf 7
4183 061F 0872 movf ??_I2C2_Interrupt_Slave,w
4184 0620 0781 addwf 1,f
4185
4186 ;I2C2.c: 434: i2c_data_p->slave_in_last_byte = received_data;
4187 0621 0876 movf I2C2_Interrupt_Slave@received_data,w
4188 0622 00F2 movwf ??_I2C2_Interrupt_Slave
4189 0623 0869 movf I2C2@i2c_data_p,w
4190 0624 3E4B addlw 75
4191 0625 0086 movwf 6
4192 0626 3001 movlw 1 ; select bank2/3
4193 0627 0087 movwf 7
4194 0628 0872 movf ??_I2C2_Interrupt_Slave,w
4195 0629 0081 movwf 1
4196
4197 ;I2C2.c: 435: i2c_data_p->return_status = 0x34;
4198 062A 3034 movlw 52
4199 062B 2E35 goto L6
4200 062C i1l3119:
4201 ;I2C2.c: 436: } else {
4202
4203
4204 ;I2C2.c: 437: i2c_data_p->operating_state = 0x1;
4205 062C 0020 movlb 0 ; select bank0
4206 062D 0869 movf I2C2@i2c_data_p,w
4207 062E 3E47 addlw 71
4208 062F 0086 movwf 6
4209 0630 3001 movlw 1 ; select bank2/3
4210 0631 0087 movwf 7
4211 0632 0181 clrf 1
4212 0633 0A81 incf 1,f
4213
4214 ;I2C2.c: 438: i2c_data_p->return_status = 0x37;
4215 0634 3037 movlw 55
4216 0635 L6:
4217 0635 00F2 movwf ??_I2C2_Interrupt_Slave
4218 0636 0869 movf I2C2@i2c_data_p,w
4219 0637 3E48 addlw 72
4220 0638 0086 movwf 6
4221 0639 3001 movlw 1 ; select bank2/3
4222 063A 0087 movwf 7
4223 063B 0872 movf ??_I2C2_Interrupt_Slave,w
4224 063C 0081 movwf 1
4225 063D i1l3121:
4226
4227 ;I2C2.c: 439: }
4228 ;I2C2.c: 440: }
4229 ;I2C2.c: 441: i2c_data_p->buffer_in_len += i2c_data_p->buffer_in_len_tmp;
4230 063D 0020 movlb 0 ; select bank0
4231 063E 0869 movf I2C2@i2c_data_p,w
4232 063F 3E21 addlw 33
4233 0640 0086 movwf 6
4234 0641 3001 movlw 1 ; select bank2/3
4235 0642 0087 movwf 7
4236 0643 0801 movf 1,w
4237 0644 00F2 movwf ??_I2C2_Interrupt_Slave
4238 0645 0869 movf I2C2@i2c_data_p,w
4239 0646 3E20 addlw 32
4240 0647 0086 movwf 6
4241 0648 3001 movlw 1 ; select bank2/3
4242 0649 0087 movwf 7
4243 064A 0872 movf ??_I2C2_Interrupt_Slave,w
4244 064B 0781 addwf 1,f
4245 064C i1l3123:
4246
4247 ;I2C2.c: 442: i2c_data_p->operating_state = 0x1;
4248 064C 0869 movf I2C2@i2c_data_p,w
4249 064D 3E47 addlw 71
4250 064E 0086 movwf 6
4251 064F 3001 movlw 1 ; select bank2/3
4252 0650 0087 movwf 7
4253 0651 0181 clrf 1
4254 0652 0A81 incf 1,f
4255
4256 ;I2C2.c: 443: } else if (data_read_from_buffer) {
4257 0653 2ED2 goto i1l3153
4258 0654 i1l3125:
4259 0654 0877 movf I2C2_Interrupt_Slave@data_read_from_buffer,w
4260 0655 1903 btfsc 3,2
4261 0656 2ED2 goto i1l3153
4262
4263 ;I2C2.c: 444: if (SSP2STATbits.D_nA == 1) {
4264 0657 0024 movlb 4 ; select bank4
4265 0658 1E9C btfss 28,5 ;volatile
4266 0659 2E98 goto i1l416
4267
4268 ;I2C2.c: 446: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = received_data;
4269 065A 0876 movf I2C2_Interrupt_Slave@received_data,w
4270 065B 00F2 movwf ??_I2C2_Interrupt_Slave
4271 065C 0020 movlb 0 ; select bank0
4272 065D 0869 movf I2C2@i2c_data_p,w
4273 065E 3E23 addlw 35
4274 065F 0086 movwf 6
4275 0660 3001 movlw 1 ; select bank2/3
4276 0661 0087 movwf 7
4277 0662 0801 movf 1,w
4278 0663 0769 addwf I2C2@i2c_data_p,w
4279 0664 00F3 movwf ??_I2C2_Interrupt_Slave+1
4280 0665 0873 movf ??_I2C2_Interrupt_Slave+1,w
4281 0666 0086 movwf 6
4282 0667 3001 movlw 1 ; select bank2/3
4283 0668 0087 movwf 7
4284 0669 0872 movf ??_I2C2_Interrupt_Slave,w
4285 066A 0081 movwf 1
4286
4287 ;I2C2.c: 447: if (i2c_data_p->buffer_in_write_ind == 32-1) {
4288 066B 0869 movf I2C2@i2c_data_p,w
4289 066C 3E23 addlw 35
4290 066D 0086 movwf 6
4291 066E 3001 movlw 1 ; select bank2/3
4292 066F 0087 movwf 7
4293 0670 0801 movf 1,w
4294 0671 3A1F xorlw 31
4295 0672 1D03 skipz
4296 0673 2E7B goto i1l3135
4297
4298 ;I2C2.c: 448: i2c_data_p->buffer_in_write_ind = 0;
4299 0674 0869 movf I2C2@i2c_data_p,w
4300 0675 3E23 addlw 35
4301 0676 0086 movwf 6
4302 0677 3001 movlw 1 ; select bank2/3
4303 0678 0087 movwf 7
4304 0679 0181 clrf 1
4305
4306 ;I2C2.c: 449: } else {
4307 067A 2E84 goto i1l418
4308 067B i1l3135:
4309
4310 ;I2C2.c: 450: i2c_data_p->buffer_in_write_ind++;
4311 067B 3001 movlw 1
4312 067C 00F2 movwf ??_I2C2_Interrupt_Slave
4313 067D 0869 movf I2C2@i2c_data_p,w
4314 067E 3E23 addlw 35
4315 067F 0086 movwf 6
4316 0680 3001 movlw 1 ; select bank2/3
4317 0681 0087 movwf 7
4318 0682 0872 movf ??_I2C2_Interrupt_Slave,w
4319 0683 0781 addwf 1,f
4320 0684 i1l418:
4321
4322 ;I2C2.c: 451: }
4323 ;I2C2.c: 452: i2c_data_p->buffer_in_len_tmp++;
4324 0684 3001 movlw 1
4325 0685 00F2 movwf ??_I2C2_Interrupt_Slave
4326 0686 0869 movf I2C2@i2c_data_p,w
4327 0687 3E21 addlw 33
4328 0688 0086 movwf 6
4329 0689 3001 movlw 1 ; select bank2/3
4330 068A 0087 movwf 7
4331 068B 0872 movf ??_I2C2_Interrupt_Slave,w
4332 068C 0781 addwf 1,f
4333
4334 ;I2C2.c: 454: i2c_data_p->slave_in_last_byte = received_data;
4335 068D 0876 movf I2C2_Interrupt_Slave@received_data,w
4336 068E 00F2 movwf ??_I2C2_Interrupt_Slave
4337 068F 0869 movf I2C2@i2c_data_p,w
4338 0690 3E4B addlw 75
4339 0691 0086 movwf 6
4340 0692 3001 movlw 1 ; select bank2/3
4341 0693 0087 movwf 7
4342 0694 0872 movf ??_I2C2_Interrupt_Slave,w
4343 0695 0081 movwf 1
4344
4345 ;I2C2.c: 455: i2c_data_p->return_status = 0x34;
4346 0696 3034 movlw 52
4347 0697 2EB5 goto L8
4348 0698 i1l416:
4349 ;I2C2.c: 456: } else {
4350
4351
4352 ;I2C2.c: 458: if (SSP2STATbits.R_nW == 1) {
4353 0698 1D1C btfss 28,2 ;volatile
4354 0699 2EAC goto i1l3147
4355
4356 ;I2C2.c: 459: i2c_data_p->buffer_in_len += i2c_data_p->buffer_in_len_tmp;
4357 069A 0020 movlb 0 ; select bank0
4358 069B 0869 movf I2C2@i2c_data_p,w
4359 069C 3E21 addlw 33
4360 069D 0086 movwf 6
4361 069E 3001 movlw 1 ; select bank2/3
4362 069F 0087 movwf 7
4363 06A0 0801 movf 1,w
4364 06A1 00F2 movwf ??_I2C2_Interrupt_Slave
4365 06A2 0869 movf I2C2@i2c_data_p,w
4366 06A3 3E20 addlw 32
4367 06A4 0086 movwf 6
4368 06A5 3001 movlw 1 ; select bank2/3
4369 06A6 0087 movwf 7
4370 06A7 0872 movf ??_I2C2_Interrupt_Slave,w
4371 06A8 0781 addwf 1,f
4372
4373 ;I2C2.c: 460: i2c_data_p->operating_state = 0x4;
4374 06A9 3004 movlw 4
4375 06AA 00F2 movwf ??_I2C2_Interrupt_Slave
4376
4377 ;I2C2.c: 462: goto send;
4378 06AB 2D7E goto L4
4379 06AC i1l3147:
4380 ;I2C2.c: 463: } else {
4381
4382
4383 ;I2C2.c: 465: i2c_data_p->operating_state = 0x1;
4384 06AC 0020 movlb 0 ; select bank0
4385 06AD 0869 movf I2C2@i2c_data_p,w
4386 06AE 3E47 addlw 71
4387 06AF 0086 movwf 6
4388 06B0 3001 movlw 1 ; select bank2/3
4389 06B1 0087 movwf 7
4390 06B2 0181 clrf 1
4391 06B3 0A81 incf 1,f
4392
4393 ;I2C2.c: 466: i2c_data_p->return_status = 0x37;
4394 06B4 3037 movlw 55
4395 06B5 L8:
4396 06B5 00F2 movwf ??_I2C2_Interrupt_Slave
4397 06B6 0869 movf I2C2@i2c_data_p,w
4398 06B7 3E48 addlw 72
4399 06B8 L7:
4400 06B8 0086 movwf 6
4401 06B9 3001 movlw 1 ; select bank2/3
4402 06BA 0087 movwf 7
4403 06BB 0872 movf ??_I2C2_Interrupt_Slave,w
4404 06BC 0081 movwf 1
4405
4406 ;I2C2.c: 471: }
4407 ;I2C2.c: 472: }
4408
4409 ;I2C2.c: 467: }
4410 ;I2C2.c: 468: }
4411 ;I2C2.c: 469: }
4412 ;I2C2.c: 470: break;
4413 06BD 2ED2 goto i1l3153
4414 06BE i1l3151:
4415 06BE 0020 movlb 0 ; select bank0
4416 06BF 0869 movf I2C2@i2c_data_p,w
4417 06C0 3E47 addlw 71
4418 06C1 0086 movwf 6
4419 06C2 3001 movlw 1 ; select bank2/3
4420 06C3 0087 movwf 7
4421 06C4 0801 movf 1,w
4422
4423 ; Switch size 1, requested type "space"
4424 ; Number of cases is 4, Range of values is 1 to 4
4425 ; switch strategies available:
4426 ; Name Instructions Cycles
4427 ; simple_byte 13 7 (average)
4428 ; direct_byte 17 9 (fixed)
4429 ; jumptable 263 9 (fixed)
4430 ; Chosen strategy is simple_byte
4431 06C5 3A01 xorlw 1 ; case 1
4432 06C6 1903 skipnz
4433 06C7 2D5B goto i1l388
4434 06C8 3A03 xorlw 3 ; case 2
4435 06C9 1903 skipnz
4436 06CA 2D68 goto i1l391
4437 06CB 3A01 xorlw 1 ; case 3
4438 06CC 1903 skipnz
4439 06CD 2DE6 goto i1l407
4440 06CE 3A07 xorlw 7 ; case 4
4441 06CF 1903 skipnz
4442 06D0 2D85 goto i1l3081
4443 06D1 2ED2 goto i1l3153
4444 06D2 i1l3153:
4445
4446 ;I2C2.c: 473: }
4447 ;I2C2.c: 476: if (data_read_from_buffer || data_written_to_buffer) {
4448 06D2 08F7 movf I2C2_Interrupt_Slave@data_read_from_buffer,f
4449 06D3 1903 btfsc 3,2
4450 06D4 0875 movf I2C2_Interrupt_Slave@data_written_to_buffer,w
4451 06D5 1903 btfsc 3,2
4452 06D6 0008 return
4453
4454 ;I2C2.c: 478: if (SSP2CON1bits.CKP == 0) {
4455 06D7 0024 movlb 4 ; select bank4
4456 06D8 1A1D btfsc 29,4 ;volatile
4457 06D9 0008 return
4458
4459 ;I2C2.c: 479: SSP2CON1bits.CKP = 1;
4460 06DA 161D bsf 29,4 ;volatile
4461 06DB 0008 return
4462 06DC __end_of_I2C2_Interrupt_Slave:
4463
4464 psect text20
4465 0B9B __ptext20:
4466 ;; *************** function _I2C2_Process_Receive *****************
4467 ;; Defined at:
4468 ;; line 522 in file "I2C2.c"
4469 ;; Parameters: Size Location Type
4470 ;; c 1 wreg unsigned char
4471 ;; Auto vars: Size Location Type
4472 ;; c 1 0[COMMON] unsigned char
4473 ;; ret 1 1[COMMON] unsigned char
4474 ;; btns 1 0 struct .
4475 ;; Return value: Size Location Type
4476 ;; 1 wreg unsigned char
4477 ;; Registers used:
4478 ;; wreg, fsr0l, fsr0h, status,2, status,0
4479 ;; Tracked objects:
4480 ;; On entry : 0/0
4481 ;; On exit : 0/0
4482 ;; Unchanged: 0/0
4483 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
4484 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
4485 ;; Locals: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
4486 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
4487 ;; Totals: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
4488 ;;Total ram usage: 2 bytes
4489 ;; Hardware stack levels used: 1
4490 ;; This function calls:
4491 ;; Nothing
4492 ;; This function is called by:
4493 ;; _I2C2_Interrupt_Slave
4494 ;; This function uses a non-reentrant model
4495 ;;
4496
4497
4498 ;psect for function _I2C2_Process_Receive
4499 0B9B _I2C2_Process_Receive:
4500
4501 ;incstack = 0
4502 ; Regs used in _I2C2_Process_Receive: [wreg-fsr0h+status,2+status,0]
4503 ;I2C2_Process_Receive@c stored from wreg
4504 0B9B 00F0 movwf I2C2_Process_Receive@c
4505
4506 ;I2C2.c: 523: uint8_t ret = 0;
4507 0B9C 01F1 clrf I2C2_Process_Receive@ret
4508 0B9D 0064 clrwdt ;#
4509
4510 ;I2C2.c: 534: }
4511
4512 ;I2C2.c: 533: break;
4513
4514 ;I2C2.c: 528: case 0x0A:
4515
4516 ;I2C2.c: 527: switch (c) {
4517 0B9E 0870 movf I2C2_Process_Receive@c,w
4518
4519 ; Switch size 1, requested type "space"
4520 ; Number of cases is 1, Range of values is 10 to 10
4521 ; switch strategies available:
4522 ; Name Instructions Cycles
4523 ; simple_byte 4 3 (average)
4524 ; direct_byte 11 9 (fixed)
4525 ; jumptable 263 9 (fixed)
4526 ; Chosen strategy is simple_byte
4527 0B9F 3A0A xorlw 10 ; case 10
4528 0BA0 1903 skipnz
4529 0BA1 2BA3 goto i1l2865
4530 0BA2 2BA3 goto i1l2865
4531 0BA3 i1l2865:
4532
4533 ;I2C2.c: 535: return ret;
4534 0BA3 0871 movf I2C2_Process_Receive@ret,w
4535 0BA4 0008 return
4536 0BA5 __end_of_I2C2_Process_Receive:
4537
4538 psect text21
4539 001B __ptext21:
4540 ;; *************** function _I2C2_Interrupt_Master *****************
4541 ;; Defined at:
4542 ;; line 148 in file "I2C2.c"
4543 ;; Parameters: Size Location Type
4544 ;; None
4545 ;; Auto vars: Size Location Type
4546 ;; tmp 1 3[COMMON] unsigned char
4547 ;; tmp 1 2[COMMON] unsigned char
4548 ;; Return value: Size Location Type
4549 ;; None void
4550 ;; Registers used:
4551 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0
4552 ;; Tracked objects:
4553 ;; On entry : 0/0
4554 ;; On exit : 0/0
4555 ;; Unchanged: 0/0
4556 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
4557 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
4558 ;; Locals: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
4559 ;; Temps: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
4560 ;; Totals: 4 0 0 0 0 0 0 0 0 0 0 0
+0 0
4561 ;;Total ram usage: 4 bytes
4562 ;; Hardware stack levels used: 1
4563 ;; This function calls:
4564 ;; Nothing
4565 ;; This function is called by:
4566 ;; _I2C2_Interrupt_Handler
4567 ;; This function uses a non-reentrant model
4568 ;;
4569
4570
4571 ;psect for function _I2C2_Interrupt_Master
4572 001B _I2C2_Interrupt_Master:
4573
4574 ;I2C2.c: 150: if (i2c_data_p->master_status == 0x20) {
4575
4576 ;incstack = 0
4577 ; Regs used in _I2C2_Interrupt_Master: [wreg-fsr1h+status,2+status,0]
4578 001B 0020 movlb 0 ; select bank0
4579 001C 0869 movf I2C2@i2c_data_p,w
4580 001D 3E4A addlw 74
4581 001E 0086 movwf 6
4582 001F 3001 movlw 1 ; select bank2/3
4583 0020 0087 movwf 7
4584 0021 0801 movf 1,w
4585 0022 3A20 xorlw 32
4586 0023 1903 btfsc 3,2
4587 0024 289F goto i1l2743
4588 0025 28B0 goto i1l2745
4589 0026 i1l2725:
4590 ;I2C2.c: 154: case 0x5:
4591
4592 ;I2C2.c: 153: break;
4593
4594 ;I2C2.c: 152: case 0x1:
4595
4596 ;I2C2.c: 151: switch (i2c_data_p->operating_state) {
4597
4598
4599 ;I2C2.c: 156: i2c_data_p->operating_state = 0x7;
4600 0026 3007 movlw 7
4601 0027 00F0 movwf ??_I2C2_Interrupt_Master
4602 0028 0869 movf I2C2@i2c_data_p,w
4603 0029 3E47 addlw 71
4604 002A 0086 movwf 6
4605 002B 3001 movlw 1 ; select bank2/3
4606 002C 0087 movwf 7
4607 002D 0870 movf ??_I2C2_Interrupt_Master,w
4608 002E 0081 movwf 1
4609
4610 ;I2C2.c: 157: SSP2BUF = (i2c_data_p->master_dest_addr << 1) | 0x0;
4611 002F 0869 movf I2C2@i2c_data_p,w
4612 0030 3E49 addlw 73
4613 0031 0086 movwf 6
4614 0032 3001 movlw 1 ; select bank2/3
4615 0033 0087 movwf 7
4616 0034 3501 lslf 1,w
4617 0035 0024 movlb 4 ; select bank4
4618 0036 0099 movwf 25 ;volatile
4619
4620 ;I2C2.c: 158: break;
4621 0037 0008 return
4622 0038 i1l341:
4623 ;I2C2.c: 159: case 0x7:
4624
4625
4626 ;I2C2.c: 161: if (!SSP2CON2bits.ACKSTAT) {
4627 0038 0024 movlb 4 ; select bank4
4628 0039 1B1E btfsc 30,6 ;volatile
4629 003A 2881 goto i1l2737
4630
4631 ;I2C2.c: 163: if (i2c_data_p->buffer_in_read_ind < i2c_data_p->buffer_in_len) {
4632 003B 0020 movlb 0 ; select bank0
4633 003C 0869 movf I2C2@i2c_data_p,w
4634 003D 3E22 addlw 34
4635 003E 0086 movwf 6
4636 003F 3001 movlw 1 ; select bank2/3
4637 0040 0087 movwf 7
4638 0041 0869 movf I2C2@i2c_data_p,w
4639 0042 3E20 addlw 32
4640 0043 0084 movwf 4
4641 0044 3001 movlw 1 ; select bank2/3
4642 0045 0085 movwf 5
4643 0046 0800 movf 0,w
4644 0047 0201 subwf 1,w
4645 0048 1803 skipnc
4646 0049 2864 goto i1l2733
4647
4648 ;I2C2.c: 164: SSP2BUF = i2c_data_p->buffer_in[i2c_data_p->buffer_in_read_ind];
4649 004A 0869 movf I2C2@i2c_data_p,w
4650 004B 3E22 addlw 34
4651 004C 0086 movwf 6
4652 004D 3001 movlw 1 ; select bank2/3
4653 004E 0087 movwf 7
4654 004F 0801 movf 1,w
4655 0050 0769 addwf I2C2@i2c_data_p,w
4656 0051 00F0 movwf ??_I2C2_Interrupt_Master
4657 0052 0870 movf ??_I2C2_Interrupt_Master,w
4658 0053 0086 movwf 6
4659 0054 3001 movlw 1 ; select bank2/3
4660 0055 0087 movwf 7
4661 0056 0801 movf 1,w
4662 0057 0024 movlb 4 ; select bank4
4663 0058 0099 movwf 25 ;volatile
4664
4665 ;I2C2.c: 165: i2c_data_p->buffer_in_read_ind++;
4666 0059 3001 movlw 1
4667 005A 00F0 movwf ??_I2C2_Interrupt_Master
4668 005B 0020 movlb 0 ; select bank0
4669 005C 0869 movf I2C2@i2c_data_p,w
4670 005D 3E22 addlw 34
4671 005E 0086 movwf 6
4672 005F 3001 movlw 1 ; select bank2/3
4673 0060 0087 movwf 7
4674 0061 0870 movf ??_I2C2_Interrupt_Master,w
4675 0062 0781 addwf 1,f
4676
4677 ;I2C2.c: 166: } else {
4678 0063 0008 return
4679 0064 i1l2733:
4680
4681 ;I2C2.c: 168: i2c_data_p->operating_state = 0x1;
4682 0064 0869 movf I2C2@i2c_data_p,w
4683 0065 3E47 addlw 71
4684 0066 0086 movwf 6
4685 0067 3001 movlw 1 ; select bank2/3
4686 0068 0087 movwf 7
4687 0069 0181 clrf 1
4688 006A 0A81 incf 1,f
4689
4690 ;I2C2.c: 169: SSP2CON2bits.PEN = 1;
4691 006B 0024 movlb 4 ; select bank4
4692 006C 151E bsf 30,2 ;volatile
4693
4694 ;I2C2.c: 170: i2c_data_p->master_status = 0x23;
4695 006D 3023 movlw 35
4696 006E 00F0 movwf ??_I2C2_Interrupt_Master
4697 006F 0020 movlb 0 ; select bank0
4698 0070 0869 movf I2C2@i2c_data_p,w
4699 0071 3E4A addlw 74
4700 0072 0086 movwf 6
4701 0073 3001 movlw 1 ; select bank2/3
4702 0074 0087 movwf 7
4703 0075 0870 movf ??_I2C2_Interrupt_Master,w
4704 0076 0081 movwf 1
4705
4706 ;I2C2.c: 171: i2c_data_p->return_status = 0x30;
4707 0077 3030 movlw 48
4708 0078 00F0 movwf ??_I2C2_Interrupt_Master
4709 0079 0869 movf I2C2@i2c_data_p,w
4710 007A 3E48 addlw 72
4711 007B 0086 movwf 6
4712 007C 3001 movlw 1 ; select bank2/3
4713 007D 0087 movwf 7
4714 007E 0870 movf ??_I2C2_Interrupt_Master,w
4715 007F 0081 movwf 1
4716
4717 ;I2C2.c: 172: }
4718 ;I2C2.c: 173: } else {
4719 0080 0008 return
4720 0081 i1l2737:
4721
4722 ;I2C2.c: 175: i2c_data_p->operating_state = 0x1;
4723 0081 0020 movlb 0 ; select bank0
4724 0082 0869 movf I2C2@i2c_data_p,w
4725 0083 3E47 addlw 71
4726 0084 0086 movwf 6
4727 0085 3001 movlw 1 ; select bank2/3
4728 0086 0087 movwf 7
4729 0087 0181 clrf 1
4730 0088 0A81 incf 1,f
4731
4732 ;I2C2.c: 176: SSP2CON2bits.PEN = 1;
4733 0089 0024 movlb 4 ; select bank4
4734 008A 151E bsf 30,2 ;volatile
4735
4736 ;I2C2.c: 177: i2c_data_p->master_status = 0x23;
4737 008B 3023 movlw 35
4738 008C 00F0 movwf ??_I2C2_Interrupt_Master
4739 008D 0020 movlb 0 ; select bank0
4740 008E 0869 movf I2C2@i2c_data_p,w
4741 008F 3E4A addlw 74
4742 0090 0086 movwf 6
4743 0091 3001 movlw 1 ; select bank2/3
4744 0092 0087 movwf 7
4745 0093 0870 movf ??_I2C2_Interrupt_Master,w
4746 0094 0081 movwf 1
4747
4748 ;I2C2.c: 178: i2c_data_p->return_status = 0x31;
4749 0095 3031 movlw 49
4750 0096 00F0 movwf ??_I2C2_Interrupt_Master
4751 0097 0869 movf I2C2@i2c_data_p,w
4752 0098 3E48 addlw 72
4753 0099 0086 movwf 6
4754 009A 3001 movlw 1 ; select bank2/3
4755 009B 0087 movwf 7
4756 009C 0870 movf ??_I2C2_Interrupt_Master,w
4757 009D 0081 movwf 1
4758
4759 ;I2C2.c: 181: }
4760
4761 ;I2C2.c: 179: }
4762 ;I2C2.c: 180: break;
4763 009E 0008 return
4764 009F i1l2743:
4765 009F 0869 movf I2C2@i2c_data_p,w
4766 00A0 3E47 addlw 71
4767 00A1 0086 movwf 6
4768 00A2 3001 movlw 1 ; select bank2/3
4769 00A3 0087 movwf 7
4770 00A4 0801 movf 1,w
4771
4772 ; Switch size 1, requested type "space"
4773 ; Number of cases is 3, Range of values is 1 to 7
4774 ; switch strategies available:
4775 ; Name Instructions Cycles
4776 ; simple_byte 10 6 (average)
4777 ; direct_byte 23 9 (fixed)
4778 ; jumptable 263 9 (fixed)
4779 ; Chosen strategy is simple_byte
4780 00A5 3A01 xorlw 1 ; case 1
4781 00A6 1903 skipnz
4782 00A7 2ADC goto i1l381
4783 00A8 3A04 xorlw 4 ; case 5
4784 00A9 1903 skipnz
4785 00AA 2826 goto i1l2725
4786 00AB 3A02 xorlw 2 ; case 7
4787 00AC 1903 skipnz
4788 00AD 2838 goto i1l341
4789 00AE 2ADC goto i1l381
4790
4791 ;I2C2.c: 183: } else if (i2c_data_p->master_status == 0x21) {
4792 00AF 0008 return
4793 00B0 i1l2745:
4794 00B0 0869 movf I2C2@i2c_data_p,w
4795 00B1 3E4A addlw 74
4796 00B2 0086 movwf 6
4797 00B3 3001 movlw 1 ; select bank2/3
4798 00B4 0087 movwf 7
4799 00B5 0801 movf 1,w
4800 00B6 3A21 xorlw 33
4801 00B7 1903 btfsc 3,2
4802 00B8 296E goto i1l2791
4803 00B9 2988 goto i1l2793
4804 00BA i1l2749:
4805 ;I2C2.c: 187: case 0x5:
4806
4807 ;I2C2.c: 186: break;
4808
4809 ;I2C2.c: 185: case 0x1:
4810
4811 ;I2C2.c: 184: switch (i2c_data_p->operating_state) {
4812
4813
4814 ;I2C2.c: 189: i2c_data_p->operating_state = 0x8;
4815 00BA 3008 movlw 8
4816 00BB 00F0 movwf ??_I2C2_Interrupt_Master
4817 00BC 0869 movf I2C2@i2c_data_p,w
4818 00BD 3E47 addlw 71
4819 00BE 0086 movwf 6
4820 00BF 3001 movlw 1 ; select bank2/3
4821 00C0 0087 movwf 7
4822 00C1 0870 movf ??_I2C2_Interrupt_Master,w
4823 00C2 0081 movwf 1
4824
4825 ;I2C2.c: 190: uint8_t tmp = (i2c_data_p->master_dest_addr << 1);
4826 00C3 0869 movf I2C2@i2c_data_p,w
4827 00C4 3E49 addlw 73
4828 00C5 0086 movwf 6
4829 00C6 3001 movlw 1 ; select bank2/3
4830 00C7 0087 movwf 7
4831 00C8 3501 lslf 1,w
4832 00C9 00F0 movwf ??_I2C2_Interrupt_Master
4833 00CA 0870 movf ??_I2C2_Interrupt_Master,w
4834 00CB 00F2 movwf I2C2_Interrupt_Master@tmp
4835
4836 ;I2C2.c: 191: tmp |= 0x01;
4837 00CC 1472 bsf I2C2_Interrupt_Master@tmp,0
4838
4839 ;I2C2.c: 192: SSP2BUF = tmp;
4840 00CD 0872 movf I2C2_Interrupt_Master@tmp,w
4841 00CE 0024 movlb 4 ; select bank4
4842 00CF 0099 movwf 25 ;volatile
4843
4844 ;I2C2.c: 193: break;
4845 00D0 0008 return
4846 00D1 i1l352:
4847 ;I2C2.c: 194: case 0x8:
4848
4849
4850 ;I2C2.c: 196: if (!SSP2CON2bits.ACKSTAT) {
4851 00D1 0024 movlb 4 ; select bank4
4852 00D2 1B1E btfsc 30,6 ;volatile
4853 00D3 28E1 goto i1l2761
4854
4855 ;I2C2.c: 198: i2c_data_p->operating_state = 0x3;
4856 00D4 3003 movlw 3
4857 00D5 00F0 movwf ??_I2C2_Interrupt_Master
4858 00D6 0020 movlb 0 ; select bank0
4859 00D7 0869 movf I2C2@i2c_data_p,w
4860 00D8 3E47 addlw 71
4861 00D9 0086 movwf 6
4862 00DA 3001 movlw 1 ; select bank2/3
4863 00DB 0087 movwf 7
4864 00DC 0870 movf ??_I2C2_Interrupt_Master,w
4865 00DD 0081 movwf 1
4866
4867 ;I2C2.c: 199: SSP2CON2bits.RCEN = 1;
4868 00DE 0024 movlb 4 ; select bank4
4869 00DF 159E bsf 30,3 ;volatile
4870
4871 ;I2C2.c: 200: } else {
4872 00E0 0008 return
4873 00E1 i1l2761:
4874
4875 ;I2C2.c: 202: i2c_data_p->operating_state = 0x1;
4876 00E1 0020 movlb 0 ; select bank0
4877 00E2 0869 movf I2C2@i2c_data_p,w
4878 00E3 3E47 addlw 71
4879 00E4 0086 movwf 6
4880 00E5 3001 movlw 1 ; select bank2/3
4881 00E6 0087 movwf 7
4882 00E7 0181 clrf 1
4883 00E8 0A81 incf 1,f
4884
4885 ;I2C2.c: 203: SSP2CON2bits.PEN = 1;
4886 00E9 0024 movlb 4 ; select bank4
4887 00EA 151E bsf 30,2 ;volatile
4888
4889 ;I2C2.c: 204: i2c_data_p->master_status = 0x23;
4890 00EB 3023 movlw 35
4891 00EC 00F0 movwf ??_I2C2_Interrupt_Master
4892 00ED 0020 movlb 0 ; select bank0
4893 00EE 0869 movf I2C2@i2c_data_p,w
4894 00EF 3E4A addlw 74
4895 00F0 0086 movwf 6
4896 00F1 3001 movlw 1 ; select bank2/3
4897 00F2 0087 movwf 7
4898 00F3 0870 movf ??_I2C2_Interrupt_Master,w
4899 00F4 0081 movwf 1
4900
4901 ;I2C2.c: 205: i2c_data_p->return_status = 0x33;
4902 00F5 3033 movlw 51
4903 00F6 00F0 movwf ??_I2C2_Interrupt_Master
4904 00F7 0869 movf I2C2@i2c_data_p,w
4905 00F8 3E48 addlw 72
4906 00F9 0086 movwf 6
4907 00FA 3001 movlw 1 ; select bank2/3
4908 00FB 0087 movwf 7
4909 00FC 0870 movf ??_I2C2_Interrupt_Master,w
4910 00FD 0081 movwf 1
4911
4912 ;I2C2.c: 206: }
4913 ;I2C2.c: 207: break;
4914 00FE 0008 return
4915 00FF i1l2765:
4916 ;I2C2.c: 208: case 0x3:
4917
4918
4919 ;I2C2.c: 211: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = SSP2BUF;
4920 00FF 0024 movlb 4 ; select bank4
4921 0100 0819 movf 25,w ;volatile
4922 0101 00F0 movwf ??_I2C2_Interrupt_Master
4923 0102 0020 movlb 0 ; select bank0
4924 0103 0869 movf I2C2@i2c_data_p,w
4925 0104 3E23 addlw 35
4926 0105 0086 movwf 6
4927 0106 3001 movlw 1 ; select bank2/3
4928 0107 0087 movwf 7
4929 0108 0801 movf 1,w
4930 0109 0769 addwf I2C2@i2c_data_p,w
4931 010A 00F1 movwf ??_I2C2_Interrupt_Master+1
4932 010B 0871 movf ??_I2C2_Interrupt_Master+1,w
4933 010C 0086 movwf 6
4934 010D 3001 movlw 1 ; select bank2/3
4935 010E 0087 movwf 7
4936 010F 0870 movf ??_I2C2_Interrupt_Master,w
4937 0110 0081 movwf 1
4938
4939 ;I2C2.c: 212: i2c_data_p->buffer_in_write_ind++;
4940 0111 3001 movlw 1
4941 0112 00F0 movwf ??_I2C2_Interrupt_Master
4942 0113 0869 movf I2C2@i2c_data_p,w
4943 0114 3E23 addlw 35
4944 0115 0086 movwf 6
4945 0116 3001 movlw 1 ; select bank2/3
4946 0117 0087 movwf 7
4947 0118 0870 movf ??_I2C2_Interrupt_Master,w
4948 0119 0781 addwf 1,f
4949
4950 ;I2C2.c: 213: if (i2c_data_p->buffer_in_write_ind < i2c_data_p->buffer_in_len) {
4951 011A 0869 movf I2C2@i2c_data_p,w
4952 011B 3E23 addlw 35
4953 011C 0086 movwf 6
4954 011D 3001 movlw 1 ; select bank2/3
4955 011E 0087 movwf 7
4956 011F 0869 movf I2C2@i2c_data_p,w
4957 0120 3E20 addlw 32
4958 0121 0084 movwf 4
4959 0122 3001 movlw 1 ; select bank2/3
4960 0123 0085 movwf 5
4961 0124 0800 movf 0,w
4962 0125 0201 subwf 1,w
4963 0126 1803 skipnc
4964 0127 2935 goto i1l2775
4965
4966 ;I2C2.c: 215: i2c_data_p->operating_state = 0xA;
4967 0128 300A movlw 10
4968 0129 00F0 movwf ??_I2C2_Interrupt_Master
4969 012A 0869 movf I2C2@i2c_data_p,w
4970 012B 3E47 addlw 71
4971 012C 0086 movwf 6
4972 012D 3001 movlw 1 ; select bank2/3
4973 012E 0087 movwf 7
4974 012F 0870 movf ??_I2C2_Interrupt_Master,w
4975 0130 0081 movwf 1
4976
4977 ;I2C2.c: 216: SSP2CON2bits.ACKDT = 0;
4978 0131 0024 movlb 4 ; select bank4
4979 0132 129E bcf 30,5 ;volatile
4980
4981 ;I2C2.c: 217: SSP2CON2bits.ACKEN = 1;
4982 0133 161E bsf 30,4 ;volatile
4983
4984 ;I2C2.c: 218: } else {
4985 0134 0008 return
4986 0135 i1l2775:
4987
4988 ;I2C2.c: 220: i2c_data_p->operating_state = 0xB;
4989 0135 300B movlw 11
4990 0136 00F0 movwf ??_I2C2_Interrupt_Master
4991 0137 0020 movlb 0 ; select bank0
4992 0138 0869 movf I2C2@i2c_data_p,w
4993 0139 3E47 addlw 71
4994 013A 0086 movwf 6
4995 013B 3001 movlw 1 ; select bank2/3
4996 013C 0087 movwf 7
4997 013D 0870 movf ??_I2C2_Interrupt_Master,w
4998 013E 0081 movwf 1
4999
5000 ;I2C2.c: 221: SSP2CON2bits.ACKDT = 1;
5001 013F 0024 movlb 4 ; select bank4
5002 0140 169E bsf 30,5 ;volatile
5003
5004 ;I2C2.c: 222: SSP2CON2bits.ACKEN = 1;
5005 0141 161E bsf 30,4 ;volatile
5006
5007 ;I2C2.c: 223: }
5008 ;I2C2.c: 224: break;
5009 0142 0008 return
5010 0143 i1l2781:
5011 ;I2C2.c: 225: case 0xA:
5012
5013
5014 ;I2C2.c: 227: i2c_data_p->operating_state = 0x3;
5015 0143 3003 movlw 3
5016 0144 00F0 movwf ??_I2C2_Interrupt_Master
5017 0145 0020 movlb 0 ; select bank0
5018 0146 0869 movf I2C2@i2c_data_p,w
5019 0147 3E47 addlw 71
5020 0148 0086 movwf 6
5021 0149 3001 movlw 1 ; select bank2/3
5022 014A 0087 movwf 7
5023 014B 0870 movf ??_I2C2_Interrupt_Master,w
5024 014C 0081 movwf 1
5025
5026 ;I2C2.c: 228: SSP2CON2bits.RCEN = 1;
5027 014D 0024 movlb 4 ; select bank4
5028 014E 159E bsf 30,3 ;volatile
5029
5030 ;I2C2.c: 229: break;
5031 014F 0008 return
5032 0150 i1l2785:
5033 ;I2C2.c: 230: case 0xB:
5034
5035
5036 ;I2C2.c: 232: i2c_data_p->operating_state = 0x1;
5037 0150 0020 movlb 0 ; select bank0
5038 0151 0869 movf I2C2@i2c_data_p,w
5039 0152 3E47 addlw 71
5040 0153 0086 movwf 6
5041 0154 3001 movlw 1 ; select bank2/3
5042 0155 0087 movwf 7
5043 0156 0181 clrf 1
5044 0157 0A81 incf 1,f
5045
5046 ;I2C2.c: 233: SSP2CON2bits.PEN = 1;
5047 0158 0024 movlb 4 ; select bank4
5048 0159 151E bsf 30,2 ;volatile
5049
5050 ;I2C2.c: 234: i2c_data_p->master_status = 0x23;
5051 015A 3023 movlw 35
5052 015B 00F0 movwf ??_I2C2_Interrupt_Master
5053 015C 0020 movlb 0 ; select bank0
5054 015D 0869 movf I2C2@i2c_data_p,w
5055 015E 3E4A addlw 74
5056 015F 0086 movwf 6
5057 0160 3001 movlw 1 ; select bank2/3
5058 0161 0087 movwf 7
5059 0162 0870 movf ??_I2C2_Interrupt_Master,w
5060 0163 0081 movwf 1
5061
5062 ;I2C2.c: 235: i2c_data_p->return_status = 0x32;
5063 0164 3032 movlw 50
5064 0165 00F0 movwf ??_I2C2_Interrupt_Master
5065 0166 0869 movf I2C2@i2c_data_p,w
5066 0167 3E48 addlw 72
5067 0168 0086 movwf 6
5068 0169 3001 movlw 1 ; select bank2/3
5069 016A 0087 movwf 7
5070 016B 0870 movf ??_I2C2_Interrupt_Master,w
5071 016C 0081 movwf 1
5072
5073 ;I2C2.c: 237: }
5074
5075 ;I2C2.c: 236: break;
5076 016D 0008 return
5077 016E i1l2791:
5078 016E 0869 movf I2C2@i2c_data_p,w
5079 016F 3E47 addlw 71
5080 0170 0086 movwf 6
5081 0171 3001 movlw 1 ; select bank2/3
5082 0172 0087 movwf 7
5083 0173 0801 movf 1,w
5084
5085 ; Switch size 1, requested type "space"
5086 ; Number of cases is 6, Range of values is 1 to 11
5087 ; switch strategies available:
5088 ; Name Instructions Cycles
5089 ; simple_byte 19 10 (average)
5090 ; direct_byte 31 9 (fixed)
5091 ; jumptable 263 9 (fixed)
5092 ; Chosen strategy is simple_byte
5093 0174 3A01 xorlw 1 ; case 1
5094 0175 1903 skipnz
5095 0176 2ADC goto i1l381
5096 0177 3A02 xorlw 2 ; case 3
5097 0178 1903 skipnz
5098 0179 28FF goto i1l2765
5099 017A 3A06 xorlw 6 ; case 5
5100 017B 1903 skipnz
5101 017C 28BA goto i1l2749
5102 017D 3A0D xorlw 13 ; case 8
5103 017E 1903 skipnz
5104 017F 28D1 goto i1l352
5105 0180 3A02 xorlw 2 ; case 10
5106 0181 1903 skipnz
5107 0182 2943 goto i1l2781
5108 0183 3A01 xorlw 1 ; case 11
5109 0184 1903 skipnz
5110 0185 2950 goto i1l2785
5111 0186 2ADC goto i1l381
5112
5113 ;I2C2.c: 238: } else if (i2c_data_p->master_status == 0x22) {
5114 0187 0008 return
5115 0188 i1l2793:
5116 0188 0869 movf I2C2@i2c_data_p,w
5117 0189 3E4A addlw 74
5118 018A 0086 movwf 6
5119 018B 3001 movlw 1 ; select bank2/3
5120 018C 0087 movwf 7
5121 018D 0801 movf 1,w
5122 018E 3A22 xorlw 34
5123 018F 1D03 skipz
5124 0190 0008 return
5125 0191 2AB9 goto i1l2857
5126 0192 i1l2797:
5127 ;I2C2.c: 242: case 0x5:
5128
5129 ;I2C2.c: 241: break;
5130
5131 ;I2C2.c: 240: case 0x1:
5132
5133 ;I2C2.c: 239: switch (i2c_data_p->operating_state) {
5134
5135
5136 ;I2C2.c: 244: i2c_data_p->operating_state = 0x7;
5137 0192 3007 movlw 7
5138 0193 00F0 movwf ??_I2C2_Interrupt_Master
5139 0194 0869 movf I2C2@i2c_data_p,w
5140 0195 3E47 addlw 71
5141 0196 0086 movwf 6
5142 0197 3001 movlw 1 ; select bank2/3
5143 0198 0087 movwf 7
5144 0199 0870 movf ??_I2C2_Interrupt_Master,w
5145 019A 0081 movwf 1
5146
5147 ;I2C2.c: 245: SSP2BUF = (i2c_data_p->master_dest_addr << 1) | 0x0;
5148 019B 0869 movf I2C2@i2c_data_p,w
5149 019C 3E49 addlw 73
5150 019D 0086 movwf 6
5151 019E 3001 movlw 1 ; select bank2/3
5152 019F 0087 movwf 7
5153 01A0 3501 lslf 1,w
5154 01A1 0024 movlb 4 ; select bank4
5155 01A2 0099 movwf 25 ;volatile
5156
5157 ;I2C2.c: 246: break;
5158 01A3 0008 return
5159 01A4 i1l366:
5160 ;I2C2.c: 247: case 0x7:
5161
5162
5163 ;I2C2.c: 249: if (!SSP2CON2bits.ACKSTAT) {
5164 01A4 0024 movlb 4 ; select bank4
5165 01A5 1B1E btfsc 30,6 ;volatile
5166 01A6 29BA goto i1l2803
5167
5168 ;I2C2.c: 251: SSP2BUF = i2c_data_p->buffer_in[0];
5169 01A7 0020 movlb 0 ; select bank0
5170 01A8 0869 movf I2C2@i2c_data_p,w
5171 01A9 0086 movwf 6
5172 01AA 3001 movlw 1 ; select bank2/3
5173 01AB 0087 movwf 7
5174 01AC 0801 movf 1,w
5175 01AD 0024 movlb 4 ; select bank4
5176 01AE 0099 movwf 25 ;volatile
5177
5178 ;I2C2.c: 252: i2c_data_p->operating_state = 0x9;
5179 01AF 3009 movlw 9
5180 01B0 00F0 movwf ??_I2C2_Interrupt_Master
5181 01B1 0020 movlb 0 ; select bank0
5182 01B2 0869 movf I2C2@i2c_data_p,w
5183 01B3 3E47 addlw 71
5184 01B4 0086 movwf 6
5185 01B5 3001 movlw 1 ; select bank2/3
5186 01B6 0087 movwf 7
5187 01B7 0870 movf ??_I2C2_Interrupt_Master,w
5188 01B8 0081 movwf 1
5189
5190 ;I2C2.c: 253: } else {
5191 01B9 0008 return
5192 01BA i1l2803:
5193
5194 ;I2C2.c: 255: i2c_data_p->operating_state = 0x1;
5195 01BA 0020 movlb 0 ; select bank0
5196 01BB 0869 movf I2C2@i2c_data_p,w
5197 01BC 3E47 addlw 71
5198 01BD 0086 movwf 6
5199 01BE 3001 movlw 1 ; select bank2/3
5200 01BF 0087 movwf 7
5201 01C0 0181 clrf 1
5202 01C1 0A81 incf 1,f
5203
5204 ;I2C2.c: 256: SSP2CON2bits.PEN = 1;
5205 01C2 0024 movlb 4 ; select bank4
5206 01C3 151E bsf 30,2 ;volatile
5207
5208 ;I2C2.c: 257: i2c_data_p->master_status = 0x23;
5209 01C4 3023 movlw 35
5210 01C5 00F0 movwf ??_I2C2_Interrupt_Master
5211 01C6 0020 movlb 0 ; select bank0
5212 01C7 0869 movf I2C2@i2c_data_p,w
5213 01C8 3E4A addlw 74
5214 01C9 0086 movwf 6
5215 01CA 3001 movlw 1 ; select bank2/3
5216 01CB 0087 movwf 7
5217 01CC 0870 movf ??_I2C2_Interrupt_Master,w
5218 01CD 0081 movwf 1
5219
5220 ;I2C2.c: 258: i2c_data_p->return_status = 0x31;
5221 01CE 3031 movlw 49
5222 01CF 00F0 movwf ??_I2C2_Interrupt_Master
5223 01D0 0869 movf I2C2@i2c_data_p,w
5224 01D1 3E48 addlw 72
5225 01D2 0086 movwf 6
5226 01D3 3001 movlw 1 ; select bank2/3
5227 01D4 0087 movwf 7
5228 01D5 0870 movf ??_I2C2_Interrupt_Master,w
5229 01D6 0081 movwf 1
5230
5231 ;I2C2.c: 259: }
5232 ;I2C2.c: 260: break;
5233 01D7 0008 return
5234 01D8 i1l369:
5235 ;I2C2.c: 261: case 0x9:
5236
5237
5238 ;I2C2.c: 262: if (!SSP2CON2bits.ACKSTAT) {
5239 01D8 0024 movlb 4 ; select bank4
5240 01D9 1B1E btfsc 30,6 ;volatile
5241 01DA 29E7 goto i1l2811
5242
5243 ;I2C2.c: 263: SSP2CON2bits.RSEN = 1;
5244 01DB 149E bsf 30,1 ;volatile
5245
5246 ;I2C2.c: 264: i2c_data_p->operating_state = 0x6;
5247 01DC 3006 movlw 6
5248 01DD 00F0 movwf ??_I2C2_Interrupt_Master
5249 01DE 0020 movlb 0 ; select bank0
5250 01DF 0869 movf I2C2@i2c_data_p,w
5251 01E0 3E47 addlw 71
5252 01E1 0086 movwf 6
5253 01E2 3001 movlw 1 ; select bank2/3
5254 01E3 0087 movwf 7
5255 01E4 0870 movf ??_I2C2_Interrupt_Master,w
5256 01E5 0081 movwf 1
5257
5258 ;I2C2.c: 265: } else {
5259 01E6 0008 return
5260 01E7 i1l2811:
5261
5262 ;I2C2.c: 267: i2c_data_p->operating_state = 0x1;
5263 01E7 0020 movlb 0 ; select bank0
5264 01E8 0869 movf I2C2@i2c_data_p,w
5265 01E9 3E47 addlw 71
5266 01EA 0086 movwf 6
5267 01EB 3001 movlw 1 ; select bank2/3
5268 01EC 0087 movwf 7
5269 01ED 0181 clrf 1
5270 01EE 0A81 incf 1,f
5271
5272 ;I2C2.c: 268: SSP2CON2bits.PEN = 1;
5273 01EF 0024 movlb 4 ; select bank4
5274 01F0 151E bsf 30,2 ;volatile
5275
5276 ;I2C2.c: 269: i2c_data_p->master_status = 0x23;
5277 01F1 3023 movlw 35
5278 01F2 00F0 movwf ??_I2C2_Interrupt_Master
5279 01F3 0020 movlb 0 ; select bank0
5280 01F4 0869 movf I2C2@i2c_data_p,w
5281 01F5 3E4A addlw 74
5282 01F6 0086 movwf 6
5283 01F7 3001 movlw 1 ; select bank2/3
5284 01F8 0087 movwf 7
5285 01F9 0870 movf ??_I2C2_Interrupt_Master,w
5286 01FA 0081 movwf 1
5287
5288 ;I2C2.c: 270: i2c_data_p->return_status = 0x31;
5289 01FB 3031 movlw 49
5290 01FC 00F0 movwf ??_I2C2_Interrupt_Master
5291 01FD 0869 movf I2C2@i2c_data_p,w
5292 01FE 3E48 addlw 72
5293 01FF 0086 movwf 6
5294 0200 3001 movlw 1 ; select bank2/3
5295 0201 0087 movwf 7
5296 0202 0870 movf ??_I2C2_Interrupt_Master,w
5297 0203 0081 movwf 1
5298
5299 ;I2C2.c: 271: }
5300 ;I2C2.c: 272: break;
5301 0204 0008 return
5302 0205 i1l2815:
5303 ;I2C2.c: 273: case 0x6:
5304
5305
5306 ;I2C2.c: 275: i2c_data_p->operating_state = 0x8;
5307 0205 3008 movlw 8
5308 0206 00F0 movwf ??_I2C2_Interrupt_Master
5309 0207 0869 movf I2C2@i2c_data_p,w
5310 0208 3E47 addlw 71
5311 0209 0086 movwf 6
5312 020A 3001 movlw 1 ; select bank2/3
5313 020B 0087 movwf 7
5314 020C 0870 movf ??_I2C2_Interrupt_Master,w
5315 020D 0081 movwf 1
5316
5317 ;I2C2.c: 276: uint8_t tmp = (i2c_data_p->master_dest_addr << 1);
5318 020E 0869 movf I2C2@i2c_data_p,w
5319 020F 3E49 addlw 73
5320 0210 0086 movwf 6
5321 0211 3001 movlw 1 ; select bank2/3
5322 0212 0087 movwf 7
5323 0213 3501 lslf 1,w
5324 0214 00F0 movwf ??_I2C2_Interrupt_Master
5325 0215 0870 movf ??_I2C2_Interrupt_Master,w
5326 0216 00F3 movwf I2C2_Interrupt_Master@tmp_923
5327
5328 ;I2C2.c: 277: tmp |= 0x01;
5329 0217 1473 bsf I2C2_Interrupt_Master@tmp_923,0
5330
5331 ;I2C2.c: 278: SSP2BUF = tmp;
5332 0218 0873 movf I2C2_Interrupt_Master@tmp_923,w
5333 0219 0024 movlb 4 ; select bank4
5334 021A 0099 movwf 25 ;volatile
5335
5336 ;I2C2.c: 279: break;
5337 021B 0008 return
5338 021C i1l373:
5339 ;I2C2.c: 280: case 0x8:
5340
5341
5342 ;I2C2.c: 282: if (!SSP2CON2bits.ACKSTAT) {
5343 021C 0024 movlb 4 ; select bank4
5344 021D 1B1E btfsc 30,6 ;volatile
5345 021E 2A2C goto i1l2827
5346
5347 ;I2C2.c: 284: i2c_data_p->operating_state = 0x3;
5348 021F 3003 movlw 3
5349 0220 00F0 movwf ??_I2C2_Interrupt_Master
5350 0221 0020 movlb 0 ; select bank0
5351 0222 0869 movf I2C2@i2c_data_p,w
5352 0223 3E47 addlw 71
5353 0224 0086 movwf 6
5354 0225 3001 movlw 1 ; select bank2/3
5355 0226 0087 movwf 7
5356 0227 0870 movf ??_I2C2_Interrupt_Master,w
5357 0228 0081 movwf 1
5358
5359 ;I2C2.c: 285: SSP2CON2bits.RCEN = 1;
5360 0229 0024 movlb 4 ; select bank4
5361 022A 159E bsf 30,3 ;volatile
5362
5363 ;I2C2.c: 286: } else {
5364 022B 0008 return
5365 022C i1l2827:
5366
5367 ;I2C2.c: 288: i2c_data_p->operating_state = 0x1;
5368 022C 0020 movlb 0 ; select bank0
5369 022D 0869 movf I2C2@i2c_data_p,w
5370 022E 3E47 addlw 71
5371 022F 0086 movwf 6
5372 0230 3001 movlw 1 ; select bank2/3
5373 0231 0087 movwf 7
5374 0232 0181 clrf 1
5375 0233 0A81 incf 1,f
5376
5377 ;I2C2.c: 289: SSP2CON2bits.PEN = 1;
5378 0234 0024 movlb 4 ; select bank4
5379 0235 151E bsf 30,2 ;volatile
5380
5381 ;I2C2.c: 290: i2c_data_p->master_status = 0x23;
5382 0236 3023 movlw 35
5383 0237 00F0 movwf ??_I2C2_Interrupt_Master
5384 0238 0020 movlb 0 ; select bank0
5385 0239 0869 movf I2C2@i2c_data_p,w
5386 023A 3E4A addlw 74
5387 023B 0086 movwf 6
5388 023C 3001 movlw 1 ; select bank2/3
5389 023D 0087 movwf 7
5390 023E 0870 movf ??_I2C2_Interrupt_Master,w
5391 023F 0081 movwf 1
5392
5393 ;I2C2.c: 291: i2c_data_p->return_status = 0x33;
5394 0240 3033 movlw 51
5395 0241 00F0 movwf ??_I2C2_Interrupt_Master
5396 0242 0869 movf I2C2@i2c_data_p,w
5397 0243 3E48 addlw 72
5398 0244 0086 movwf 6
5399 0245 3001 movlw 1 ; select bank2/3
5400 0246 0087 movwf 7
5401 0247 0870 movf ??_I2C2_Interrupt_Master,w
5402 0248 0081 movwf 1
5403
5404 ;I2C2.c: 292: }
5405 ;I2C2.c: 293: break;
5406 0249 0008 return
5407 024A i1l2831:
5408 ;I2C2.c: 294: case 0x3:
5409
5410
5411 ;I2C2.c: 297: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = SSP2BUF;
5412 024A 0024 movlb 4 ; select bank4
5413 024B 0819 movf 25,w ;volatile
5414 024C 00F0 movwf ??_I2C2_Interrupt_Master
5415 024D 0020 movlb 0 ; select bank0
5416 024E 0869 movf I2C2@i2c_data_p,w
5417 024F 3E23 addlw 35
5418 0250 0086 movwf 6
5419 0251 3001 movlw 1 ; select bank2/3
5420 0252 0087 movwf 7
5421 0253 0801 movf 1,w
5422 0254 0769 addwf I2C2@i2c_data_p,w
5423 0255 00F1 movwf ??_I2C2_Interrupt_Master+1
5424 0256 0871 movf ??_I2C2_Interrupt_Master+1,w
5425 0257 0086 movwf 6
5426 0258 3001 movlw 1 ; select bank2/3
5427 0259 0087 movwf 7
5428 025A 0870 movf ??_I2C2_Interrupt_Master,w
5429 025B 0081 movwf 1
5430
5431 ;I2C2.c: 298: i2c_data_p->buffer_in_write_ind++;
5432 025C 3001 movlw 1
5433 025D 00F0 movwf ??_I2C2_Interrupt_Master
5434 025E 0869 movf I2C2@i2c_data_p,w
5435 025F 3E23 addlw 35
5436 0260 0086 movwf 6
5437 0261 3001 movlw 1 ; select bank2/3
5438 0262 0087 movwf 7
5439 0263 0870 movf ??_I2C2_Interrupt_Master,w
5440 0264 0781 addwf 1,f
5441
5442 ;I2C2.c: 299: if (i2c_data_p->buffer_in_write_ind < i2c_data_p->buffer_in_len) {
5443 0265 0869 movf I2C2@i2c_data_p,w
5444 0266 3E23 addlw 35
5445 0267 0086 movwf 6
5446 0268 3001 movlw 1 ; select bank2/3
5447 0269 0087 movwf 7
5448 026A 0869 movf I2C2@i2c_data_p,w
5449 026B 3E20 addlw 32
5450 026C 0084 movwf 4
5451 026D 3001 movlw 1 ; select bank2/3
5452 026E 0085 movwf 5
5453 026F 0800 movf 0,w
5454 0270 0201 subwf 1,w
5455 0271 1803 skipnc
5456 0272 2A80 goto i1l2841
5457
5458 ;I2C2.c: 301: i2c_data_p->operating_state = 0xA;
5459 0273 300A movlw 10
5460 0274 00F0 movwf ??_I2C2_Interrupt_Master
5461 0275 0869 movf I2C2@i2c_data_p,w
5462 0276 3E47 addlw 71
5463 0277 0086 movwf 6
5464 0278 3001 movlw 1 ; select bank2/3
5465 0279 0087 movwf 7
5466 027A 0870 movf ??_I2C2_Interrupt_Master,w
5467 027B 0081 movwf 1
5468
5469 ;I2C2.c: 302: SSP2CON2bits.ACKDT = 0;
5470 027C 0024 movlb 4 ; select bank4
5471 027D 129E bcf 30,5 ;volatile
5472
5473 ;I2C2.c: 303: SSP2CON2bits.ACKEN = 1;
5474 027E 161E bsf 30,4 ;volatile
5475
5476 ;I2C2.c: 304: } else {
5477 027F 0008 return
5478 0280 i1l2841:
5479
5480 ;I2C2.c: 306: i2c_data_p->operating_state = 0xB;
5481 0280 300B movlw 11
5482 0281 00F0 movwf ??_I2C2_Interrupt_Master
5483 0282 0020 movlb 0 ; select bank0
5484 0283 0869 movf I2C2@i2c_data_p,w
5485 0284 3E47 addlw 71
5486 0285 0086 movwf 6
5487 0286 3001 movlw 1 ; select bank2/3
5488 0287 0087 movwf 7
5489 0288 0870 movf ??_I2C2_Interrupt_Master,w
5490 0289 0081 movwf 1
5491
5492 ;I2C2.c: 307: SSP2CON2bits.ACKDT = 1;
5493 028A 0024 movlb 4 ; select bank4
5494 028B 169E bsf 30,5 ;volatile
5495
5496 ;I2C2.c: 308: SSP2CON2bits.ACKEN = 1;
5497 028C 161E bsf 30,4 ;volatile
5498
5499 ;I2C2.c: 309: }
5500 ;I2C2.c: 310: break;
5501 028D 0008 return
5502 028E i1l2847:
5503 ;I2C2.c: 311: case 0xA:
5504
5505
5506 ;I2C2.c: 313: i2c_data_p->operating_state = 0x3;
5507 028E 3003 movlw 3
5508 028F 00F0 movwf ??_I2C2_Interrupt_Master
5509 0290 0020 movlb 0 ; select bank0
5510 0291 0869 movf I2C2@i2c_data_p,w
5511 0292 3E47 addlw 71
5512 0293 0086 movwf 6
5513 0294 3001 movlw 1 ; select bank2/3
5514 0295 0087 movwf 7
5515 0296 0870 movf ??_I2C2_Interrupt_Master,w
5516 0297 0081 movwf 1
5517
5518 ;I2C2.c: 314: SSP2CON2bits.RCEN = 1;
5519 0298 0024 movlb 4 ; select bank4
5520 0299 159E bsf 30,3 ;volatile
5521
5522 ;I2C2.c: 315: break;
5523 029A 0008 return
5524 029B i1l2851:
5525 ;I2C2.c: 316: case 0xB:
5526
5527
5528 ;I2C2.c: 318: i2c_data_p->operating_state = 0x1;
5529 029B 0020 movlb 0 ; select bank0
5530 029C 0869 movf I2C2@i2c_data_p,w
5531 029D 3E47 addlw 71
5532 029E 0086 movwf 6
5533 029F 3001 movlw 1 ; select bank2/3
5534 02A0 0087 movwf 7
5535 02A1 0181 clrf 1
5536 02A2 0A81 incf 1,f
5537
5538 ;I2C2.c: 319: SSP2CON2bits.PEN = 1;
5539 02A3 0024 movlb 4 ; select bank4
5540 02A4 151E bsf 30,2 ;volatile
5541
5542 ;I2C2.c: 320: i2c_data_p->master_status = 0x23;
5543 02A5 3023 movlw 35
5544 02A6 00F0 movwf ??_I2C2_Interrupt_Master
5545 02A7 0020 movlb 0 ; select bank0
5546 02A8 0869 movf I2C2@i2c_data_p,w
5547 02A9 3E4A addlw 74
5548 02AA 0086 movwf 6
5549 02AB 3001 movlw 1 ; select bank2/3
5550 02AC 0087 movwf 7
5551 02AD 0870 movf ??_I2C2_Interrupt_Master,w
5552 02AE 0081 movwf 1
5553
5554 ;I2C2.c: 321: i2c_data_p->return_status = 0x32;
5555 02AF 3032 movlw 50
5556 02B0 00F0 movwf ??_I2C2_Interrupt_Master
5557 02B1 0869 movf I2C2@i2c_data_p,w
5558 02B2 3E48 addlw 72
5559 02B3 0086 movwf 6
5560 02B4 3001 movlw 1 ; select bank2/3
5561 02B5 0087 movwf 7
5562 02B6 0870 movf ??_I2C2_Interrupt_Master,w
5563 02B7 0081 movwf 1
5564
5565 ;I2C2.c: 323: }
5566
5567 ;I2C2.c: 322: break;
5568 02B8 0008 return
5569 02B9 i1l2857:
5570 02B9 0869 movf I2C2@i2c_data_p,w
5571 02BA 3E47 addlw 71
5572 02BB 0086 movwf 6
5573 02BC 3001 movlw 1 ; select bank2/3
5574 02BD 0087 movwf 7
5575 02BE 0801 movf 1,w
5576
5577 ; Switch size 1, requested type "space"
5578 ; Number of cases is 9, Range of values is 1 to 11
5579 ; switch strategies available:
5580 ; Name Instructions Cycles
5581 ; simple_byte 28 15 (average)
5582 ; direct_byte 31 9 (fixed)
5583 ; jumptable 263 9 (fixed)
5584 ; Chosen strategy is simple_byte
5585 02BF 3A01 xorlw 1 ; case 1
5586 02C0 1903 skipnz
5587 02C1 2ADC goto i1l381
5588 02C2 3A02 xorlw 2 ; case 3
5589 02C3 1903 skipnz
5590 02C4 2A4A goto i1l2831
5591 02C5 3A06 xorlw 6 ; case 5
5592 02C6 1903 skipnz
5593 02C7 2992 goto i1l2797
5594 02C8 3A03 xorlw 3 ; case 6
5595 02C9 1903 skipnz
5596 02CA 2A05 goto i1l2815
5597 02CB 3A01 xorlw 1 ; case 7
5598 02CC 1903 skipnz
5599 02CD 29A4 goto i1l366
5600 02CE 3A0F xorlw 15 ; case 8
5601 02CF 1903 skipnz
5602 02D0 2A1C goto i1l373
5603 02D1 3A01 xorlw 1 ; case 9
5604 02D2 1903 skipnz
5605 02D3 29D8 goto i1l369
5606 02D4 3A03 xorlw 3 ; case 10
5607 02D5 1903 skipnz
5608 02D6 2A8E goto i1l2847
5609 02D7 3A01 xorlw 1 ; case 11
5610 02D8 1903 skipnz
5611 02D9 2A9B goto i1l2851
5612 02DA 2ADC goto i1l381
5613 02DB 0008 return
5614 02DC i1l381:
5615 02DC 0008 return
5616 02DD __end_of_I2C2_Interrupt_Master:
5617
5618 psect text22
5619 0BC5 __ptext22:
5620 ;; *************** function _I2C1_Interrupt_Handler *****************
5621 ;; Defined at:
5622 ;; line 138 in file "I2C1.c"
5623 ;; Parameters: Size Location Type
5624 ;; None
5625 ;; Auto vars: Size Location Type
5626 ;; None
5627 ;; Return value: Size Location Type
5628 ;; None void
5629 ;; Registers used:
5630 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0, pclath, cstack
5631 ;; Tracked objects:
5632 ;; On entry : 0/0
5633 ;; On exit : 0/0
5634 ;; Unchanged: 0/0
5635 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
5636 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
5637 ;; Locals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
5638 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
5639 ;; Totals: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
5640 ;;Total ram usage: 0 bytes
5641 ;; Hardware stack levels used: 1
5642 ;; Hardware stack levels required when called: 2
5643 ;; This function calls:
5644 ;; _I2C1_Interrupt_Master
5645 ;; _I2C1_Interrupt_Slave
5646 ;; This function is called by:
5647 ;; _InterruptHandler
5648 ;; This function uses a non-reentrant model
5649 ;;
5650
5651
5652 ;psect for function _I2C1_Interrupt_Handler
5653 0BC5 _I2C1_Interrupt_Handler:
5654
5655 ;I2C1.c: 140: if (i2c_data_p->operating_mode == 0x11) {
5656
5657 ;incstack = 0
5658 ; Regs used in _I2C1_Interrupt_Handler: [wreg-fsr1h+status,2+status,0+pclath+cstack]
5659 0BC5 0879 movf _i2c_data_p,w
5660 0BC6 3E46 addlw 70
5661 0BC7 0086 movwf 6
5662 0BC8 0187 clrf 7
5663 0BC9 0801 movf 1,w
5664 0BCA 3A11 xorlw 17
5665 0BCB 1D03 skipz
5666 0BCC 2BD0 goto i1l3163
5667
5668 ;I2C1.c: 141: I2C1_Interrupt_Master();
5669 0BCD 3182 22DD fcall _I2C1_Interrupt_Master
5670
5671 ;I2C1.c: 142: } else if (i2c_data_p->operating_mode == 0x10) {
5672 0BCF 0008 return
5673 0BD0 i1l3163:
5674 0BD0 0879 movf _i2c_data_p,w
5675 0BD1 3E46 addlw 70
5676 0BD2 0086 movwf 6
5677 0BD3 0187 clrf 7
5678 0BD4 0801 movf 1,w
5679 0BD5 3A10 xorlw 16
5680 0BD6 1D03 skipz
5681 0BD7 0008 return
5682
5683 ;I2C1.c: 143: I2C1_Interrupt_Slave();
5684 0BD8 318E 269A fcall _I2C1_Interrupt_Slave
5685 0BDA 0008 return
5686 0BDB __end_of_I2C1_Interrupt_Handler:
5687
5688 psect text23
5689 0E9A __ptext23:
5690 ;; *************** function _I2C1_Interrupt_Slave *****************
5691 ;; Defined at:
5692 ;; line 327 in file "I2C1.c"
5693 ;; Parameters: Size Location Type
5694 ;; None
5695 ;; Auto vars: Size Location Type
5696 ;; data_read_fr 1 7[COMMON] unsigned char
5697 ;; received_dat 1 6[COMMON] unsigned char
5698 ;; data_written 1 5[COMMON] unsigned char
5699 ;; overrun_erro 1 4[COMMON] unsigned char
5700 ;; Return value: Size Location Type
5701 ;; None void
5702 ;; Registers used:
5703 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0, pclath, cstack
5704 ;; Tracked objects:
5705 ;; On entry : 0/0
5706 ;; On exit : 0/0
5707 ;; Unchanged: 0/0
5708 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
5709 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
5710 ;; Locals: 4 0 0 0 0 0 0 0 0 0 0 0
+0 0
5711 ;; Temps: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
5712 ;; Totals: 6 0 0 0 0 0 0 0 0 0 0 0
+0 0
5713 ;;Total ram usage: 6 bytes
5714 ;; Hardware stack levels used: 1
5715 ;; Hardware stack levels required when called: 1
5716 ;; This function calls:
5717 ;; _I2C1_Process_Receive
5718 ;; This function is called by:
5719 ;; _I2C1_Interrupt_Handler
5720 ;; This function uses a non-reentrant model
5721 ;;
5722
5723
5724 ;psect for function _I2C1_Interrupt_Slave
5725 0E9A _I2C1_Interrupt_Slave:
5726
5727 ;I2C1.c: 328: uint8_t received_data;
5728 ;I2C1.c: 329: uint8_t data_read_from_buffer = 0;
5729
5730 ;incstack = 0
5731 ; Regs used in _I2C1_Interrupt_Slave: [wreg-fsr1h+status,2+status,0+pclath+cstack]
5732 0E9A 01F7 clrf I2C1_Interrupt_Slave@data_read_from_buffer
5733
5734 ;I2C1.c: 330: uint8_t data_written_to_buffer = 0;
5735 0E9B 01F5 clrf I2C1_Interrupt_Slave@data_written_to_buffer
5736
5737 ;I2C1.c: 331: uint8_t overrun_error = 0;
5738 0E9C 01F4 clrf I2C1_Interrupt_Slave@overrun_error
5739
5740 ;I2C1.c: 334: if (SSP1CON1bits.SSPOV == 1) {
5741 0E9D 0024 movlb 4 ; select bank4
5742 0E9E 1F15 btfss 21,6 ;volatile
5743 0E9F 2EB1 goto i1l2937
5744
5745 ;I2C1.c: 335: SSP1CON1bits.SSPOV = 0;
5746 0EA0 1315 bcf 21,6 ;volatile
5747
5748 ;I2C1.c: 339: i2c_data_p->operating_state = 0x1;
5749 0EA1 0879 movf _i2c_data_p,w
5750 0EA2 3E47 addlw 71
5751 0EA3 0086 movwf 6
5752 0EA4 0187 clrf 7
5753 0EA5 0181 clrf 1
5754 0EA6 0A81 incf 1,f
5755
5756 ;I2C1.c: 340: overrun_error = 1;
5757 0EA7 01F4 clrf I2C1_Interrupt_Slave@overrun_error
5758 0EA8 0AF4 incf I2C1_Interrupt_Slave@overrun_error,f
5759
5760 ;I2C1.c: 341: i2c_data_p->return_status = 0x36;
5761 0EA9 3036 movlw 54
5762 0EAA 00F2 movwf ??_I2C1_Interrupt_Slave
5763 0EAB 0879 movf _i2c_data_p,w
5764 0EAC 3E48 addlw 72
5765 0EAD 0086 movwf 6
5766 0EAE 0187 clrf 7
5767 0EAF 0872 movf ??_I2C1_Interrupt_Slave,w
5768 0EB0 0081 movwf 1
5769 0EB1 i1l2937:
5770
5771 ;I2C1.c: 342: }
5772 ;I2C1.c: 345: if (SSP1STATbits.BF == 1) {
5773 0EB1 1C14 btfss 20,0 ;volatile
5774 0EB2 2EB9 goto i1l2943
5775
5776 ;I2C1.c: 346: received_data = SSP1BUF;
5777 0EB3 0811 movf 17,w ;volatile
5778 0EB4 00F2 movwf ??_I2C1_Interrupt_Slave
5779 0EB5 0872 movf ??_I2C1_Interrupt_Slave,w
5780 0EB6 00F6 movwf I2C1_Interrupt_Slave@received_data
5781
5782 ;I2C1.c: 348: data_read_from_buffer = 1;
5783 0EB7 01F7 clrf I2C1_Interrupt_Slave@data_read_from_buffer
5784 0EB8 0AF7 incf I2C1_Interrupt_Slave@data_read_from_buffer,f
5785 0EB9 i1l2943:
5786
5787 ;I2C1.c: 349: }
5788 ;I2C1.c: 351: if (!overrun_error) {
5789 0EB9 08F4 movf I2C1_Interrupt_Slave@overrun_error,f
5790 0EBA 1903 btfsc 3,2
5791 0EBB 2FE4 goto i1l3035
5792 0EBC 2FF6 goto i1l3037
5793 0EBD i1l181:
5794 ;I2C1.c: 353: case 0x1:
5795
5796 ;I2C1.c: 352: switch (i2c_data_p->operating_state) {
5797
5798
5799 ;I2C1.c: 354: {
5800 ;I2C1.c: 356: if (SSP1STATbits.S == 1) {
5801 0EBD 1D94 btfss 20,3 ;volatile
5802 0EBE 2FF6 goto i1l3037
5803
5804 ;I2C1.c: 357: i2c_data_p->buffer_in_len_tmp = 0;
5805 0EBF 0879 movf _i2c_data_p,w
5806 0EC0 3E21 addlw 33
5807 0EC1 0086 movwf 6
5808 0EC2 0187 clrf 7
5809 0EC3 0181 clrf 1
5810
5811 ;I2C1.c: 358: i2c_data_p->operating_state = 0x2;
5812 0EC4 3002 movlw 2
5813 0EC5 2ED0 goto L9
5814 0EC6 i1l184:
5815 ;I2C1.c: 361: }
5816 ;I2C1.c: 362: case 0x2:
5817
5818 ;I2C1.c: 359: }
5819 ;I2C1.c: 360: break;
5820
5821
5822 ;I2C1.c: 363: {
5823 ;I2C1.c: 365: if (SSP1STATbits.P == 1) {
5824 0EC6 1A14 btfsc 20,4 ;volatile
5825 0EC7 2F7C goto i1l3007
5826
5827 ;I2C1.c: 368: } else if (data_read_from_buffer) {
5828
5829 ;I2C1.c: 367: i2c_data_p->operating_state = 0x1;
5830 0EC8 0877 movf I2C1_Interrupt_Slave@data_read_from_buffer,w
5831 0EC9 1903 btfsc 3,2
5832 0ECA 2FF6 goto i1l3037
5833
5834 ;I2C1.c: 369: if (SSP1STATbits.D_nA == 0) {
5835 0ECB 1A94 btfsc 20,5 ;volatile
5836 0ECC 2FD5 goto i1l3031
5837
5838 ;I2C1.c: 371: if (SSP1STATbits.R_nW == 0) {
5839 0ECD 1914 btfsc 20,2 ;volatile
5840 0ECE 2FCC goto i1l3027
5841
5842 ;I2C1.c: 373: i2c_data_p->operating_state = 0x3;
5843 0ECF 3003 movlw 3
5844 0ED0 L9:
5845 0ED0 00F2 movwf ??_I2C1_Interrupt_Slave
5846 0ED1 0879 movf _i2c_data_p,w
5847 0ED2 3E47 addlw 71
5848 0ED3 2FDF goto L13
5849 0ED4 i1l2965:
5850 ;I2C1.c: 388: case 0x4:
5851
5852 ;I2C1.c: 386: }
5853 ;I2C1.c: 387: send:
5854
5855 ;I2C1.c: 383: }
5856 ;I2C1.c: 384: }
5857 ;I2C1.c: 385: break;
5858
5859 ;I2C1.c: 382: i2c_data_p->return_status = 0x37;
5860
5861 ;I2C1.c: 381: i2c_data_p->operating_state = 0x1;
5862
5863 ;I2C1.c: 379: }
5864 ;I2C1.c: 380: } else {
5865
5866 ;I2C1.c: 378: goto send;
5867
5868 ;I2C1.c: 376: i2c_data_p->operating_state = 0x4;
5869
5870 ;I2C1.c: 374: } else {
5871
5872
5873 ;I2C1.c: 389: {
5874 ;I2C1.c: 390: if (!i2c_data_p->slave_sending_data) {
5875 0ED4 0879 movf _i2c_data_p,w
5876 0ED5 3E4C addlw 76
5877 0ED6 0086 movwf 6
5878 0ED7 0187 clrf 7
5879 0ED8 0881 movf 1,f
5880 0ED9 1D03 skipz
5881 0EDA 2EFA goto i1l2977
5882
5883 ;I2C1.c: 392: if (I2C1_Process_Receive(i2c_data_p->slave_in_last_byte)) {
5884 0EDB 0879 movf _i2c_data_p,w
5885 0EDC 3E4B addlw 75
5886 0EDD 0086 movwf 6
5887 0EDE 0187 clrf 7
5888 0EDF 0801 movf 1,w
5889 0EE0 318B 2391 318E fcall _I2C1_Process_Receive
5890 0EE3 3A00 xorlw 0
5891 0EE4 1903 skipnz
5892 0EE5 2F1F goto i1l2983
5893
5894 ;I2C1.c: 394: SSP1BUF = i2c_data_p->buffer_out[0];
5895 0EE6 0879 movf _i2c_data_p,w
5896 0EE7 3E24 addlw 36
5897 0EE8 0086 movwf 6
5898 0EE9 0187 clrf 7
5899 0EEA 0801 movf 1,w
5900 0EEB 0024 movlb 4 ; select bank4
5901 0EEC 0091 movwf 17 ;volatile
5902
5903 ;I2C1.c: 395: i2c_data_p->buffer_out_ind = 1;
5904 0EED 0879 movf _i2c_data_p,w
5905 0EEE 3E45 addlw 69
5906 0EEF 0086 movwf 6
5907 0EF0 0187 clrf 7
5908 0EF1 0181 clrf 1
5909 0EF2 0A81 incf 1,f
5910
5911 ;I2C1.c: 396: i2c_data_p->slave_sending_data = 1;
5912 0EF3 0879 movf _i2c_data_p,w
5913 0EF4 3E4C addlw 76
5914 0EF5 0086 movwf 6
5915 0EF6 0187 clrf 7
5916 0EF7 0181 clrf 1
5917 0EF8 0A81 incf 1,f
5918 0EF9 2F1C goto i1l2981
5919 0EFA i1l2977:
5920 ;I2C1.c: 402: }
5921 ;I2C1.c: 403: } else {
5922
5923 ;I2C1.c: 401: i2c_data_p->operating_state = 0x1;
5924
5925 ;I2C1.c: 400: i2c_data_p->slave_sending_data = 0;
5926
5927 ;I2C1.c: 398: } else {
5928
5929 ;I2C1.c: 397: data_written_to_buffer = 1;
5930
5931
5932 ;I2C1.c: 405: if (i2c_data_p->buffer_out_ind < i2c_data_p->buffer_out_len) {
5933 0EFA 0879 movf _i2c_data_p,w
5934 0EFB 3E45 addlw 69
5935 0EFC 0086 movwf 6
5936 0EFD 0187 clrf 7
5937 0EFE 0879 movf _i2c_data_p,w
5938 0EFF 3E44 addlw 68
5939 0F00 0084 movwf 4
5940 0F01 0185 clrf 5
5941 0F02 0800 movf 0,w
5942 0F03 0201 subwf 1,w
5943 0F04 1803 skipnc
5944 0F05 2F1F goto i1l2983
5945
5946 ;I2C1.c: 406: SSP1BUF = i2c_data_p->buffer_out[i2c_data_p->buffer_out_ind];
5947 0F06 0879 movf _i2c_data_p,w
5948 0F07 3E45 addlw 69
5949 0F08 0086 movwf 6
5950 0F09 0187 clrf 7
5951 0F0A 0801 movf 1,w
5952 0F0B 3E24 addlw 36
5953 0F0C 0779 addwf _i2c_data_p,w
5954 0F0D 00F2 movwf ??_I2C1_Interrupt_Slave
5955 0F0E 0872 movf ??_I2C1_Interrupt_Slave,w
5956 0F0F 0086 movwf 6
5957 0F10 0187 clrf 7
5958 0F11 0801 movf 1,w
5959 0F12 0024 movlb 4 ; select bank4
5960 0F13 0091 movwf 17 ;volatile
5961
5962 ;I2C1.c: 407: i2c_data_p->buffer_out_ind++;
5963 0F14 3001 movlw 1
5964 0F15 00F2 movwf ??_I2C1_Interrupt_Slave
5965 0F16 0879 movf _i2c_data_p,w
5966 0F17 3E45 addlw 69
5967 0F18 0086 movwf 6
5968 0F19 0187 clrf 7
5969 0F1A 0872 movf ??_I2C1_Interrupt_Slave,w
5970 0F1B 0781 addwf 1,f
5971 0F1C i1l2981:
5972
5973 ;I2C1.c: 408: data_written_to_buffer = 1;
5974 0F1C 01F5 clrf I2C1_Interrupt_Slave@data_written_to_buffer
5975 0F1D 0AF5 incf I2C1_Interrupt_Slave@data_written_to_buffer,f
5976
5977 ;I2C1.c: 409: } else {
5978 0F1E 2FF6 goto i1l3037
5979 0F1F i1l2983:
5980
5981 ;I2C1.c: 411: i2c_data_p->slave_sending_data = 0;
5982 0F1F 0879 movf _i2c_data_p,w
5983 0F20 3E4C addlw 76
5984 0F21 0086 movwf 6
5985 0F22 0187 clrf 7
5986 0F23 0181 clrf 1
5987 0F24 2F7C goto i1l3007
5988 0F25 i1l200:
5989 ;I2C1.c: 416: }
5990 ;I2C1.c: 417: case 0x3:
5991
5992 ;I2C1.c: 413: }
5993 ;I2C1.c: 414: }
5994 ;I2C1.c: 415: break;
5995
5996 ;I2C1.c: 412: i2c_data_p->operating_state = 0x1;
5997
5998
5999 ;I2C1.c: 418: {
6000 ;I2C1.c: 420: if (SSP1STATbits.P == 1) {
6001 0F25 1E14 btfss 20,4 ;volatile
6002 0F26 2F83 goto i1l3009
6003
6004 ;I2C1.c: 422: if (data_read_from_buffer) {
6005 0F27 0877 movf I2C1_Interrupt_Slave@data_read_from_buffer,w
6006 0F28 1903 btfsc 3,2
6007 0F29 2F70 goto i1l3005
6008
6009 ;I2C1.c: 423: if (SSP1STATbits.D_nA == 1) {
6010 0F2A 1E94 btfss 20,5 ;volatile
6011 0F2B 2F62 goto i1l3003
6012
6013 ;I2C1.c: 426: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = received_data;
6014 0F2C 0876 movf I2C1_Interrupt_Slave@received_data,w
6015 0F2D 00F2 movwf ??_I2C1_Interrupt_Slave
6016 0F2E 0879 movf _i2c_data_p,w
6017 0F2F 3E23 addlw 35
6018 0F30 0086 movwf 6
6019 0F31 0187 clrf 7
6020 0F32 0801 movf 1,w
6021 0F33 0779 addwf _i2c_data_p,w
6022 0F34 00F3 movwf ??_I2C1_Interrupt_Slave+1
6023 0F35 0873 movf ??_I2C1_Interrupt_Slave+1,w
6024 0F36 0086 movwf 6
6025 0F37 0187 clrf 7
6026 0F38 0872 movf ??_I2C1_Interrupt_Slave,w
6027 0F39 0081 movwf 1
6028
6029 ;I2C1.c: 427: if (i2c_data_p->buffer_in_write_ind == 32-1) {
6030 0F3A 0879 movf _i2c_data_p,w
6031 0F3B 3E23 addlw 35
6032 0F3C 0086 movwf 6
6033 0F3D 0187 clrf 7
6034 0F3E 0801 movf 1,w
6035 0F3F 3A1F xorlw 31
6036 0F40 1D03 skipz
6037 0F41 2F48 goto i1l2997
6038
6039 ;I2C1.c: 428: i2c_data_p->buffer_in_write_ind = 0;
6040 0F42 0879 movf _i2c_data_p,w
6041 0F43 3E23 addlw 35
6042 0F44 0086 movwf 6
6043 0F45 0187 clrf 7
6044 0F46 0181 clrf 1
6045
6046 ;I2C1.c: 429: } else {
6047 0F47 2F50 goto i1l205
6048 0F48 i1l2997:
6049
6050 ;I2C1.c: 430: i2c_data_p->buffer_in_write_ind++;
6051 0F48 3001 movlw 1
6052 0F49 00F2 movwf ??_I2C1_Interrupt_Slave
6053 0F4A 0879 movf _i2c_data_p,w
6054 0F4B 3E23 addlw 35
6055 0F4C 0086 movwf 6
6056 0F4D 0187 clrf 7
6057 0F4E 0872 movf ??_I2C1_Interrupt_Slave,w
6058 0F4F 0781 addwf 1,f
6059 0F50 i1l205:
6060
6061 ;I2C1.c: 431: }
6062 ;I2C1.c: 432: i2c_data_p->buffer_in_len_tmp++;
6063 0F50 3001 movlw 1
6064 0F51 00F2 movwf ??_I2C1_Interrupt_Slave
6065 0F52 0879 movf _i2c_data_p,w
6066 0F53 3E21 addlw 33
6067 0F54 0086 movwf 6
6068 0F55 0187 clrf 7
6069 0F56 0872 movf ??_I2C1_Interrupt_Slave,w
6070 0F57 0781 addwf 1,f
6071
6072 ;I2C1.c: 434: i2c_data_p->slave_in_last_byte = received_data;
6073 0F58 0876 movf I2C1_Interrupt_Slave@received_data,w
6074 0F59 00F2 movwf ??_I2C1_Interrupt_Slave
6075 0F5A 0879 movf _i2c_data_p,w
6076 0F5B 3E4B addlw 75
6077 0F5C 0086 movwf 6
6078 0F5D 0187 clrf 7
6079 0F5E 0872 movf ??_I2C1_Interrupt_Slave,w
6080 0F5F 0081 movwf 1
6081
6082 ;I2C1.c: 435: i2c_data_p->return_status = 0x34;
6083 0F60 3034 movlw 52
6084 0F61 2F69 goto L12
6085 0F62 i1l3003:
6086 ;I2C1.c: 436: } else {
6087
6088
6089 ;I2C1.c: 437: i2c_data_p->operating_state = 0x1;
6090 0F62 0879 movf _i2c_data_p,w
6091 0F63 3E47 addlw 71
6092 0F64 0086 movwf 6
6093 0F65 0187 clrf 7
6094 0F66 0181 clrf 1
6095 0F67 0A81 incf 1,f
6096
6097 ;I2C1.c: 438: i2c_data_p->return_status = 0x37;
6098 0F68 3037 movlw 55
6099 0F69 L12:
6100 0F69 00F2 movwf ??_I2C1_Interrupt_Slave
6101 0F6A 0879 movf _i2c_data_p,w
6102 0F6B 3E48 addlw 72
6103 0F6C 0086 movwf 6
6104 0F6D 0187 clrf 7
6105 0F6E 0872 movf ??_I2C1_Interrupt_Slave,w
6106 0F6F 0081 movwf 1
6107 0F70 i1l3005:
6108
6109 ;I2C1.c: 439: }
6110 ;I2C1.c: 440: }
6111 ;I2C1.c: 441: i2c_data_p->buffer_in_len += i2c_data_p->buffer_in_len_tmp;
6112 0F70 0879 movf _i2c_data_p,w
6113 0F71 3E21 addlw 33
6114 0F72 0086 movwf 6
6115 0F73 0187 clrf 7
6116 0F74 0801 movf 1,w
6117 0F75 00F2 movwf ??_I2C1_Interrupt_Slave
6118 0F76 0879 movf _i2c_data_p,w
6119 0F77 3E20 addlw 32
6120 0F78 0086 movwf 6
6121 0F79 0187 clrf 7
6122 0F7A 0872 movf ??_I2C1_Interrupt_Slave,w
6123 0F7B 0781 addwf 1,f
6124 0F7C i1l3007:
6125
6126 ;I2C1.c: 442: i2c_data_p->operating_state = 0x1;
6127 0F7C 0879 movf _i2c_data_p,w
6128 0F7D 3E47 addlw 71
6129 0F7E 0086 movwf 6
6130 0F7F 0187 clrf 7
6131 0F80 0181 clrf 1
6132 0F81 0A81 incf 1,f
6133
6134 ;I2C1.c: 443: } else if (data_read_from_buffer) {
6135 0F82 2FF6 goto i1l3037
6136 0F83 i1l3009:
6137 0F83 0877 movf I2C1_Interrupt_Slave@data_read_from_buffer,w
6138 0F84 1903 btfsc 3,2
6139 0F85 2FF6 goto i1l3037
6140
6141 ;I2C1.c: 444: if (SSP1STATbits.D_nA == 1) {
6142 0F86 1E94 btfss 20,5 ;volatile
6143 0F87 2FBE goto i1l209
6144
6145 ;I2C1.c: 446: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = received_data;
6146 0F88 0876 movf I2C1_Interrupt_Slave@received_data,w
6147 0F89 00F2 movwf ??_I2C1_Interrupt_Slave
6148 0F8A 0879 movf _i2c_data_p,w
6149 0F8B 3E23 addlw 35
6150 0F8C 0086 movwf 6
6151 0F8D 0187 clrf 7
6152 0F8E 0801 movf 1,w
6153 0F8F 0779 addwf _i2c_data_p,w
6154 0F90 00F3 movwf ??_I2C1_Interrupt_Slave+1
6155 0F91 0873 movf ??_I2C1_Interrupt_Slave+1,w
6156 0F92 0086 movwf 6
6157 0F93 0187 clrf 7
6158 0F94 0872 movf ??_I2C1_Interrupt_Slave,w
6159 0F95 0081 movwf 1
6160
6161 ;I2C1.c: 447: if (i2c_data_p->buffer_in_write_ind == 32-1) {
6162 0F96 0879 movf _i2c_data_p,w
6163 0F97 3E23 addlw 35
6164 0F98 0086 movwf 6
6165 0F99 0187 clrf 7
6166 0F9A 0801 movf 1,w
6167 0F9B 3A1F xorlw 31
6168 0F9C 1D03 skipz
6169 0F9D 2FA4 goto i1l3019
6170
6171 ;I2C1.c: 448: i2c_data_p->buffer_in_write_ind = 0;
6172 0F9E 0879 movf _i2c_data_p,w
6173 0F9F 3E23 addlw 35
6174 0FA0 0086 movwf 6
6175 0FA1 0187 clrf 7
6176 0FA2 0181 clrf 1
6177
6178 ;I2C1.c: 449: } else {
6179 0FA3 2FAC goto i1l211
6180 0FA4 i1l3019:
6181
6182 ;I2C1.c: 450: i2c_data_p->buffer_in_write_ind++;
6183 0FA4 3001 movlw 1
6184 0FA5 00F2 movwf ??_I2C1_Interrupt_Slave
6185 0FA6 0879 movf _i2c_data_p,w
6186 0FA7 3E23 addlw 35
6187 0FA8 0086 movwf 6
6188 0FA9 0187 clrf 7
6189 0FAA 0872 movf ??_I2C1_Interrupt_Slave,w
6190 0FAB 0781 addwf 1,f
6191 0FAC i1l211:
6192
6193 ;I2C1.c: 451: }
6194 ;I2C1.c: 452: i2c_data_p->buffer_in_len_tmp++;
6195 0FAC 3001 movlw 1
6196 0FAD 00F2 movwf ??_I2C1_Interrupt_Slave
6197 0FAE 0879 movf _i2c_data_p,w
6198 0FAF 3E21 addlw 33
6199 0FB0 0086 movwf 6
6200 0FB1 0187 clrf 7
6201 0FB2 0872 movf ??_I2C1_Interrupt_Slave,w
6202 0FB3 0781 addwf 1,f
6203
6204 ;I2C1.c: 454: i2c_data_p->slave_in_last_byte = received_data;
6205 0FB4 0876 movf I2C1_Interrupt_Slave@received_data,w
6206 0FB5 00F2 movwf ??_I2C1_Interrupt_Slave
6207 0FB6 0879 movf _i2c_data_p,w
6208 0FB7 3E4B addlw 75
6209 0FB8 0086 movwf 6
6210 0FB9 0187 clrf 7
6211 0FBA 0872 movf ??_I2C1_Interrupt_Slave,w
6212 0FBB 0081 movwf 1
6213
6214 ;I2C1.c: 455: i2c_data_p->return_status = 0x34;
6215 0FBC 3034 movlw 52
6216 0FBD 2FDC goto L14
6217 0FBE i1l209:
6218 ;I2C1.c: 456: } else {
6219
6220
6221 ;I2C1.c: 458: if (SSP1STATbits.R_nW == 1) {
6222 0FBE 1D14 btfss 20,2 ;volatile
6223 0FBF 2FD5 goto i1l3031
6224
6225 ;I2C1.c: 459: i2c_data_p->buffer_in_len += i2c_data_p->buffer_in_len_tmp;
6226 0FC0 0879 movf _i2c_data_p,w
6227 0FC1 3E21 addlw 33
6228 0FC2 0086 movwf 6
6229 0FC3 0187 clrf 7
6230 0FC4 0801 movf 1,w
6231 0FC5 00F2 movwf ??_I2C1_Interrupt_Slave
6232 0FC6 0879 movf _i2c_data_p,w
6233 0FC7 3E20 addlw 32
6234 0FC8 0086 movwf 6
6235 0FC9 0187 clrf 7
6236 0FCA 0872 movf ??_I2C1_Interrupt_Slave,w
6237 0FCB 0781 addwf 1,f
6238 0FCC i1l3027:
6239
6240 ;I2C1.c: 460: i2c_data_p->operating_state = 0x4;
6241 0FCC 3004 movlw 4
6242 0FCD 00F2 movwf ??_I2C1_Interrupt_Slave
6243 0FCE 0879 movf _i2c_data_p,w
6244 0FCF 3E47 addlw 71
6245 0FD0 0086 movwf 6
6246 0FD1 0187 clrf 7
6247 0FD2 0872 movf ??_I2C1_Interrupt_Slave,w
6248 0FD3 0081 movwf 1
6249
6250 ;I2C1.c: 462: goto send;
6251 0FD4 2ED4 goto i1l2965
6252 0FD5 i1l3031:
6253 ;I2C1.c: 463: } else {
6254
6255
6256 ;I2C1.c: 465: i2c_data_p->operating_state = 0x1;
6257 0FD5 0879 movf _i2c_data_p,w
6258 0FD6 3E47 addlw 71
6259 0FD7 0086 movwf 6
6260 0FD8 0187 clrf 7
6261 0FD9 0181 clrf 1
6262 0FDA 0A81 incf 1,f
6263
6264 ;I2C1.c: 466: i2c_data_p->return_status = 0x37;
6265 0FDB 3037 movlw 55
6266 0FDC L14:
6267 0FDC 00F2 movwf ??_I2C1_Interrupt_Slave
6268 0FDD 0879 movf _i2c_data_p,w
6269 0FDE 3E48 addlw 72
6270 0FDF L13:
6271 0FDF 0086 movwf 6
6272 0FE0 0187 clrf 7
6273 0FE1 0872 movf ??_I2C1_Interrupt_Slave,w
6274 0FE2 0081 movwf 1
6275
6276 ;I2C1.c: 471: }
6277 ;I2C1.c: 472: }
6278
6279 ;I2C1.c: 467: }
6280 ;I2C1.c: 468: }
6281 ;I2C1.c: 469: }
6282 ;I2C1.c: 470: break;
6283 0FE3 2FF6 goto i1l3037
6284 0FE4 i1l3035:
6285 0FE4 0879 movf _i2c_data_p,w
6286 0FE5 3E47 addlw 71
6287 0FE6 0086 movwf 6
6288 0FE7 0187 clrf 7
6289 0FE8 0801 movf 1,w
6290
6291 ; Switch size 1, requested type "space"
6292 ; Number of cases is 4, Range of values is 1 to 4
6293 ; switch strategies available:
6294 ; Name Instructions Cycles
6295 ; simple_byte 13 7 (average)
6296 ; direct_byte 17 9 (fixed)
6297 ; jumptable 263 9 (fixed)
6298 ; Chosen strategy is simple_byte
6299 0FE9 3A01 xorlw 1 ; case 1
6300 0FEA 1903 skipnz
6301 0FEB 2EBD goto i1l181
6302 0FEC 3A03 xorlw 3 ; case 2
6303 0FED 1903 skipnz
6304 0FEE 2EC6 goto i1l184
6305 0FEF 3A01 xorlw 1 ; case 3
6306 0FF0 1903 skipnz
6307 0FF1 2F25 goto i1l200
6308 0FF2 3A07 xorlw 7 ; case 4
6309 0FF3 1903 skipnz
6310 0FF4 2ED4 goto i1l2965
6311 0FF5 2FF6 goto i1l3037
6312 0FF6 i1l3037:
6313
6314 ;I2C1.c: 473: }
6315 ;I2C1.c: 476: if (data_read_from_buffer || data_written_to_buffer) {
6316 0FF6 08F7 movf I2C1_Interrupt_Slave@data_read_from_buffer,f
6317 0FF7 1903 btfsc 3,2
6318 0FF8 0875 movf I2C1_Interrupt_Slave@data_written_to_buffer,w
6319 0FF9 1903 btfsc 3,2
6320 0FFA 0008 return
6321
6322 ;I2C1.c: 478: if (SSP1CON1bits.CKP == 0) {
6323 0FFB 0024 movlb 4 ; select bank4
6324 0FFC 1A15 btfsc 21,4 ;volatile
6325 0FFD 0008 return
6326
6327 ;I2C1.c: 479: SSP1CON1bits.CKP = 1;
6328 0FFE 1615 bsf 21,4 ;volatile
6329 0FFF 0008 return
6330 1000 __end_of_I2C1_Interrupt_Slave:
6331
6332 psect text24
6333 0B91 __ptext24:
6334 ;; *************** function _I2C1_Process_Receive *****************
6335 ;; Defined at:
6336 ;; line 522 in file "I2C1.c"
6337 ;; Parameters: Size Location Type
6338 ;; c 1 wreg unsigned char
6339 ;; Auto vars: Size Location Type
6340 ;; c 1 0[COMMON] unsigned char
6341 ;; ret 1 1[COMMON] unsigned char
6342 ;; btns 1 0 struct .
6343 ;; Return value: Size Location Type
6344 ;; 1 wreg unsigned char
6345 ;; Registers used:
6346 ;; wreg, fsr0l, fsr0h, status,2, status,0
6347 ;; Tracked objects:
6348 ;; On entry : 0/0
6349 ;; On exit : 0/0
6350 ;; Unchanged: 0/0
6351 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
6352 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
6353 ;; Locals: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
6354 ;; Temps: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
6355 ;; Totals: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
6356 ;;Total ram usage: 2 bytes
6357 ;; Hardware stack levels used: 1
6358 ;; This function calls:
6359 ;; Nothing
6360 ;; This function is called by:
6361 ;; _I2C1_Interrupt_Slave
6362 ;; This function uses a non-reentrant model
6363 ;;
6364
6365
6366 ;psect for function _I2C1_Process_Receive
6367 0B91 _I2C1_Process_Receive:
6368
6369 ;incstack = 0
6370 ; Regs used in _I2C1_Process_Receive: [wreg-fsr0h+status,2+status,0]
6371 ;I2C1_Process_Receive@c stored from wreg
6372 0B91 00F0 movwf I2C1_Process_Receive@c
6373
6374 ;I2C1.c: 523: uint8_t ret = 0;
6375 0B92 01F1 clrf I2C1_Process_Receive@ret
6376 0B93 0064 clrwdt ;#
6377
6378 ;I2C1.c: 534: }
6379
6380 ;I2C1.c: 533: break;
6381
6382 ;I2C1.c: 528: case 0x0A:
6383
6384 ;I2C1.c: 527: switch (c) {
6385 0B94 0870 movf I2C1_Process_Receive@c,w
6386
6387 ; Switch size 1, requested type "space"
6388 ; Number of cases is 1, Range of values is 10 to 10
6389 ; switch strategies available:
6390 ; Name Instructions Cycles
6391 ; simple_byte 4 3 (average)
6392 ; direct_byte 11 9 (fixed)
6393 ; jumptable 263 9 (fixed)
6394 ; Chosen strategy is simple_byte
6395 0B95 3A0A xorlw 10 ; case 10
6396 0B96 1903 skipnz
6397 0B97 2B99 goto i1l2623
6398 0B98 2B99 goto i1l2623
6399 0B99 i1l2623:
6400
6401 ;I2C1.c: 535: return ret;
6402 0B99 0871 movf I2C1_Process_Receive@ret,w
6403 0B9A 0008 return
6404 0B9B __end_of_I2C1_Process_Receive:
6405
6406 psect text25
6407 02DD __ptext25:
6408 ;; *************** function _I2C1_Interrupt_Master *****************
6409 ;; Defined at:
6410 ;; line 148 in file "I2C1.c"
6411 ;; Parameters: Size Location Type
6412 ;; None
6413 ;; Auto vars: Size Location Type
6414 ;; tmp 1 3[COMMON] unsigned char
6415 ;; tmp 1 2[COMMON] unsigned char
6416 ;; Return value: Size Location Type
6417 ;; None void
6418 ;; Registers used:
6419 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0
6420 ;; Tracked objects:
6421 ;; On entry : 0/0
6422 ;; On exit : 0/0
6423 ;; Unchanged: 0/0
6424 ;; Data sizes: COMMON BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7 BANK8 BANK9 BANK10 BANK1
+1 BANK12
6425 ;; Params: 0 0 0 0 0 0 0 0 0 0 0 0
+0 0
6426 ;; Locals: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
6427 ;; Temps: 2 0 0 0 0 0 0 0 0 0 0 0
+0 0
6428 ;; Totals: 4 0 0 0 0 0 0 0 0 0 0 0
+0 0
6429 ;;Total ram usage: 4 bytes
6430 ;; Hardware stack levels used: 1
6431 ;; This function calls:
6432 ;; Nothing
6433 ;; This function is called by:
6434 ;; _I2C1_Interrupt_Handler
6435 ;; This function uses a non-reentrant model
6436 ;;
6437
6438
6439 ;psect for function _I2C1_Interrupt_Master
6440 02DD _I2C1_Interrupt_Master:
6441
6442 ;I2C1.c: 150: if (i2c_data_p->master_status == 0x20) {
6443
6444 ;incstack = 0
6445 ; Regs used in _I2C1_Interrupt_Master: [wreg-fsr1h+status,2+status,0]
6446 02DD 0879 movf _i2c_data_p,w
6447 02DE 3E4A addlw 74
6448 02DF 0086 movwf 6
6449 02E0 0187 clrf 7
6450 02E1 0801 movf 1,w
6451 02E2 3A20 xorlw 32
6452 02E3 1903 btfsc 3,2
6453 02E4 2B4A goto i1l2501
6454 02E5 2B5A goto i1l2503
6455 02E6 i1l2483:
6456 ;I2C1.c: 154: case 0x5:
6457
6458 ;I2C1.c: 153: break;
6459
6460 ;I2C1.c: 152: case 0x1:
6461
6462 ;I2C1.c: 151: switch (i2c_data_p->operating_state) {
6463
6464
6465 ;I2C1.c: 156: i2c_data_p->operating_state = 0x7;
6466 02E6 3007 movlw 7
6467 02E7 00F0 movwf ??_I2C1_Interrupt_Master
6468 02E8 0879 movf _i2c_data_p,w
6469 02E9 3E47 addlw 71
6470 02EA 0086 movwf 6
6471 02EB 0187 clrf 7
6472 02EC 0870 movf ??_I2C1_Interrupt_Master,w
6473 02ED 0081 movwf 1
6474
6475 ;I2C1.c: 157: SSP1BUF = (i2c_data_p->master_dest_addr << 1) | 0x0;
6476 02EE 0879 movf _i2c_data_p,w
6477 02EF 3E49 addlw 73
6478 02F0 0086 movwf 6
6479 02F1 0187 clrf 7
6480 02F2 3501 lslf 1,w
6481 02F3 0024 movlb 4 ; select bank4
6482 02F4 0091 movwf 17 ;volatile
6483
6484 ;I2C1.c: 158: break;
6485 02F5 0008 return
6486 02F6 i1l134:
6487 ;I2C1.c: 159: case 0x7:
6488
6489
6490 ;I2C1.c: 161: if (!SSP1CON2bits.ACKSTAT) {
6491 02F6 0024 movlb 4 ; select bank4
6492 02F7 1B16 btfsc 22,6 ;volatile
6493 02F8 2B32 goto i1l2495
6494
6495 ;I2C1.c: 163: if (i2c_data_p->buffer_in_read_ind < i2c_data_p->buffer_in_len) {
6496 02F9 0879 movf _i2c_data_p,w
6497 02FA 3E22 addlw 34
6498 02FB 0086 movwf 6
6499 02FC 0187 clrf 7
6500 02FD 0879 movf _i2c_data_p,w
6501 02FE 3E20 addlw 32
6502 02FF 0084 movwf 4
6503 0300 0185 clrf 5
6504 0301 0800 movf 0,w
6505 0302 0201 subwf 1,w
6506 0303 1803 skipnc
6507 0304 2B1A goto i1l2491
6508
6509 ;I2C1.c: 164: SSP1BUF = i2c_data_p->buffer_in[i2c_data_p->buffer_in_read_ind];
6510 0305 0879 movf _i2c_data_p,w
6511 0306 3E22 addlw 34
6512 0307 0086 movwf 6
6513 0308 0187 clrf 7
6514 0309 0801 movf 1,w
6515 030A 0779 addwf _i2c_data_p,w
6516 030B 00F0 movwf ??_I2C1_Interrupt_Master
6517 030C 0870 movf ??_I2C1_Interrupt_Master,w
6518 030D 0086 movwf 6
6519 030E 0187 clrf 7
6520 030F 0801 movf 1,w
6521 0310 0091 movwf 17 ;volatile
6522
6523 ;I2C1.c: 165: i2c_data_p->buffer_in_read_ind++;
6524 0311 3001 movlw 1
6525 0312 00F0 movwf ??_I2C1_Interrupt_Master
6526 0313 0879 movf _i2c_data_p,w
6527 0314 3E22 addlw 34
6528 0315 0086 movwf 6
6529 0316 0187 clrf 7
6530 0317 0870 movf ??_I2C1_Interrupt_Master,w
6531 0318 0781 addwf 1,f
6532
6533 ;I2C1.c: 166: } else {
6534 0319 0008 return
6535 031A i1l2491:
6536
6537 ;I2C1.c: 168: i2c_data_p->operating_state = 0x1;
6538 031A 0879 movf _i2c_data_p,w
6539 031B 3E47 addlw 71
6540 031C 0086 movwf 6
6541 031D 0187 clrf 7
6542 031E 0181 clrf 1
6543 031F 0A81 incf 1,f
6544
6545 ;I2C1.c: 169: SSP1CON2bits.PEN = 1;
6546 0320 1516 bsf 22,2 ;volatile
6547
6548 ;I2C1.c: 170: i2c_data_p->master_status = 0x23;
6549 0321 3023 movlw 35
6550 0322 00F0 movwf ??_I2C1_Interrupt_Master
6551 0323 0879 movf _i2c_data_p,w
6552 0324 3E4A addlw 74
6553 0325 0086 movwf 6
6554 0326 0187 clrf 7
6555 0327 0870 movf ??_I2C1_Interrupt_Master,w
6556 0328 0081 movwf 1
6557
6558 ;I2C1.c: 171: i2c_data_p->return_status = 0x30;
6559 0329 3030 movlw 48
6560 032A 00F0 movwf ??_I2C1_Interrupt_Master
6561 032B 0879 movf _i2c_data_p,w
6562 032C 3E48 addlw 72
6563 032D 0086 movwf 6
6564 032E 0187 clrf 7
6565 032F 0870 movf ??_I2C1_Interrupt_Master,w
6566 0330 0081 movwf 1
6567
6568 ;I2C1.c: 172: }
6569 ;I2C1.c: 173: } else {
6570 0331 0008 return
6571 0332 i1l2495:
6572
6573 ;I2C1.c: 175: i2c_data_p->operating_state = 0x1;
6574 0332 0879 movf _i2c_data_p,w
6575 0333 3E47 addlw 71
6576 0334 0086 movwf 6
6577 0335 0187 clrf 7
6578 0336 0181 clrf 1
6579 0337 0A81 incf 1,f
6580
6581 ;I2C1.c: 176: SSP1CON2bits.PEN = 1;
6582 0338 1516 bsf 22,2 ;volatile
6583
6584 ;I2C1.c: 177: i2c_data_p->master_status = 0x23;
6585 0339 3023 movlw 35
6586 033A 00F0 movwf ??_I2C1_Interrupt_Master
6587 033B 0879 movf _i2c_data_p,w
6588 033C 3E4A addlw 74
6589 033D 0086 movwf 6
6590 033E 0187 clrf 7
6591 033F 0870 movf ??_I2C1_Interrupt_Master,w
6592 0340 0081 movwf 1
6593
6594 ;I2C1.c: 178: i2c_data_p->return_status = 0x31;
6595 0341 3031 movlw 49
6596 0342 00F0 movwf ??_I2C1_Interrupt_Master
6597 0343 0879 movf _i2c_data_p,w
6598 0344 3E48 addlw 72
6599 0345 0086 movwf 6
6600 0346 0187 clrf 7
6601 0347 0870 movf ??_I2C1_Interrupt_Master,w
6602 0348 0081 movwf 1
6603
6604 ;I2C1.c: 181: }
6605
6606 ;I2C1.c: 179: }
6607 ;I2C1.c: 180: break;
6608 0349 0008 return
6609 034A i1l2501:
6610 034A 0879 movf _i2c_data_p,w
6611 034B 3E47 addlw 71
6612 034C 0086 movwf 6
6613 034D 0187 clrf 7
6614 034E 0801 movf 1,w
6615
6616 ; Switch size 1, requested type "space"
6617 ; Number of cases is 3, Range of values is 1 to 7
6618 ; switch strategies available:
6619 ; Name Instructions Cycles
6620 ; simple_byte 10 6 (average)
6621 ; direct_byte 23 9 (fixed)
6622 ; jumptable 263 9 (fixed)
6623 ; Chosen strategy is simple_byte
6624 034F 3A01 xorlw 1 ; case 1
6625 0350 1903 skipnz
6626 0351 2D33 goto i1l174
6627 0352 3A04 xorlw 4 ; case 5
6628 0353 1903 skipnz
6629 0354 2AE6 goto i1l2483
6630 0355 3A02 xorlw 2 ; case 7
6631 0356 1903 skipnz
6632 0357 2AF6 goto i1l134
6633 0358 2D33 goto i1l174
6634
6635 ;I2C1.c: 183: } else if (i2c_data_p->master_status == 0x21) {
6636 0359 0008 return
6637 035A i1l2503:
6638 035A 0879 movf _i2c_data_p,w
6639 035B 3E4A addlw 74
6640 035C 0086 movwf 6
6641 035D 0187 clrf 7
6642 035E 0801 movf 1,w
6643 035F 3A21 xorlw 33
6644 0360 1903 btfsc 3,2
6645 0361 2BFA goto i1l2549
6646 0362 2C13 goto i1l2551
6647 0363 i1l2507:
6648 ;I2C1.c: 187: case 0x5:
6649
6650 ;I2C1.c: 186: break;
6651
6652 ;I2C1.c: 185: case 0x1:
6653
6654 ;I2C1.c: 184: switch (i2c_data_p->operating_state) {
6655
6656
6657 ;I2C1.c: 189: i2c_data_p->operating_state = 0x8;
6658 0363 3008 movlw 8
6659 0364 00F0 movwf ??_I2C1_Interrupt_Master
6660 0365 0879 movf _i2c_data_p,w
6661 0366 3E47 addlw 71
6662 0367 0086 movwf 6
6663 0368 0187 clrf 7
6664 0369 0870 movf ??_I2C1_Interrupt_Master,w
6665 036A 0081 movwf 1
6666
6667 ;I2C1.c: 190: uint8_t tmp = (i2c_data_p->master_dest_addr << 1);
6668 036B 0879 movf _i2c_data_p,w
6669 036C 3E49 addlw 73
6670 036D 0086 movwf 6
6671 036E 0187 clrf 7
6672 036F 3501 lslf 1,w
6673 0370 00F0 movwf ??_I2C1_Interrupt_Master
6674 0371 0870 movf ??_I2C1_Interrupt_Master,w
6675 0372 00F2 movwf I2C1_Interrupt_Master@tmp
6676
6677 ;I2C1.c: 191: tmp |= 0x01;
6678 0373 1472 bsf I2C1_Interrupt_Master@tmp,0
6679
6680 ;I2C1.c: 192: SSP1BUF = tmp;
6681 0374 0872 movf I2C1_Interrupt_Master@tmp,w
6682 0375 0024 movlb 4 ; select bank4
6683 0376 0091 movwf 17 ;volatile
6684
6685 ;I2C1.c: 193: break;
6686 0377 0008 return
6687 0378 i1l145:
6688 ;I2C1.c: 194: case 0x8:
6689
6690
6691 ;I2C1.c: 196: if (!SSP1CON2bits.ACKSTAT) {
6692 0378 0024 movlb 4 ; select bank4
6693 0379 1B16 btfsc 22,6 ;volatile
6694 037A 2B85 goto i1l2519
6695
6696 ;I2C1.c: 198: i2c_data_p->operating_state = 0x3;
6697 037B 3003 movlw 3
6698 037C 00F0 movwf ??_I2C1_Interrupt_Master
6699 037D 0879 movf _i2c_data_p,w
6700 037E 3E47 addlw 71
6701 037F 0086 movwf 6
6702 0380 0187 clrf 7
6703 0381 0870 movf ??_I2C1_Interrupt_Master,w
6704 0382 0081 movwf 1
6705
6706 ;I2C1.c: 199: SSP1CON2bits.RCEN = 1;
6707 0383 1596 bsf 22,3 ;volatile
6708
6709 ;I2C1.c: 200: } else {
6710 0384 0008 return
6711 0385 i1l2519:
6712
6713 ;I2C1.c: 202: i2c_data_p->operating_state = 0x1;
6714 0385 0879 movf _i2c_data_p,w
6715 0386 3E47 addlw 71
6716 0387 0086 movwf 6
6717 0388 0187 clrf 7
6718 0389 0181 clrf 1
6719 038A 0A81 incf 1,f
6720
6721 ;I2C1.c: 203: SSP1CON2bits.PEN = 1;
6722 038B 1516 bsf 22,2 ;volatile
6723
6724 ;I2C1.c: 204: i2c_data_p->master_status = 0x23;
6725 038C 3023 movlw 35
6726 038D 00F0 movwf ??_I2C1_Interrupt_Master
6727 038E 0879 movf _i2c_data_p,w
6728 038F 3E4A addlw 74
6729 0390 0086 movwf 6
6730 0391 0187 clrf 7
6731 0392 0870 movf ??_I2C1_Interrupt_Master,w
6732 0393 0081 movwf 1
6733
6734 ;I2C1.c: 205: i2c_data_p->return_status = 0x33;
6735 0394 3033 movlw 51
6736 0395 00F0 movwf ??_I2C1_Interrupt_Master
6737 0396 0879 movf _i2c_data_p,w
6738 0397 3E48 addlw 72
6739 0398 0086 movwf 6
6740 0399 0187 clrf 7
6741 039A 0870 movf ??_I2C1_Interrupt_Master,w
6742 039B 0081 movwf 1
6743
6744 ;I2C1.c: 206: }
6745 ;I2C1.c: 207: break;
6746 039C 0008 return
6747 039D i1l2523:
6748 ;I2C1.c: 208: case 0x3:
6749
6750
6751 ;I2C1.c: 211: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = SSP1BUF;
6752 039D 0024 movlb 4 ; select bank4
6753 039E 0811 movf 17,w ;volatile
6754 039F 00F0 movwf ??_I2C1_Interrupt_Master
6755 03A0 0879 movf _i2c_data_p,w
6756 03A1 3E23 addlw 35
6757 03A2 0086 movwf 6
6758 03A3 0187 clrf 7
6759 03A4 0801 movf 1,w
6760 03A5 0779 addwf _i2c_data_p,w
6761 03A6 00F1 movwf ??_I2C1_Interrupt_Master+1
6762 03A7 0871 movf ??_I2C1_Interrupt_Master+1,w
6763 03A8 0086 movwf 6
6764 03A9 0187 clrf 7
6765 03AA 0870 movf ??_I2C1_Interrupt_Master,w
6766 03AB 0081 movwf 1
6767
6768 ;I2C1.c: 212: i2c_data_p->buffer_in_write_ind++;
6769 03AC 3001 movlw 1
6770 03AD 00F0 movwf ??_I2C1_Interrupt_Master
6771 03AE 0879 movf _i2c_data_p,w
6772 03AF 3E23 addlw 35
6773 03B0 0086 movwf 6
6774 03B1 0187 clrf 7
6775 03B2 0870 movf ??_I2C1_Interrupt_Master,w
6776 03B3 0781 addwf 1,f
6777
6778 ;I2C1.c: 213: if (i2c_data_p->buffer_in_write_ind < i2c_data_p->buffer_in_len) {
6779 03B4 0879 movf _i2c_data_p,w
6780 03B5 3E23 addlw 35
6781 03B6 0086 movwf 6
6782 03B7 0187 clrf 7
6783 03B8 0879 movf _i2c_data_p,w
6784 03B9 3E20 addlw 32
6785 03BA 0084 movwf 4
6786 03BB 0185 clrf 5
6787 03BC 0800 movf 0,w
6788 03BD 0201 subwf 1,w
6789 03BE 1803 skipnc
6790 03BF 2BCB goto i1l2533
6791
6792 ;I2C1.c: 215: i2c_data_p->operating_state = 0xA;
6793 03C0 300A movlw 10
6794 03C1 00F0 movwf ??_I2C1_Interrupt_Master
6795 03C2 0879 movf _i2c_data_p,w
6796 03C3 3E47 addlw 71
6797 03C4 0086 movwf 6
6798 03C5 0187 clrf 7
6799 03C6 0870 movf ??_I2C1_Interrupt_Master,w
6800 03C7 0081 movwf 1
6801
6802 ;I2C1.c: 216: SSP1CON2bits.ACKDT = 0;
6803 03C8 1296 bcf 22,5 ;volatile
6804
6805 ;I2C1.c: 217: SSP1CON2bits.ACKEN = 1;
6806 03C9 1616 bsf 22,4 ;volatile
6807
6808 ;I2C1.c: 218: } else {
6809 03CA 0008 return
6810 03CB i1l2533:
6811
6812 ;I2C1.c: 220: i2c_data_p->operating_state = 0xB;
6813 03CB 300B movlw 11
6814 03CC 00F0 movwf ??_I2C1_Interrupt_Master
6815 03CD 0879 movf _i2c_data_p,w
6816 03CE 3E47 addlw 71
6817 03CF 0086 movwf 6
6818 03D0 0187 clrf 7
6819 03D1 0870 movf ??_I2C1_Interrupt_Master,w
6820 03D2 0081 movwf 1
6821
6822 ;I2C1.c: 221: SSP1CON2bits.ACKDT = 1;
6823 03D3 1696 bsf 22,5 ;volatile
6824
6825 ;I2C1.c: 222: SSP1CON2bits.ACKEN = 1;
6826 03D4 1616 bsf 22,4 ;volatile
6827
6828 ;I2C1.c: 223: }
6829 ;I2C1.c: 224: break;
6830 03D5 0008 return
6831 03D6 i1l2539:
6832 ;I2C1.c: 225: case 0xA:
6833
6834
6835 ;I2C1.c: 227: i2c_data_p->operating_state = 0x3;
6836 03D6 3003 movlw 3
6837 03D7 00F0 movwf ??_I2C1_Interrupt_Master
6838 03D8 0879 movf _i2c_data_p,w
6839 03D9 3E47 addlw 71
6840 03DA 0086 movwf 6
6841 03DB 0187 clrf 7
6842 03DC 0870 movf ??_I2C1_Interrupt_Master,w
6843 03DD 0081 movwf 1
6844
6845 ;I2C1.c: 228: SSP1CON2bits.RCEN = 1;
6846 03DE 0024 movlb 4 ; select bank4
6847 03DF 1596 bsf 22,3 ;volatile
6848
6849 ;I2C1.c: 229: break;
6850 03E0 0008 return
6851 03E1 i1l2543:
6852 ;I2C1.c: 230: case 0xB:
6853
6854
6855 ;I2C1.c: 232: i2c_data_p->operating_state = 0x1;
6856 03E1 0879 movf _i2c_data_p,w
6857 03E2 3E47 addlw 71
6858 03E3 0086 movwf 6
6859 03E4 0187 clrf 7
6860 03E5 0181 clrf 1
6861 03E6 0A81 incf 1,f
6862
6863 ;I2C1.c: 233: SSP1CON2bits.PEN = 1;
6864 03E7 0024 movlb 4 ; select bank4
6865 03E8 1516 bsf 22,2 ;volatile
6866
6867 ;I2C1.c: 234: i2c_data_p->master_status = 0x23;
6868 03E9 3023 movlw 35
6869 03EA 00F0 movwf ??_I2C1_Interrupt_Master
6870 03EB 0879 movf _i2c_data_p,w
6871 03EC 3E4A addlw 74
6872 03ED 0086 movwf 6
6873 03EE 0187 clrf 7
6874 03EF 0870 movf ??_I2C1_Interrupt_Master,w
6875 03F0 0081 movwf 1
6876
6877 ;I2C1.c: 235: i2c_data_p->return_status = 0x32;
6878 03F1 3032 movlw 50
6879 03F2 00F0 movwf ??_I2C1_Interrupt_Master
6880 03F3 0879 movf _i2c_data_p,w
6881 03F4 3E48 addlw 72
6882 03F5 0086 movwf 6
6883 03F6 0187 clrf 7
6884 03F7 0870 movf ??_I2C1_Interrupt_Master,w
6885 03F8 0081 movwf 1
6886
6887 ;I2C1.c: 237: }
6888
6889 ;I2C1.c: 236: break;
6890 03F9 0008 return
6891 03FA i1l2549:
6892 03FA 0879 movf _i2c_data_p,w
6893 03FB 3E47 addlw 71
6894 03FC 0086 movwf 6
6895 03FD 0187 clrf 7
6896 03FE 0801 movf 1,w
6897
6898 ; Switch size 1, requested type "space"
6899 ; Number of cases is 6, Range of values is 1 to 11
6900 ; switch strategies available:
6901 ; Name Instructions Cycles
6902 ; simple_byte 19 10 (average)
6903 ; direct_byte 31 9 (fixed)
6904 ; jumptable 263 9 (fixed)
6905 ; Chosen strategy is simple_byte
6906 03FF 3A01 xorlw 1 ; case 1
6907 0400 1903 skipnz
6908 0401 2D33 goto i1l174
6909 0402 3A02 xorlw 2 ; case 3
6910 0403 1903 skipnz
6911 0404 2B9D goto i1l2523
6912 0405 3A06 xorlw 6 ; case 5
6913 0406 1903 skipnz
6914 0407 2B63 goto i1l2507
6915 0408 3A0D xorlw 13 ; case 8
6916 0409 1903 skipnz
6917 040A 2B78 goto i1l145
6918 040B 3A02 xorlw 2 ; case 10
6919 040C 1903 skipnz
6920 040D 2BD6 goto i1l2539
6921 040E 3A01 xorlw 1 ; case 11
6922 040F 1903 skipnz
6923 0410 2BE1 goto i1l2543
6924 0411 2D33 goto i1l174
6925
6926 ;I2C1.c: 238: } else if (i2c_data_p->master_status == 0x22) {
6927 0412 0008 return
6928 0413 i1l2551:
6929 0413 0879 movf _i2c_data_p,w
6930 0414 3E4A addlw 74
6931 0415 0086 movwf 6
6932 0416 0187 clrf 7
6933 0417 0801 movf 1,w
6934 0418 3A22 xorlw 34
6935 0419 1D03 skipz
6936 041A 0008 return
6937 041B 2D11 goto i1l2615
6938 041C i1l2555:
6939 ;I2C1.c: 242: case 0x5:
6940
6941 ;I2C1.c: 241: break;
6942
6943 ;I2C1.c: 240: case 0x1:
6944
6945 ;I2C1.c: 239: switch (i2c_data_p->operating_state) {
6946
6947
6948 ;I2C1.c: 244: i2c_data_p->operating_state = 0x7;
6949 041C 3007 movlw 7
6950 041D 00F0 movwf ??_I2C1_Interrupt_Master
6951 041E 0879 movf _i2c_data_p,w
6952 041F 3E47 addlw 71
6953 0420 0086 movwf 6
6954 0421 0187 clrf 7
6955 0422 0870 movf ??_I2C1_Interrupt_Master,w
6956 0423 0081 movwf 1
6957
6958 ;I2C1.c: 245: SSP1BUF = (i2c_data_p->master_dest_addr << 1) | 0x0;
6959 0424 0879 movf _i2c_data_p,w
6960 0425 3E49 addlw 73
6961 0426 0086 movwf 6
6962 0427 0187 clrf 7
6963 0428 3501 lslf 1,w
6964 0429 0024 movlb 4 ; select bank4
6965 042A 0091 movwf 17 ;volatile
6966
6967 ;I2C1.c: 246: break;
6968 042B 0008 return
6969 042C i1l159:
6970 ;I2C1.c: 247: case 0x7:
6971
6972
6973 ;I2C1.c: 249: if (!SSP1CON2bits.ACKSTAT) {
6974 042C 0024 movlb 4 ; select bank4
6975 042D 1B16 btfsc 22,6 ;volatile
6976 042E 2C3D goto i1l2561
6977
6978 ;I2C1.c: 251: SSP1BUF = i2c_data_p->buffer_in[0];
6979 042F 0879 movf _i2c_data_p,w
6980 0430 0086 movwf 6
6981 0431 0187 clrf 7
6982 0432 0801 movf 1,w
6983 0433 0091 movwf 17 ;volatile
6984
6985 ;I2C1.c: 252: i2c_data_p->operating_state = 0x9;
6986 0434 3009 movlw 9
6987 0435 00F0 movwf ??_I2C1_Interrupt_Master
6988 0436 0879 movf _i2c_data_p,w
6989 0437 3E47 addlw 71
6990 0438 0086 movwf 6
6991 0439 0187 clrf 7
6992 043A 0870 movf ??_I2C1_Interrupt_Master,w
6993 043B 0081 movwf 1
6994
6995 ;I2C1.c: 253: } else {
6996 043C 0008 return
6997 043D i1l2561:
6998
6999 ;I2C1.c: 255: i2c_data_p->operating_state = 0x1;
7000 043D 0879 movf _i2c_data_p,w
7001 043E 3E47 addlw 71
7002 043F 0086 movwf 6
7003 0440 0187 clrf 7
7004 0441 0181 clrf 1
7005 0442 0A81 incf 1,f
7006
7007 ;I2C1.c: 256: SSP1CON2bits.PEN = 1;
7008 0443 1516 bsf 22,2 ;volatile
7009
7010 ;I2C1.c: 257: i2c_data_p->master_status = 0x23;
7011 0444 3023 movlw 35
7012 0445 00F0 movwf ??_I2C1_Interrupt_Master
7013 0446 0879 movf _i2c_data_p,w
7014 0447 3E4A addlw 74
7015 0448 0086 movwf 6
7016 0449 0187 clrf 7
7017 044A 0870 movf ??_I2C1_Interrupt_Master,w
7018 044B 0081 movwf 1
7019
7020 ;I2C1.c: 258: i2c_data_p->return_status = 0x31;
7021 044C 3031 movlw 49
7022 044D 00F0 movwf ??_I2C1_Interrupt_Master
7023 044E 0879 movf _i2c_data_p,w
7024 044F 3E48 addlw 72
7025 0450 0086 movwf 6
7026 0451 0187 clrf 7
7027 0452 0870 movf ??_I2C1_Interrupt_Master,w
7028 0453 0081 movwf 1
7029
7030 ;I2C1.c: 259: }
7031 ;I2C1.c: 260: break;
7032 0454 0008 return
7033 0455 i1l162:
7034 ;I2C1.c: 261: case 0x9:
7035
7036
7037 ;I2C1.c: 262: if (!SSP1CON2bits.ACKSTAT) {
7038 0455 0024 movlb 4 ; select bank4
7039 0456 1B16 btfsc 22,6 ;volatile
7040 0457 2C62 goto i1l2569
7041
7042 ;I2C1.c: 263: SSP1CON2bits.RSEN = 1;
7043 0458 1496 bsf 22,1 ;volatile
7044
7045 ;I2C1.c: 264: i2c_data_p->operating_state = 0x6;
7046 0459 3006 movlw 6
7047 045A 00F0 movwf ??_I2C1_Interrupt_Master
7048 045B 0879 movf _i2c_data_p,w
7049 045C 3E47 addlw 71
7050 045D 0086 movwf 6
7051 045E 0187 clrf 7
7052 045F 0870 movf ??_I2C1_Interrupt_Master,w
7053 0460 0081 movwf 1
7054
7055 ;I2C1.c: 265: } else {
7056 0461 0008 return
7057 0462 i1l2569:
7058
7059 ;I2C1.c: 267: i2c_data_p->operating_state = 0x1;
7060 0462 0879 movf _i2c_data_p,w
7061 0463 3E47 addlw 71
7062 0464 0086 movwf 6
7063 0465 0187 clrf 7
7064 0466 0181 clrf 1
7065 0467 0A81 incf 1,f
7066
7067 ;I2C1.c: 268: SSP1CON2bits.PEN = 1;
7068 0468 1516 bsf 22,2 ;volatile
7069
7070 ;I2C1.c: 269: i2c_data_p->master_status = 0x23;
7071 0469 3023 movlw 35
7072 046A 00F0 movwf ??_I2C1_Interrupt_Master
7073 046B 0879 movf _i2c_data_p,w
7074 046C 3E4A addlw 74
7075 046D 0086 movwf 6
7076 046E 0187 clrf 7
7077 046F 0870 movf ??_I2C1_Interrupt_Master,w
7078 0470 0081 movwf 1
7079
7080 ;I2C1.c: 270: i2c_data_p->return_status = 0x31;
7081 0471 3031 movlw 49
7082 0472 00F0 movwf ??_I2C1_Interrupt_Master
7083 0473 0879 movf _i2c_data_p,w
7084 0474 3E48 addlw 72
7085 0475 0086 movwf 6
7086 0476 0187 clrf 7
7087 0477 0870 movf ??_I2C1_Interrupt_Master,w
7088 0478 0081 movwf 1
7089
7090 ;I2C1.c: 271: }
7091 ;I2C1.c: 272: break;
7092 0479 0008 return
7093 047A i1l2573:
7094 ;I2C1.c: 273: case 0x6:
7095
7096
7097 ;I2C1.c: 275: i2c_data_p->operating_state = 0x8;
7098 047A 3008 movlw 8
7099 047B 00F0 movwf ??_I2C1_Interrupt_Master
7100 047C 0879 movf _i2c_data_p,w
7101 047D 3E47 addlw 71
7102 047E 0086 movwf 6
7103 047F 0187 clrf 7
7104 0480 0870 movf ??_I2C1_Interrupt_Master,w
7105 0481 0081 movwf 1
7106
7107 ;I2C1.c: 276: uint8_t tmp = (i2c_data_p->master_dest_addr << 1);
7108 0482 0879 movf _i2c_data_p,w
7109 0483 3E49 addlw 73
7110 0484 0086 movwf 6
7111 0485 0187 clrf 7
7112 0486 3501 lslf 1,w
7113 0487 00F0 movwf ??_I2C1_Interrupt_Master
7114 0488 0870 movf ??_I2C1_Interrupt_Master,w
7115 0489 00F3 movwf I2C1_Interrupt_Master@tmp_611
7116
7117 ;I2C1.c: 277: tmp |= 0x01;
7118 048A 1473 bsf I2C1_Interrupt_Master@tmp_611,0
7119
7120 ;I2C1.c: 278: SSP1BUF = tmp;
7121 048B 0873 movf I2C1_Interrupt_Master@tmp_611,w
7122 048C 0024 movlb 4 ; select bank4
7123 048D 0091 movwf 17 ;volatile
7124
7125 ;I2C1.c: 279: break;
7126 048E 0008 return
7127 048F i1l166:
7128 ;I2C1.c: 280: case 0x8:
7129
7130
7131 ;I2C1.c: 282: if (!SSP1CON2bits.ACKSTAT) {
7132 048F 0024 movlb 4 ; select bank4
7133 0490 1B16 btfsc 22,6 ;volatile
7134 0491 2C9C goto i1l2585
7135
7136 ;I2C1.c: 284: i2c_data_p->operating_state = 0x3;
7137 0492 3003 movlw 3
7138 0493 00F0 movwf ??_I2C1_Interrupt_Master
7139 0494 0879 movf _i2c_data_p,w
7140 0495 3E47 addlw 71
7141 0496 0086 movwf 6
7142 0497 0187 clrf 7
7143 0498 0870 movf ??_I2C1_Interrupt_Master,w
7144 0499 0081 movwf 1
7145
7146 ;I2C1.c: 285: SSP1CON2bits.RCEN = 1;
7147 049A 1596 bsf 22,3 ;volatile
7148
7149 ;I2C1.c: 286: } else {
7150 049B 0008 return
7151 049C i1l2585:
7152
7153 ;I2C1.c: 288: i2c_data_p->operating_state = 0x1;
7154 049C 0879 movf _i2c_data_p,w
7155 049D 3E47 addlw 71
7156 049E 0086 movwf 6
7157 049F 0187 clrf 7
7158 04A0 0181 clrf 1
7159 04A1 0A81 incf 1,f
7160
7161 ;I2C1.c: 289: SSP1CON2bits.PEN = 1;
7162 04A2 1516 bsf 22,2 ;volatile
7163
7164 ;I2C1.c: 290: i2c_data_p->master_status = 0x23;
7165 04A3 3023 movlw 35
7166 04A4 00F0 movwf ??_I2C1_Interrupt_Master
7167 04A5 0879 movf _i2c_data_p,w
7168 04A6 3E4A addlw 74
7169 04A7 0086 movwf 6
7170 04A8 0187 clrf 7
7171 04A9 0870 movf ??_I2C1_Interrupt_Master,w
7172 04AA 0081 movwf 1
7173
7174 ;I2C1.c: 291: i2c_data_p->return_status = 0x33;
7175 04AB 3033 movlw 51
7176 04AC 00F0 movwf ??_I2C1_Interrupt_Master
7177 04AD 0879 movf _i2c_data_p,w
7178 04AE 3E48 addlw 72
7179 04AF 0086 movwf 6
7180 04B0 0187 clrf 7
7181 04B1 0870 movf ??_I2C1_Interrupt_Master,w
7182 04B2 0081 movwf 1
7183
7184 ;I2C1.c: 292: }
7185 ;I2C1.c: 293: break;
7186 04B3 0008 return
7187 04B4 i1l2589:
7188 ;I2C1.c: 294: case 0x3:
7189
7190
7191 ;I2C1.c: 297: i2c_data_p->buffer_in[i2c_data_p->buffer_in_write_ind] = SSP1BUF;
7192 04B4 0024 movlb 4 ; select bank4
7193 04B5 0811 movf 17,w ;volatile
7194 04B6 00F0 movwf ??_I2C1_Interrupt_Master
7195 04B7 0879 movf _i2c_data_p,w
7196 04B8 3E23 addlw 35
7197 04B9 0086 movwf 6
7198 04BA 0187 clrf 7
7199 04BB 0801 movf 1,w
7200 04BC 0779 addwf _i2c_data_p,w
7201 04BD 00F1 movwf ??_I2C1_Interrupt_Master+1
7202 04BE 0871 movf ??_I2C1_Interrupt_Master+1,w
7203 04BF 0086 movwf 6
7204 04C0 0187 clrf 7
7205 04C1 0870 movf ??_I2C1_Interrupt_Master,w
7206 04C2 0081 movwf 1
7207
7208 ;I2C1.c: 298: i2c_data_p->buffer_in_write_ind++;
7209 04C3 3001 movlw 1
7210 04C4 00F0 movwf ??_I2C1_Interrupt_Master
7211 04C5 0879 movf _i2c_data_p,w
7212 04C6 3E23 addlw 35
7213 04C7 0086 movwf 6
7214 04C8 0187 clrf 7
7215 04C9 0870 movf ??_I2C1_Interrupt_Master,w
7216 04CA 0781 addwf 1,f
7217
7218 ;I2C1.c: 299: if (i2c_data_p->buffer_in_write_ind < i2c_data_p->buffer_in_len) {
7219 04CB 0879 movf _i2c_data_p,w
7220 04CC 3E23 addlw 35
7221 04CD 0086 movwf 6
7222 04CE 0187 clrf 7
7223 04CF 0879 movf _i2c_data_p,w
7224 04D0 3E20 addlw 32
7225 04D1 0084 movwf 4
7226 04D2 0185 clrf 5
7227 04D3 0800 movf 0,w
7228 04D4 0201 subwf 1,w
7229 04D5 1803 skipnc
7230 04D6 2CE2 goto i1l2599
7231
7232 ;I2C1.c: 301: i2c_data_p->operating_state = 0xA;
7233 04D7 300A movlw 10
7234 04D8 00F0 movwf ??_I2C1_Interrupt_Master
7235 04D9 0879 movf _i2c_data_p,w
7236 04DA 3E47 addlw 71
7237 04DB 0086 movwf 6
7238 04DC 0187 clrf 7
7239 04DD 0870 movf ??_I2C1_Interrupt_Master,w
7240 04DE 0081 movwf 1
7241
7242 ;I2C1.c: 302: SSP1CON2bits.ACKDT = 0;
7243 04DF 1296 bcf 22,5 ;volatile
7244
7245 ;I2C1.c: 303: SSP1CON2bits.ACKEN = 1;
7246 04E0 1616 bsf 22,4 ;volatile
7247
7248 ;I2C1.c: 304: } else {
7249 04E1 0008 return
7250 04E2 i1l2599:
7251
7252 ;I2C1.c: 306: i2c_data_p->operating_state = 0xB;
7253 04E2 300B movlw 11
7254 04E3 00F0 movwf ??_I2C1_Interrupt_Master
7255 04E4 0879 movf _i2c_data_p,w
7256 04E5 3E47 addlw 71
7257 04E6 0086 movwf 6
7258 04E7 0187 clrf 7
7259 04E8 0870 movf ??_I2C1_Interrupt_Master,w
7260 04E9 0081 movwf 1
7261
7262 ;I2C1.c: 307: SSP1CON2bits.ACKDT = 1;
7263 04EA 1696 bsf 22,5 ;volatile
7264
7265 ;I2C1.c: 308: SSP1CON2bits.ACKEN = 1;
7266 04EB 1616 bsf 22,4 ;volatile
7267
7268 ;I2C1.c: 309: }
7269 ;I2C1.c: 310: break;
7270 04EC 0008 return
7271 04ED i1l2605:
7272 ;I2C1.c: 311: case 0xA:
7273
7274
7275 ;I2C1.c: 313: i2c_data_p->operating_state = 0x3;
7276 04ED 3003 movlw 3
7277 04EE 00F0 movwf ??_I2C1_Interrupt_Master
7278 04EF 0879 movf _i2c_data_p,w
7279 04F0 3E47 addlw 71
7280 04F1 0086 movwf 6
7281 04F2 0187 clrf 7
7282 04F3 0870 movf ??_I2C1_Interrupt_Master,w
7283 04F4 0081 movwf 1
7284
7285 ;I2C1.c: 314: SSP1CON2bits.RCEN = 1;
7286 04F5 0024 movlb 4 ; select bank4
7287 04F6 1596 bsf 22,3 ;volatile
7288
7289 ;I2C1.c: 315: break;
7290 04F7 0008 return
7291 04F8 i1l2609:
7292 ;I2C1.c: 316: case 0xB:
7293
7294
7295 ;I2C1.c: 318: i2c_data_p->operating_state = 0x1;
7296 04F8 0879 movf _i2c_data_p,w
7297 04F9 3E47 addlw 71
7298 04FA 0086 movwf 6
7299 04FB 0187 clrf 7
7300 04FC 0181 clrf 1
7301 04FD 0A81 incf 1,f
7302
7303 ;I2C1.c: 319: SSP1CON2bits.PEN = 1;
7304 04FE 0024 movlb 4 ; select bank4
7305 04FF 1516 bsf 22,2 ;volatile
7306
7307 ;I2C1.c: 320: i2c_data_p->master_status = 0x23;
7308 0500 3023 movlw 35
7309 0501 00F0 movwf ??_I2C1_Interrupt_Master
7310 0502 0879 movf _i2c_data_p,w
7311 0503 3E4A addlw 74
7312 0504 0086 movwf 6
7313 0505 0187 clrf 7
7314 0506 0870 movf ??_I2C1_Interrupt_Master,w
7315 0507 0081 movwf 1
7316
7317 ;I2C1.c: 321: i2c_data_p->return_status = 0x32;
7318 0508 3032 movlw 50
7319 0509 00F0 movwf ??_I2C1_Interrupt_Master
7320 050A 0879 movf _i2c_data_p,w
7321 050B 3E48 addlw 72
7322 050C 0086 movwf 6
7323 050D 0187 clrf 7
7324 050E 0870 movf ??_I2C1_Interrupt_Master,w
7325 050F 0081 movwf 1
7326
7327 ;I2C1.c: 323: }
7328
7329 ;I2C1.c: 322: break;
7330 0510 0008 return
7331 0511 i1l2615:
7332 0511 0879 movf _i2c_data_p,w
7333 0512 3E47 addlw 71
7334 0513 0086 movwf 6
7335 0514 0187 clrf 7
7336 0515 0801 movf 1,w
7337
7338 ; Switch size 1, requested type "space"
7339 ; Number of cases is 9, Range of values is 1 to 11
7340 ; switch strategies available:
7341 ; Name Instructions Cycles
7342 ; simple_byte 28 15 (average)
7343 ; direct_byte 31 9 (fixed)
7344 ; jumptable 263 9 (fixed)
7345 ; Chosen strategy is simple_byte
7346 0516 3A01 xorlw 1 ; case 1
7347 0517 1903 skipnz
7348 0518 2D33 goto i1l174
7349 0519 3A02 xorlw 2 ; case 3
7350 051A 1903 skipnz
7351 051B 2CB4 goto i1l2589
7352 051C 3A06 xorlw 6 ; case 5
7353 051D 1903 skipnz
7354 051E 2C1C goto i1l2555
7355 051F 3A03 xorlw 3 ; case 6
7356 0520 1903 skipnz
7357 0521 2C7A goto i1l2573
7358 0522 3A01 xorlw 1 ; case 7
7359 0523 1903 skipnz
7360 0524 2C2C goto i1l159
7361 0525 3A0F xorlw 15 ; case 8
7362 0526 1903 skipnz
7363 0527 2C8F goto i1l166
7364 0528 3A01 xorlw 1 ; case 9
7365 0529 1903 skipnz
7366 052A 2C55 goto i1l162
7367 052B 3A03 xorlw 3 ; case 10
7368 052C 1903 skipnz
7369 052D 2CED goto i1l2605
7370 052E 3A01 xorlw 1 ; case 11
7371 052F 1903 skipnz
7372 0530 2CF8 goto i1l2609
7373 0531 2D33 goto i1l174
7374 0532 0008 return
7375 0533 i1l174:
7376 0533 0008 return
7377 0534 __end_of_I2C1_Interrupt_Master:
7378 007E btemp set 126 ;btemp
7379 007E wtemp0 set 126
Data Sizes:
Strings 0
Constant 0
Data 18
BSS 0
Persistent 2
Stack 0
Auto Spaces:
Space Size Autos Used
COMMON 14 9 10
BANK0 80 55 74
BANK1 80 77 77
BANK2 80 77 77
BANK3 80 0 0
BANK4 80 0 0
BANK5 80 0 0
BANK6 80 0 0
BANK7 80 0 0
BANK8 80 0 0
BANK9 80 0 0
BANK10 80 0 0
BANK11 80 0 0
BANK12 48 0 0
Pointer List with Targets:
TLC59116_Write_All@values PTR unsigned char size(1) Largest target is 16
-> main@leds(BANK0[16]),
I2C2_Read_Buffer@buffer PTR unsigned char size(1) Largest target is 2
-> MCP23009_Query@buffer(BANK0[2]),
I2C2_Master_Send@msg PTR unsigned char size(1) Largest target is 25
-> MCP23009_Query@buffer(BANK0[2]), MCP23009_Init@buffer(BANK0[8]), TLC59116_Write_BC@buffer(COMMON[2]), TLC59116_Write_All@buffer(BANK0[17]),
-> TLC59116_Write@buffer(COMMON[2]), TLC59116_Init@buffer(BANK0[25]), I2C2_Master_Restart@c(COMMON[1]),
I2C2_Init@data PTR struct . size(1) Largest target is 77
-> main@i2c2_data(BANK2[77]),
I2C2@i2c_data_p PTR struct . size(1) Largest target is 77
-> NULL(NULL[0]), main@i2c2_data(BANK2[77]),
I2C1_Init@data PTR struct . size(1) Largest target is 77
-> main@i2c1_data(BANK1[77]),
i2c_data_p PTR struct . size(1) Largest target is 77
-> NULL(NULL[0]), main@i2c1_data(BANK1[77]),
Critical Paths under _main in COMMON
None.
Critical Paths under _InterruptHandler in COMMON
_I2C2_Interrupt_Handler->_I2C2_Interrupt_Slave
_I2C2_Interrupt_Slave->_I2C2_Process_Receive
_I2C1_Interrupt_Handler->_I2C1_Interrupt_Slave
_I2C1_Interrupt_Slave->_I2C1_Process_Receive
Critical Paths under _main in BANK0
_main->_TLC59116_Init
_MCP23009_Query->_I2C2_Master_Send
_MCP23009_Init->_I2C2_Master_Send
_TLC59116_Write_All->_I2C2_Master_Send
_TLC59116_Init->_I2C2_Master_Send
Critical Paths under _InterruptHandler in BANK0
None.
Critical Paths under _main in BANK1
None.
Critical Paths under _InterruptHandler in BANK1
None.
Critical Paths under _main in BANK2
None.
Critical Paths under _InterruptHandler in BANK2
None.
Critical Paths under _main in BANK3
None.
Critical Paths under _InterruptHandler in BANK3
None.
Critical Paths under _main in BANK4
None.
Critical Paths under _InterruptHandler in BANK4
None.
Critical Paths under _main in BANK5
None.
Critical Paths under _InterruptHandler in BANK5
None.
Critical Paths under _main in BANK6
None.
Critical Paths under _InterruptHandler in BANK6
None.
Critical Paths under _main in BANK7
None.
Critical Paths under _InterruptHandler in BANK7
None.
Critical Paths under _main in BANK8
None.
Critical Paths under _InterruptHandler in BANK8
None.
Critical Paths under _main in BANK9
None.
Critical Paths under _InterruptHandler in BANK9
None.
Critical Paths under _main in BANK10
None.
Critical Paths under _InterruptHandler in BANK10
None.
Critical Paths under _main in BANK11
None.
Critical Paths under _InterruptHandler in BANK11
None.
Critical Paths under _main in BANK12
None.
Critical Paths under _InterruptHandler in BANK12
None.
Call Graph Tables:
---------------------------------------------------------------------------------
(Depth) Function Calls Base Space Used Autos Params Refs
---------------------------------------------------------------------------------
(0) _main 208 208 0 3554
35 BANK0 20 20 0
0 BANK1 77 77 0
0 BANK2 77 77 0
_Pins_Init
_Read_Address
_I2C1_Init
_I2C1_Configure_Slave
_I2C2_Init
_I2C2_Configure_Master
_Interrupt_Init
_Interrupt_Enable
_TLC59116_Init
_TLC59116_Write_All
_MCP23009_Init
_MCP23009_Query
---------------------------------------------------------------------------------
(1) _MCP23009_Query 4 4 0 412
7 BANK0 4 4 0
_I2C2_Master_Send
_I2C2_Master_Recv
_I2C2_Get_Status
_I2C2_Read_Buffer
---------------------------------------------------------------------------------
(2) _I2C2_Read_Buffer 5 5 0 52
0 BANK0 5 5 0
---------------------------------------------------------------------------------
(2) _I2C2_Master_Recv 3 2 1 66
0 BANK0 3 2 1
---------------------------------------------------------------------------------
(1) _MCP23009_Init 11 11 0 393
7 BANK0 11 11 0
_I2C2_Master_Send
_I2C2_Get_Status
---------------------------------------------------------------------------------
(1) _TLC59116_Write_All 22 22 0 962
7 BANK0 21 21 0
_I2C2_Master_Send
_I2C2_Get_Status
---------------------------------------------------------------------------------
(1) _TLC59116_Init 28 28 0 801
7 BANK0 28 28 0
_I2C2_Master_Send
_I2C2_Get_Status
---------------------------------------------------------------------------------
(2) _I2C2_Get_Status 0 0 0 0
---------------------------------------------------------------------------------
(2) _I2C2_Master_Send 7 5 2 178
0 BANK0 7 5 2
---------------------------------------------------------------------------------
(1) _Interrupt_Enable 0 0 0 0
---------------------------------------------------------------------------------
(1) _Interrupt_Init 0 0 0 0
---------------------------------------------------------------------------------
(1) _I2C2_Configure_Master 2 2 0 22
0 BANK0 2 2 0
---------------------------------------------------------------------------------
(1) _I2C2_Init 2 2 0 22
0 BANK0 2 2 0
---------------------------------------------------------------------------------
(1) _I2C1_Configure_Slave 2 2 0 22
0 BANK0 2 2 0
---------------------------------------------------------------------------------
(1) _I2C1_Init 2 2 0 22
0 BANK0 2 2 0
---------------------------------------------------------------------------------
(1) _Read_Address 4 4 0 27
0 BANK0 4 4 0
---------------------------------------------------------------------------------
(1) _Pins_Init 0 0 0 0
---------------------------------------------------------------------------------
Estimated maximum stack depth 2
---------------------------------------------------------------------------------
(Depth) Function Calls Base Space Used Autos Params Refs
---------------------------------------------------------------------------------
(3) _InterruptHandler 1 1 0 642
8 COMMON 1 1 0
_I2C1_Interrupt_Handler
_I2C2_Interrupt_Handler
---------------------------------------------------------------------------------
(4) _I2C2_Interrupt_Handler 0 0 0 321
_I2C2_Interrupt_Master
_I2C2_Interrupt_Slave
---------------------------------------------------------------------------------
(5) _I2C2_Interrupt_Slave 6 6 0 273
2 COMMON 6 6 0
_I2C2_Process_Receive
---------------------------------------------------------------------------------
(6) _I2C2_Process_Receive 3 3 0 45
0 COMMON 2 2 0
---------------------------------------------------------------------------------
(5) _I2C2_Interrupt_Master 4 4 0 48
0 COMMON 4 4 0
---------------------------------------------------------------------------------
(4) _I2C1_Interrupt_Handler 0 0 0 321
_I2C1_Interrupt_Master
_I2C1_Interrupt_Slave
---------------------------------------------------------------------------------
(5) _I2C1_Interrupt_Slave 6 6 0 273
2 COMMON 6 6 0
_I2C1_Process_Receive
---------------------------------------------------------------------------------
(6) _I2C1_Process_Receive 3 3 0 45
0 COMMON 2 2 0
---------------------------------------------------------------------------------
(5) _I2C1_Interrupt_Master 4 4 0 48
0 COMMON 4 4 0
---------------------------------------------------------------------------------
Estimated maximum stack depth 6
---------------------------------------------------------------------------------
Call Graph Graphs:
_main (ROOT)
_Pins_Init
_Read_Address
_I2C1_Init
_I2C1_Configure_Slave
_I2C2_Init
_I2C2_Configure_Master
_Interrupt_Init
_Interrupt_Enable
_TLC59116_Init
_I2C2_Master_Send
_I2C2_Get_Status
_TLC59116_Write_All
_I2C2_Master_Send
_I2C2_Get_Status
_MCP23009_Init
_I2C2_Master_Send
_I2C2_Get_Status
_MCP23009_Query
_I2C2_Master_Send
_I2C2_Master_Recv
_I2C2_Get_Status
_I2C2_Read_Buffer
_InterruptHandler (ROOT)
_I2C1_Interrupt_Handler
_I2C1_Interrupt_Master
_I2C1_Interrupt_Slave
_I2C1_Process_Receive
_I2C2_Interrupt_Handler
_I2C2_Interrupt_Master
_I2C2_Interrupt_Slave
_I2C2_Process_Receive
Address spaces:
Name Size Autos Total Cost Usage
BIGRAM 3F0 0 0 0 0.0%
EEDATA 100 0 0 0 0.0%
NULL 0 0 0 0 0.0%
CODE 0 0 0 0 0.0%
BITCOMMON E 0 0 1 0.0%
BITSFR0 0 0 0 1 0.0%
SFR0 0 0 0 1 0.0%
COMMON E 9 A 2 71.4%
BITSFR1 0 0 0 2 0.0%
SFR1 0 0 0 2 0.0%
BITSFR2 0 0 0 3 0.0%
SFR2 0 0 0 3 0.0%
STACK 0 0 A 3 0.0%
BITBANK0 50 0 0 4 0.0%
BITSFR3 0 0 0 4 0.0%
SFR3 0 0 0 4 0.0%
BANK0 50 37 4A 5 92.5%
BITSFR4 0 0 0 5 0.0%
SFR4 0 0 0 5 0.0%
BITBANK1 50 0 0 6 0.0%
BITSFR5 0 0 0 6 0.0%
SFR5 0 0 0 6 0.0%
BANK1 50 4D 4D 7 96.3%
BITSFR6 0 0 0 7 0.0%
SFR6 0 0 0 7 0.0%
BITBANK2 50 0 0 8 0.0%
BITSFR7 0 0 0 8 0.0%
SFR7 0 0 0 8 0.0%
BANK2 50 4D 4D 9 96.3%
BITSFR8 0 0 0 9 0.0%
SFR8 0 0 0 9 0.0%
BITBANK3 50 0 0 10 0.0%
BITSFR9 0 0 0 10 0.0%
SFR9 0 0 0 10 0.0%
BANK3 50 0 0 11 0.0%
BITSFR10 0 0 0 11 0.0%
SFR10 0 0 0 11 0.0%
BITBANK4 50 0 0 12 0.0%
BITSFR11 0 0 0 12 0.0%
SFR11 0 0 0 12 0.0%
BANK4 50 0 0 13 0.0%
BITSFR12 0 0 0 13 0.0%
SFR12 0 0 0 13 0.0%
BITBANK5 50 0 0 14 0.0%
BITSFR13 0 0 0 14 0.0%
SFR13 0 0 0 14 0.0%
BANK5 50 0 0 15 0.0%
BITSFR14 0 0 0 15 0.0%
SFR14 0 0 0 15 0.0%
BITBANK6 50 0 0 16 0.0%
BITSFR15 0 0 0 16 0.0%
SFR15 0 0 0 16 0.0%
BANK6 50 0 0 17 0.0%
BITSFR16 0 0 0 17 0.0%
SFR16 0 0 0 17 0.0%
BITBANK7 50 0 0 18 0.0%
BITSFR17 0 0 0 18 0.0%
SFR17 0 0 0 18 0.0%
BANK7 50 0 0 19 0.0%
BITSFR18 0 0 0 19 0.0%
SFR18 0 0 0 19 0.0%
BITSFR19 0 0 0 20 0.0%
SFR19 0 0 0 20 0.0%
ABS 0 0 EE 20 0.0%
BITBANK8 50 0 0 21 0.0%
BITSFR20 0 0 0 21 0.0%
SFR20 0 0 0 21 0.0%
BANK8 50 0 0 22 0.0%
BITSFR21 0 0 0 22 0.0%
SFR21 0 0 0 22 0.0%
BITBANK9 50 0 0 23 0.0%
BITSFR22 0 0 0 23 0.0%
SFR22 0 0 0 23 0.0%
BANK9 50 0 0 24 0.0%
BITSFR23 0 0 0 24 0.0%
SFR23 0 0 0 24 0.0%
BITBANK10 50 0 0 25 0.0%
BITSFR24 0 0 0 25 0.0%
SFR24 0 0 0 25 0.0%
BANK10 50 0 0 26 0.0%
BITSFR25 0 0 0 26 0.0%
SFR25 0 0 0 26 0.0%
BITBANK11 50 0 0 27 0.0%
BITSFR26 0 0 0 27 0.0%
SFR26 0 0 0 27 0.0%
BANK11 50 0 0 28 0.0%
BITSFR27 0 0 0 28 0.0%
SFR27 0 0 0 28 0.0%
BITBANK12 30 0 0 29 0.0%
BITSFR28 0 0 0 29 0.0%
SFR28 0 0 0 29 0.0%
BANK12 30 0 0 30 0.0%
BITSFR29 0 0 0 30 0.0%
SFR29 0 0 0 30 0.0%
BITSFR30 0 0 0 31 0.0%
SFR30 0 0 0 31 0.0%
DATA 0 0 F8 31 0.0%
BITSFR31 0 0 0 32 0.0%
SFR31 0 0 0 32 0.0%
Microchip Technology PIC Macro Assembler V1.20 build 52243
Symbol Table Sun Jan 26 16:29:58 2014
??_Interrupt_Init 0020 ??_Interrupt_Enable 0020
TLC59116_Write_All@values 003B TLC59116_Write_All@result 003A
__CFG_CP$OFF 0000 I2C2_Interrupt_Slave@received_data 0076
main@i2c1_data 00A0 main@i2c2_data 0120
l500 0C97 l445 0D5B
l448 0D96 __CFG_CPD$OFF 0000
__CFG_BORV$LO 0000 wreg 0009
__CFG_IESO$ON 0000 __CFG_LVP$OFF 0000
l2171 0740 l2333 0D4D
l2165 0729 l2157 071D
l2175 0748 l2169 0738
l2277 0C47 l2373 07B2
l2385 0C6B l2393 0C87
l2661 0DF2 l2663 0E0C
l2909 0D8D l2881 07DA
l2875 07D8 l2885 07E1
l2895 07F4 l2889 07F2
u1104 072E u1105 072D
u1080 0712 u1065 0CB2
u1075 0CC1 __CFG_WRT$OFF 0000
__CFG_FCMEN$ON 0000 _main 06DC
fsr0h 0005 fsr1h 0007
fsr0l 0004 indf0 0000
indf1 0001 fsr1l 0006
btemp 007E __CFG_BOREN$ON 0000
start 0019 I2C2_Configure_Master@speed 0021
__CFG_MCLRE$ON 0000 ??_I2C1_Interrupt_Handler 0078
?_Read_Address 0070 ??_I2C2_Get_Status 0020
__CFG_PLLEN$ON 0000 __size_of_TLC59116_Init 0046
_I2C2_Configure_Master 0C2B __end_of_I2C1_Init 0DEC
__end_of_I2C2_Init 0E9A ?_main 0070
__CFG_WDTE$OFF 0000 i1l200 0F25
i1l211 0FAC i1l205 0F50
i1l134 02F6 i1l145 0378
i1l209 0FBE i1l162 0455
i1l412 0618 i1l181 0EBD
i1l341 0038 i1l166 048F
i1l174 0533 i1l159 042C
i1l407 05E6 i1l271 0010
i1l184 0EC6 i1l352 00D1
i1l416 0698 i1l272 0016
i1l418 0684 i1l373 021C
i1l381 02DC i1l366 01A4
i1l391 0568 i1l369 01D8
i1l388 055B __end_of_MCP23009_Init 0C76
I2C2_Process_Receive@ret 0071 main@i 0056
__size_of_I2C1_Interrupt_Slave 0166 wtemp0 007E
_i2c_data_p 0079 __initialization 0BA5
??_Read_Address 0020 __end_of_main 074D
_MCP23009_Query 0C76 ??_main 0043
__end_of_I2C1_Process_Receive 0B9B _I2C1_Interrupt_Master 02DD
I2C1_Interrupt_Slave@received_data 0076 main@btn_value 0055
_ANSELA 018C _ANSELB 018D
_ANSELC 018E i1l3003 0F62
i1l3005 0F70 i1l3031 0FD5
i1l3007 0F7C i1l3009 0F83
i1l3113 060F i1l3121 063D
i1l3027 0FCC i1l3019 0FA4
i1l3035 0FE4 i1l3123 064C
i1l2501 034A i1l3037 0FF6
i1l3125 0654 i1l3053 054E
i1l2503 035A i1l3135 067B
i1l3119 062C i1l3151 06BE
i1l3081 0585 i1l3153 06D2
i1l2523 039D i1l2507 0363
i1l3163 0BD0 i1l3147 06AC
i1l3059 0557 i1l3171 0BE8
i1l2605 04ED i1l2533 03CB
i1l3093 05B4 i1l3077 057B
i1l3069 056D i1l2615 0511
i1l2543 03E1 i1l2519 0385
i1l2551 0413 i1l2623 0B99
i1l2609 04F8 i1l2561 043D
i1l3097 05DC i1l3089 05B2
i1l2555 041C i1l2539 03D6
i1l2491 031A i1l2483 02E6
i1l2811 01E7 i1l2803 01BA
i1l3099 05DF i1l2573 047A
i1l2549 03FA i1l2733 0064
i1l2725 0026 i1l2495 0332
i1l2831 024A i1l2815 0205
i1l2743 009F i1l2585 049C
i1l2569 0462 i1l2841 0280
i1l2761 00E1 i1l2737 0081
i1l2745 00B0 i1l2851 029B
i1l2827 022C i1l2589 04B4
i1l2781 0143 i1l2765 00FF
i1l2749 00BA i1l2599 04E2
i1l2943 0EB9 i1l2847 028E
i1l2775 0135 i1l2791 016E
i1l2937 0EB1 i1l2857 02B9
i1l2785 0150 i1l2793 0188
i1l2865 0BA3 i1l2981 0F1C
i1l2965 0ED4 i1l2797 0192
i1l2983 0F1F i1l2977 0EFA
i1l2997 0F48 I2C2_Master_Recv@address 0022
_TLC59116_Init 0D12 _SSPADD 0212
__CFG_PWRTE$OFF 0000 __size_of_I2C2_Interrupt_Slave 01A8
__end_of_MCP23009_Query 0CA7 __size_of_I2C1_Interrupt_Handler 0016
__CFG_STVREN$ON 0000 __size_of_Pins_Init 001A
?_I2C2_Configure_Master 0070 I2C2_Interrupt_Master@tmp_923 0073
I2C2_Master_Send@address 0025 __end_of_I2C2_Process_Receive 0BA5
?_I2C2_Read_Buffer 0070 ?_TLC59116_Init 0070
??_I2C2_Read_Buffer 0020 __end_of__initialization 0BB0
?_I2C2_Master_Recv 0020 ?_I2C2_Master_Send 0020
??_I2C2_Master_Recv 0021 ??_I2C2_Master_Send 0022
__pcstackCOMMON 0070 __pidataBANK0 0BB3
I2C2_Read_Buffer@i 0024 ?_MCP23009_Query 0070
I2C2_Interrupt_Master@tmp 0072 ?_I2C1_Interrupt_Master 0070
__size_of_InterruptHandler 0015 __end_of_I2C1_Configure_Slave 0C2B
_OPTION_REGbits 0095 __size_of_Interrupt_Enable 0003
__size_of_TLC59116_Write_All 0070 MCP23009_Query@buffer 0028
_I2C1_Interrupt_Handler 0BC5 __end_of_Read_Address 0CDA
MCP23009_Query@result 002A __end_of_Pins_Init 0C0F
_I2C2_Get_Status 07BD __pnvCOMMON 0079
_I2C2_Interrupt_Master 001B _I2C1_Process_Receive 0B91
I2C2_Master_Send@msg 0021 I2C2_Master_Send@i 0026
__pmaintext 06DC __pintentry 0004
_I2C1_Init 0D9E _I2C2_Init 0E3F
_SSP1ADD 0212 _SSP2ADD 021A
_SSP1BUF 0211 _SSP2BUF 0219
??_TLC59116_Init 0027 I2C2@i2c_data_p 0069
?_I2C1_Process_Receive 0070 ??_I2C2_Interrupt_Handler 0078
I2C2_Interrupt_Slave@data_read_from_buffer 0077 I2C1_Interrupt_Slave@data_read_from_buffer 0077
__end_of_I2C1_Interrupt_Slave 1000 _I2C2_Process_Receive 0B9B
__ptext1 0C76 __ptext2 0D58
__ptext3 0CDA __ptext4 0C4D
__ptext5 074D __ptext6 0D12
__ptext7 07BD __ptext8 0DEC
__ptext9 07FB __size_of_Interrupt_Init 0001
?_I2C1_Init 0070 ?_I2C2_Init 0070
__end_of_I2C2_Get_Status 07FB MCP23009_Init@buffer 0029
I2C1_Process_Receive@c 0070 end_of_initialization 0BB0
MCP23009_Init@result 0031 ?_I2C2_Interrupt_Master 0070
init_ram 0B8B initloop 0B8C
_I2C1_Configure_Slave 0C0F ??_I2C2_Configure_Master 0020
__size_of_MCP23009_Init 0029 ?_I2C2_Process_Receive 0070
_InterruptHandler 0004 __size_of_Read_Address 0033
__end_of_I2C2_Interrupt_Slave 06DC _Interrupt_Enable 07FB
__CFG_FOSC$INTOSC 0000 _TRISAbits 008C
_TRISBbits 008D _TRISCbits 008E
??_I2C1_Process_Receive 0070 ?_I2C1_Configure_Slave 0070
??_MCP23009_Query 0027 __size_of_I2C2_Read_Buffer 0046
??_I2C1_Interrupt_Master 0070 __size_of_I2C2_Interrupt_Handler 001A
_Read_Address 0CA7 I2C1_Interrupt_Master@tmp_611 0073
__size_of_I2C2_Master_Recv 0038 __size_of_I2C2_Master_Send 0053
?_I2C1_Interrupt_Handler 0070 start_initialization 0BA5
??_I2C1_Init 0020 ??_I2C2_Init 0020
?_I2C2_Get_Status 0070 _MCP23009_Init 0C4D
_I2C1_Interrupt_Slave 0E9A I2C2_Interrupt_Slave@overrun_error 0074
_Pins_Init 0BF5 I2C2_Master_Recv@length 0020
??_I2C2_Process_Receive 0070 __pdataBANK0 0057
I2C1_Interrupt_Master@tmp 0072 __end_of_I2C1_Interrupt_Handler 0BDB
__end_of_TLC59116_Write_All 07BD main@i2c_slave_addr 0054
I2C2_Master_Send@length 0020 _Interrupt_Init 07FE
MCP23009_Query@F3053 0067 __pcstackBANK0 0020
__pcstackBANK1 00A0 __pcstackBANK2 0120
?_MCP23009_Init 0070 _I2C2_Interrupt_Handler 0BDB
TLC59116_Init@buffer 0029 ?_I2C1_Interrupt_Slave 0070
TLC59116_Init@result 0042 ??_I2C1_Configure_Slave 0020
?_Pins_Init 0070 __pnvBANK0 0069
_I2C2_Interrupt_Slave 0534 __end_of_Interrupt_Init 07FF
??_I2C2_Interrupt_Master 0070 I2C2_Read_Buffer@buffer 0023
__end_of_TLC59116_Init 0D58 __end_of_InterruptHandler 0019
_LATCbits 010E _PIE1bits 0091
_PIE4bits 0094 ?_I2C2_Interrupt_Slave 0070
__end_of_Interrupt_Enable 07FE Read_Address@ret 0023
I2C1_Interrupt_Slave@overrun_error 0074 _PIR1bits 0011
_PIR4bits 0014 _I2C2_Read_Buffer 0D58
main@F3130 0057 _SSP1CON1 0215
_SSP1CON2 0216 _SSP2CON1 021D
_SSP2CON2 021E __size_of_I2C2_Configure_Master 0022
__end_of_I2C2_Configure_Master 0C4D _SSP1STAT 0214
_SSP2STAT 021C ?_Interrupt_Init 0070
_I2C2_Master_Recv 0CDA _I2C2_Master_Send 0DEC
_WPUCbits 020E ??_MCP23009_Init 0027
??_I2C1_Interrupt_Slave 0072 I2C1_Process_Receive@ret 0071
I2C2_Process_Receive@c 0070 ??_Pins_Init 0020
__size_of_I2C1_Interrupt_Master 0257 __end_of_I2C1_Interrupt_Master 0534
__ptext10 07FE __ptext11 0C2B
__ptext20 0B9B __ptext12 0E3F
__ptext21 001B __ptext13 0C0F
__ptext22 0BC5 __ptext14 0D9E
__ptext23 0E9A __ptext15 0CA7
__ptext24 0B91 __ptext16 0BF5
__ptext25 02DD __ptext18 0BDB
__ptext19 0534 _SSP1CON1bits 0215
_SSP1CON2bits 0216 I2C2_Interrupt_Slave@data_written_to_buffer 0075
I2C1_Interrupt_Slave@data_written_to_buffer 0075 _SSP2CON1bits 021D
_SSP2CON2bits 021E I2C1_Configure_Slave@addr 0021
__size_of_main 0071 ??_I2C2_Interrupt_Slave 0072
__size_of_I2C1_Process_Receive 000A _SSP1STATbits 0214
main@leds 0044 _SSP2STATbits 021C
?_I2C2_Interrupt_Handler 0070 _INTCONbits 000B
intlevel1 0000 _TLC59116_Write_All 074D
__size_of_I2C2_Get_Status 003E __CFG_CLKOUTEN$OFF 0000
?_TLC59116_Write_All 0070 _OSCCONbits 0099
I2C1_Init@data 0021 __size_of_I2C2_Process_Receive 000A
I2C2_Init@data 0021 __size_of_MCP23009_Query 0031
__end_of_I2C2_Interrupt_Handler 0BF5 ??_TLC59116_Write_All 0027
__end_of_I2C2_Read_Buffer 0D9E __size_of_I2C2_Interrupt_Master 02C2
__end_of_I2C2_Interrupt_Master 02DD __size_of_I2C1_Init 004E
__size_of_I2C2_Init 005B __end_of_I2C2_Master_Recv 0D12
__end_of_I2C2_Master_Send 0E3F ?_InterruptHandler 0070
__size_of_I2C1_Configure_Slave 001C ??_InterruptHandler 0078
?_Interrupt_Enable 0070 TLC59116_Write_All@buffer 0029