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

📄 spi.lst

📁 AVRkaifashili.rar
💻 LST
字号:
__start:
__text_start:
    0018 E5CF      LDI	R28,0x5F
    0019 E0D2      LDI	R29,2
    001A BFCD      OUT	0x3D,R28
    001B BFDE      OUT	0x3E,R29
    001C 51C0      SUBI	R28,0x10
    001D 40D0      SBCI	R29,0
    001E EA0A      LDI	R16,0xAA
    001F 8308      STD	Y+0,R16
    0020 2400      CLR	R0
    0021 E6EE      LDI	R30,0x6E
    0022 E0F0      LDI	R31,0
    0023 E010      LDI	R17,0
    0024 36EE      CPI	R30,0x6E
    0025 07F1      CPC	R31,R17
    0026 F011      BEQ	0x0029
    0027 9201      ST	R0,Z+
    0028 CFFB      RJMP	0x0024
    0029 8300      STD	Z+0,R16
    002A E2E2      LDI	R30,0x22
    002B E0F0      LDI	R31,0
    002C E6A0      LDI	R26,0x60
    002D E0B0      LDI	R27,0
    002E E010      LDI	R17,0
    002F 33E0      CPI	R30,0x30
    0030 07F1      CPC	R31,R17
    0031 F021      BEQ	0x0036
    0032 95C8      LPM
    0033 9631      ADIW	R30,1
    0034 920D      ST	R0,X+
    0035 CFF9      RJMP	0x002F
    0036 D086      RCALL	_main
_exit:
    0037 CFFF      RJMP	_exit
_DelayMs:
  j                    --> R20
  i                    --> R16
    0038 D0C2      RCALL	push_gset1
FILE: J:\AVRpractice\BOOK\SPI\SPI.C
(0001) #include<io8535v.h>
(0002) #include<macros.h>
(0003) #define uchar unsigned char
(0004) #define uint  unsigned int
(0005) 
(0006) uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0007) uchar Data[4]={0,0,0,0};
(0008) 
(0009) void DelayMs(uint i)  
(0010) {uchar j;
(0011)  for(;i!=0;i--)
    0039 C007      RJMP	0x0041
(0012)   {for(j=2000;j!=0;j--) {;}}
    003A ED40      LDI	R20,0xD0
    003B C001      RJMP	0x003D
    003C 954A      DEC	R20
    003D 2344      TST	R20
    003E F7E9      BNE	0x003C
    003F 5001      SUBI	R16,1
    0040 4010      SBCI	R17,0
    0041 3000      CPI	R16,0
    0042 0701      CPC	R16,R17
    0043 F7B1      BNE	0x003A
(0013) }
    0044 D0B9      RCALL	pop_gset1
    0045 9508      RET
_Display:
  sel                  --> R20
  i                    --> R22
  p                    --> R10
    0046 D0CE      RCALL	push_gset3
    0047 2EA0      MOV	R10,R16
    0048 2EB1      MOV	R11,R17
(0014) 
(0015) void Display(uchar *p)
(0016) {uchar i,sel=0x01;
    0049 E041      LDI	R20,1
(0017)  for(i=0;i<4;i++)
    004A 2766      CLR	R22
    004B C017      RJMP	0x0063
(0018)   {PORTA=sel;
    004C BB4B      OUT	0x1B,R20
(0019)    PORTC=0xff-Table[p[i]];
    004D 2FE6      MOV	R30,R22
    004E 27FF      CLR	R31
    004F 0DEA      ADD	R30,R10
    0050 1DFB      ADC	R31,R11
    0051 81E0      LDD	R30,Z+0
    0052 27FF      CLR	R31
    0053 E680      LDI	R24,0x60
    0054 E090      LDI	R25,0
    0055 0FE8      ADD	R30,R24
    0056 1FF9      ADC	R31,R25
    0057 8020      LDD	R2,Z+0
    0058 2433      CLR	R3
    0059 EF8F      LDI	R24,0xFF
    005A E090      LDI	R25,0
    005B 1982      SUB	R24,R2
    005C 0993      SBC	R25,R3
    005D BB85      OUT	0x15,R24
(0020)    DelayMs(10);
    005E E00A      LDI	R16,0xA
    005F E010      LDI	R17,0
    0060 DFD7      RCALL	_DelayMs
(0021)    sel=sel<<1;
    0061 0F44      LSL	R20
    0062 9563      INC	R22
    0063 3064      CPI	R22,4
    0064 F338      BCS	0x004C
(0022)   }
(0023) }
    0065 D093      RCALL	pop_gset3
    0066 9508      RET
(0024) 
(0025) void DelayNOP(uchar i)
(0026) {for(;i!=0;i--)  
_DelayNOP:
  i                    --> R16
    0067 C002      RJMP	0x006A
(0027)     { NOP();}
    0068 0000      NOP
    0069 950A      DEC	R16
    006A 2300      TST	R16
    006B F7E1      BNE	0x0068
(0028) } 
    006C 9508      RET
_Convert:
  i                    --> R22
  p                    --> R20
    006D D0A4      RCALL	push_gset2
    006E 2F62      MOV	R22,R18
    006F 2F40      MOV	R20,R16
    0070 2F51      MOV	R21,R17
(0029) 
(0030) void Convert(uchar *p,uchar i)
(0031) {p[0]=0;
    0071 2422      CLR	R2
    0072 2FE4      MOV	R30,R20
    0073 2FF5      MOV	R31,R21
    0074 8220      STD	Z+0,R2
(0032)  p[1]=i/100;
    0075 E614      LDI	R17,0x64
    0076 2F06      MOV	R16,R22
    0077 D069      RCALL	div8u
    0078 2FE4      MOV	R30,R20
    0079 2FF5      MOV	R31,R21
    007A 8301      STD	Z+1,R16
(0033)  p[2]=(i-p[1]*100)/10;
    007B 2FE4      MOV	R30,R20
    007C 2FF5      MOV	R31,R21
    007D 8111      LDD	R17,Z+1
    007E E604      LDI	R16,0x64
    007F D098      RCALL	mpy8s
    0080 2E20      MOV	R2,R16
    0081 2F06      MOV	R16,R22
    0082 1902      SUB	R16,R2
    0083 E01A      LDI	R17,0xA
    0084 D05C      RCALL	div8u
    0085 2FE4      MOV	R30,R20
    0086 2FF5      MOV	R31,R21
    0087 8302      STD	Z+2,R16
(0034)  p[3]=i-p[1]*100-p[2]*10;
    0088 2FE4      MOV	R30,R20
    0089 2FF5      MOV	R31,R21
    008A 8111      LDD	R17,Z+1
    008B E604      LDI	R16,0x64
    008C D08B      RCALL	mpy8s
    008D 2E26      MOV	R2,R22
    008E 1A20      SUB	R2,R16
    008F 2FE4      MOV	R30,R20
    0090 2FF5      MOV	R31,R21
    0091 8112      LDD	R17,Z+2
    0092 E00A      LDI	R16,0xA
    0093 D084      RCALL	mpy8s
    0094 1A20      SUB	R2,R16
    0095 2FE4      MOV	R30,R20
    0096 2FF5      MOV	R31,R21
    0097 8223      STD	Z+3,R2
(0035) }
    0098 D05E      RCALL	pop_gset2
    0099 9508      RET
_Write_Byte:
  clear                --> R20
  Data                 --> R18
  Address              --> R16
    009A D060      RCALL	push_gset1
(0036) 
(0037) void Write_Byte(uchar Address,uchar Data)
(0038) {uchar clear;
(0039)  PORTB=PORTB|0x10; //使能SPI器件
    009B 9AC4      SBI	0x18,4
(0040)  SPDR=Address;
    009C B90F      OUT	0x0F,R16
(0041)  while(!(SPSR&0x80)) {;}
    009D 9B77      SBIS	0x0E,7
    009E CFFE      RJMP	0x009D
(0042)  clear=SPSR;
    009F B14E      IN	R20,0x0E
(0043)  clear=SPDR;
    00A0 B14F      IN	R20,0x0F
(0044)  SPDR=Data;
    00A1 B92F      OUT	0x0F,R18
(0045)  while(!(SPSR&0x80)) {;}
    00A2 9B77      SBIS	0x0E,7
    00A3 CFFE      RJMP	0x00A2
(0046)  clear=SPSR;
    00A4 B14E      IN	R20,0x0E
(0047)  clear=SPDR;
    00A5 B14F      IN	R20,0x0F
(0048)  PORTB=PORTB&0xef;
    00A6 B388      IN	R24,0x18
    00A7 7E8F      ANDI	R24,0xEF
    00A8 BB88      OUT	0x18,R24
(0049) }
    00A9 D054      RCALL	pop_gset1
    00AA 9508      RET
_Read_Byte:
  Data                 --> R20
  clear                --> R22
  Address              --> R16
    00AB D066      RCALL	push_gset2
(0050)  
(0051) uchar Read_Byte(uchar Address)
(0052) {uchar clear;
(0053)  uchar Data;
(0054)  PORTB=PORTB|0x10;
    00AC 9AC4      SBI	0x18,4
(0055)  SPDR=Address;
    00AD B90F      OUT	0x0F,R16
(0056)  while(!(SPSR&0x80)) {;}
    00AE 9B77      SBIS	0x0E,7
    00AF CFFE      RJMP	0x00AE
(0057)  clear=SPSR;
    00B0 B16E      IN	R22,0x0E
(0058)  clear=SPDR;
    00B1 B16F      IN	R22,0x0F
(0059)  SPDR=Address;//发空数据
    00B2 B90F      OUT	0x0F,R16
(0060)  while(!(SPSR&0x80)) {;}
    00B3 9B77      SBIS	0x0E,7
    00B4 CFFE      RJMP	0x00B3
(0061)  clear=SPSR;
    00B5 B16E      IN	R22,0x0E
(0062)  Data=SPDR;
    00B6 B14F      IN	R20,0x0F
(0063)  PORTB=PORTB&0xef;
    00B7 B388      IN	R24,0x18
    00B8 7E8F      ANDI	R24,0xEF
    00B9 BB88      OUT	0x18,R24
(0064)  return(Data);
    00BA 2F04      MOV	R16,R20
    00BB D03B      RCALL	pop_gset2
    00BC 9508      RET
(0065) }
(0066) 
(0067) void main(void)
(0068) {uchar value;
(0069)  DDRA=0xff;
_main:
  value                --> R20
    00BD EF8F      LDI	R24,0xFF
    00BE BB8A      OUT	0x1A,R24
(0070)  DDRC=0xff;
    00BF BB84      OUT	0x14,R24
(0071)  DDRB=0xbf;
    00C0 EB8F      LDI	R24,0xBF
    00C1 BB87      OUT	0x17,R24
(0072)  PORTA=0xff;
    00C2 EF8F      LDI	R24,0xFF
    00C3 BB8B      OUT	0x1B,R24
(0073)  PORTC=0x00;
    00C4 2422      CLR	R2
    00C5 BA25      OUT	0x15,R2
(0074)  DelayMs(3000);
    00C6 EB08      LDI	R16,0xB8
    00C7 E01B      LDI	R17,0xB
    00C8 DF6F      RCALL	_DelayMs
(0075)  PORTC=0xff;
    00C9 EF8F      LDI	R24,0xFF
    00CA BB85      OUT	0x15,R24
(0076)  SPCR=0x5c;//0101 1100
    00CB E58C      LDI	R24,0x5C
    00CC B98D      OUT	0x0D,R24
(0077)  Write_Byte(0x80,0xf0);//8位,自由转换模式
    00CD EF20      LDI	R18,0xF0
    00CE E800      LDI	R16,0x80
    00CF DFCA      RCALL	_Write_Byte
    00D0 C00C      RJMP	0x00DD
(0078)  while(1)
(0079)   {value=Read_Byte(0x01);
    00D1 E001      LDI	R16,1
    00D2 DFD8      RCALL	_Read_Byte
(0080)    value=Read_Byte(0x02);
    00D3 E002      LDI	R16,2
    00D4 DFD6      RCALL	_Read_Byte
    00D5 2F40      MOV	R20,R16
(0081)    Convert(Data,value);
    00D6 2F24      MOV	R18,R20
    00D7 E60A      LDI	R16,0x6A
    00D8 E010      LDI	R17,0
    00D9 DF93      RCALL	_Convert
(0082)    Display(Data);}
    00DA E60A      LDI	R16,0x6A
    00DB E010      LDI	R17,0
    00DC DF69      RCALL	_Display
    00DD CFF3      RJMP	0x00D1
(0083) }
FILE: <library>
    00DE 9508      RET
mod8u:
    00DF 9468      BSET	6
    00E0 C001      RJMP	xdiv8u
div8u:
    00E1 94E8      BCLR	6
xdiv8u:
    00E2 932A      ST	R18,-Y
    00E3 92FA      ST	R15,-Y
    00E4 92EA      ST	R14,-Y
    00E5 24FF      CLR	R15
    00E6 24EE      CLR	R14
    00E7 E120      LDI	R18,0x10
    00E8 0F00      LSL	R16
    00E9 1CFF      ROL	R15
    00EA 1CEE      ROL	R14
    00EB 16E1      CP	R14,R17
    00EC F010      BCS	0x00EF
    00ED 1AE1      SUB	R14,R17
    00EE 9503      INC	R16
    00EF 952A      DEC	R18
    00F0 F7B9      BNE	0x00E8
    00F1 F40E      BRTC	0x00F3
    00F2 2D0E      MOV	R16,R14
    00F3 90E9      LD	R14,Y+
    00F4 90F9      LD	R15,Y+
    00F5 9129      LD	R18,Y+
    00F6 9508      RET
pop_gset2:
    00F7 E0E2      LDI	R30,2
    00F8 C006      RJMP	pop
pop_gset3:
    00F9 E0E4      LDI	R30,4
    00FA C004      RJMP	pop
push_gset1:
    00FB 935A      ST	R21,-Y
    00FC 934A      ST	R20,-Y
    00FD 9508      RET
pop_gset1:
    00FE E0E1      LDI	R30,1
pop:
    00FF 9149      LD	R20,Y+
    0100 9159      LD	R21,Y+
    0101 FDE0      SBRC	R30,0
    0102 9508      RET
    0103 9169      LD	R22,Y+
    0104 9179      LD	R23,Y+
    0105 FDE1      SBRC	R30,1
    0106 9508      RET
    0107 90A9      LD	R10,Y+
    0108 90B9      LD	R11,Y+
    0109 FDE2      SBRC	R30,2
    010A 9508      RET
    010B 90C9      LD	R12,Y+
    010C 90D9      LD	R13,Y+
    010D FDE3      SBRC	R30,3
    010E 9508      RET
    010F 90E9      LD	R14,Y+
    0110 90F9      LD	R15,Y+
    0111 9508      RET
push_gset2:
    0112 937A      ST	R23,-Y
    0113 936A      ST	R22,-Y
    0114 CFE6      RJMP	push_gset1
push_gset3:
    0115 92BA      ST	R11,-Y
    0116 92AA      ST	R10,-Y
    0117 CFFA      RJMP	push_gset2
mpy8s:
    0118 920A      ST	R0,-Y
    0119 2400      CLR	R0
    011A 2300      TST	R16
    011B F029      BEQ	0x0121
    011C 9506      LSR	R16
    011D F408      BCC	0x011F
    011E 0E01      ADD	R0,R17
    011F 0F11      LSL	R17
    0120 CFF9      RJMP	0x011A
    0121 2D00      MOV	R16,R0
    0122 9009      LD	R0,Y+
    0123 9508      RET

⌨️ 快捷键说明

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