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

📄 1.lst

📁 AVR mega16双机通讯实验 从机接受数据并发送到lcd1602上显示
💻 LST
字号:
__text_start:
__start:
    002F E5CF      LDI	R28,0x5F
    0030 E0D4      LDI	R29,4
    0031 BFCD      OUT	0x3D,R28
    0032 BFDE      OUT	0x3E,R29
    0033 51CE      SUBI	R28,0x1E
    0034 40D0      SBCI	R29,0
    0035 EA0A      LDI	R16,0xAA
    0036 8308      STD	Y+0,R16
    0037 2400      CLR	R0
    0038 E6EA      LDI	R30,0x6A
    0039 E0F0      LDI	R31,0
    003A E010      LDI	R17,0
    003B 36EA      CPI	R30,0x6A
    003C 07F1      CPC	R31,R17
    003D F011      BEQ	0x0040
    003E 9201      ST	R0,Z+
    003F CFFB      RJMP	0x003B
    0040 8300      STD	Z+0,R16
    0041 E5E4      LDI	R30,0x54
    0042 E0F0      LDI	R31,0
    0043 E6A0      LDI	R26,0x60
    0044 E0B0      LDI	R27,0
    0045 E010      LDI	R17,0
    0046 35EE      CPI	R30,0x5E
    0047 07F1      CPC	R31,R17
    0048 F021      BEQ	0x004D
    0049 95C8      LPM
    004A 9631      ADIW	R30,1
    004B 920D      ST	R0,X+
    004C CFF9      RJMP	0x0046
    004D 940E007C  CALL	_main
_exit:
    004F CFFF      RJMP	_exit
FILE: E:\MYAVRW~1\SPI双~1\1.c
(0001) #include < iom16v.h>
(0002) #include <macros.h>
(0003) unsigned char disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
(0004) void delayms(void)
(0005) {
(0006) char a;
(0007) for(a=0;a<141;a++)
_delayms:
  a                    --> R16
    0050 2700      CLR	R16
    0051 C001      RJMP	0x0053
    0052 9503      INC	R16
    0053 380D      CPI	R16,0x8D
    0054 F3E8      BCS	0x0052
    0055 9508      RET
_delay:
  b                    --> R20
  a                    --> R22
    0056 940E009E  CALL	push_gset2
    0058 01B8      MOVW	R22,R16
(0008) ;
(0009) }
(0010) void delay(int a)
(0011) {
(0012) int b;
(0013) for(b=0;b<a;b++)
    0059 2744      CLR	R20
    005A 2755      CLR	R21
    005B C003      RJMP	0x005F
(0014) delayms();
    005C DFF3      RCALL	_delayms
    005D 5F4F      SUBI	R20,0xFF
    005E 4F5F      SBCI	R21,0xFF
    005F 1746      CP	R20,R22
    0060 0757      CPC	R21,R23
    0061 F3D4      BLT	0x005C
    0062 940E0095  CALL	pop_gset2
    0064 9508      RET
(0015) }
(0016) void Spi_init()
(0017) {
(0018) DDRB|=(1<<7)|(1<<5)|(1<<4);
_Spi_init:
    0065 B387      IN	R24,0x17
    0066 6B80      ORI	R24,0xB0
    0067 BB87      OUT	0x17,R24
(0019) SPCR=0x73;
    0068 E783      LDI	R24,0x73
    0069 B98D      OUT	0x0D,R24
(0020) SPSR=0x00;
    006A 2422      CLR	R2
    006B B82E      OUT	0x0E,R2
    006C 9508      RET
(0021) }
(0022) void Spi_Transmit(int a)
(0023) {
(0024) PORTB&=~(1<<4);
_Spi_Transmit:
  a                    --> R16
    006D 98C4      CBI	0x18,4
(0025) SPCR |= (1<<MSTR); // MSTR有时会被清零,这里强制进入主机模式
    006E 9A6C      SBI	0x0D,4
(0026) SPDR=a;
    006F B90F      OUT	0x0F,R16
(0027) while(SPSR^0X80);
    0070 E880      LDI	R24,0x80
    0071 E090      LDI	R25,0
    0072 B02E      IN	R2,0x0E
    0073 2433      CLR	R3
    0074 2628      EOR	R2,R24
    0075 2639      EOR	R3,R25
    0076 2022      TST	R2
    0077 F7C1      BNE	0x0070
    0078 2033      TST	R3
    0079 F7B1      BNE	0x0070
(0028) PORTB|=(1<<4);
    007A 9AC4      SBI	0x18,4
    007B 9508      RET
(0029) 
(0030) }
(0031) 
(0032) void main()
(0033) {
(0034) unsigned char data;
(0035) DDRA=0x00;
_main:
  data                 --> R20
    007C 2422      CLR	R2
    007D BA2A      OUT	0x1A,R2
(0036) PORTA=0xFF;
    007E EF8F      LDI	R24,0xFF
    007F BB8B      OUT	0x1B,R24
(0037) DDRB=0xFF;
    0080 BB87      OUT	0x17,R24
(0038) PORTB=0xFF;
    0081 BB88      OUT	0x18,R24
(0039) DDRC=0x00;
    0082 BA24      OUT	0x14,R2
(0040) PORTC=0x00;
    0083 BA25      OUT	0x15,R2
(0041) DDRD=0x00;
    0084 BA21      OUT	0x11,R2
(0042) PORTD=0x00;
    0085 BA22      OUT	0x12,R2
(0043) 
(0044) Spi_init();
    0086 DFDE      RCALL	_Spi_init
    0087 C00B      RJMP	0x0093
(0045) 
(0046) while(1)
(0047) {
(0048) for(data=0;data<111;data++)
    0088 2744      CLR	R20
    0089 C007      RJMP	0x0091
(0049) 
(0050) {
(0051) delay(1000);
    008A EE08      LDI	R16,0xE8
    008B E013      LDI	R17,3
    008C DFC9      RCALL	_delay
(0052) Spi_Transmit(data);
FILE: <library>
    008D 2F04      MOV	R16,R20
    008E 2711      CLR	R17
    008F DFDD      RCALL	_Spi_Transmit
    0090 9543      INC	R20
    0091 364F      CPI	R20,0x6F
    0092 F3B8      BCS	0x008A
    0093 CFF4      RJMP	0x0088
    0094 9508      RET
pop_gset2:
    0095 E0E2      LDI	R30,2
    0096 940C00A4  JMP	pop
push_gset5:
    0098 92FA      ST	R15,-Y
    0099 92EA      ST	R14,-Y
push_gset4:
    009A 92DA      ST	R13,-Y
    009B 92CA      ST	R12,-Y
push_gset3:
    009C 92BA      ST	R11,-Y
    009D 92AA      ST	R10,-Y
push_gset2:
    009E 937A      ST	R23,-Y
    009F 936A      ST	R22,-Y
push_gset1:
    00A0 935A      ST	R21,-Y
    00A1 934A      ST	R20,-Y
    00A2 9508      RET
pop_gset1:
    00A3 E0E1      LDI	R30,1
pop:
    00A4 9149      LD	R20,Y+
    00A5 9159      LD	R21,Y+
    00A6 FDE0      SBRC	R30,0
    00A7 9508      RET
    00A8 9169      LD	R22,Y+
    00A9 9179      LD	R23,Y+
    00AA FDE1      SBRC	R30,1
    00AB 9508      RET
    00AC 90A9      LD	R10,Y+
    00AD 90B9      LD	R11,Y+
    00AE FDE2      SBRC	R30,2
    00AF 9508      RET
    00B0 90C9      LD	R12,Y+
    00B1 90D9      LD	R13,Y+
    00B2 FDE3      SBRC	R30,3
    00B3 9508      RET
    00B4 90E9      LD	R14,Y+
    00B5 90F9      LD	R15,Y+
    00B6 9508      RET

⌨️ 快捷键说明

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