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

📄 tea5767.lst

📁 用TEA5767 自己动手制作的收音机。效果很好
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    0030 E5CF      LDI	R28,0x5F
    0031 E0D8      LDI	R29,0x8
    0032 BFCD      OUT	0x3D,R28
    0033 BFDE      OUT	0x3E,R29
    0034 51C0      SUBI	R28,0x10
    0035 40D0      SBCI	R29,0
    0036 EA0A      LDI	R16,0xAA
    0037 8308      STD	Y+0,R16
    0038 2400      CLR	R0
    0039 E6EB      LDI	R30,0x6B
    003A E0F0      LDI	R31,0
    003B E010      LDI	R17,0
    003C 36EB      CPI	R30,0x6B
    003D 07F1      CPC	R31,R17
    003E F011      BEQ	0x0041
    003F 9201      ST	R0,Z+
    0040 CFFB      RJMP	0x003C
    0041 8300      STD	Z+0,R16
    0042 E5E4      LDI	R30,0x54
    0043 E0F0      LDI	R31,0
    0044 E6A0      LDI	R26,0x60
    0045 E0B0      LDI	R27,0
    0046 E010      LDI	R17,0
    0047 35EF      CPI	R30,0x5F
    0048 07F1      CPC	R31,R17
    0049 F021      BEQ	0x004E
    004A 95C8      LPM
    004B 9631      ADIW	R30,1
    004C 920D      ST	R0,X+
    004D CFF9      RJMP	0x0047
    004E 940E0154  CALL	_main
_exit:
    0050 CFFF      RJMP	_exit
FILE: tea5767.c
(0001) #include<iom32v.h>
(0002) #include<macros.h>
(0003) #define uchar unsigned char 
(0004) #define uint unsigned int 
(0005) #define ulong unsigned long 
(0006) void delay()
(0007) {
(0008) uint i=0;
_delay:
  i                    --> R16
    0051 2700      CLR	R16
    0052 2711      CLR	R17
(0009) for (i=0;i<2000;i++)
    0053 C002      RJMP	0x0056
    0054 5F0F      SUBI	R16,0xFF
    0055 4F1F      SBCI	R17,0xFF
    0056 3D00      CPI	R16,0xD0
    0057 E0E7      LDI	R30,7
    0058 071E      CPC	R17,R30
    0059 F3D0      BCS	0x0054
    005A 9508      RET
_inputbyte:
  mid                  --> R20
  i                    --> R22
  CD                   --> R10
    005B 940E020B  CALL	push_gset3
    005D 2EA0      MOV	R10,R16
(0010) ;
(0011) }
(0012) unsigned char radio_write_data[5]={0x69,0x28,0xa0,0x13,0x00};   //要写入TEA5767的数据
(0013) void inputbyte(uchar CD)  //写入一字节数据
(0014) {
(0015) uchar i,mid=0;
    005E 2744      CLR	R20
(0016) for (i=0;i<8;i++)
    005F 2766      CLR	R22
    0060 C00C      RJMP	0x006D
(0017) {
(0018) mid=CD&0x80;
    0061 2D4A      MOV	R20,R10
    0062 7840      ANDI	R20,0x80
(0019) if (mid==0)
    0063 F411      BNE	0x0066
(0020) PORTC&=~BIT(PA0);
    0064 98A8      CBI	0x15,0
    0065 C001      RJMP	0x0067
(0021) else 
(0022) PORTC|=BIT(PA0);
    0066 9AA8      SBI	0x15,0
(0023) PORTC|=BIT(PA1); 
    0067 9AA9      SBI	0x15,1
(0024) delay();
    0068 DFE8      RCALL	_delay
(0025) PORTC&=~BIT(PA1);
    0069 98A9      CBI	0x15,1
(0026) delay();
    006A DFE6      RCALL	_delay
(0027) CD=CD<<1;
    006B 0CAA      LSL	R10
    006C 9563      INC	R22
    006D 3068      CPI	R22,0x8
    006E F390      BCS	0x0061
    006F 940E0204  CALL	pop_gset3
    0071 9508      RET
_GetKey:
    0072 940E020D  CALL	push_gset2
(0028) }
(0029) }
(0030) long radio=87000000;
(0031) int N=0;
(0032) void GetKey(void)	
(0033) { 
(0034) 		if(!(PINA&0x20)){
    0074 99CD      SBIC	0x19,5
    0075 C06D      RJMP	0x00E3
(0035) 		radio+=100000;
    0076 EA40      LDI	R20,0xA0
    0077 E856      LDI	R21,0x86
    0078 E061      LDI	R22,1
    0079 E070      LDI	R23,0
    007A 90400067  LDS	R4,radio+2
    007C 90500068  LDS	R5,radio+3
    007E 90200065  LDS	R2,radio
    0080 90300066  LDS	R3,radio+1
    0082 0E24      ADD	R2,R20
    0083 1E35      ADC	R3,R21
    0084 1E46      ADC	R4,R22
    0085 1E57      ADC	R5,R23
    0086 92300066  STS	radio+1,R3
    0088 92200065  STS	radio,R2
    008A 92500068  STS	radio+3,R5
    008C 92400067  STS	radio+2,R4
(0036) 		if (radio>108000000)
    008E E040      LDI	R20,0
    008F EF53      LDI	R21,0xF3
    0090 E66F      LDI	R22,0x6F
    0091 E076      LDI	R23,6
    0092 1542      CP	R20,R2
    0093 0553      CPC	R21,R3
    0094 0564      CPC	R22,R4
    0095 0575      CPC	R23,R5
    0096 F464      BGE	0x00A3
(0037) 		radio=87000000;
    0097 EC40      LDI	R20,0xC0
    0098 E853      LDI	R21,0x83
    0099 E26F      LDI	R22,0x2F
    009A E075      LDI	R23,5
    009B 93500066  STS	radio+1,R21
    009D 93400065  STS	radio,R20
    009F 93700068  STS	radio+3,R23
    00A1 93600067  STS	radio+2,R22
(0038) 		N=(long)((radio-225000)*4)/32768;
    00A3 90400067  LDS	R4,radio+2
    00A5 90500068  LDS	R5,radio+3
    00A7 90200065  LDS	R2,radio
    00A9 90300066  LDS	R3,radio+1
    00AB E044      LDI	R20,4
    00AC E050      LDI	R21,0
    00AD E060      LDI	R22,0
    00AE E070      LDI	R23,0
    00AF 925A      ST	R5,-Y
    00B0 924A      ST	R4,-Y
    00B1 923A      ST	R3,-Y
    00B2 922A      ST	R2,-Y
    00B3 018A      MOVW	R16,R20
    00B4 019B      MOVW	R18,R22
    00B5 940E01D1  CALL	empy32s
    00B7 EA40      LDI	R20,0xA0
    00B8 EB5B      LDI	R21,0xBB
    00B9 E06D      LDI	R22,0xD
    00BA E070      LDI	R23,0
    00BB 0118      MOVW	R2,R16
    00BC 0129      MOVW	R4,R18
    00BD 1A24      SUB	R2,R20
    00BE 0A35      SBC	R3,R21
    00BF 0A46      SBC	R4,R22
    00C0 0A57      SBC	R5,R23
    00C1 E040      LDI	R20,0
    00C2 E850      LDI	R21,0x80
    00C3 E060      LDI	R22,0
    00C4 E070      LDI	R23,0
    00C5 937A      ST	R23,-Y
    00C6 936A      ST	R22,-Y
    00C7 935A      ST	R21,-Y
    00C8 934A      ST	R20,-Y
    00C9 0181      MOVW	R16,R2
    00CA 0192      MOVW	R18,R4
    00CB 940E0166  CALL	div32s
    00CD 9310006A  STS	N+1,R17
    00CF 93000069  STS	N,R16
(0039) 		PORTC|=BIT(PA2); 
    00D1 9AAA      SBI	0x15,2
(0040) 		inputbyte(N>>8);
    00D2 2F01      MOV	R16,R17
    00D3 2711      CLR	R17
    00D4 FD07      SBRC	R16,7
    00D5 9510      COM	R17
    00D6 DF84      RCALL	_inputbyte
(0041) 		inputbyte(N);
    00D7 91000069  LDS	R16,N
    00D9 DF81      RCALL	_inputbyte
(0042) 		inputbyte(0xa0);
    00DA EA00      LDI	R16,0xA0
    00DB DF7F      RCALL	_inputbyte
(0043) 		inputbyte(0x13);
    00DC E103      LDI	R16,0x13
    00DD DF7D      RCALL	_inputbyte
(0044) 		inputbyte(0x00);
    00DE 2700      CLR	R16
    00DF DF7B      RCALL	_inputbyte
(0045) 		PORTC&=~BIT(PA2);
    00E0 98AA      CBI	0x15,2
(0046) 		delay();
    00E1 DF6F      RCALL	_delay
(0047) 		
(0048) 		}
    00E2 C06E      RJMP	0x0151
(0049) 		else if(!(PINA&0x10)){
    00E3 99CC      SBIC	0x19,4
    00E4 C06C      RJMP	0x0151
(0050) 		radio-=100000;
    00E5 EA40      LDI	R20,0xA0
    00E6 E856      LDI	R21,0x86
    00E7 E061      LDI	R22,1
    00E8 E070      LDI	R23,0
    00E9 90400067  LDS	R4,radio+2
    00EB 90500068  LDS	R5,radio+3
    00ED 90200065  LDS	R2,radio
    00EF 90300066  LDS	R3,radio+1
    00F1 1A24      SUB	R2,R20
    00F2 0A35      SBC	R3,R21
    00F3 0A46      SBC	R4,R22
    00F4 0A57      SBC	R5,R23
    00F5 92300066  STS	radio+1,R3
    00F7 92200065  STS	radio,R2
    00F9 92500068  STS	radio+3,R5
    00FB 92400067  STS	radio+2,R4
(0051) 		if (radio<87000000)
    00FD EC40      LDI	R20,0xC0
    00FE E853      LDI	R21,0x83
    00FF E26F      LDI	R22,0x2F
    0100 E075      LDI	R23,5
    0101 1624      CP	R2,R20
    0102 0635      CPC	R3,R21
    0103 0646      CPC	R4,R22
    0104 0657      CPC	R5,R23
    0105 F464      BGE	0x0112
(0052) 		radio=108000000;
    0106 E040      LDI	R20,0
    0107 EF53      LDI	R21,0xF3
    0108 E66F      LDI	R22,0x6F
    0109 E076      LDI	R23,6
    010A 93500066  STS	radio+1,R21
    010C 93400065  STS	radio,R20
    010E 93700068  STS	radio+3,R23
    0110 93600067  STS	radio+2,R22
(0053) 		N=(long)((radio-225000)*4)/32768;
    0112 90400067  LDS	R4,radio+2
    0114 90500068  LDS	R5,radio+3
    0116 90200065  LDS	R2,radio
    0118 90300066  LDS	R3,radio+1
    011A E044      LDI	R20,4
    011B E050      LDI	R21,0
    011C E060      LDI	R22,0
    011D E070      LDI	R23,0
    011E 925A      ST	R5,-Y
    011F 924A      ST	R4,-Y
    0120 923A      ST	R3,-Y
    0121 922A      ST	R2,-Y
    0122 018A      MOVW	R16,R20
    0123 019B      MOVW	R18,R22
    0124 940E01D1  CALL	empy32s
    0126 EA40      LDI	R20,0xA0
    0127 EB5B      LDI	R21,0xBB
    0128 E06D      LDI	R22,0xD
    0129 E070      LDI	R23,0
    012A 0118      MOVW	R2,R16
    012B 0129      MOVW	R4,R18
    012C 1A24      SUB	R2,R20
    012D 0A35      SBC	R3,R21
    012E 0A46      SBC	R4,R22
    012F 0A57      SBC	R5,R23
    0130 E040      LDI	R20,0
    0131 E850      LDI	R21,0x80
    0132 E060      LDI	R22,0
    0133 E070      LDI	R23,0
    0134 937A      ST	R23,-Y
    0135 936A      ST	R22,-Y
    0136 935A      ST	R21,-Y
    0137 934A      ST	R20,-Y
    0138 0181      MOVW	R16,R2
    0139 0192      MOVW	R18,R4
    013A 940E0166  CALL	div32s
    013C 9310006A  STS	N+1,R17
    013E 93000069  STS	N,R16
(0054) 		PORTC|=BIT(PA2); 
    0140 9AAA      SBI	0x15,2
(0055) 		inputbyte(N>>8);
    0141 2F01      MOV	R16,R17
    0142 2711      CLR	R17
    0143 FD07      SBRC	R16,7
    0144 9510      COM	R17
    0145 DF15      RCALL	_inputbyte
(0056) 		inputbyte(N);
    0146 91000069  LDS	R16,N
    0148 DF12      RCALL	_inputbyte

⌨️ 快捷键说明

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