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

📄 8880.lst

📁 使用8880实现DTMF通信及拨号的程序.
💻 LST
📖 第 1 页 / 共 5 页
字号:
     62B 9189      LD	R24,Y+
     62C 9109      LD	R16,Y+
     62D 9039      LD	R3,Y+
     62E 9029      LD	R2,Y+
     62F 9518      RETI
_uart0_udre_isr:
     630 922A      ST	R2,-Y
     631 938A      ST	R24,-Y
     632 939A      ST	R25,-Y
     633 93EA      ST	R30,-Y
     634 93FA      ST	R31,-Y
     635 B62F      IN	R2,0x3F
     636 922A      ST	R2,-Y
(0049) }
(0050) #pragma interrupt_handler uart0_udre_isr:iv_USART0_UDRE
(0051) void uart0_udre_isr(void)
(0052) {
(0053)  	 UDR=*com_status.send_cur_ptr++;
     637 91E0 02E0 LDS	R30,0x02E0
     639 91F0 02E1 LDS	R31,0x02E1
     63B 9021      LD	R2,Z+
     63C 93F0 02E1 STS	0x02E1,R31
     63E 93E0 02E0 STS	0x02E0,R30
     640 B82C      OUT	0x0C,R2
(0054) 	 if (*com_status.send_cur_ptr==0 || com_status.send_cur_ptr==send_buf+SEND_BUFLEN){
     641 8020      LDD	R2,Z+0
     642 2022      TST	R2
     643 F029      BEQ	0x0649
     644 EA88      LDI	R24,0xA8
     645 E092      LDI	R25,2
     646 17E8      CP	R30,R24
     647 07F9      CPC	R31,R25
     648 F421      BNE	0x064D
(0055) 	 	UCSRB&=~0x20;
     649 9855      CBI	0x0A,5
(0056) 		com_status.sending=0;
     64A 2422      CLR	R2
     64B 9220 02E2 STS	0x02E2,R2
(0057) 	 }
     64D 9029      LD	R2,Y+
     64E BE2F      OUT	0x3F,R2
     64F 91F9      LD	R31,Y+
     650 91E9      LD	R30,Y+
     651 9199      LD	R25,Y+
     652 9189      LD	R24,Y+
     653 9029      LD	R2,Y+
     654 9518      RETI
_serial_send:
  buf                  --> R10
     655 92AA      ST	R10,-Y
     656 92BA      ST	R11,-Y
     657 0158      MOVW	R10,R16
(0058) }
(0059) void serial_send(char *buf)
(0060) {
(0061)  	 if (*buf==0) return;
     658 01F5      MOVW	R30,R10
     659 8020      LDD	R2,Z+0
     65A 2022      TST	R2
     65B F409      BNE	0x065D
     65C C012      RJMP	0x066F
(0062) 	 while (com_status.sending);
     65D 9020 02E2 LDS	R2,0x02E2
     65F 2022      TST	R2
     660 F7E1      BNE	0x065D
(0063) 	 strcpy(send_buf,buf);
     661 0195      MOVW	R18,R10
     662 E706      LDI	R16,0x76
     663 E012      LDI	R17,2
     664 D0E5      RCALL	_strcpy
(0064) 	 com_status.send_cur_ptr=send_buf;
     665 E786      LDI	R24,0x76
     666 E092      LDI	R25,2
     667 9390 02E1 STS	0x02E1,R25
     669 9380 02E0 STS	0x02E0,R24
(0065) 	 com_status.sending=-1;
     66B EF8F      LDI	R24,0xFF
     66C 9380 02E2 STS	0x02E2,R24
(0066)   	 UCSRB|=0x20;
     66E 9A55      SBI	0x0A,5
     66F 90B9      LD	R11,Y+
     670 90A9      LD	R10,Y+
     671 9508      RET
_serial_recv:
  len                  --> R20
  buflen               --> R18
  buf                  --> R16
     672 934A      ST	R20,-Y
     673 935A      ST	R21,-Y
(0067) }
(0068) unsigned int serial_recv(char *buf,unsigned int buflen)
(0069) {
(0070)  	 unsigned int len=0;
     674 2744      CLR	R20
     675 2755      CLR	R21
(0071) 	 if (com_status.read_start_ptr==com_status.read_end_ptr) return 0;
     676 9020 02DC LDS	R2,com_status+2
     678 9030 02DD LDS	R3,com_status+3
     67A 9040 02DA LDS	R4,com_status
     67C 9050 02DB LDS	R5,com_status+1
     67E 1442      CP	R4,R2
     67F 0453      CPC	R5,R3
     680 F501      BNE	0x06A1
     681 2700      CLR	R16
     682 2711      CLR	R17
     683 C036      RJMP	0x06BA
(0072) 	 while(com_status.read_start_ptr!=com_status.read_end_ptr && len<buflen-1){
(0073) 	 	*buf++=*com_status.read_start_ptr++;
     684 91E0 02DA LDS	R30,com_status
     686 91F0 02DB LDS	R31,com_status+1
     688 01D8      MOVW	R26,R16
     689 9001      LD	R0,Z+
     68A 93F0 02DB STS	com_status+1,R31
     68C 93E0 02DA STS	com_status,R30
     68E 920D      ST	R0,X+
     68F 018D      MOVW	R16,R26
(0074) 		len++;
     690 5F4F      SUBI	R20,0xFF
     691 4F5F      SBCI	R21,0xFF
(0075) 		if (com_status.read_start_ptr==recv_buf+RECV_BUFLEN)
     692 ED8A      LDI	R24,0xDA
     693 E092      LDI	R25,2
     694 9020 02DA LDS	R2,com_status
     696 9030 02DB LDS	R3,com_status+1
     698 1628      CP	R2,R24
     699 0639      CPC	R3,R25
     69A F431      BNE	0x06A1
(0076) 		   com_status.read_start_ptr=recv_buf;
     69B EA88      LDI	R24,0xA8
     69C E092      LDI	R25,2
     69D 9390 02DB STS	com_status+1,R25
     69F 9380 02DA STS	com_status,R24
     6A1 9020 02DC LDS	R2,com_status+2
     6A3 9030 02DD LDS	R3,com_status+3
     6A5 9040 02DA LDS	R4,com_status
     6A7 9050 02DB LDS	R5,com_status+1
     6A9 1442      CP	R4,R2
     6AA 0453      CPC	R5,R3
     6AB F029      BEQ	0x06B1
     6AC 01C9      MOVW	R24,R18
     6AD 9701      SBIW	R24,1
     6AE 1748      CP	R20,R24
     6AF 0759      CPC	R21,R25
     6B0 F298      BCS	0x0684
(0077) 	 }
(0078) 	 *(--buf)=0;
     6B1 01C8      MOVW	R24,R16
     6B2 9701      SBIW	R24,1
     6B3 2422      CLR	R2
     6B4 01FC      MOVW	R30,R24
     6B5 8220      STD	Z+0,R2
(0079) 	 return --len;
     6B6 01CA      MOVW	R24,R20
     6B7 9701      SBIW	R24,1
     6B8 01AC      MOVW	R20,R24
     6B9 018C      MOVW	R16,R24
     6BA 9159      LD	R21,Y+
     6BB 9149      LD	R20,Y+
     6BC 9508      RET
FILE: E:\Shuaihu\AVR\8880\timer.c
(0001) #include <iom8v.h>
(0002) #include "main.h"
(0003) #include "shell.h"
(0004) #include "8880.h"
(0005) #include "serial.h"
(0006) void timer1_init(void)
(0007) {
(0008)  TCCR1B = 0x00; //stop
_timer1_init:
     6BD 2422      CLR	R2
     6BE BC2E      OUT	0x2E,R2
(0009)  TCNT1H = 0xE3; //setup
     6BF EE83      LDI	R24,0xE3
     6C0 BD8D      OUT	0x2D,R24
(0010)  TCNT1L = 0xE1;
     6C1 EE81      LDI	R24,0xE1
     6C2 BD8C      OUT	0x2C,R24
(0011)  OCR1AH = 0x1C;
     6C3 E18C      LDI	R24,0x1C
     6C4 BD8B      OUT	0x2B,R24
(0012)  OCR1AL = 0x1F;
     6C5 E18F      LDI	R24,0x1F
     6C6 BD8A      OUT	0x2A,R24
(0013)  OCR1BH = 0x1C;
     6C7 E18C      LDI	R24,0x1C
     6C8 BD89      OUT	0x29,R24
(0014)  OCR1BL = 0x1F;
     6C9 E18F      LDI	R24,0x1F
     6CA BD88      OUT	0x28,R24
(0015)  ICR1H  = 0x1C;
     6CB E18C      LDI	R24,0x1C
     6CC BD87      OUT	0x27,R24
(0016)  ICR1L  = 0x1F;
     6CD E18F      LDI	R24,0x1F
     6CE BD86      OUT	0x26,R24
(0017)  TCCR1A = 0x00;
     6CF BC2F      OUT	0x2F,R2
(0018)  TIMSK |= 0x04;
     6D0 B789      IN	R24,0x39
     6D1 6084      ORI	R24,4
     6D2 BF89      OUT	0x39,R24
     6D3 9508      RET
_timer1_ovf_isr:
  i                    --> R20
     6D4 920A      ST	R0,-Y
     6D5 921A      ST	R1,-Y
     6D6 922A      ST	R2,-Y
     6D7 923A      ST	R3,-Y
     6D8 924A      ST	R4,-Y
     6D9 925A      ST	R5,-Y
     6DA 926A      ST	R6,-Y
     6DB 927A      ST	R7,-Y
     6DC 928A      ST	R8,-Y
     6DD 929A      ST	R9,-Y
     6DE 930A      ST	R16,-Y
     6DF 931A      ST	R17,-Y
     6E0 932A      ST	R18,-Y
     6E1 933A      ST	R19,-Y
     6E2 938A      ST	R24,-Y
     6E3 939A      ST	R25,-Y
     6E4 93AA      ST	R26,-Y
     6E5 93BA      ST	R27,-Y
     6E6 93EA      ST	R30,-Y
     6E7 93FA      ST	R31,-Y
     6E8 B60F      IN	R0,0x3F
     6E9 920A      ST	R0,-Y
     6EA 934A      ST	R20,-Y
     6EB 935A      ST	R21,-Y
(0019) }
(0020) 
(0021) int x=0;
(0022) #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
(0023) void timer1_ovf_isr(void)
(0024) {
(0025)  int i;
(0026)  //TIMER1 has overflowed
(0027)  TCNT1H = 0xE3; //reload counter high value
     6EC EE83      LDI	R24,0xE3
     6ED BD8D      OUT	0x2D,R24
(0028)  TCNT1L = 0xE1; //reload counter low value
     6EE EE81      LDI	R24,0xE1
     6EF BD8C      OUT	0x2C,R24
(0029)  switch (sysoption.calling)
     6F0 9140 0203 LDS	R20,sysoption+1
     6F2 2755      CLR	R21
     6F3 3041      CPI	R20,1
     6F4 E0E0      LDI	R30,0
     6F5 075E      CPC	R21,R30
     6F6 F029      BEQ	0x06FC
     6F7 3042      CPI	R20,2
     6F8 E0E0      LDI	R30,0
     6F9 075E      CPC	R21,R30
     6FA F109      BEQ	0x071C
     6FB C028      RJMP	0x0724
(0030)  {		case 1:
(0031)  			 if (sysoption.timer==40){
     6FC 9180 0205 LDS	R24,sysoption+3
     6FE 3288      CPI	R24,0x28
     6FF F4B1      BNE	0x0716
(0032) 			   	M8880_Handdown;
     700 98AD      CBI	0x15,5
(0033) 				for (i=0;i<10;i++) delay(0xffff);
     701 2744      CLR	R20
     702 2755      CLR	R21
     703 EF0F      LDI	R16,0xFF
     704 EF1F      LDI	R17,0xFF
     705 DC59      RCALL	_delay
     706 5F4F      SUBI	R20,0xFF
     707 4F5F      SBCI	R21,0xFF
     708 304A      CPI	R20,0xA
     709 E0E0      LDI	R30,0
     70A 075E      CPC	R21,R30
     70B F3BC      BLT	0x0703
(0034)  				serial_send(noresponse);
     70C 9100 018A LDS	R16,noresponse
     70E 9110 018B LDS	R17,noresponse+1
     710 DF44      RCALL	_serial_send
(0035) 				sysoption.calling=0;
     711 2422      CLR	R2
     712 9220 0203 STS	sysoption+1,R2
(0036) 				TCCR1B=0x0;
     714 BC2E      OUT	0x2E,R2
(0037) 			 }else	 sysoption.timer++;
     715 C00E      RJMP	0x0724
     716 9180 0205 LDS	R24,sysoption+3
     718 5F8F      SUBI	R24,0xFF
     719 9380 0205 STS	sysoption+3,R24
(0038) 			 break;
     71B C008      RJMP	0x0724
(0039) 		case 2:
(0040) 			   	sysoption.calling=3;
     71C E083      LDI	R24,3
     71D 9380 0203 STS	sysoption+1,R24
(0041) 				serial_send("answered");
     71F EF09      LDI	R16,0xF9
     720 E011      LDI	R17,1
     721 DF33      RCALL	_serial_send
(0042) 				TCCR1B=0;
     722 2422      CLR	R2
     723 BC2E      OUT	0x2E,R2
(0043) 				break;
FILE: <library>
     724 9159      LD	R21,Y+
     725 9149      LD	R20,Y+
     726 9009      LD	R0,Y+
     727 BE0F      OUT	0x3F,R0
     728 91F9      LD	R31,Y+
     729 91E9      LD	R30,Y+
     72A 91B9      LD	R27,Y+
     72B 91A9      LD	R26,Y+
     72C 9199      LD	R25,Y+
     72D 9189      LD	R24,Y+
     72E 9139      LD	R19,Y+
     72F 9129      LD	R18,Y+
     730 9119      LD	R17,Y+
     731 9109      LD	R16,Y+
     732 9099      LD	R9,Y+
     733 9089      LD	R8,Y+
     734 9079      LD	R7,Y+
     735 9069      LD	R6,Y+
     736 9059      LD	R5,Y+
     737 9049      LD	R4,Y+
     738 9039      LD	R3,Y+
     739 9029      LD	R2,Y+
     73A 9019      LD	R1,Y+
     73B 9009      LD	R0,Y+
     73C 9518      RETI
_strcmp:
     73D 2FE0      MOV	R30,R16
     73E 2FF1      MOV	R31,R17
     73F 2FA2      MOV	R26,R18
     740 2FB3      MOV	R27,R19
     741 9101      LD	R16,Z+
     742 911D      LD	R17,X+
     743 1B01      SUB	R16,R17
     744 F419      BNE	0x0748
     745 2311      TST	R17
     746 F7D1      BNE	0x0741
     747 2700      CLR	R16
     748 0B11      SBC	R17,R17
     749 9508      RET
_strcpy:
     74A 2FA0      MOV	R26,R16
     74B 2FB1      MOV	R27,R17
     74C 2FE2      MOV	R30,R18
     74D 2FF3      MOV	R31,R19
     74E 9001      LD	R0,Z+
     74F 920D      ST	R0,X+
     750 2000      TST	R0
     751 F7E1      BNE	0x074E
     752 9508      RET
_strlen:
     753 2FE0      MOV	R30,R16
     754 2FF1      MOV	R31,R17
     755 27AA      CLR	R26
     756 27BB      CLR	R27
     757 9001      LD	R0,Z+
     758 2000      TST	R0
     759 F011      BEQ	0x075C
     75A 9611      ADIW	R26,1
     75B CFFB      RJMP	0x0757
     75C 2F0A      MOV	R16,R26
     75D 2F1B      MOV	R17,R27
     75E 9508      RET
push_arg4:
     75F 933A      ST	R19,-Y
     760 932A      ST	R18,-Y
push_arg2:
     761 931A      ST	R17,-Y
     762 930A      ST	R16,-Y
     763 9508      RET
pop_xgset003C:
     764 90A9      LD	R10,Y+
     765 90B9      LD	R11,Y+
     766 90C9      LD	R12,Y+
     767 90D9      LD	R13,Y+
     768 9508      RET
push_xgsetF0FC:
     769 937A      ST	R23,-Y
     76A 936A      ST	R22,-Y
push_xgset30FC:
     76B 935A      ST	R21,-Y
     76C 934A      ST	R20,-Y
push_xgset00FC:
     76D 92FA      ST	R15,-Y
     76E 92EA      ST	R14,-Y
push_xgset003C:
     76F 92DA      ST	R13,-Y
     770 92CA      ST	R12,-Y
     771 92BA      ST	R11,-Y
     772 92AA      ST	R10,-Y
     773 9508      RET
push_xgset300C:
     774 935A      ST	R21,-Y
     775 934A      ST	R20,-Y
     776 92BA      ST	R11,-Y
     777 92AA      ST	R10,-Y
     778 9508      RET
pop_xgset300C:
     779 90A9      LD	R10,Y+
     77A 90B9      LD	R11,Y+
     77B 9149      LD	R20,Y+
     77C 9159      LD	R21,Y+
     77D 9508      RET
push_xgsetF000:
     77E 937A      ST	R23,-Y
     77F 936A      ST	R22,-Y
     780 935A      ST	R21,-Y
     781 934A      ST	R20,-Y
     782 9508      RET
pop_xgsetF000:
     783 9149      LD	R20,Y+
     784 9159      LD	R21,Y+
     785 9169      LD	R22,Y+
     786 9179      LD	R23,Y+
     787 9508      RET
push_xgsetF00C:
     788 937A      ST	R23,-Y
     789 936A      ST	R22,-Y
     78A 935A      ST	R21,-Y
     78B 934A      ST	R20,-Y
     78C 92BA      ST	R11,-Y
  

⌨️ 快捷键说明

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