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

📄 main.lst

📁 我学习AVR的代码例子
💻 LST
📖 第 1 页 / 共 4 页
字号:
 642               	.L60:
 643 01b6 81E0      		ldi r24,lo8(1)
 644 01b8 90E0      		ldi r25,hi8(1)
 645 01ba 0895      		ret
 646               	.L57:
 213:main.c        **** 	Stop();//I2C停止
 648               	.LM76:
 649 01bc 84E9      		ldi r24,lo8(-108)
 650 01be 86BF      		out 86-0x20,r24
 214:main.c        **** 	delay_ms(10);//延时等EEPROM写完
 652               	.LM77:
 653 01c0 8AE0      		ldi r24,lo8(10)
 654 01c2 90E0      		ldi r25,hi8(10)
 655 01c4 0E94 0000 		call delay_ms
 215:main.c        **** 	return 0;
 657               	.LM78:
 658 01c8 80E0      		ldi r24,lo8(0)
 659 01ca 90E0      		ldi r25,hi8(0)
 216:main.c        **** }
 661               	.LM79:
 662 01cc 0895      		ret
 663               	/* epilogue: frame size=0 */
 664 01ce 0895      		ret
 665               	/* epilogue end (size=1) */
 666               	/* function i2c_Write size 66 (65) */
 668               	.Lscope12:
 671               	.global	i2c_Read
 673               	i2c_Read:
 217:main.c        **** unsigned char i2c_Read(unsigned char RomAddress) 
 218:main.c        **** {
 675               	.LM80:
 676               	/* prologue: frame size=0 */
 677               	/* prologue end (size=0) */
 678 01d0 282F      		mov r18,r24
 219:main.c        **** 	unsigned char temp;
 220:main.c        **** 	Start();//I2C启动
 680               	.LM81:
 681 01d2 84EA      		ldi r24,lo8(-92)
 682 01d4 86BF      		out 86-0x20,r24
 683               	.L62:
 221:main.c        **** 	Wait();
 685               	.LM82:
 686 01d6 06B6      		in __tmp_reg__,86-0x20
 687 01d8 07FE      		sbrs __tmp_reg__,7
 688 01da FDCF      		rjmp .L62
 222:main.c        **** 	if (TestAck()!=START) return 0;//ACK
 690               	.LM83:
 691 01dc 81B1      		in r24,33-0x20
 692 01de 9927      		clr r25
 693 01e0 887F      		andi r24,lo8(248)
 694 01e2 9070      		andi r25,hi8(248)
 695 01e4 0897      		sbiw r24,8
 696 01e6 09F0      		breq .+2
 697 01e8 3EC0      		rjmp .L90
 223:main.c        **** 	Write8Bit(wr_device_add);//写I2C从器件地址和写方式
 699               	.LM84:
 700 01ea 80ED      		ldi r24,lo8(-48)
 701 01ec 83B9      		out 35-0x20,r24
 702 01ee 84E8      		ldi r24,lo8(-124)
 703 01f0 86BF      		out 86-0x20,r24
 704               	.L66:
 224:main.c        **** 	Wait();
 706               	.LM85:
 707 01f2 06B6      		in __tmp_reg__,86-0x20
 708 01f4 07FE      		sbrs __tmp_reg__,7
 709 01f6 FDCF      		rjmp .L66
 225:main.c        **** 	if (TestAck()!=MT_SLA_ACK) return 0;//ACK
 711               	.LM86:
 712 01f8 81B1      		in r24,33-0x20
 713 01fa 9927      		clr r25
 714 01fc 887F      		andi r24,lo8(248)
 715 01fe 9070      		andi r25,hi8(248)
 716 0200 4897      		sbiw r24,24
 717 0202 89F5      		brne .L90
 226:main.c        **** 	Write8Bit(RomAddress);//写ROM地址
 719               	.LM87:
 720 0204 23B9      		out 35-0x20,r18
 721 0206 84E8      		ldi r24,lo8(-124)
 722 0208 86BF      		out 86-0x20,r24
 723               	.L70:
 227:main.c        **** 	Wait();
 725               	.LM88:
 726 020a 06B6      		in __tmp_reg__,86-0x20
 727 020c 07FE      		sbrs __tmp_reg__,7
 728 020e FDCF      		rjmp .L70
 228:main.c        **** 	if (TestAck()!=MT_DATA_ACK) return 0;
 730               	.LM89:
 731 0210 81B1      		in r24,33-0x20
 732 0212 9927      		clr r25
 733 0214 887F      		andi r24,lo8(248)
 734 0216 9070      		andi r25,hi8(248)
 735 0218 8897      		sbiw r24,40
 736 021a 29F5      		brne .L90
 229:main.c        **** 	Start();//I2C重新启动
 738               	.LM90:
 739 021c 84EA      		ldi r24,lo8(-92)
 740 021e 86BF      		out 86-0x20,r24
 741               	.L74:
 230:main.c        **** 	Wait();
 743               	.LM91:
 744 0220 06B6      		in __tmp_reg__,86-0x20
 745 0222 07FE      		sbrs __tmp_reg__,7
 746 0224 FDCF      		rjmp .L74
 231:main.c        **** 	if (TestAck()!=RE_START)  return 0;
 748               	.LM92:
 749 0226 81B1      		in r24,33-0x20
 750 0228 9927      		clr r25
 751 022a 887F      		andi r24,lo8(248)
 752 022c 9070      		andi r25,hi8(248)
 753 022e 4097      		sbiw r24,16
 754 0230 D1F4      		brne .L90
 232:main.c        **** 	Write8Bit(rd_device_add);//写I2C从器件地址和读方式
 756               	.LM93:
 757 0232 81ED      		ldi r24,lo8(-47)
 758 0234 83B9      		out 35-0x20,r24
 759 0236 84E8      		ldi r24,lo8(-124)
 760 0238 86BF      		out 86-0x20,r24
 761               	.L78:
 233:main.c        **** 	Wait();
 763               	.LM94:
 764 023a 06B6      		in __tmp_reg__,86-0x20
 765 023c 07FE      		sbrs __tmp_reg__,7
 766 023e FDCF      		rjmp .L78
 234:main.c        **** 	if(TestAck()!=MR_SLA_ACK)  return 0;//ACK
 768               	.LM95:
 769 0240 81B1      		in r24,33-0x20
 770 0242 9927      		clr r25
 771 0244 887F      		andi r24,lo8(248)
 772 0246 9070      		andi r25,hi8(248)
 773 0248 8034      		cpi r24,64
 774 024a 9105      		cpc r25,__zero_reg__
 775 024c 61F4      		brne .L90
 235:main.c        **** 	Twi();//启动主I2C读方式
 777               	.LM96:
 778 024e 84E8      		ldi r24,lo8(-124)
 779 0250 86BF      		out 86-0x20,r24
 780               	.L82:
 236:main.c        **** 	Wait();
 782               	.LM97:
 783 0252 06B6      		in __tmp_reg__,86-0x20
 784 0254 07FE      		sbrs __tmp_reg__,7
 785 0256 FDCF      		rjmp .L82
 237:main.c        **** 	if(TestAck()!=MR_DATA_NOACK) return 0;//ACK
 787               	.LM98:
 788 0258 81B1      		in r24,33-0x20
 789 025a 9927      		clr r25
 790 025c 887F      		andi r24,lo8(248)
 791 025e 9070      		andi r25,hi8(248)
 792 0260 8835      		cpi r24,88
 793 0262 9105      		cpc r25,__zero_reg__
 794 0264 19F0      		breq .L85
 795               	.L90:
 796 0266 80E0      		ldi r24,lo8(0)
 797 0268 90E0      		ldi r25,hi8(0)
 798 026a 0895      		ret
 799               	.L85:
 238:main.c        **** 	temp=TWDR;//读取I2C接收数据
 801               	.LM99:
 802 026c 93B1      		in r25,35-0x20
 239:main.c        **** 	Stop();//I2C停止
 804               	.LM100:
 805 026e 84E9      		ldi r24,lo8(-108)
 806 0270 86BF      		out 86-0x20,r24
 240:main.c        **** 	return temp;
 808               	.LM101:
 809 0272 892F      		mov r24,r25
 810 0274 9927      		clr r25
 241:main.c        **** }
 812               	.LM102:
 813 0276 0895      		ret
 814               	/* epilogue: frame size=0 */
 815 0278 0895      		ret
 816               	/* epilogue end (size=1) */
 817               	/* function i2c_Read size 89 (88) */
 822               	.Lscope13:
 824               	.global	Gettime
 826               	Gettime:
 242:main.c        **** void Gettime(void)
 243:main.c        **** {
 828               	.LM103:
 829               	/* prologue: frame size=0 */
 830               	/* prologue end (size=0) */
 244:main.c        **** 	month=(i2c_Read(5) & 0x1f);
 832               	.LM104:
 833 027a 85E0      		ldi r24,lo8(5)
 834 027c 0E94 0000 		call i2c_Read
 835 0280 9927      		clr r25
 836 0282 8F71      		andi r24,lo8(31)
 837 0284 9070      		andi r25,hi8(31)
 838 0286 9093 0000 		sts (month)+1,r25
 839 028a 8093 0000 		sts month,r24
 245:main.c        **** 	date=(i2c_Read(4) & 0x3f);
 841               	.LM105:
 842 028e 84E0      		ldi r24,lo8(4)
 843 0290 0E94 0000 		call i2c_Read
 844 0294 9927      		clr r25
 845 0296 8F73      		andi r24,lo8(63)
 846 0298 9070      		andi r25,hi8(63)
 847 029a 9093 0000 		sts (date)+1,r25
 848 029e 8093 0000 		sts date,r24
 246:main.c        **** 	hours=(i2c_Read(2) & 0x3f);
 850               	.LM106:
 851 02a2 82E0      		ldi r24,lo8(2)
 852 02a4 0E94 0000 		call i2c_Read
 853 02a8 9927      		clr r25
 854 02aa 8F73      		andi r24,lo8(63)
 855 02ac 9070      		andi r25,hi8(63)
 856 02ae 9093 0000 		sts (hours)+1,r25
 857 02b2 8093 0000 		sts hours,r24
 247:main.c        **** 	minutes=(i2c_Read(1) & 0x7f);
 859               	.LM107:
 860 02b6 81E0      		ldi r24,lo8(1)
 861 02b8 0E94 0000 		call i2c_Read
 862 02bc 9927      		clr r25
 863 02be 8F77      		andi r24,lo8(127)
 864 02c0 9070      		andi r25,hi8(127)
 865 02c2 9093 0000 		sts (minutes)+1,r25
 866 02c6 8093 0000 		sts minutes,r24
 248:main.c        **** 	senconds=(i2c_Read(0) & 0x7f);
 868               	.LM108:
 869 02ca 80E0      		ldi r24,lo8(0)
 870 02cc 0E94 0000 		call i2c_Read
 871 02d0 8F77      		andi r24,lo8(127)
 872 02d2 8093 0000 		sts senconds,r24
 873               	/* epilogue: frame size=0 */
 874 02d6 0895      		ret
 875               	/* epilogue end (size=1) */
 876               	/* function Gettime size 47 (46) */
 878               	.Lscope14:
 880               	.global	time_init
 882               	time_init:
 249:main.c        **** }
 250:main.c        **** void time_init(void)
 251:main.c        **** {
 884               	.LM109:
 885               	/* prologue: frame size=0 */
 886               	/* prologue end (size=0) */
 252:main.c        **** 	i2c_Write(0,1);
 888               	.LM110:
 889 02d8 61E0      		ldi r22,lo8(1)
 890 02da 80E0      		ldi r24,lo8(0)
 891 02dc 0E94 0000 		call i2c_Write
 253:main.c        **** 	i2c_Write(0,2);
 893               	.LM111:
 894 02e0 62E0      		ldi r22,lo8(2)
 895 02e2 80E0      		ldi r24,lo8(0)
 896 02e4 0E94 0000 		call i2c_Write
 254:main.c        **** 	i2c_Write(0,3);
 898               	.LM112:
 899 02e8 63E0      		ldi r22,lo8(3)
 900 02ea 80E0      		ldi r24,lo8(0)
 901 02ec 0E94 0000 		call i2c_Write
 255:main.c        **** 	i2c_Write(0,4);
 903               	.LM113:
 904 02f0 64E0      		ldi r22,lo8(4)
 905 02f2 80E0      		ldi r24,lo8(0)
 906 02f4 0E94 0000 		call i2c_Write
 256:main.c        **** 	i2c_Write(0,5);
 908               	.LM114:
 909 02f8 65E0      		ldi r22,lo8(5)
 910 02fa 80E0      		ldi r24,lo8(0)
 911 02fc 0E94 0000 		call i2c_Write
 912               	/* epilogue: frame size=0 */
 913 0300 0895      		ret
 914               	/* epilogue end (size=1) */
 915               	/* function time_init size 21 (20) */
 917               	.Lscope15:
 919               	.global	disp
 921               	disp:
 257:main.c        **** }
 258:main.c        **** void disp(void)
 259:main.c        **** {
 923               	.LM115:
 924               	/* prologue: frame size=0 */
 925               	/* prologue end (size=0) */
 260:main.c        **** 	a=HIBYTE(hours);
 927               	.LM116:
 928 0302 8091 0000 		lds r24,hours
 929 0306 9091 0000 		lds r25,(hours)+1
 930 030a 34E0      		ldi r19,4
 931 030c 9595      	1:	asr r25
 932 030e 8795      		ror r24
 933 0310 3A95      		dec r19
 934 0312 E1F7      		brne 1b
 935 0314 8093 0000 		sts a,r24
 261:main.c        **** 	b=HIBYTE(minutes);
 937               	.LM117:
 938 0318 8091 0000 		lds r24,minutes
 939 031c 9091 0000 		lds r25,(minutes)+1
 940 0320 24E0      		ldi r18,4
 941 0322 9595      	1:	asr r25
 942 0324 8795      		ror r24
 943 0326 2A95      		dec r18
 944 0328 E1F7      		brne 1b
 945 032a 8093 0000 		sts b,r24
 262:main.c        **** 	c=HIBYTE(senconds);
 947               	.LM118:
 948 032e 8091 0000 		lds r24,senconds
 949 0332 8295      		swap r24
 950 0334 8F70      		andi r24,0x0f
 951 0336 8093 0000 		sts c,r24
 263:main.c        **** 	if(a==0) a=10;
 953               	.LM119:
 954 033a 8091 0000 		lds r24,a
 955 033e 8823      		tst r24
 956 0340 19F4      		brne .L94
 958               	.LM120:
 959 0342 8AE0      		ldi r24,lo8(10)
 960 0344 8093 0000 		sts a,r24
 961               	.L94:
 264:main.c        **** 	if(b==0) b=10;
 963               	.LM121:
 964 0348 8091 0000 		lds r24,b
 965 034c 8823      		tst r24
 966 034e 19F4      		brne .L95
 967 0350 8AE0      		ldi r24,lo8(10)
 968 0352 8093 0000 		sts b,r24
 969               	.L95:

⌨️ 快捷键说明

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