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

📄 main.lst

📁 avr单片机的一些实际应用源码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 613               	.LM78:
 614               	/* epilogue: frame size=0 */
 615 0180 0895      		ret
 616               	/* epilogue end (size=1) */
 617               	/* function RtcReadRAM size 4 (3) */
 623               	.global	RtcWriteRAM
 625               	RtcWriteRAM:
 175:main.c        **** //写DS1307用户RAM
 176:main.c        **** uchar RtcWriteRAM(uchar addr,uchar *buf,uchar len)
 177:main.c        **** {
 627               	.LM79:
 628               	/* prologue: frame size=0 */
 629               	/* prologue end (size=0) */
 178:main.c        **** 	addr+=8;
 631               	.LM80:
 632 0182 885F      		subi r24,lo8(-(8))
 179:main.c        **** 	return rtc_write(addr,buf,len);
 634               	.LM81:
 635 0184 96DF      		rcall rtc_write
 636 0186 9927      		clr r25
 180:main.c        **** }
 638               	.LM82:
 639               	/* epilogue: frame size=0 */
 640 0188 0895      		ret
 641               	/* epilogue end (size=1) */
 642               	/* function RtcWriteRAM size 4 (3) */
 646               	.global	byte_bintobcd
 648               	byte_bintobcd:
 181:main.c        **** 
 182:main.c        **** uchar byte_bintobcd(uchar bin)
 183:main.c        **** {
 650               	.LM83:
 651               	/* prologue: frame size=0 */
 652               	/* prologue end (size=0) */
 184:main.c        **** 	uchar ret;
 185:main.c        **** 	bin&=0x7f;
 654               	.LM84:
 655               	.LBB8:
 656 018a 8F77      		andi r24,lo8(127)
 186:main.c        **** 	bin%=100;
 658               	.LM85:
 659 018c 64E6      		ldi r22,lo8(100)
 660 018e 00D0      		rcall __udivmodqi4
 661 0190 392F      		mov r19,r25
 187:main.c        **** 	ret=bin/10;
 663               	.LM86:
 664 0192 4AE0      		ldi r20,lo8(10)
 665 0194 892F      		mov r24,r25
 666 0196 642F      		mov r22,r20
 667 0198 00D0      		rcall __udivmodqi4
 668 019a 282F      		mov r18,r24
 188:main.c        **** 	ret <<=4;
 670               	.LM87:
 671 019c 2295      		swap r18
 672 019e 207F      		andi r18,0xf0
 189:main.c        **** 	ret|=bin%10;
 674               	.LM88:
 675 01a0 832F      		mov r24,r19
 676 01a2 00D0      		rcall __udivmodqi4
 677 01a4 292B      		or r18,r25
 190:main.c        **** 	return ret;
 679               	.LM89:
 680 01a6 822F      		mov r24,r18
 681 01a8 9927      		clr r25
 191:main.c        **** }
 683               	.LM90:
 684               	.LBE8:
 685               	/* epilogue: frame size=0 */
 686 01aa 0895      		ret
 687               	/* epilogue end (size=1) */
 688               	/* function byte_bintobcd size 17 (16) */
 695               	.global	byte_bcdtobin
 697               	byte_bcdtobin:
 192:main.c        **** uchar byte_bcdtobin(uchar bcd)
 193:main.c        **** {
 699               	.LM91:
 700               	/* prologue: frame size=0 */
 701               	/* prologue end (size=0) */
 194:main.c        **** 	uchar ret;
 195:main.c        **** 	ret=bcd & 0x0f;
 703               	.LM92:
 704 01ac 282F      		mov r18,r24
 705               	.LBB9:
 706 01ae 2F70      		andi r18,lo8(15)
 196:main.c        **** 	ret+=(bcd>>4)*10;
 708               	.LM93:
 709 01b0 8295      		swap r24
 710 01b2 8F70      		andi r24,0x0f
 711 01b4 9AE0      		ldi r25,lo8(10)
 712 01b6 899F      		mul r24,r25
 713 01b8 C001      		movw r24,r0
 714 01ba 1124      		clr r1
 715 01bc 280F      		add r18,r24
 197:main.c        **** 	return ret;		
 717               	.LM94:
 718 01be 822F      		mov r24,r18
 719 01c0 9927      		clr r25
 198:main.c        **** }
 721               	.LM95:
 722               	.LBE9:
 723               	/* epilogue: frame size=0 */
 724 01c2 0895      		ret
 725               	/* epilogue end (size=1) */
 726               	/* function byte_bcdtobin size 12 (11) */
 732               	.global	RtcBinToBCD
 734               	RtcBinToBCD:
 199:main.c        **** 
 200:main.c        **** //将二进制格式缓冲区(g_aTimeBin)内容转换成BCD格式后保存到BCD格式缓冲区(g_aTimeBuf)
 201:main.c        **** void RtcBinToBCD()
 202:main.c        **** {
 736               	.LM96:
 737               	/* prologue: frame size=0 */
 738 01c4 FF92      		push r15
 739 01c6 0F93      		push r16
 740 01c8 1F93      		push r17
 741 01ca CF93      		push r28
 742 01cc DF93      		push r29
 743               	/* prologue end (size=5) */
 203:main.c        **** 	uchar i;
 204:main.c        **** 	g_aTimeBin[0]&=0x7f;
 745               	.LM97:
 746               	.LBB10:
 747 01ce 8091 0000 		lds r24,g_aTimeBin
 748 01d2 8F77      		andi r24,lo8(127)
 749 01d4 8093 0000 		sts g_aTimeBin,r24
 205:main.c        **** 	g_aTimeBin[1]&=0x7f;
 751               	.LM98:
 752 01d8 8091 0000 		lds r24,g_aTimeBin+1
 753 01dc 8F77      		andi r24,lo8(127)
 754 01de 8093 0000 		sts g_aTimeBin+1,r24
 206:main.c        **** 	g_aTimeBin[2]&=0x3f;
 756               	.LM99:
 757 01e2 8091 0000 		lds r24,g_aTimeBin+2
 758 01e6 8F73      		andi r24,lo8(63)
 759 01e8 8093 0000 		sts g_aTimeBin+2,r24
 207:main.c        **** 	g_aTimeBin[3]&=0x07;
 761               	.LM100:
 762 01ec 8091 0000 		lds r24,g_aTimeBin+3
 763 01f0 8770      		andi r24,lo8(7)
 764 01f2 8093 0000 		sts g_aTimeBin+3,r24
 208:main.c        **** 	g_aTimeBin[4]&=0x3f;
 766               	.LM101:
 767 01f6 8091 0000 		lds r24,g_aTimeBin+4
 768 01fa 8F73      		andi r24,lo8(63)
 769 01fc 8093 0000 		sts g_aTimeBin+4,r24
 209:main.c        **** 	g_aTimeBin[5]&=0x1f;	
 771               	.LM102:
 772 0200 8091 0000 		lds r24,g_aTimeBin+5
 773 0204 8F71      		andi r24,lo8(31)
 774 0206 8093 0000 		sts g_aTimeBin+5,r24
 210:main.c        **** 	g_aTimeBin[6]&=0xff;
 211:main.c        **** 	
 212:main.c        **** 	for(i=0;i<7;i++)
 776               	.LM103:
 777 020a FF24      		clr r15
 778 020c 00E0      		ldi r16,lo8(g_aTimeBuf)
 779 020e 10E0      		ldi r17,hi8(g_aTimeBuf)
 780 0210 C0E0      		ldi r28,lo8(g_aTimeBin)
 781 0212 D0E0      		ldi r29,hi8(g_aTimeBin)
 782               	.L69:
 213:main.c        **** 		g_aTimeBuf[i]=byte_bintobcd(g_aTimeBin[i]);
 784               	.LM104:
 785 0214 8991      		ld r24,Y+
 786 0216 B9DF      		rcall byte_bintobcd
 787 0218 F801      		movw r30,r16
 788 021a 8193      		st Z+,r24
 789 021c 8F01      		movw r16,r30
 791               	.LM105:
 792 021e F394      		inc r15
 793 0220 F6E0      		ldi r31,lo8(6)
 794 0222 FF15      		cp r31,r15
 795 0224 B8F7      		brsh .L69
 214:main.c        **** }
 797               	.LM106:
 798               	.LBE10:
 799               	/* epilogue: frame size=0 */
 800 0226 DF91      		pop r29
 801 0228 CF91      		pop r28
 802 022a 1F91      		pop r17
 803 022c 0F91      		pop r16
 804 022e FF90      		pop r15
 805 0230 0895      		ret
 806               	/* epilogue end (size=6) */
 807               	/* function RtcBinToBCD size 55 (44) */
 813               	.global	RtcBCDToBin
 815               	RtcBCDToBin:
 215:main.c        **** 
 216:main.c        **** //将BCD格式缓冲区(g_aTimeBuf)内容转换成二进制格式后保存到二进制格式缓冲区(g_aTimeBin)
 217:main.c        **** void RtcBCDToBin()
 218:main.c        **** {
 817               	.LM107:
 818               	/* prologue: frame size=0 */
 819 0232 FF92      		push r15
 820 0234 0F93      		push r16
 821 0236 1F93      		push r17
 822 0238 CF93      		push r28
 823 023a DF93      		push r29
 824               	/* prologue end (size=5) */
 219:main.c        **** 	uchar i;
 220:main.c        **** 	for(i=0;i<7;i++)
 826               	.LM108:
 827               	.LBB11:
 828 023c FF24      		clr r15
 829 023e 00E0      		ldi r16,lo8(g_aTimeBin)
 830 0240 10E0      		ldi r17,hi8(g_aTimeBin)
 831 0242 C0E0      		ldi r28,lo8(g_aTimeBuf)
 832 0244 D0E0      		ldi r29,hi8(g_aTimeBuf)
 833               	.L77:
 221:main.c        **** 		g_aTimeBin[i]=byte_bcdtobin(g_aTimeBuf[i]);
 835               	.LM109:
 836 0246 8991      		ld r24,Y+
 837 0248 B1DF      		rcall byte_bcdtobin
 838 024a F801      		movw r30,r16
 839 024c 8193      		st Z+,r24
 840 024e 8F01      		movw r16,r30
 842               	.LM110:
 843 0250 F394      		inc r15
 844 0252 F6E0      		ldi r31,lo8(6)
 845 0254 FF15      		cp r31,r15
 846 0256 B8F7      		brsh .L77
 222:main.c        **** }
 848               	.LM111:
 849               	.LBE11:
 850               	/* epilogue: frame size=0 */
 851 0258 DF91      		pop r29
 852 025a CF91      		pop r28
 853 025c 1F91      		pop r17
 854 025e 0F91      		pop r16
 855 0260 FF90      		pop r15
 856 0262 0895      		ret
 857               	/* epilogue end (size=6) */
 858               	/* function RtcBCDToBin size 25 (14) */
 866               	.global	RtcSetSQWOutput
 868               	RtcSetSQWOutput:
 223:main.c        **** 
 224:main.c        **** //写DS1307配置字节
 225:main.c        **** void RtcSetSQWOutput(uchar en,uchar level)
 226:main.c        **** {
 870               	.LM112:
 871               	/* prologue: frame size=1 */
 872 0264 CF93      		push r28
 873 0266 DF93      		push r29
 874 0268 CDB7      		in r28,__SP_L__
 875 026a DEB7      		in r29,__SP_H__
 876 026c 2197      		sbiw r28,1
 877 026e 0FB6      		in __tmp_reg__,__SREG__
 878 0270 F894      		cli
 879 0272 DEBF      		out __SP_H__,r29
 880 0274 0FBE      		out __SREG__,__tmp_reg__
 881 0276 CDBF      		out __SP_L__,r28
 882               	/* prologue end (size=10) */
 227:main.c        **** 	//bEn:方波输出允许 TRUE 有效 level:如果输出禁止 OUT口的逻辑电平
 228:main.c        **** 	uchar c=0;
 884               	.LM113:
 885 0278 1982      		std Y+1,__zero_reg__
 229:main.c        **** 	if(en)	//enable
 887               	.LM114:
 888               	.LBB12:
 889 027a 8823      		tst r24
 890 027c 11F0      		breq .L81
 230:main.c        **** 		c=0x10;
 892               	.LM115:
 893 027e 80E1      		ldi r24,lo8(16)
 894 0280 03C0      		rjmp .L84
 895               	.L81:
 231:main.c        **** 	else	//disable
 232:main.c        **** 	{
 233:main.c        **** 		if(level)
 897               	.LM116:
 898 0282 6623      		tst r22
 899 0284 11F0      		breq .L82
 234:main.c        **** 			c=0x80;
 901               	.LM117:
 902 0286 80E8      		ldi r24,lo8(-128)
 903               	.L84:
 904 0288 8983      		std Y+1,r24
 905               	.L82:
 235:main.c        **** 	}
 236:main.c        **** 	rtc_write(7,&c,1);
 907               	.LM118:
 908 028a 41E0      		ldi r20,lo8(1)
 909 028c BE01      		movw r22,r28
 910 028e 6F5F      		subi r22,lo8(-(1))
 911 0290 7F4F      		sbci r23,hi8(-(1))
 912 0292 87E0      		ldi r24,lo8(7)
 913 0294 0EDF      		rcall rtc_write
 237:main.c        **** }
 915               	.LM119:
 916               	.LBE12:
 917               	/* epilogue: frame size=1 */
 918 0296 2196      		adiw r28,1
 919 0298 0FB6      		in __tmp_reg__,__SREG__
 920 029a F894      		cli
 921 029c DEBF      		out __SP_H__,r29
 922 029e 0FBE      		out __SREG__,__tmp_reg__
 923 02a0 CDBF      		out __SP_L__,r28
 924 02a2 DF91      		pop r29
 925 02a4 CF91      		pop r28
 926 02a6 0895      		ret
 927               	/* epilogue end (size=9) */
 928               	/* function RtcSetSQWOutput size 34 (15) */
 933               		.section	.progmem.data,"a",@progbits
 936               	__c.0:
 937 0000 CAE4 C8EB 		.string	"\312\344\310\353\303\374\301\356\243\272g - \264\362\323\241\310\325\300\372/\312\261\326
 937      C3FC C1EE 
 937      A3BA 6720 
 937      2D20 B4F2 
 937      D3A1 C8D5 
 940               	__c.1:
 941 003e B5B1 C7B0 		.string	"\265\261\307\260\310\325\300\372/\312\261\326\323\243\272%d\304\352%d\324\302%d\310\325 \
 941      C8D5 C0FA 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -