⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtmf2.lst

📁 使用2X16的液晶(国内型号叫1602B)。可以将234个来电存在EEPROM中
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -