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

📄 adc.lst

📁 adc检测串口反馈到PC上,数据不断发送
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    003D E5CF      LDI	R28,0x5F
    003E E0D4      LDI	R29,4
    003F BFCD      OUT	0x3D,R28
    0040 BFDE      OUT	0x3E,R29
    0041 51C0      SUBI	R28,0x10
    0042 40D0      SBCI	R29,0
    0043 EA0A      LDI	R16,0xAA
    0044 8308      STD	Y+0,R16
    0045 2400      CLR	R0
    0046 E7E6      LDI	R30,0x76
    0047 E0F0      LDI	R31,0
    0048 E010      LDI	R17,0
    0049 37E8      CPI	R30,0x78
    004A 07F1      CPC	R31,R17
    004B F011      BEQ	0x004E
    004C 9201      ST	R0,Z+
    004D CFFB      RJMP	0x0049
    004E 8300      STD	Z+0,R16
    004F E6E4      LDI	R30,0x64
    0050 E0F0      LDI	R31,0
    0051 E6A0      LDI	R26,0x60
    0052 E0B0      LDI	R27,0
    0053 E010      LDI	R17,0
    0054 37EA      CPI	R30,0x7A
    0055 07F1      CPC	R31,R17
    0056 F021      BEQ	0x005B
    0057 95C8      LPM
    0058 9631      ADIW	R30,1
    0059 920D      ST	R0,X+
    005A CFF9      RJMP	0x0054
    005B 940E01B5  CALL	_main
_exit:
    005D CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\调试成功\adc\abs.h
(0001) #define Red_LedON PORTA&=(~(1<<PA5))    
(0002) #define Red_LedOFF PORTA|=(1<<PA5)      
(0003) #define Green_LedON PORTA&=(~(1<<PA4))
(0004) #define Green_LedOFF PORTA|=(1<<PA4)
(0005) #define Red_D1glint  {if((PINA&(1<<PINA5))!=(1<<PINA5)){PORTA|=(1<<PA5);}else{PORTA&=(~(1<<PA5));}}
(0006) #define Green_D1glint  {if((PINA&(1<<PINA4))!=(1<<PINA4)){PORTA|=(1<<PA4);}else{PORTA&=(~(1<<PA4));}}
(0007) 
(0008) void WDT_ON(void)
(0009)  {
(0010)    WDR(); //this prevents a timout on enabling
_WDT_ON:
    005E 95A8      WDR
(0011)    WDTCR|=(1<<WDTOE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);//WDTCR = 0x1F; //特别注意这一条不是ICC生成的,是后来加上的。
    005F B581      IN	R24,0x21
    0060 618F      ORI	R24,0x1F
    0061 BD81      OUT	0x21,R24
(0012)    WDTCR&=(~(1<<WDTOE))|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);//WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
    0062 B581      IN	R24,0x21
    0063 7E8F      ANDI	R24,0xEF
    0064 BD81      OUT	0x21,R24
    0065 9508      RET
(0013)  }
(0014) 
(0015) void WDT_OFF(void)  ///关看门狗
(0016) {
(0017)   WDR();
_WDT_OFF:
    0066 95A8      WDR
(0018)   WDTCR|=(1<<WDTOE)|(1<<WDE);
    0067 B581      IN	R24,0x21
    0068 6188      ORI	R24,0x18
    0069 BD81      OUT	0x21,R24
(0019)   WDTCR=0x00;
    006A 2422      CLR	R2
    006B BC21      OUT	0x21,R2
    006C 9508      RET
(0020) }
(0021) void delay_1ms(void)//1ms延时函数
(0022) {
(0023)   unsigned int i;
(0024)   for (i=0;i<150;i++)
_delay_1ms:
  i                    --> R16
    006D 2700      CLR	R16
    006E 2711      CLR	R17
    006F C003      RJMP	0x0073
(0025)   WDR();  
    0070 95A8      WDR
    0071 5F0F      SUBI	R16,0xFF
    0072 4F1F      SBCI	R17,0xFF
    0073 3906      CPI	R16,0x96
    0074 E0E0      LDI	R30,0
    0075 071E      CPC	R17,R30
    0076 F3C8      BCS	0x0070
    0077 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    0078 940E02D0  CALL	push_gset2
    007A 01B8      MOVW	R22,R16
(0026) }
(0027) 
(0028) void delay_nms(unsigned int n)//延时n毫秒
(0029) {
(0030)   unsigned int i;
(0031)   for (i=0;i<n;i++)//执行n次1毫秒延时
    007B 2744      CLR	R20
    007C 2755      CLR	R21
    007D C003      RJMP	0x0081
(0032)       {
(0033) 	     delay_1ms(); 
    007E DFEE      RCALL	_delay_1ms
    007F 5F4F      SUBI	R20,0xFF
    0080 4F5F      SBCI	R21,0xFF
    0081 1746      CP	R20,R22
    0082 0757      CPC	R21,R23
    0083 F3D0      BCS	0x007E
(0034)       }
(0035)   WDR(); 
    0084 95A8      WDR
    0085 940E02C1  CALL	pop_gset2
    0087 9508      RET
(0036) }
(0037) 
(0038) 
(0039) void LED_Wait_ISP(void)
(0040) {
(0041)          Red_LedON;    delay_nms(200);   Red_LedOFF;   delay_nms(200); 
_LED_Wait_ISP:
    0088 98DD      CBI	0x1B,5
    0089 EC08      LDI	R16,0xC8
    008A E010      LDI	R17,0
    008B DFEC      RCALL	_delay_nms
    008C 9ADD      SBI	0x1B,5
    008D EC08      LDI	R16,0xC8
    008E E010      LDI	R17,0
    008F DFE8      RCALL	_delay_nms
(0042) 	 Green_LedON;  delay_nms(200);   Green_LedOFF; delay_nms(200); 
    0090 98DC      CBI	0x1B,4
    0091 EC08      LDI	R16,0xC8
    0092 E010      LDI	R17,0
    0093 DFE4      RCALL	_delay_nms
    0094 9ADC      SBI	0x1B,4
    0095 EC08      LDI	R16,0xC8
    0096 E010      LDI	R17,0
    0097 DFE0      RCALL	_delay_nms
(0043) 	 Red_LedON;    delay_nms(200);   Red_LedOFF;   delay_nms(200); 
    0098 98DD      CBI	0x1B,5
    0099 EC08      LDI	R16,0xC8
    009A E010      LDI	R17,0
    009B DFDC      RCALL	_delay_nms
    009C 9ADD      SBI	0x1B,5
    009D EC08      LDI	R16,0xC8
    009E E010      LDI	R17,0
    009F DFD8      RCALL	_delay_nms
(0044) 	 Green_LedON;  delay_nms(200);   Green_LedOFF; delay_nms(200); 
    00A0 98DC      CBI	0x1B,4
    00A1 EC08      LDI	R16,0xC8
    00A2 E010      LDI	R17,0
    00A3 DFD4      RCALL	_delay_nms
    00A4 9ADC      SBI	0x1B,4
    00A5 EC08      LDI	R16,0xC8
    00A6 E010      LDI	R17,0
    00A7 DFD0      RCALL	_delay_nms
(0045) 	 Red_LedON;    delay_nms(200);   Red_LedOFF;   delay_nms(200); 
    00A8 98DD      CBI	0x1B,5
    00A9 EC08      LDI	R16,0xC8
    00AA E010      LDI	R17,0
    00AB DFCC      RCALL	_delay_nms
    00AC 9ADD      SBI	0x1B,5
    00AD EC08      LDI	R16,0xC8
    00AE E010      LDI	R17,0
    00AF DFC8      RCALL	_delay_nms
(0046) 	 Green_LedON;  delay_nms(200);   Red_LedOFF;   delay_nms(200); 
    00B0 98DC      CBI	0x1B,4
    00B1 EC08      LDI	R16,0xC8
    00B2 E010      LDI	R17,0
    00B3 DFC4      RCALL	_delay_nms
    00B4 9ADD      SBI	0x1B,5
    00B5 EC08      LDI	R16,0xC8
    00B6 E010      LDI	R17,0
    00B7 DFC0      RCALL	_delay_nms
    00B8 9508      RET
(0047) }
(0048) void LED_Texting_ISP(void)
(0049) {
(0050)      Green_LedON;//delay_nms(100);  Green_LedOFF;
_LED_Texting_ISP:
    00B9 98DC      CBI	0x1B,4
(0051) 	 Red_LedON;    delay_nms(200);  Red_LedOFF;   delay_nms(200); 
    00BA 98DD      CBI	0x1B,5
    00BB EC08      LDI	R16,0xC8
    00BC E010      LDI	R17,0
    00BD DFBA      RCALL	_delay_nms
    00BE 9ADD      SBI	0x1B,5
    00BF EC08      LDI	R16,0xC8
    00C0 E010      LDI	R17,0
    00C1 DFB6      RCALL	_delay_nms
(0052) 	 Red_LedON;    delay_nms(200);  Red_LedOFF;   delay_nms(200); 
    00C2 98DD      CBI	0x1B,5
    00C3 EC08      LDI	R16,0xC8
    00C4 E010      LDI	R17,0
    00C5 DFB2      RCALL	_delay_nms
    00C6 9ADD      SBI	0x1B,5
    00C7 EC08      LDI	R16,0xC8
    00C8 E010      LDI	R17,0
    00C9 DFAE      RCALL	_delay_nms
(0053) 	 Red_LedON;    delay_nms(200);  Red_LedOFF;   delay_nms(200); 
    00CA 98DD      CBI	0x1B,5
    00CB EC08      LDI	R16,0xC8
    00CC E010      LDI	R17,0
    00CD DFAA      RCALL	_delay_nms
    00CE 9ADD      SBI	0x1B,5
    00CF EC08      LDI	R16,0xC8
    00D0 E010      LDI	R17,0
    00D1 DFA6      RCALL	_delay_nms
    00D2 9508      RET
_USART_InitM1681:
  tmp                  --> R10
  baud                 --> R10
    00D3 940E02CE  CALL	push_gset3
    00D5 0158      MOVW	R10,R16
(0054) }
(0055) #define F_CPU     3686400
(0056) void USART_InitM1681( unsigned int baud )
(0057) {
(0058) unsigned int tmp;
(0059) //设置波特率
(0060)     tmp= F_CPU/baud/16-1;
    00D6 0115      MOVW	R2,R10
    00D7 2444      CLR	R4
    00D8 2455      CLR	R5
    00D9 E040      LDI	R20,0
    00DA E450      LDI	R21,0x40
    00DB E368      LDI	R22,0x38
    00DC E070      LDI	R23,0
    00DD 925A      ST	R5,-Y
    00DE 924A      ST	R4,-Y
    00DF 923A      ST	R3,-Y
    00E0 922A      ST	R2,-Y
    00E1 018A      MOVW	R16,R20
    00E2 019B      MOVW	R18,R22
    00E3 940E0226  CALL	div32s
    00E5 E140      LDI	R20,0x10
    00E6 E050      LDI	R21,0
    00E7 E060      LDI	R22,0
    00E8 E070      LDI	R23,0
    00E9 937A      ST	R23,-Y
    00EA 936A      ST	R22,-Y
    00EB 935A      ST	R21,-Y
    00EC 934A      ST	R20,-Y
    00ED 940E0226  CALL	div32s
    00EF 0118      MOVW	R2,R16
    00F0 0129      MOVW	R4,R18
    00F1 E041      LDI	R20,1
    00F2 E050      LDI	R21,0
    00F3 E060      LDI	R22,0
    00F4 E070      LDI	R23,0
    00F5 1A24      SUB	R2,R20
    00F6 0A35      SBC	R3,R21
    00F7 0A46      SBC	R4,R22
    00F8 0A57      SBC	R5,R23
    00F9 0151      MOVW	R10,R2
(0061)     UBRRH = (unsigned char)(tmp>>8);
    00FA 2C23      MOV	R2,R3
    00FB 2433      CLR	R3
    00FC BC20      OUT	0x20,R2
(0062)     UBRRL = (unsigned char)tmp;
    00FD B8A9      OUT	0x09,R10
(0063) //接收器与发送器使能//
(0064)     UCSRB = (1<<RXEN)|(1<<TXEN);
    00FE E188      LDI	R24,0x18
    00FF B98A      OUT	0x0A,R24
(0065) //接收器与发送器使能及接收中断使能
(0066) 	//UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
(0067) //接收器与发送器使能及收发中断使能
(0068) //	UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
(0069) // 设置帧格式: 8 个数据位, 1 个停止位//
(0070)     UCSRC = (1<<URSEL)|(3<<UCSZ0);
    0100 E886      LDI	R24,0x86
    0101 BD80      OUT	0x20,R24
    0102 940E02C4  CALL	pop_gset3
    0104 9508      RET
(0071) }
(0072) void USART_Transmit8( unsigned char data )
(0073) { 
(0074) /*检空发送标志*/
(0075) while ( !( UCSRA & (1<<UDRE)) );
_USART_Transmit8:
  data                 --> R16
    0105 9B5D      SBIS	0x0B,5
    0106 CFFE      RJMP	_USART_Transmit8
(0076) /*发送数据*/
(0077) UDR = data;
    0107 B90C      OUT	0x0C,R16
(0078) while ( !( UCSRA & (1<<UDRE)) );
    0108 9B5D      SBIS	0x0B,5
    0109 CFFE      RJMP	0x0108
    010A 9508      RET
(0079) }
(0080) 
(0081) void USART_Transmit_2( void )
(0082) {
(0083)     while ( !( UCSRA & (1<<UDRE)) );
_USART_Transmit_2:
    010B 9B5D      SBIS	0x0B,5
    010C CFFE      RJMP	_USART_Transmit_2
(0084)     UDR = 'H';
    010D E488      LDI	R24,0x48
    010E B98C      OUT	0x0C,R24
(0085)     while ( !( UCSRA & (1<<UDRE)) );
    010F 9B5D      SBIS	0x0B,5
    0110 CFFE      RJMP	0x010F
(0086)     UDR = 'e';
    0111 E685      LDI	R24,0x65
    0112 B98C      OUT	0x0C,R24
(0087)     while ( !( UCSRA & (1<<UDRE)) );
    0113 9B5D      SBIS	0x0B,5
    0114 CFFE      RJMP	0x0113
(0088)     UDR = 'l';
    0115 E68C      LDI	R24,0x6C
    0116 B98C      OUT	0x0C,R24
(0089)     while ( !( UCSRA & (1<<UDRE)) );
    0117 9B5D      SBIS	0x0B,5
    0118 CFFE      RJMP	0x0117
(0090)     UDR = 'l';
    0119 E68C      LDI	R24,0x6C
    011A B98C      OUT	0x0C,R24
(0091)     while ( !( UCSRA & (1<<UDRE)) );
    011B 9B5D      SBIS	0x0B,5
    011C CFFE      RJMP	0x011B
(0092)     UDR = 'o';
    011D E68F      LDI	R24,0x6F
    011E B98C      OUT	0x0C,R24
    011F 9508      RET
FILE: C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
(0001) #include<iom16v.h>
(0002) #include<macros.h>
(0003) #include "abs.h" 
(0004) 
(0005)           /*   七段译码字形表     */        
(0006) /*const unsigned char tabel[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
(0007) 0x88,0x83,0xc6,0xa1,0x86,0x8e};*/
(0008) //放一个串口通讯时自己能看懂的数据简单处理
(0009) const unsigned char tabel[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15};
(0010)           /*     显示缓冲区       */
(0011) unsigned int d[]={0,0,0,0,0,0,0,0,0,0,0};
(0012) void port_init(void)//端口初始化
(0013)  {
(0014)     PORTA = 0x00;DDRA  = 0xff;  PORTB = 0x00;DDRB  = 0x00;
_port_init:
    0120 2422      CLR	R2
    0121 BA2B      OUT	0x1B,R2
    0122 EF8F      LDI	R24,0xFF
    0123 BB8A      OUT	0x1A,R24
    0124 BA28      OUT	0x18,R2
    0125 BA27      OUT	0x17,R2
(0015)     PORTC = 0x00;DDRC  = 0x00;  PORTD = 0xff;DDRD  = 0x00;
    0126 BA25      OUT	0x15,R2
    0127 BA24      OUT	0x14,R2
    0128 BB82      OUT	0x12,R24
    0129 BA21      OUT	0x11,R2
(0016) 	DDRA  =0xff&((~(1<<PA3))|(~(1<<PA6)) );
    012A BB8A      OUT	0x1A,R24
    012B 9508      RET
(0017)  }
(0018) void display()
(0019) {
(0020)   USART_Transmit8(tabel[d[3]]);      //送数据
_display:
    012C E584      LDI	R24,0x54
    012D E090      LDI	R25,0
    012E 91E00066  LDS	R30,0x66
    0130 91F00067  LDS	R31,0x67
    0132 0FE8      ADD	R30,R24
    0133 1FF9      ADC	R31,R25
    0134 9104      LPM	R16,0(Z)
    0135 DFCF      RCALL	_USART_Transmit8
(0021)   delay_nms(10);
    0136 E00A      LDI	R16,0xA
    0137 E010      LDI	R17,0
    0138 DF3F      RCALL	_delay_nms
(0022)   USART_Transmit8(tabel[d[2]]);
    0139 E584      LDI	R24,0x54
    013A E090      LDI	R25,0
    013B 91E00064  LDS	R30,0x64
    013D 91F00065  LDS	R31,0x65
    013F 0FE8      ADD	R30,R24
    0140 1FF9      ADC	R31,R25
    0141 9104      LPM	R16,0(Z)
    0142 DFC2      RCALL	_USART_Transmit8
(0023)   delay_nms(10);
    0143 E00A      LDI	R16,0xA
    0144 E010      LDI	R17,0
    0145 DF32      RCALL	_delay_nms
(0024)   USART_Transmit8(tabel[d[1]]);
    0146 E584      LDI	R24,0x54
    0147 E090      LDI	R25,0
    0148 91E00062  LDS	R30,d+2
    014A 91F00063  LDS	R31,d+3
    014C 0FE8      ADD	R30,R24
    014D 1FF9      ADC	R31,R25
    014E 9104      LPM	R16,0(Z)
    014F DFB5      RCALL	_USART_Transmit8
(0025)   delay_nms(10);
    0150 E00A      LDI	R16,0xA
    0151 E010      LDI	R17,0
    0152 DF25      RCALL	_delay_nms
(0026)   USART_Transmit8(tabel[d[0]]); 
    0153 E584      LDI	R24,0x54
    0154 E090      LDI	R25,0
    0155 91E00060  LDS	R30,d
    0157 91F00061  LDS	R31,d+1
    0159 0FE8      ADD	R30,R24
    015A 1FF9      ADC	R31,R25
    015B 9104      LPM	R16,0(Z)
    015C DFA8      RCALL	_USART_Transmit8
(0027)   delay_nms(10);
    015D E00A      LDI	R16,0xA
    015E E010      LDI	R17,0
    015F DF18      RCALL	_delay_nms
    0160 9508      RET
_adctovol:
  char_p               --> Y+1
  i                    --> R10
  temp                 --> R12
  adc                  --> R10
    0161 940E02CC  CALL	push_gset4
    0163 0158      MOVW	R10,R16
(0028) }
(0029) 
(0030) unsigned int ad_con;//存放PA0的AD转换结果
(0031) /*      将AD结果转换成电压     */
(0032) #define vref   502
(0033) void adctovol(unsigned int adc)
(0034)     {
(0035) 	 unsigned int temp;
(0036) 	 unsigned char i;
(0037) 	 unsigned char *char_p;
(0038)      temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
    0164 0115      MOVW	R2,R10
    0165 2444      CLR	R4
    0166 2455      CLR	R5
    0167 EF46      LDI	R20,0xF6
    0168 E051      LDI	R21,1
    0169 E060      LDI	R22,0
    016A E070      LDI	R23,0
    016B 925A      ST	R5,-Y
    016C 924A      ST	R4,-Y
    016D 923A      ST	R3,-Y
    016E 922A      ST	R2,-Y
    016F 018A      MOVW	R16,R20
    0170 019B      MOVW	R18,R22
    0171 940E0291  CALL	empy32s
    0173 E08A      LDI	R24,0xA
    0174 E090      LDI	R25,0
    0175 938A      ST	R24,-Y
    0176 940E030E  CALL	lsr32
    0178 0168      MOVW	R12,R16
(0039)      for(i=0;i<3;i++)
    0179 24AA      CLR	R10
    017A C015      RJMP	0x0190
(0040) 	 {
(0041)         d[i]=temp%10;
    017B E082      LDI	R24,2
    017C 9D8A      MUL	R24,R10
    017D 01F0      MOVW	R30,R0
    017E E680      LDI	R24,0x60
    017F E090      LDI	R25,0
    0180 0FE8      ADD	R30,R24
    0181 1FF9      ADC	R31,R25
    0182 E02A      LDI	R18,0xA
    0183 E030      LDI	R19,0
    0184 0186      MOVW	R16,R12
    0185 940E0204  CALL	mod16u

⌨️ 快捷键说明

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