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

📄 m16_ad.lst

📁 Maga16
💻 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 51C4      SUBI	R28,0x14
    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 36EE      CPI	R30,0x6E
    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 940E00BD  CALL	_main
_exit:
    0051 CFFF      RJMP	_exit
_DelayMs:
  j                    --> R20
  i                    --> R16
    0052 940E00FB  CALL	push_gset1
FILE: F:\myavr\temp\M16_AD\M16_AD.c
(0001) #include<iom16v.h>
(0002) #define uchar unsigned char
(0003) #define uint  unsigned int
(0004) 
(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)  //0.25ms
(0010) {uchar j;
(0011)  for(;i!=0;i--)
    0054 C007      RJMP	0x005C
(0012)   {for(j=250;j!=0;j--) {;}}
    0055 EF4A      LDI	R20,0xFA
    0056 C001      RJMP	0x0058
    0057 954A      DEC	R20
    0058 2344      TST	R20
    0059 F7E9      BNE	0x0057
    005A 5001      SUBI	R16,1
    005B 4010      SBCI	R17,0
    005C 3000      CPI	R16,0
    005D 0701      CPC	R16,R17
    005E F7B1      BNE	0x0055
(0013) }
    005F 940E00FE  CALL	pop_gset1
    0061 9508      RET
_Display:
  sel                  --> R20
  i                    --> R22
  p                    --> R10
    0062 940E0116  CALL	push_gset3
    0064 0158      MOVW	R10,R16
(0014) 
(0015) void Display(uchar *p) //间隔5ms显示
(0016) {uchar i,sel=0x01;
    0065 E041      LDI	R20,1
(0017)  for(i=0;i<4;i++)
    0066 2766      CLR	R22
    0067 C017      RJMP	0x007F
(0018)   {PORTD=sel;
    0068 BB42      OUT	0x12,R20
(0019)    PORTB=0xff-Table[p[i]];
    0069 2FE6      MOV	R30,R22
    006A 27FF      CLR	R31
    006B 0DEA      ADD	R30,R10
    006C 1DFB      ADC	R31,R11
    006D 81E0      LDD	R30,Z+0
    006E 27FF      CLR	R31
    006F E680      LDI	R24,0x60
    0070 E090      LDI	R25,0
    0071 0FE8      ADD	R30,R24
    0072 1FF9      ADC	R31,R25
    0073 8020      LDD	R2,Z+0
    0074 2433      CLR	R3
    0075 EF8F      LDI	R24,0xFF
    0076 E090      LDI	R25,0
    0077 1982      SUB	R24,R2
    0078 0993      SBC	R25,R3
    0079 BB88      OUT	0x18,R24
(0020)    DelayMs(10);
    007A E00A      LDI	R16,0xA
    007B E010      LDI	R17,0
    007C DFD5      RCALL	_DelayMs
(0021)    sel=sel<<1;
    007D 0F44      LSL	R20
    007E 9563      INC	R22
    007F 3064      CPI	R22,4
    0080 F338      BCS	0x0068
(0022)   }
(0023) }
    0081 940E00F8  CALL	pop_gset3
    0083 9508      RET
(0024) 
(0025) uint ADC_Convert(void)
(0026) {uint temp1,temp2;
(0027)  temp1=(uint)ADCL;
(0028)  temp2=(uint)ADCH;
(0029)  temp2=(temp2<<8)+temp1;
(0030)  return(temp2);
_ADC_Convert:
  temp1                --> R18
  temp2                --> R16
    0084 B124      IN	R18,0x04
    0085 2733      CLR	R19
    0086 B105      IN	R16,0x05
    0087 2711      CLR	R17
    0088 0118      MOVW	R2,R16
    0089 2C32      MOV	R3,R2
    008A 2422      CLR	R2
    008B 0E22      ADD	R2,R18
    008C 1E33      ADC	R3,R19
    008D 0181      MOVW	R16,R2
    008E 9508      RET
_Process:
  p                    --> R20
  i                    --> R22
    008F 940E0112  CALL	push_gset2
    0091 01A9      MOVW	R20,R18
    0092 01B8      MOVW	R22,R16
(0031) }
(0032) 
(0033) void Process(uint i,uchar *p)
(0034) {p[0]=i/1000;
    0093 EE28      LDI	R18,0xE8
    0094 E033      LDI	R19,3
    0095 018B      MOVW	R16,R22
    0096 940E00DB  CALL	div16u
    0098 01FA      MOVW	R30,R20
    0099 8300      STD	Z+0,R16
(0035)  i=i%1000;
(0036)  p[1]=i/100;
    009A EE28      LDI	R18,0xE8
    009B E033      LDI	R19,3
    009C 018B      MOVW	R16,R22
    009D 940E00D9  CALL	mod16u
    009F 01B8      MOVW	R22,R16
    00A0 E624      LDI	R18,0x64
    00A1 E030      LDI	R19,0
    00A2 940E00DB  CALL	div16u
    00A4 01FA      MOVW	R30,R20
    00A5 8301      STD	Z+1,R16
(0037)  i=i%100;
(0038)  p[2]=i/10;
    00A6 E624      LDI	R18,0x64
    00A7 E030      LDI	R19,0
    00A8 018B      MOVW	R16,R22
    00A9 940E00D9  CALL	mod16u
    00AB 01B8      MOVW	R22,R16
    00AC E02A      LDI	R18,0xA
    00AD E030      LDI	R19,0
    00AE 940E00DB  CALL	div16u
    00B0 01FA      MOVW	R30,R20
    00B1 8302      STD	Z+2,R16
(0039)  i=i%10;
(0040)  p[3]=i;
    00B2 E02A      LDI	R18,0xA
    00B3 E030      LDI	R19,0
    00B4 018B      MOVW	R16,R22
    00B5 940E00D9  CALL	mod16u
    00B7 01B8      MOVW	R22,R16
    00B8 01FA      MOVW	R30,R20
    00B9 8363      STD	Z+3,R22
(0041) }
    00BA 940E00F5  CALL	pop_gset2
    00BC 9508      RET
(0042) 
(0043) void main(void)
(0044) {uint i;
(0045)  DDRA=0x00;                    //设置A口为不带上拉输入;
_main:
  i                    --> R20
    00BD 2422      CLR	R2
    00BE BA2A      OUT	0x1A,R2
(0046)  PORTA=0x00;
    00BF BA2B      OUT	0x1B,R2
(0047)  DDRB=0xff;                    //设置B口为推挽1输出;
    00C0 EF8F      LDI	R24,0xFF
    00C1 BB87      OUT	0x17,R24
(0048)  PORTB=0xff;
    00C2 BB88      OUT	0x18,R24
(0049)  DDRD=0xff;                    //设置C口为推挽1输出;
    00C3 BB81      OUT	0x11,R24
(0050)  PORTD=0xff;
    00C4 BB82      OUT	0x12,R24
(0051)  PORTB=0x00;                   //B口初始化输出1;C口初始化输出0;点亮全部数码管;
    00C5 BA28      OUT	0x18,R2
(0052)  PORTD=0xff;
    00C6 BB82      OUT	0x12,R24
(0053)  ADMUX=0x01;                   //选择第二通道ADC1;
    00C7 E081      LDI	R24,1
    00C8 B987      OUT	0x07,R24
(0054)  ADCSR=0xe6;                   //125K转换速率,自由转换模式;启动AD转换器;
    00C9 EE86      LDI	R24,0xE6
    00CA B986      OUT	0x06,R24
(0055)  DelayMs(3000);                //延时待系统稳定;
    00CB EB08      LDI	R16,0xB8
    00CC E01B      LDI	R17,0xB
    00CD DF84      RCALL	_DelayMs
    00CE C008      RJMP	0x00D7
(0056)  while(1)
(0057)  {i=ADC_Convert();
    00CF DFB4      RCALL	_ADC_Convert
    00D0 01A8      MOVW	R20,R16
(0058)   Process(i,Data);
    00D1 E62A      LDI	R18,0x6A
    00D2 E030      LDI	R19,0
    00D3 DFBB      RCALL	_Process
(0059)   Display(Data);
    00D4 E60A      LDI	R16,0x6A
    00D5 E010      LDI	R17,0
    00D6 DF8B      RCALL	_Display
    00D7 CFF7      RJMP	0x00CF
(0060)  }
(0061) }
FILE: <library>
    00D8 9508      RET
mod16u:
    00D9 9468      BSET	6
    00DA C001      RJMP	xdiv16u
div16u:
    00DB 94E8      BCLR	6
xdiv16u:
    00DC 92EA      ST	R14,-Y
    00DD 92FA      ST	R15,-Y
    00DE 938A      ST	R24,-Y
    00DF 24EE      CLR	R14
    00E0 24FF      CLR	R15
    00E1 E180      LDI	R24,0x10
    00E2 0F00      LSL	R16
    00E3 1F11      ROL	R17
    00E4 1CEE      ROL	R14
    00E5 1CFF      ROL	R15
    00E6 16E2      CP	R14,R18
    00E7 06F3      CPC	R15,R19
    00E8 F018      BCS	0x00EC
    00E9 1AE2      SUB	R14,R18
    00EA 0AF3      SBC	R15,R19
    00EB 9503      INC	R16
    00EC 958A      DEC	R24
    00ED F7A1      BNE	0x00E2
    00EE F416      BRTC	0x00F1
    00EF 2D0E      MOV	R16,R14
    00F0 2D1F      MOV	R17,R15
    00F1 9189      LD	R24,Y+
    00F2 90F9      LD	R15,Y+
    00F3 90E9      LD	R14,Y+
    00F4 9508      RET
pop_gset2:
    00F5 E0E2      LDI	R30,2
    00F6 940C00FF  JMP	pop
pop_gset3:
    00F8 E0E4      LDI	R30,4
    00F9 940C00FF  JMP	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 940C00FB  JMP	push_gset1
push_gset3:
    0116 92BA      ST	R11,-Y
    0117 92AA      ST	R10,-Y
    0118 940C0112  JMP	push_gset2

⌨️ 快捷键说明

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