📄 dtmf2.lst
字号:
1096 .LM160:
1097 044e 60EC ldi r22,lo8(-64)
1098 0450 80E0 ldi r24,lo8(0)
1099 0452 5DD0 rcall lcdwrt
263:dtmf2.c **** lcdata ('1'); //write "19-"
1101 .LM161:
1102 0454 61E3 ldi r22,lo8(49)
1103 0456 81E0 ldi r24,lo8(1)
1104 0458 5AD0 rcall lcdwrt
264:dtmf2.c **** lcdata ('9');
1106 .LM162:
1107 045a 69E3 ldi r22,lo8(57)
1108 045c 81E0 ldi r24,lo8(1)
1109 045e 57D0 rcall lcdwrt
265:dtmf2.c **** lcdata ('-');
1111 .LM163:
1112 0460 6DE2 ldi r22,lo8(45)
1113 0462 81E0 ldi r24,lo8(1)
1114 0464 54D0 rcall lcdwrt
266:dtmf2.c **** lcdpos = 0; //Reset line position
1116 .LM164:
1117 0466 1092 0000 sts lcdpos,__zero_reg__
267:dtmf2.c ****
268:dtmf2.c **** eref = eepos; //set end of line 18 at end of eeprom
1119 .LM165:
1120 046a 8091 0000 lds r24,eepos
1121 046e 8093 0000 sts eref,r24
269:dtmf2.c **** esrl = 0;
1123 .LM166:
1124 0472 1092 0000 sts esrl,__zero_reg__
270:dtmf2.c **** lcdln = 19; //reset line numbner
1126 .LM167:
1127 0476 83E1 ldi r24,lo8(19)
1128 0478 8093 0000 sts lcdln,r24
1129 .L78:
271:dtmf2.c **** }
272:dtmf2.c **** lcdata (ldata); //Write digit to LCD
1131 .LM168:
1132 047c 6C2F mov r22,r28
1133 047e 81E0 ldi r24,lo8(1)
1134 0480 46D0 rcall lcdwrt
273:dtmf2.c **** lcdtemp[lcdpos] = ldata; //Store digit in ram
1136 .LM169:
1137 0482 8091 0000 lds r24,lcdpos
1138 0486 E82F mov r30,r24
1139 0488 FF27 clr r31
1140 048a E050 subi r30,lo8(-(lcdtemp))
1141 048c F040 sbci r31,hi8(-(lcdtemp))
1142 048e C083 st Z,r28
274:dtmf2.c **** lcdpos++;
1144 .LM170:
1145 0490 8F5F subi r24,lo8(-(1))
1146 0492 8093 0000 sts lcdpos,r24
275:dtmf2.c **** }
1148 .LM171:
1149 /* epilogue: frame size=0 */
1150 0496 CF91 pop r28
1151 0498 0895 ret
1152 /* epilogue end (size=2) */
1153 /* function updtlcd size 98 (95) */
1155 .Lscope9:
1158 .global line19
1160 line19:
276:dtmf2.c ****
277:dtmf2.c **** void line19(void) //restores Ln 19 before the scroll
278:dtmf2.c **** {
1162 .LM172:
1163 /* prologue: frame size=0 */
1164 /* prologue end (size=0) */
279:dtmf2.c **** lcdata ('1'); //Write "19-
1166 .LM173:
1167 049a 61E3 ldi r22,lo8(49)
1168 049c 81E0 ldi r24,lo8(1)
1169 049e 37D0 rcall lcdwrt
280:dtmf2.c **** lcdata ('9');
1171 .LM174:
1172 04a0 69E3 ldi r22,lo8(57)
1173 04a2 81E0 ldi r24,lo8(1)
1174 04a4 34D0 rcall lcdwrt
281:dtmf2.c **** lcdata ('-');
1176 .LM175:
1177 04a6 6DE2 ldi r22,lo8(45)
1178 04a8 81E0 ldi r24,lo8(1)
1179 04aa 31D0 rcall lcdwrt
282:dtmf2.c **** for (a=0;a<lcdpos;a++) { //loop until all digits have been restored
1181 .LM176:
1182 04ac 1092 0000 sts a,__zero_reg__
1183 04b0 8091 0000 lds r24,lcdpos
1184 04b4 8823 tst r24
1185 04b6 91F0 breq .L93
1186 .L91:
283:dtmf2.c **** lcdata (lcdtemp[a]); //restore LCD Line 19 from ram
1188 .LM177:
1189 04b8 8091 0000 lds r24,a
1190 04bc E82F mov r30,r24
1191 04be FF27 clr r31
1192 04c0 E050 subi r30,lo8(-(lcdtemp))
1193 04c2 F040 sbci r31,hi8(-(lcdtemp))
1194 04c4 6081 ld r22,Z
1195 04c6 81E0 ldi r24,lo8(1)
1196 04c8 22D0 rcall lcdwrt
1198 .LM178:
1199 04ca 8091 0000 lds r24,a
1200 04ce 8F5F subi r24,lo8(-(1))
1201 04d0 8093 0000 sts a,r24
1202 04d4 9091 0000 lds r25,lcdpos
1203 04d8 8917 cp r24,r25
1204 04da 70F3 brlo .L91
1205 .L93:
284:dtmf2.c **** }
285:dtmf2.c **** }
1207 .LM179:
1208 04dc 0895 ret
1209 /* epilogue: frame size=0 */
1210 /* epilogue: noreturn */
1211 /* epilogue end (size=0) */
1212 /* function line19 size 34 (34) */
1214 .Lscope10:
1218 .global fltr
1220 fltr:
286:dtmf2.c ****
287:dtmf2.c **** unsigned char fltr(char fdata) //Filters digits for 10,#, and *
288:dtmf2.c **** {
1222 .LM180:
1223 /* prologue: frame size=0 */
1224 /* prologue end (size=0) */
289:dtmf2.c **** if(fdata==0x0F) return (0x20); //correct for blank cell
1226 .LM181:
1227 04de 8F30 cpi r24,lo8(15)
1228 04e0 19F4 brne .L95
1229 04e2 80E2 ldi r24,lo8(32)
1230 04e4 90E0 ldi r25,hi8(32)
290:dtmf2.c **** if(fdata==0x0A) return (0x30); //correct for Zero from decoder
291:dtmf2.c **** if(fdata==0x0B) return (0x2A); //correct for * from decoder
292:dtmf2.c **** if(fdata==0x0C) return (0x23); //correct for # from decoder
293:dtmf2.c **** else return (fdata|0x30);
294:dtmf2.c **** }
1232 .LM182:
1233 04e6 0895 ret
1234 .L95:
1236 .LM183:
1237 04e8 8A30 cpi r24,lo8(10)
1238 04ea 19F4 brne .L96
1239 04ec 80E3 ldi r24,lo8(48)
1240 04ee 90E0 ldi r25,hi8(48)
1242 .LM184:
1243 04f0 0895 ret
1244 .L96:
1246 .LM185:
1247 04f2 8B30 cpi r24,lo8(11)
1248 04f4 19F4 brne .L97
1249 04f6 8AE2 ldi r24,lo8(42)
1250 04f8 90E0 ldi r25,hi8(42)
1252 .LM186:
1253 04fa 0895 ret
1254 .L97:
1256 .LM187:
1257 04fc 8C30 cpi r24,lo8(12)
1258 04fe 19F4 brne .L98
1259 0500 83E2 ldi r24,lo8(35)
1260 0502 90E0 ldi r25,hi8(35)
1262 .LM188:
1263 0504 0895 ret
1264 .L98:
1266 .LM189:
1267 0506 8063 ori r24,lo8(48)
1268 0508 9927 clr r25
1270 .LM190:
1271 050a 0895 ret
1272 /* epilogue: frame size=0 */
1273 050c 0895 ret
1274 /* epilogue end (size=1) */
1275 /* function fltr size 24 (23) */
1277 .Lscope11:
1282 .global lcdwrt
1284 lcdwrt:
295:dtmf2.c ****
296:dtmf2.c **** void lcdwrt (char dt, char data) // Writes Byte to LCD dt=0 Control dt=1 data
297:dtmf2.c **** {
1286 .LM191:
1287 /* prologue: frame size=2 */
1288 050e CF93 push r28
1289 0510 DF93 push r29
1290 0512 CDB7 in r28,__SP_L__
1291 0514 DEB7 in r29,__SP_H__
1292 0516 2297 sbiw r28,2
1293 0518 0FB6 in __tmp_reg__,__SREG__
1294 051a F894 cli
1295 051c DEBF out __SP_H__,r29
1296 051e 0FBE out __SREG__,__tmp_reg__
1297 0520 CDBF out __SP_L__,r28
1298 /* prologue end (size=10) */
1299 0522 982F mov r25,r24
298:dtmf2.c **** volatile unsigned int x;
299:dtmf2.c **** DDRB = 0xFF; //Set PORTB as Output
1301 .LM192:
1302 .LBB10:
1303 0524 8FEF ldi r24,lo8(-1)
1304 0526 87BB out 55-0x20,r24
300:dtmf2.c **** if (dt == 1) sbi(PORTD,5); //Data PD5=1 or Control PD5=0
1306 .LM193:
1307 0528 9130 cpi r25,lo8(1)
1308 052a 11F4 brne .L101
1309 052c 959A sbi 50-0x20,5
1310 052e 01C0 rjmp .L102
1311 .L101:
301:dtmf2.c **** else cbi(PORTD,5);
1313 .LM194:
1314 0530 9598 cbi 50-0x20,5
1315 .L102:
302:dtmf2.c **** PORTB = data; //Send data byte (PORTB)
1317 .LM195:
1318 0532 68BB out 56-0x20,r22
303:dtmf2.c **** for (x=0;x < 50;x++); //Delay 250uS
1320 .LM196:
1321 0534 1982 std Y+1,__zero_reg__
1322 0536 1A82 std Y+2,__zero_reg__
1323 0538 8981 ldd r24,Y+1
1324 053a 9A81 ldd r25,Y+2
1325 053c C297 sbiw r24,50
1326 053e 48F4 brsh .L119
1327 .L107:
1328 0540 8981 ldd r24,Y+1
1329 0542 9A81 ldd r25,Y+2
1330 0544 0196 adiw r24,1
1331 0546 8983 std Y+1,r24
1332 0548 9A83 std Y+2,r25
1333 054a 8981 ldd r24,Y+1
1334 054c 9A81 ldd r25,Y+2
1335 054e C297 sbiw r24,50
1336 0550 B8F3 brlo .L107
1337 .L119:
304:dtmf2.c **** sbi(PORTD,6); //Set Strobe
1339 .LM197:
1340 0552 969A sbi 50-0x20,6
305:dtmf2.c **** for (x=0;x < 50;x++); //Delay 250uS
1342 .LM198:
1343 0554 1982 std Y+1,__zero_reg__
1344 0556 1A82 std Y+2,__zero_reg__
1345 0558 8981 ldd r24,Y+1
1346 055a 9A81 ldd r25,Y+2
1347 055c C297 sbiw r24,50
1348 055e 48F4 brsh .L121
1349 .L112:
1350 0560 8981 ldd r24,Y+1
1351 0562 9A81 ldd r25,Y+2
1352 0564 0196 adiw r24,1
1353 0566 8983 std Y+1,r24
1354 0568 9A83 std Y+2,r25
1355 056a 8981 ldd r24,Y+1
1356 056c 9A81 ldd r25,Y+2
1357 056e C297 sbiw r24,50
1358 0570 B8F3 brlo .L112
1359 .L121:
306:dtmf2.c **** cbi(PORTD,6); //Clear Strobe
1361 .LM199:
1362 0572 9698 cbi 50-0x20,6
307:dtmf2.c **** for (x=0;x < 200;x++); //Delay 1000uS
1364 .LM200:
1365 0574 1982 std Y+1,__zero_reg__
1366 0576 1A82 std Y+2,__zero_reg__
1367 0578 8981 ldd r24,Y+1
1368 057a 9A81 ldd r25,Y+2
1369 057c 883C cpi r24,200
1370 057e 9105 cpc r25,__zero_reg__
1371 0580 50F4 brsh .L123
1372 .L117:
1373 0582 8981 ldd r24,Y+1
1374 0584 9A81 ldd r25,Y+2
1375 0586 0196 adiw r24,1
1376 0588 8983 std Y+1,r24
1377 058a 9A83 std Y+2,r25
1378 058c 8981 ldd r24,Y+1
1379 058e 9A81 ldd r25,Y+2
1380 0590 883C cpi r24,200
1381 0592 9105 cpc r25,__zero_reg__
1382 0594 B0F3 brlo .L117
1383 .L123:
308:dtmf2.c **** DDRB = 0x00; //Set PORTB as Input
1385 .LM201:
1386 0596 17BA out 55-0x20,__zero_reg__
309:dtmf2.c **** }
1388 .LM202:
1389 .LBE10:
1390 /* epilogue: frame size=2 */
1391 0598 2296 adiw r28,2
1392 059a 0FB6 in __tmp_reg__,__SREG__
1393 059c F894 cli
1394 059e DEBF out __SP_H__,r29
1395 05a0 0FBE out __SREG__,__tmp_reg__
1396 05a2 CDBF out __SP_L__,r28
1397 05a4 DF91 pop r29
1398 05a6 CF91 pop r28
1399 05a8 0895 ret
1400 /* epilogue end (size=9) */
1401 /* function lcdwrt size 82 (63) */
1406 .Lscope12:
1408 .comm lcdtemp,13,1
1409 .comm eepos,1,1
1410 .comm lcdpos,1,1
1411 .comm lcdln,1,1
1412 .comm eref,1,1
1413 .comm esrl,1,1
1414 .comm redraw,1,1
1415 .comm a,1,1
1416 .comm uptimeH,1,1
1417 .comm uptimeL,1,1
1418 .comm dntimeH,1,1
1419 .comm dntimeL,1,1
1420 .comm up,1,1
1421 .comm dn,1,1
1436 .text
1438 Letext:
1439 /* File "dtmf2.c": code 749 = 0x02ed ( 628), prologues 59, epilogues 62 */
DEFINED SYMBOLS
*ABS*:00000000 dtmf2.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:77 .progmem.data:00000000 __c.0
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:83 .text:00000000 main
*COM*:00000001 eepos
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:794 .text:00000318 eread
*COM*:00000001 eref
*COM*:00000001 lcdln
*COM*:00000001 redraw
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:1284 .text:0000050e lcdwrt
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:718 .text:000002f6 TXbyte
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:606 .text:0000029e UART_PrintfProgStr
*COM*:00000001 a
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:1220 .text:000004de fltr
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:265 .text:000000c4 __vector_2
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:1006 .text:000003d6 updtlcd
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:839 .text:0000033a store
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:366 .text:0000012c __vector_6
*COM*:00000001 uptimeL
*COM*:00000001 uptimeH
*COM*:00000001 up
*COM*:00000001 esrl
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:923 .text:0000038a trnsfr
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:1160 .text:0000049a line19
*COM*:00000001 dntimeL
*COM*:00000001 dntimeH
*COM*:00000001 dn
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:745 .text:000002fe ewrite
*COM*:00000001 lcdpos
*COM*:0000000d lcdtemp
C:\DOCUME~1\JONATH~1\LOCALS~1\Temp/ccEvaaaa.s:1438 .text:000005aa Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -