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

📄 m16_t1_compare.lst

📁 我最近使用的一些程序代码
💻 LST
字号:
__start:
__text_start:
    0031 E5CF      LDI	R28,0x5F
    0032 E0D4      LDI	R29,4
    0033 BFCD      OUT	0x3D,R28
    0034 BFDE      OUT	0x3E,R29
    0035 51C0      SUBI	R28,0x10
    0036 40D0      SBCI	R29,0
    0037 EA0A      LDI	R16,0xAA
    0038 8308      STD	Y+0,R16
    0039 2400      CLR	R0
    003A E6EE      LDI	R30,0x6E
    003B E0F0      LDI	R31,0
    003C E010      LDI	R17,0
    003D 37E1      CPI	R30,0x71
    003E 07F1      CPC	R31,R17
    003F F011      BEQ	0x0042
    0040 9201      ST	R0,Z+
    0041 CFFB      RJMP	0x003D
    0042 8300      STD	Z+0,R16
    0043 E5E4      LDI	R30,0x54
    0044 E0F0      LDI	R31,0
    0045 E6A0      LDI	R26,0x60
    0046 E0B0      LDI	R27,0
    0047 E010      LDI	R17,0
    0048 36E2      CPI	R30,0x62
    0049 07F1      CPC	R31,R17
    004A F021      BEQ	0x004F
    004B 95C8      LPM
    004C 9631      ADIW	R30,1
    004D 920D      ST	R0,X+
    004E CFF9      RJMP	0x0048
    004F 940E0120  CALL	_main
_exit:
    0051 CFFF      RJMP	_exit
_DelayMs:
  j                    --> R20
  i                    --> R16
    0052 940E0167  CALL	push_gset1
FILE: F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
(0001) #include<iom16v.h>
(0002) #define uchar unsigned char
(0003) #define uint unsigned int
(0004) 
(0005) uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0006) uchar Data[4]={0,0,0,1};
(0007) uchar Key1,Key2,Key3;
(0008) 
(0009) void DelayMs(uchar i)
(0010) {
(0011)  uchar j;
(0012)  for(;i!=0;i++)
    0054 C006      RJMP	0x005B
(0013)  {
(0014)   for(j=10;j!=0;j--);
    0055 E04A      LDI	R20,0xA
    0056 C001      RJMP	0x0058
    0057 954A      DEC	R20
    0058 2344      TST	R20
    0059 F7E9      BNE	0x0057
    005A 9503      INC	R16
    005B 2300      TST	R16
    005C F7C1      BNE	0x0055
(0015)  }
(0016) }
    005D 940E016A  CALL	pop_gset1
    005F 9508      RET
_Display:
  sel                  --> R20
  i                    --> R22
  p                    --> R10
    0060 940E0182  CALL	push_gset3
    0062 0158      MOVW	R10,R16
(0017) 
(0018) void Display(uchar *p)
(0019) {
(0020)  uchar i,sel=0x01;
    0063 E041      LDI	R20,1
(0021)  for(i=0;i<4;i++)
    0064 2766      CLR	R22
    0065 C016      RJMP	0x007C
(0022)  {
(0023)   PORTC=sel;
    0066 BB45      OUT	0x15,R20
(0024)   PORTA=0xff-Table[p[i]];
    0067 2FE6      MOV	R30,R22
    0068 27FF      CLR	R31
    0069 0DEA      ADD	R30,R10
    006A 1DFB      ADC	R31,R11
    006B 81E0      LDD	R30,Z+0
    006C 27FF      CLR	R31
    006D E680      LDI	R24,0x60
    006E E090      LDI	R25,0
    006F 0FE8      ADD	R30,R24
    0070 1FF9      ADC	R31,R25
    0071 8020      LDD	R2,Z+0
    0072 2433      CLR	R3
    0073 EF8F      LDI	R24,0xFF
    0074 E090      LDI	R25,0
    0075 1982      SUB	R24,R2
    0076 0993      SBC	R25,R3
    0077 BB8B      OUT	0x1B,R24
(0025)   DelayMs(2);
    0078 E002      LDI	R16,2
    0079 DFD8      RCALL	_DelayMs
(0026)   sel=sel<<1;
    007A 0F44      LSL	R20
    007B 9563      INC	R22
    007C 3064      CPI	R22,4
    007D F340      BCS	0x0066
(0027)  }
(0028) }
    007E 940E0164  CALL	pop_gset3
    0080 9508      RET
_Key_Process:
  p                    --> R20
    0081 940E0167  CALL	push_gset1
    0083 01A8      MOVW	R20,R16
(0029) 
(0030) void Key_Process(uchar *p)
(0031) {
    0084 C006      RJMP	0x008B
(0032)  while((PINB&0x01)==0){Display(Data);Key1=1;}
    0085 E60A      LDI	R16,0x6A
    0086 E010      LDI	R17,0
    0087 DFD8      RCALL	_Display
    0088 E081      LDI	R24,1
    0089 93800070  STS	_Key1,R24
    008B 9BB0      SBIS	0x16,0
    008C CFF8      RJMP	0x0085
    008D C006      RJMP	0x0094
(0033)  while((PINB&0x02)==0){Display(Data);Key2=1;}
    008E E60A      LDI	R16,0x6A
    008F E010      LDI	R17,0
    0090 DFCF      RCALL	_Display
    0091 E081      LDI	R24,1
    0092 9380006F  STS	_Key2,R24
    0094 9BB1      SBIS	0x16,1
    0095 CFF8      RJMP	0x008E
    0096 C006      RJMP	0x009D
(0034)  while((PINB&0x04)==0){Display(Data);Key3=1;}
    0097 E60A      LDI	R16,0x6A
    0098 E010      LDI	R17,0
    0099 DFC6      RCALL	_Display
    009A E081      LDI	R24,1
    009B 9380006E  STS	_Key3,R24
    009D 9BB2      SBIS	0x16,2
    009E CFF8      RJMP	0x0097
(0035)  if(Key1==1)
    009F 91800070  LDS	R24,_Key1
    00A1 3081      CPI	R24,1
    00A2 F481      BNE	0x00B3
(0036)  {
(0037)   p[3]++;
    00A3 01CA      MOVW	R24,R20
    00A4 9603      ADIW	R24,3
    00A5 01FC      MOVW	R30,R24
    00A6 8180      LDD	R24,Z+0
    00A7 5F8F      SUBI	R24,0xFF
    00A8 8380      STD	Z+0,R24
(0038)   if(p[3]==10) p[3]=0;
    00A9 01FA      MOVW	R30,R20
    00AA 8183      LDD	R24,Z+3
    00AB 308A      CPI	R24,0xA
    00AC F419      BNE	0x00B0
    00AD 2422      CLR	R2
    00AE 01FA      MOVW	R30,R20
    00AF 8223      STD	Z+3,R2
(0039)   Key1=0;
    00B0 2422      CLR	R2
    00B1 92200070  STS	_Key1,R2
(0040)  }
(0041)  if(Key2==1)
    00B3 9180006F  LDS	R24,_Key2
    00B5 3081      CPI	R24,1
    00B6 F481      BNE	0x00C7
(0042)  {
(0043)   p[2]++;
    00B7 01CA      MOVW	R24,R20
    00B8 9602      ADIW	R24,2
    00B9 01FC      MOVW	R30,R24
    00BA 8180      LDD	R24,Z+0
    00BB 5F8F      SUBI	R24,0xFF
    00BC 8380      STD	Z+0,R24
(0044)   if(p[2]==10) p[2]=0;
    00BD 01FA      MOVW	R30,R20
    00BE 8182      LDD	R24,Z+2
    00BF 308A      CPI	R24,0xA
    00C0 F419      BNE	0x00C4
    00C1 2422      CLR	R2
    00C2 01FA      MOVW	R30,R20
    00C3 8222      STD	Z+2,R2
(0045)   Key2=0;
    00C4 2422      CLR	R2
    00C5 9220006F  STS	_Key2,R2
(0046)  }
(0047)  if(Key3==1)
    00C7 9180006E  LDS	R24,_Key3
    00C9 3081      CPI	R24,1
    00CA F481      BNE	0x00DB
(0048)  {
(0049)   p[1]++;
    00CB 01CA      MOVW	R24,R20
    00CC 9601      ADIW	R24,1
    00CD 01FC      MOVW	R30,R24
    00CE 8180      LDD	R24,Z+0
    00CF 5F8F      SUBI	R24,0xFF
    00D0 8380      STD	Z+0,R24
(0050)   if(p[1]==10) p[1]=0;
    00D1 01FA      MOVW	R30,R20
    00D2 8181      LDD	R24,Z+1
    00D3 308A      CPI	R24,0xA
    00D4 F419      BNE	0x00D8
    00D5 2422      CLR	R2
    00D6 01FA      MOVW	R30,R20
    00D7 8221      STD	Z+1,R2
(0051)   Key3=0;
    00D8 2422      CLR	R2
    00D9 9220006E  STS	_Key3,R2
(0052)  }
(0053) }
    00DB 940E016A  CALL	pop_gset1
    00DD 9508      RET
_Set_Process:
  i                    --> R20
  j                    --> R20
    00DE 940E0167  CALL	push_gset1
(0054) 
(0055) void Set_Process(void)
(0056) {
(0057)  uint i,j;
(0058)  i=Data[0]*1000+Data[1]*100+Data[2]*10+Data[3];
(0059)  j=500/i;
(0060)  OCR1AH=j>>8;
    00E0 9020006B  LDS	R2,0x6B
    00E2 E684      LDI	R24,0x64
    00E3 9D82      MUL	R24,R2
    00E4 0110      MOVW	R2,R0
    00E5 9120006A  LDS	R18,0x6A
    00E7 2733      CLR	R19
    00E8 EE08      LDI	R16,0xE8
    00E9 E013      LDI	R17,3
    00EA 940E0154  CALL	empy16s
    00EC 01A8      MOVW	R20,R16
    00ED 0D42      ADD	R20,R2
    00EE 1D53      ADC	R21,R3
    00EF 9020006C  LDS	R2,0x6C
    00F1 E08A      LDI	R24,0xA
    00F2 9D82      MUL	R24,R2
    00F3 0D40      ADD	R20,R0
    00F4 1D51      ADC	R21,R1
    00F5 9020006D  LDS	R2,0x6D
    00F7 2433      CLR	R3
    00F8 0D42      ADD	R20,R2
    00F9 1D53      ADC	R21,R3
    00FA EF04      LDI	R16,0xF4
    00FB E011      LDI	R17,1
    00FC 019A      MOVW	R18,R20
    00FD 940E013A  CALL	div16u
    00FF 01A8      MOVW	R20,R16
    0100 011A      MOVW	R2,R20
    0101 2C23      MOV	R2,R3
    0102 2433      CLR	R3
    0103 BC2B      OUT	0x2B,R2
(0061)  OCR1AL=j&0x00ff;
    0104 01CA      MOVW	R24,R20
    0105 7090      ANDI	R25,0
    0106 BD8A      OUT	0x2A,R24
(0062) }
    0107 940E016A  CALL	pop_gset1
    0109 9508      RET
(0063) 
(0064) void Init_IO(void)
(0065) {
(0066)  DDRA=0xff;
_Init_IO:
    010A EF8F      LDI	R24,0xFF
    010B BB8A      OUT	0x1A,R24
(0067)  PORTA=0xff;
    010C BB8B      OUT	0x1B,R24
(0068)  DDRC=0xff;
    010D BB84      OUT	0x14,R24
(0069)  PORTC=0xff;
    010E BB85      OUT	0x15,R24
(0070)  DDRB=0x00;
    010F 2422      CLR	R2
    0110 BA27      OUT	0x17,R2
(0071)  PORTB=0x00;
    0111 BA28      OUT	0x18,R2
(0072)  DDRD=0xff;
    0112 BB81      OUT	0x11,R24
(0073)  PORTD=0xff;
    0113 BB82      OUT	0x12,R24
(0074) }
    0114 9508      RET
(0075) 
(0076) void Init_Timer1(void)
(0077) {
(0078)  TIMSK=TIMSK|0x10;
_Init_Timer1:
    0115 B789      IN	R24,0x39
    0116 6180      ORI	R24,0x10
    0117 BF89      OUT	0x39,R24
(0079)  TCCR1B=0x0a;
    0118 E08A      LDI	R24,0xA
    0119 BD8E      OUT	0x2E,R24
(0080)  TCNT1H=0x00;
    011A 2422      CLR	R2
    011B BC2D      OUT	0x2D,R2
(0081)  TCNT1L=0x00;
    011C BC2C      OUT	0x2C,R2
(0082)  Set_Process();
    011D DFC0      RCALL	_Set_Process
(0083)  SREG=SREG|0x80;
    011E 9478      BSET	7
(0084) }
    011F 9508      RET
(0085) 
(0086) void main(void)
(0087) {
(0088)  Init_IO();
_main:
    0120 DFE9      RCALL	_Init_IO
(0089)  Init_Timer1();
    0121 DFF3      RCALL	_Init_Timer1
(0090)  DelayMs(50);
    0122 E302      LDI	R16,0x32
    0123 DF2E      RCALL	_DelayMs
    0124 C007      RJMP	0x012C
(0091)  while(1)
(0092)  {
(0093)   Key_Process(Data);
    0125 E60A      LDI	R16,0x6A
    0126 E010      LDI	R17,0
    0127 DF59      RCALL	_Key_Process
(0094)   Set_Process();
    0128 DFB5      RCALL	_Set_Process
(0095)   Display(Data);
    0129 E60A      LDI	R16,0x6A
    012A E010      LDI	R17,0
    012B DF34      RCALL	_Display
    012C CFF8      RJMP	0x0125
(0096)  }
(0097) }
    012D 9508      RET
_Compare:
    012E 922A      ST	R2,-Y
    012F B62F      IN	R2,0x3F
    0130 922A      ST	R2,-Y
(0098) 
(0099) #pragma interrupt_handler Compare:7
(0100) void Compare(void)
(0101) {PORTD=~PORTD;}
FILE: <library>
    0131 B222      IN	R2,0x12
    0132 9420      COM	R2
    0133 BA22      OUT	0x12,R2
    0134 9029      LD	R2,Y+
    0135 BE2F      OUT	0x3F,R2
    0136 9029      LD	R2,Y+
    0137 9518      RETI
mod16u:
    0138 9468      BSET	6
    0139 C001      RJMP	xdiv16u
div16u:
    013A 94E8      BCLR	6
xdiv16u:
    013B 92EA      ST	R14,-Y
    013C 92FA      ST	R15,-Y
    013D 938A      ST	R24,-Y
    013E 24EE      CLR	R14
    013F 24FF      CLR	R15
    0140 E180      LDI	R24,0x10
    0141 0F00      LSL	R16
    0142 1F11      ROL	R17
    0143 1CEE      ROL	R14
    0144 1CFF      ROL	R15
    0145 16E2      CP	R14,R18
    0146 06F3      CPC	R15,R19
    0147 F018      BCS	0x014B
    0148 1AE2      SUB	R14,R18
    0149 0AF3      SBC	R15,R19
    014A 9503      INC	R16
    014B 958A      DEC	R24
    014C F7A1      BNE	0x0141
    014D F416      BRTC	0x0150
    014E 2D0E      MOV	R16,R14
    014F 2D1F      MOV	R17,R15
    0150 9189      LD	R24,Y+
    0151 90F9      LD	R15,Y+
    0152 90E9      LD	R14,Y+
    0153 9508      RET
empy16s:
    0154 920A      ST	R0,-Y
    0155 921A      ST	R1,-Y
    0156 938A      ST	R24,-Y
    0157 939A      ST	R25,-Y
    0158 9F02      MUL	R16,R18
    0159 01C0      MOVW	R24,R0
    015A 9F12      MUL	R17,R18
    015B 0D90      ADD	R25,R0
    015C 9F03      MUL	R16,R19
    015D 0D90      ADD	R25,R0
    015E 018C      MOVW	R16,R24
    015F 9199      LD	R25,Y+
    0160 9189      LD	R24,Y+
    0161 9019      LD	R1,Y+
    0162 9009      LD	R0,Y+
    0163 9508      RET
pop_gset3:
    0164 E0E4      LDI	R30,4
    0165 940C016B  JMP	pop
push_gset1:
    0167 935A      ST	R21,-Y
    0168 934A      ST	R20,-Y
    0169 9508      RET
pop_gset1:
    016A E0E1      LDI	R30,1
pop:
    016B 9149      LD	R20,Y+
    016C 9159      LD	R21,Y+
    016D FDE0      SBRC	R30,0
    016E 9508      RET
    016F 9169      LD	R22,Y+
    0170 9179      LD	R23,Y+
    0171 FDE1      SBRC	R30,1
    0172 9508      RET
    0173 90A9      LD	R10,Y+
    0174 90B9      LD	R11,Y+
    0175 FDE2      SBRC	R30,2
    0176 9508      RET
    0177 90C9      LD	R12,Y+
    0178 90D9      LD	R13,Y+
    0179 FDE3      SBRC	R30,3
    017A 9508      RET
    017B 90E9      LD	R14,Y+
    017C 90F9      LD	R15,Y+
    017D 9508      RET
push_gset2:
    017E 937A      ST	R23,-Y
    017F 936A      ST	R22,-Y
    0180 940C0167  JMP	push_gset1
push_gset3:
    0182 92BA      ST	R11,-Y
    0183 92AA      ST	R10,-Y
    0184 940C017E  JMP	push_gset2

⌨️ 快捷键说明

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