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

📄 8888.lst

📁 这是AVR的AD转化的c语言编程源码
💻 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 D070      RCALL	_main
_exit:
    0037 CFFF      RJMP	_exit
_DelayMs:
  j                    --> R20
  i                    --> R16
    0038 D0AB      RCALL	push_gset1
FILE: J:\AVRpractice\BOOK\ADC\ADC.c
(0001) #include<io8535v.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--)
    0039 C007      RJMP	0x0041
(0012)   {for(j=250;j!=0;j--) {;}}
    003A EF4A      LDI	R20,0xFA
    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 D0A2      RCALL	pop_gset1
    0045 9508      RET
_Display:
  sel                  --> R20
  i                    --> R22
  p                    --> R10
    0046 D0B7      RCALL	push_gset3
    0047 2EA0      MOV	R10,R16
    0048 2EB1      MOV	R11,R17
(0014) 
(0015) void Display(uchar *p) //间隔5ms显示
(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)   {PORTD=sel;
    004C BB42      OUT	0x12,R20
(0019)    PORTB=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 BB88      OUT	0x18,R24
(0020)    DelayMs(20);
    005E E104      LDI	R16,0x14
    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 D07C      RCALL	pop_gset3
    0066 9508      RET
(0024) 
(0025) uint ADC_Convert(void)
(0026) {uint temp1,temp2;
(0027)  temp1=(uint)ADCL;
_ADC_Convert:
  temp1                --> R18
  temp2                --> R16
    0067 B124      IN	R18,0x04
    0068 2733      CLR	R19
(0028)  temp2=(uint)ADCH;
    0069 B105      IN	R16,0x05
    006A 2711      CLR	R17
(0029)  temp2=(temp2<<8)+temp1;
    006B 2E20      MOV	R2,R16
    006C 2E31      MOV	R3,R17
    006D 2C32      MOV	R3,R2
    006E 2422      CLR	R2
    006F 0E22      ADD	R2,R18
    0070 1E33      ADC	R3,R19
    0071 2D02      MOV	R16,R2
    0072 2D13      MOV	R17,R3
(0030)  return(temp2);
    0073 9508      RET
_Process:
  p                    --> R20
  i                    --> R22
    0074 D086      RCALL	push_gset2
    0075 2F42      MOV	R20,R18
    0076 2F53      MOV	R21,R19
    0077 2F60      MOV	R22,R16
    0078 2F71      MOV	R23,R17
(0031) }
(0032) 
(0033) void Process(uint i,uchar *p)
(0034) {p[0]=i/1000;
    0079 EE28      LDI	R18,0xE8
    007A E033      LDI	R19,3
    007B 2F06      MOV	R16,R22
    007C 2F17      MOV	R17,R23
    007D D048      RCALL	div16u
    007E 2FE4      MOV	R30,R20
    007F 2FF5      MOV	R31,R21
    0080 8300      STD	Z+0,R16
(0035)  i=i%1000;
    0081 EE28      LDI	R18,0xE8
    0082 E033      LDI	R19,3
    0083 2F06      MOV	R16,R22
    0084 2F17      MOV	R17,R23
    0085 D03E      RCALL	mod16u
    0086 2F60      MOV	R22,R16
    0087 2F71      MOV	R23,R17
(0036)  p[1]=i/100;
    0088 E624      LDI	R18,0x64
    0089 E030      LDI	R19,0
    008A D03B      RCALL	div16u
    008B 2FE4      MOV	R30,R20
    008C 2FF5      MOV	R31,R21
    008D 8301      STD	Z+1,R16
(0037)  i=i%100;
    008E E624      LDI	R18,0x64
    008F E030      LDI	R19,0
    0090 2F06      MOV	R16,R22
    0091 2F17      MOV	R17,R23
    0092 D031      RCALL	mod16u
    0093 2F60      MOV	R22,R16
    0094 2F71      MOV	R23,R17
(0038)  p[2]=i/10;
    0095 E02A      LDI	R18,0xA
    0096 E030      LDI	R19,0
    0097 D02E      RCALL	div16u
    0098 2FE4      MOV	R30,R20
    0099 2FF5      MOV	R31,R21
    009A 8302      STD	Z+2,R16
(0039)  i=i%10;
    009B E02A      LDI	R18,0xA
    009C E030      LDI	R19,0
    009D 2F06      MOV	R16,R22
    009E 2F17      MOV	R17,R23
    009F D024      RCALL	mod16u
    00A0 2F60      MOV	R22,R16
    00A1 2F71      MOV	R23,R17
(0040)  p[3]=i;
    00A2 2FE4      MOV	R30,R20
    00A3 2FF5      MOV	R31,R21
    00A4 8363      STD	Z+3,R22
(0041) }
    00A5 D03A      RCALL	pop_gset2
    00A6 9508      RET
(0042) 
(0043) void main(void)
(0044) {uint i;
(0045)  DDRA=0x00;                    //设置A口为不带上拉输入;
_main:
  i                    --> R20
    00A7 2422      CLR	R2
    00A8 BA2A      OUT	0x1A,R2
(0046)  PORTA=0x00;
    00A9 BA2B      OUT	0x1B,R2
(0047)  DDRB=0xff;                    //设置B口为推挽1输出;
    00AA EF8F      LDI	R24,0xFF
    00AB BB87      OUT	0x17,R24
(0048)  PORTB=0xff;
    00AC BB88      OUT	0x18,R24
(0049)  DDRD=0xff;                    //设置C口为推挽1输出;
    00AD BB81      OUT	0x11,R24
(0050)  PORTD=0xff;
    00AE BB82      OUT	0x12,R24
(0051)  PORTB=0x00;                   //B口初始化输出1;C口初始化输出0;点亮全部数码管;
    00AF BA28      OUT	0x18,R2
(0052)  PORTD=0xff;
    00B0 BB82      OUT	0x12,R24
(0053)  ADMUX=0x01;                   //选择第二通道ADC1;
    00B1 E081      LDI	R24,1
    00B2 B987      OUT	0x07,R24
(0054)  ADCSR=0xe6;                   //125K转换速率,自由转换模式;启动AD转换器;
    00B3 EE86      LDI	R24,0xE6
    00B4 B986      OUT	0x06,R24
(0055)  DelayMs(3000);                //延时待系统稳定;
    00B5 EB08      LDI	R16,0xB8
    00B6 E01B      LDI	R17,0xB
    00B7 DF80      RCALL	_DelayMs
    00B8 C009      RJMP	0x00C2
(0056)  while(1)
(0057)  {i=ADC_Convert();
    00B9 DFAD      RCALL	_ADC_Convert
    00BA 2F40      MOV	R20,R16
    00BB 2F51      MOV	R21,R17
(0058)   Process(i,Data);
    00BC E62A      LDI	R18,0x6A
    00BD E030      LDI	R19,0
    00BE DFB5      RCALL	_Process
(0059)   Display(Data);
    00BF E60A      LDI	R16,0x6A
    00C0 E010      LDI	R17,0
    00C1 DF84      RCALL	_Display
    00C2 CFF6      RJMP	0x00B9
(0060)  }
(0061) }
FILE: <library>
    00C3 9508      RET
mod16u:
    00C4 9468      BSET	6
    00C5 C001      RJMP	xdiv16u
div16u:
    00C6 94E8      BCLR	6
xdiv16u:
    00C7 92EA      ST	R14,-Y
    00C8 92FA      ST	R15,-Y
    00C9 938A      ST	R24,-Y
    00CA 24EE      CLR	R14
    00CB 24FF      CLR	R15
    00CC E180      LDI	R24,0x10
    00CD 0F00      LSL	R16
    00CE 1F11      ROL	R17
    00CF 1CEE      ROL	R14
    00D0 1CFF      ROL	R15
    00D1 16E2      CP	R14,R18
    00D2 06F3      CPC	R15,R19
    00D3 F018      BCS	0x00D7
    00D4 1AE2      SUB	R14,R18
    00D5 0AF3      SBC	R15,R19
    00D6 9503      INC	R16
    00D7 958A      DEC	R24
    00D8 F7A1      BNE	0x00CD
    00D9 F416      BRTC	0x00DC
    00DA 2D0E      MOV	R16,R14
    00DB 2D1F      MOV	R17,R15
    00DC 9189      LD	R24,Y+
    00DD 90F9      LD	R15,Y+
    00DE 90E9      LD	R14,Y+
    00DF 9508      RET
pop_gset2:
    00E0 E0E2      LDI	R30,2
    00E1 C006      RJMP	pop
pop_gset3:
    00E2 E0E4      LDI	R30,4
    00E3 C004      RJMP	pop
push_gset1:
    00E4 935A      ST	R21,-Y
    00E5 934A      ST	R20,-Y
    00E6 9508      RET
pop_gset1:
    00E7 E0E1      LDI	R30,1
pop:
    00E8 9149      LD	R20,Y+
    00E9 9159      LD	R21,Y+
    00EA FDE0      SBRC	R30,0
    00EB 9508      RET
    00EC 9169      LD	R22,Y+
    00ED 9179      LD	R23,Y+
    00EE FDE1      SBRC	R30,1
    00EF 9508      RET
    00F0 90A9      LD	R10,Y+
    00F1 90B9      LD	R11,Y+
    00F2 FDE2      SBRC	R30,2
    00F3 9508      RET
    00F4 90C9      LD	R12,Y+
    00F5 90D9      LD	R13,Y+
    00F6 FDE3      SBRC	R30,3
    00F7 9508      RET
    00F8 90E9      LD	R14,Y+
    00F9 90F9      LD	R15,Y+
    00FA 9508      RET
push_gset2:
    00FB 937A      ST	R23,-Y
    00FC 936A      ST	R22,-Y
    00FD CFE6      RJMP	push_gset1
push_gset3:
    00FE 92BA      ST	R11,-Y
    00FF 92AA      ST	R10,-Y
    0100 CFFA      RJMP	push_gset2

⌨️ 快捷键说明

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