📄 p18_i2c.lst
字号:
00011a 0100 MOVLB 0x0 _asm C:\mcc18\src\traditional\startup\c018i.c
00011c 0009 TBLRDPOSTINC movlb data_ptr C:\mcc18\src\traditional\startup\c018i.c
00011e 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000120 6f85 MOVWF 0x85,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
000122 0009 TBLRDPOSTINC movwf curr_entry, 1 C:\mcc18\src\traditional\startup\c018i.c
000124 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000126 6f86 MOVWF 0x86,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
movwf curr_entry+1, 1 C:\mcc18\src\traditional\startup\c018i.c
_endasm C:\mcc18\src\traditional\startup\c018i.c
//while (curr_entry) C:\mcc18\src\traditional\startup\c018i.c
//{ C:\mcc18\src\traditional\startup\c018i.c
test: C:\mcc18\src\traditional\startup\c018i.c
000128 e103 BNZ 0x130 _asm C:\mcc18\src\traditional\startup\c018i.c
00012a 6785 TSTFSZ 0x85,0x1 bnz 3 C:\mcc18\src\traditional\startup\c018i.c
00012c d001 BRA 0x130 tstfsz curr_entry, 1 C:\mcc18\src\traditional\startup\c018i.c
bra 1 C:\mcc18\src\traditional\startup\c018i.c
00012e d03d BRA 0x1aa _endasm C:\mcc18\src\traditional\startup\c018i.c
goto done; C:\mcc18\src\traditional\startup\c018i.c
/* Count down so we only have to look up the data in _cinit C:\mcc18\src\traditional\startup\c018i.c
* once. C:\mcc18\src\traditional\startup\c018i.c
* C:\mcc18\src\traditional\startup\c018i.c
* At this point we know that TBLPTR points to the top of the current C:\mcc18\src\traditional\startup\c018i.c
* entry in _cinit, so we can just start reading the from, to, and C:\mcc18\src\traditional\startup\c018i.c
* size values. C:\mcc18\src\traditional\startup\c018i.c
*/ C:\mcc18\src\traditional\startup\c018i.c
_asm C:\mcc18\src\traditional\startup\c018i.c
000130 0009 TBLRDPOSTINC /* read the source address */ C:\mcc18\src\traditional\startup\c018i.c
000132 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000134 6f80 MOVWF 0x80,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
000136 0009 TBLRDPOSTINC movwf prom, 1 C:\mcc18\src\traditional\startup\c018i.c
000138 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
00013a 6f81 MOVWF 0x81,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
00013c 0009 TBLRDPOSTINC movwf prom+1, 1 C:\mcc18\src\traditional\startup\c018i.c
00013e 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000140 6f82 MOVWF 0x82,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
movwf prom+2, 1 C:\mcc18\src\traditional\startup\c018i.c
000142 0009 TBLRDPOSTINC /* skip a byte since it's stored as a 32bit int */ C:\mcc18\src\traditional\startup\c018i.c
tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000144 0009 TBLRDPOSTINC /* read the destination address directly into FSR0 */ C:\mcc18\src\traditional\startup\c018i.c
000146 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000148 6ee9 MOVWF 0xe9,0x0 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
00014a 0009 TBLRDPOSTINC movwf FSR0L, 0 C:\mcc18\src\traditional\startup\c018i.c
00014c 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
00014e 6eea MOVWF 0xea,0x0 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
movwf FSR0H, 0 C:\mcc18\src\traditional\startup\c018i.c
000150 0009 TBLRDPOSTINC /* skip two bytes since it's stored as a 32bit int */ C:\mcc18\src\traditional\startup\c018i.c
000152 0009 TBLRDPOSTINC tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000154 0009 TBLRDPOSTINC /* read the destination address directly into FSR0 */ C:\mcc18\src\traditional\startup\c018i.c
000156 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
000158 6f83 MOVWF 0x83,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
00015a 0009 TBLRDPOSTINC movwf curr_byte, 1 C:\mcc18\src\traditional\startup\c018i.c
00015c 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
00015e 6f84 MOVWF 0x84,0x1 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
movwf curr_byte+1, 1 C:\mcc18\src\traditional\startup\c018i.c
000160 0009 TBLRDPOSTINC /* skip two bytes since it's stored as a 32bit int */ C:\mcc18\src\traditional\startup\c018i.c
000162 0009 TBLRDPOSTINC tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
_endasm C:\mcc18\src\traditional\startup\c018i.c
//prom = data_ptr->from; C:\mcc18\src\traditional\startup\c018i.c
//FSR0 = data_ptr->to; C:\mcc18\src\traditional\startup\c018i.c
//curr_byte = (unsigned short) data_ptr->size; C:\mcc18\src\traditional\startup\c018i.c
/* the table pointer now points to the next entry. Save it C:\mcc18\src\traditional\startup\c018i.c
* off since we'll be using the table pointer to do the copying C:\mcc18\src\traditional\startup\c018i.c
* for the entry. C:\mcc18\src\traditional\startup\c018i.c
000164 cff6 MOVFF 0xff6,0x87 */ C:\mcc18\src\traditional\startup\c018i.c
000166 f087
000168 cff7 MOVFF 0xff7,0x88
00016a f088
00016c cff8 MOVFF 0xff8,0x89
00016e f089
data_ptr = TBLPTR; C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
000170 c080 MOVFF 0x80,0xff6 /* now assign the source address to the table pointer */ C:\mcc18\src\traditional\startup\c018i.c
000172 fff6
000174 c081 MOVFF 0x81,0xff7
000176 fff7
000178 c082 MOVFF 0x82,0xff8
00017a fff8
TBLPTR = prom; C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
/* do the copy loop */ C:\mcc18\src\traditional\startup\c018i.c
_asm C:\mcc18\src\traditional\startup\c018i.c
00017c 0100 MOVLB 0x0 // determine if we have any more bytes to copy C:\mcc18\src\traditional\startup\c018i.c
00017e 5383 MOVF 0x83,0x1,0x1 movlb curr_byte C:\mcc18\src\traditional\startup\c018i.c
movf curr_byte, 1, 1 C:\mcc18\src\traditional\startup\c018i.c
000180 e102 BNZ 0x186 copy_loop: C:\mcc18\src\traditional\startup\c018i.c
000182 5384 MOVF 0x84,0x1,0x1 bnz 2 // copy_one_byte C:\mcc18\src\traditional\startup\c018i.c
000184 e007 BZ 0x194 movf curr_byte + 1, 1, 1 C:\mcc18\src\traditional\startup\c018i.c
bz 7 // done_copying C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
000186 0009 TBLRDPOSTINC copy_one_byte: C:\mcc18\src\traditional\startup\c018i.c
000188 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
00018a 6eee MOVWF 0xee,0x0 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
movwf POSTINC0, 0 C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
00018c 0783 DECF 0x83,0x1,0x1 // decrement byte counter C:\mcc18\src\traditional\startup\c018i.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -