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

📄 adc0832.lst

📁 AVRmega8515的AD转换
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__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 37E6      CPI	R30,0x76
    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 D081      RCALL	_main
_exit:
    0037 CFFF      RJMP	_exit
FILE: D:\AVR实验\adc0832_avr\adc0832.c
(0001) //adc0832相关程序
(0002) #include "adc0832.h"
(0003) 
(0004) 
(0005) 
(0006) uchar read_adc(void)
(0007) {  	 
(0008)      uchar i,data1;
(0009)      Clr_adc_cs;//bADcs = 0;
_read_adc:
  data1                --> R16
  i                    --> R18
    0038 98C6      CBI	0x18,6
(0010) 	 Clr_adc_clk;//bADcl=0;
    0039 98C5      CBI	0x18,5
(0011) 	 Set_adc_data;//bADda=1;
    003A 9AC4      SBI	0x18,4
(0012) 	 Set_adc_clk;//bADcl=1;
    003B 9AC5      SBI	0x18,5
(0013) 	 Clr_adc_clk;//bADcl=0;
    003C 98C5      CBI	0x18,5
(0014) 	 Set_adc_data;//bADda=1;
    003D 9AC4      SBI	0x18,4
(0015) 	 Set_adc_clk;// bADcl=1;
    003E 9AC5      SBI	0x18,5
(0016) 	 Clr_adc_clk;//bADcl=0;
    003F 98C5      CBI	0x18,5
(0017) 	 Clr_adc_data;//bADda=0;
    0040 98C4      CBI	0x18,4
(0018) 	 Set_adc_clk;//bADcl=1;
    0041 9AC5      SBI	0x18,5
(0019) 	 Clr_adc_clk;//bADcl=0;
    0042 98C5      CBI	0x18,5
(0020) 	 Set_adc_data;//bADda=1;
    0043 9AC4      SBI	0x18,4
(0021)      Set_adc_clk;//bADcl=1;
    0044 9AC5      SBI	0x18,5
(0022) 	 Clr_adc_clk;//bADcl=0;	
    0045 98C5      CBI	0x18,5
(0023) 	 adc_data_in;
    0046 98BC      CBI	0x17,4
(0024)      for(i=8;i>0;i--)
    0047 E028      LDI	R18,0x8
    0048 C009      RJMP	0x0052
(0025) 	 	{
(0026) 		data1<<=1;
    0049 0F00      LSL	R16
(0027) 	 	Clr_adc_clk;//bADcl=0;
    004A 98C5      CBI	0x18,5
(0028) 		asm("nop");              //延时很关键1us
    004B 0000      NOP
(0029) 		Set_adc_clk;//bADcl=1;
    004C 9AC5      SBI	0x18,5
(0030) 		asm("nop");
    004D 0000      NOP
(0031) 		if(adc_read_data) data1|=0x01;
    004E 9BB4      SBIS	0x16,4
    004F C001      RJMP	0x0051
    0050 6001      ORI	R16,1
    0051 952A      DEC	R18
    0052 2422      CLR	R2
    0053 1622      CP	R2,R18
    0054 F3A0      BCS	0x0049
(0032) 	 	}
(0033)        Set_adc_cs;// bADcs=1;
    0055 9AC6      SBI	0x18,6
(0034)        adc_data_out;
    0056 9ABC      SBI	0x17,4
(0035) 	   
(0036) 	   return data1;
    0057 9508      RET
_returnvol:
  data2                --> R10
    0058 D11E      RCALL	push_gset3
(0037) 	 
(0038) }
(0039) 
(0040) uint returnvol(void)
(0041) {
(0042)    uchar data2;
(0043)    data2=((ulong)read_adc()*493)/256;
    0059 DFDE      RCALL	_read_adc
    005A 2E20      MOV	R2,R16
    005B 2433      CLR	R3
    005C 2444      CLR	R4
    005D 2455      CLR	R5
    005E EE4D      LDI	R20,0xED
    005F E051      LDI	R21,1
    0060 E060      LDI	R22,0
    0061 E070      LDI	R23,0
    0062 925A      ST	R5,-Y
    0063 924A      ST	R4,-Y
    0064 923A      ST	R3,-Y
    0065 922A      ST	R2,-Y
    0066 018A      MOVW	R16,R20
    0067 019B      MOVW	R18,R22
    0068 D0DA      RCALL	empy32u
    0069 E088      LDI	R24,0x8
    006A E090      LDI	R25,0
    006B 938A      ST	R24,-Y
    006C D14A      RCALL	lsr32
    006D 2EA0      MOV	R10,R16
(0044)    
(0045)    return data2;
    006E 2711      CLR	R17
    006F D0FF      RCALL	pop_gset3
    0070 9508      RET
_update_display_dp:
  byte_counter         --> R20
  bit_count            --> R22
  temp_i               --> R10
  k                    --> R12
    0071 D103      RCALL	push_gset4
    0072 0168      MOVW	R12,R16
FILE: D:\AVR实验\adc0832_avr\m4094.c
(0001) /*4094显示模式
(0002) 基于实验板接线方式
(0003) */
(0004) #include "d4094.h"
(0005) 
(0006) 
(0007) uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
(0008) uchar led_buffer[4]={0,3};
(0009) 
(0010) void update_display_dp(uint k)
(0011) {
(0012) 	 uchar bit_count=0;
    0073 2766      CLR	R22
(0013) 	 uchar byte_counter=0;
    0074 2744      CLR	R20
(0014)      uchar temp_i=0;
    0075 24AA      CLR	R10
(0015) 	 
(0016)      led_buffer[3]=k/1000;
    0076 EE28      LDI	R18,0xE8
    0077 E033      LDI	R19,3
    0078 0186      MOVW	R16,R12
    0079 D09F      RCALL	div16u
    007A 9300006D  STS	led_buffer+3,R16
(0017)      led_buffer[2]=(k%1000)/100;
    007C EE28      LDI	R18,0xE8
    007D E033      LDI	R19,3
    007E 0186      MOVW	R16,R12
    007F D097      RCALL	mod16u
    0080 E624      LDI	R18,0x64
    0081 E030      LDI	R19,0
    0082 D096      RCALL	div16u
    0083 9300006C  STS	led_buffer+2,R16
(0018)      led_buffer[1]=(k%100)/10;
    0085 E624      LDI	R18,0x64
    0086 E030      LDI	R19,0
    0087 0186      MOVW	R16,R12
    0088 D08E      RCALL	mod16u
    0089 E02A      LDI	R18,0xA
    008A E030      LDI	R19,0
    008B D08D      RCALL	div16u
    008C 9300006B  STS	led_buffer+1,R16
(0019)      led_buffer[0]=k%10;
    008E E02A      LDI	R18,0xA
    008F E030      LDI	R19,0
    0090 0186      MOVW	R16,R12
    0091 D085      RCALL	mod16u
    0092 9300006A  STS	led_buffer,R16
(0020) 	 
(0021)      CLR_STR_4094;//led_str_off;
    0094 98AE      CBI	0x15,6
(0022)      CLR_CLK_4094;//led_clk_off;
    0095 98AD      CBI	0x15,5
(0023) 	
(0024)      for(byte_counter=0;byte_counter<4;byte_counter++)
    0096 C01C      RJMP	0x00B3
(0025) 	   {
(0026) 	      bit_count=8;
    0097 E068      LDI	R22,0x8
(0027) 	       temp_i=table2[led_buffer[byte_counter]];
    0098 E68A      LDI	R24,0x6A
    0099 E090      LDI	R25,0
    009A 2FE4      MOV	R30,R20
    009B 27FF      CLR	R31
    009C 0FE8      ADD	R30,R24
    009D 1FF9      ADC	R31,R25
    009E 81E0      LDD	R30,Z+0
    009F 27FF      CLR	R31
    00A0 E680      LDI	R24,0x60
    00A1 E090      LDI	R25,0
    00A2 0FE8      ADD	R30,R24
    00A3 1FF9      ADC	R31,R25
    00A4 80A0      LDD	R10,Z+0
    00A5 C009      RJMP	0x00AF
(0028) 
(0029) 	       while(bit_count>0)
(0030) 		      {
(0031) 		      if((temp_i&0x01)==0)
    00A6 FCA0      SBRC	R10,0
    00A7 C002      RJMP	0x00AA
(0032) 			     {
(0033) 			         CLR_DATA_4094;//led_d_off;
    00A8 98AC      CBI	0x15,4
(0034) 			      }
    00A9 C001      RJMP	0x00AB
(0035) 	        	else
(0036) 		        	{
(0037) 			      SET_DATA_4094;//led_d_on;
    00AA 9AAC      SBI	0x15,4
(0038) 			           }
(0039) 		temp_i=(temp_i>>1);
    00AB 94A6      LSR	R10
(0040) 		
(0041) 	
(0042) 		SET_CLK_4094;//led_clk_on;
    00AC 9AAD      SBI	0x15,5
(0043) 
(0044) 		CLR_CLK_4094;//led_clk_off;
    00AD 98AD      CBI	0x15,5
(0045) 
(0046) 		bit_count--;			
    00AE 956A      DEC	R22
    00AF 2422      CLR	R2
    00B0 1626      CP	R2,R22
    00B1 F3A0      BCS	0x00A6
    00B2 9543      INC	R20
    00B3 3044      CPI	R20,4
    00B4 F310      BCS	0x0097
(0047) 		
(0048) 		}
(0049) 	
(0050) 	}
(0051)     SET_STR_4094;
    00B5 9AAE      SBI	0x15,6
    00B6 D0BA      RCALL	pop_gset4
    00B7 9508      RET
FILE: D:\AVR实验\adc0832_avr\main_adc0832.c
(0001) #include <iom8515v.h>
(0002) #include <macros.h>
(0003) 
(0004) #define uchar unsigned char
(0005) #define uint  unsigned int
(0006) 
(0007) uint num0,num1,num2,num;
(0008) 
(0009) main()
(0010) {
(0011)    DDRB=0xFF;
_main:
    00B8 EF8F      LDI	R24,0xFF
    00B9 BB87      OUT	0x17,R24
(0012)    PORTB=0xFF;
    00BA BB88      OUT	0x18,R24
(0013)    DDRC=0xFF;
    00BB BB84      OUT	0x14,R24

⌨️ 快捷键说明

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