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

📄 sudu.lst

📁 用AVR单片机实现脉冲采集源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0143) 	ndata[7] = numHH;
    0155 90200074  LDS	R2,_numHH
    0157 92200067  STS	0x67,R2
(0144) 	UCSRB|=(1<<TXCIE);
    0159 9A56      SBI	0x0A,6
(0145) 	UDR = ndata[0];
    015A 90200060  LDS	R2,0x60
    015C B82C      OUT	0x0C,R2
(0146)     
(0147) 	}
    015D 9508      RET
_uart0_tx_isr:
    015E 922A      ST	R2,-Y
    015F 938A      ST	R24,-Y
    0160 939A      ST	R25,-Y
    0161 93EA      ST	R30,-Y
    0162 93FA      ST	R31,-Y
    0163 B62F      IN	R2,0x3F
    0164 922A      ST	R2,-Y
(0148) 
(0149) 
(0150) #pragma interrupt_handler uart0_tx_isr:iv_USART_TXC
(0151) void uart0_tx_isr(void)
(0152) {
(0153)           
(0154) if(K<7)
    0165 91800073  LDS	R24,_K
    0167 3087      CPI	R24,7
    0168 F468      BCC	0x0176
(0155)      {K=K+1;
    0169 5F8F      SUBI	R24,0xFF
    016A 93800073  STS	_K,R24
(0156) 	 UDR=ndata[K];
    016C E680      LDI	R24,0x60
    016D E090      LDI	R25,0
    016E 91E00073  LDS	R30,_K
    0170 27FF      CLR	R31
    0171 0FE8      ADD	R30,R24
    0172 1FF9      ADC	R31,R25
    0173 8020      LDD	R2,Z+0
    0174 B82C      OUT	0x0C,R2
(0157) 	 }  
    0175 C004      RJMP	0x017A
(0158)        
(0159)      else
(0160)     {
(0161) 	K=0;   
    0176 2422      CLR	R2
    0177 92200073  STS	_K,R2
(0162) 	UCSRB&=~(1<<TXCIE);  //1?UART ?¤?é?¨a?D??
    0179 9856      CBI	0x0A,6
(0163) 	} 
(0164)      
(0165)      
(0166) }
    017A 9029      LD	R2,Y+
    017B BE2F      OUT	0x3F,R2
    017C 91F9      LD	R31,Y+
    017D 91E9      LD	R30,Y+
    017E 9199      LD	R25,Y+
    017F 9189      LD	R24,Y+
    0180 9029      LD	R2,Y+
    0181 9518      RETI
(0167) 
(0168) void USART_Init(void)    //串行初始化
(0169) {
(0170)     UCSRB|=(1<<TXEN);//允许发送
_USART_Init:
    0182 9A53      SBI	0x0A,3
(0171)   UBRRL=(fosc/16/(baud+1))%256; //波特率的设置
    0183 E384      LDI	R24,0x34
    0184 B989      OUT	0x09,R24
(0172)   UBRRH=(fosc/16/(baud+1))/256;
    0185 2422      CLR	R2
    0186 BC20      OUT	0x20,R2
(0173)   UCSRC=0x86;//8 位数据+1 位STOP 位
    0187 E886      LDI	R24,0x86
    0188 BD80      OUT	0x20,R24
(0174) 	 
(0175) }
    0189 9508      RET
_tim0Ovf:
    018A 922A      ST	R2,-Y
    018B 938A      ST	R24,-Y
    018C 939A      ST	R25,-Y
    018D B62F      IN	R2,0x3F
    018E 922A      ST	R2,-Y
(0176) 
(0177) 
(0178) //定时器0溢出中断
(0179) #pragma interrupt_handler tim0Ovf:10		// vector #
(0180) //测量时间定时
(0181) void tim0Ovf(void)
(0182) {
(0183)     TCCR0 = 0x00;   //停止TC0
    018F 2422      CLR	R2
    0190 BE23      OUT	0x33,R2
(0184) 	//INT0中断关
(0185) 	GICR = 0x00;
    0191 BE2B      OUT	0x3B,R2
(0186) 	
(0187) 	m += 1;
    0192 91800080  LDS	R24,_m
    0194 91900081  LDS	R25,_m+1
    0196 9601      ADIW	R24,1
    0197 93900081  STS	_m+1,R25
    0199 93800080  STS	_m,R24
(0188) 	TCNT0 = TIME50ms; 
    019B EA8E      LDI	R24,0xAE
    019C BF82      OUT	0x32,R24
(0189) 	TCCR0 = 0x05;      // Timer on //1024分频
    019D E085      LDI	R24,5
    019E BF83      OUT	0x33,R24
(0190) 	
(0191) 	//PORTB |= (1<<PORTB1);
(0192) 	//PORTB &= ~(1<<PORTB1);
(0193) 	
(0194) 	if(GIFR& 0x40)
    019F B62A      IN	R2,0x3A
    01A0 FE26      SBRS	R2,6
    01A1 C002      RJMP	0x01A4
(0195)       GIFR = 0x40;    //清除INT0中断标志
    01A2 E480      LDI	R24,0x40
    01A3 BF8A      OUT	0x3A,R24
(0196) 	SEI();
    01A4 9478      BSET	7
(0197) 	//INT0中断开
(0198) 	GICR = 0x40;
    01A5 E480      LDI	R24,0x40
    01A6 BF8B      OUT	0x3B,R24
(0199) 	
(0200) }
    01A7 9029      LD	R2,Y+
    01A8 BE2F      OUT	0x3F,R2
    01A9 9199      LD	R25,Y+
    01AA 9189      LD	R24,Y+
    01AB 9029      LD	R2,Y+
    01AC 9518      RETI
_INT_0:
    01AD D088      RCALL	push_lset
(0201) //INT0中断服务子程序
(0202) #pragma interrupt_handler INT_0:2	// vector #
(0203) 
(0204) void INT_0(void)
(0205) {
(0206)     n = m;
    01AE 90200080  LDS	R2,_m
    01B0 90300081  LDS	R3,_m+1
    01B2 9230007F  STS	_n+1,R3
    01B4 9220007E  STS	_n,R2
(0207) 	/*
(0208) 	while(1)
(0209) 	{
(0210) 	PORTD |= (1<<PORTD3);
(0211) 	PORTD &= ~(1<<PORTD3);
(0212) 	delay(500);
(0213) 	}
(0214) 	*/
(0215) 	num_read();      //从EEROM读出num
    01B6 DF62      RCALL	_num_read
(0216) 	num += m ;  
    01B7 90200080  LDS	R2,_m
    01B9 90300081  LDS	R3,_m+1
    01BB 2444      CLR	R4
    01BC 2455      CLR	R5
    01BD 9080007A  LDS	R8,_num+2
    01BF 9090007B  LDS	R9,_num+3
    01C1 90600078  LDS	R6,_num
    01C3 90700079  LDS	R7,_num+1
    01C5 0C62      ADD	R6,R2
    01C6 1C73      ADC	R7,R3
    01C7 1C84      ADC	R8,R4
    01C8 1C95      ADC	R9,R5
    01C9 92700079  STS	_num+1,R7
    01CB 92600078  STS	_num,R6
    01CD 9290007B  STS	_num+3,R9
    01CF 9280007A  STS	_num+2,R8
(0217) 	num_write();     //将num写入EEROM
    01D1 DF5C      RCALL	_num_write
(0218) 	DataTransmit();  //串行485数据发送
    01D2 DF70      RCALL	_DataTransmit
(0219) 	m = 0;
    01D3 2422      CLR	R2
    01D4 2433      CLR	R3
    01D5 92300081  STS	_m+1,R3
    01D7 92200080  STS	_m,R2
(0220) 	TCNT0 = TIME50ms;
    01D9 EA8E      LDI	R24,0xAE
    01DA BF82      OUT	0x32,R24
(0221) 	TCCR0 = 0x05;    //Timer on //1024分频
    01DB E085      LDI	R24,5
    01DC BF83      OUT	0x33,R24
(0222) 	
(0223)   
(0224) }
    01DD D06F      RCALL	pop_lset
    01DE 9518      RETI
(0225) 
(0226) 
(0227) void main(void)
(0228) {
(0229)     delay(200);
_main:
    01DF EC08      LDI	R16,0xC8
    01E0 DE56      RCALL	_delay
(0230)     OSCCAL=e2rom_read(osccal_addr); 
    01E1 EF0F      LDI	R16,0xFF
    01E2 E011      LDI	R17,1
    01E3 DF2E      RCALL	_e2rom_read
    01E4 BF01      OUT	0x31,R16
(0231) 	 //OSCCAL=osccal;
(0232) 	 
(0233) 	PORTD|=(1<<PORTD3);
    01E5 9A93      SBI	0x12,3
(0234) 	
(0235) 	MCUCR = 0x02;        //INT0下降沿				 
    01E6 E082      LDI	R24,2
    01E7 BF85      OUT	0x35,R24
(0236) 	TIMSK = 0x01;        //TC0溢出中断允许
    01E8 E081      LDI	R24,1
    01E9 BF89      OUT	0x39,R24
(0237) 	
(0238) 	//定时器0中断设置
(0239) 	TCCR0 = 0x00;        //停止TC0
    01EA 2422      CLR	R2
    01EB BE23      OUT	0x33,R2
(0240) 	TCNT0 = TIME50ms;    //初装值
    01EC EA8E      LDI	R24,0xAE
    01ED BF82      OUT	0x32,R24
(0241) 	
(0242) 	USART_Init();
    01EE DF93      RCALL	_USART_Init
(0243) 	
(0244) 	DDRD=0xfb;
    01EF EF8B      LDI	R24,0xFB
    01F0 BB81      OUT	0x11,R24
(0245) 	
(0246) 	SEI();
    01F1 9478      BSET	7
(0247) 	
(0248) 	GICR = 0x40;         //INT0中断开
    01F2 E480      LDI	R24,0x40
    01F3 BF8B      OUT	0x3B,R24
(0249) 	m = 0;
    01F4 2422      CLR	R2
    01F5 2433      CLR	R3
    01F6 92300081  STS	_m+1,R3
    01F8 92200080  STS	_m,R2
(0250) 	TCCR0 = 0x05;        //Timer on //1024分频
    01FA E085      LDI	R24,5
    01FB BF83      OUT	0x33,R24
    01FC C01B      RJMP	0x0218
(0251) 	//主循环...
(0252) 	
(0253) 	while(1)
(0254) 	{
(0255) 	   /*测试程序段,已屏蔽*/
(0256) 	   /*PORTB &= ~(1<<PORTB2);
(0257) 	   delay(1);
(0258) 	   PORTB |= (1<<PORTB2);
(0259) 	   */
(0260) 	 DataTransmit();
    01FD DF45      RCALL	_DataTransmit
(0261) 	for(k=1;k<100;k++)
    01FE E081      LDI	R24,1
    01FF E090      LDI	R25,0
    0200 9390007D  STS	_k+1,R25
    0202 9380007C  STS	_k,R24
    0204 C00B      RJMP	0x0210
(0262) 	     delay(200);  
    0205 EC08      LDI	R16,0xC8
    0206 DE30      RCALL	_delay
    0207 9180007C  LDS	R24,_k
    0209 9190007D  LDS	R25,_k+1
    020B 9601      ADIW	R24,1
    020C 9390007D  STS	_k+1,R25
    020E 9380007C  STS	_k,R24
    0210 9180007C  LDS	R24,_k
    0212 9190007D  LDS	R25,_k+1
    0214 3684      CPI	R24,0x64
    0215 E0E0      LDI	R30,0
    0216 079E      CPC	R25,R30
    0217 F368      BCS	0x0205
    0218 CFE4      RJMP	0x01FD
(0263)     
(0264) 	    
(0265) 	}
(0266)    
(0267) 
(0268) }
FILE: <library>
    0219 9508      RET
pop_gset2:
    021A E0E2      LDI	R30,2
    021B C004      RJMP	pop
push_gset1:
    021C 935A      ST	R21,-Y
    021D 934A      ST	R20,-Y
    021E 9508      RET
pop_gset1:
    021F E0E1      LDI	R30,1
pop:
    0220 9149      LD	R20,Y+
    0221 9159      LD	R21,Y+
    0222 FDE0      SBRC	R30,0
    0223 9508      RET
    0224 9169      LD	R22,Y+
    0225 9179      LD	R23,Y+
    0226 FDE1      SBRC	R30,1
    0227 9508      RET
    0228 90A9      LD	R10,Y+
    0229 90B9      LD	R11,Y+
    022A FDE2      SBRC	R30,2
    022B 9508      RET
    022C 90C9      LD	R12,Y+
    022D 90D9      LD	R13,Y+
    022E FDE3      SBRC	R30,3
    022F 9508      RET
    0230 90E9      LD	R14,Y+
    0231 90F9      LD	R15,Y+
    0232 9508      RET
push_gset2:
    0233 937A      ST	R23,-Y
    0234 936A      ST	R22,-Y
    0235 CFE6      RJMP	push_gset1
push_lset:
    0236 93FA      ST	R31,-Y
    0237 93EA      ST	R30,-Y
    0238 93BA      ST	R27,-Y
    0239 93AA      ST	R26,-Y
    023A 939A      ST	R25,-Y
    023B 938A      ST	R24,-Y
    023C 933A      ST	R19,-Y
    023D 932A      ST	R18,-Y
    023E 931A      ST	R17,-Y
    023F 930A      ST	R16,-Y
    0240 929A      ST	R9,-Y
    0241 928A      ST	R8,-Y
    0242 927A      ST	R7,-Y
    0243 926A      ST	R6,-Y
    0244 925A      ST	R5,-Y
    0245 924A      ST	R4,-Y
    0246 923A      ST	R3,-Y
    0247 922A      ST	R2,-Y
    0248 921A      ST	R1,-Y
    0249 920A      ST	R0,-Y
    024A B60F      IN	R0,0x3F
    024B 920A      ST	R0,-Y
    024C 9508      RET
pop_lset:
    024D 9009      LD	R0,Y+
    024E BE0F      OUT	0x3F,R0
    024F 9009      LD	R0,Y+
    0250 9019      LD	R1,Y+
    0251 9029      LD	R2,Y+
    0252 9039      LD	R3,Y+
    0253 9049      LD	R4,Y+
    0254 9059      LD	R5,Y+
    0255 9069      LD	R6,Y+
    0256 9079      LD	R7,Y+
    0257 9089      LD	R8,Y+
    0258 9099      LD	R9,Y+
    0259 9109      LD	R16,Y+
    025A 9119      LD	R17,Y+
    025B 9129      LD	R18,Y+
    025C 9139      LD	R19,Y+
    025D 9189      LD	R24,Y+
    025E 9199      LD	R25,Y+
    025F 91A9      LD	R26,Y+
    0260 91B9      LD	R27,Y+
    0261 91E9      LD	R30,Y+
    0262 91F9      LD	R31,Y+
    0263 9508      RET
lsl32:
    0264 920F      PUSH	R0
    0265 9009      LD	R0,Y+
    0266 2000      TST	R0
    0267 F031      BEQ	0x026E
    0268 0F00      LSL	R16
    0269 1F11      ROL	R17
    026A 1F22      ROL	R18
    026B 1F33      ROL	R19
    026C 940A      DEC	R0
    026D CFF8      RJMP	0x0266
    026E 900F      POP	R0
    026F 9508      RET
lsr32:
    0270 920F      PUSH	R0
    0271 9009      LD	R0,Y+
    0272 2000      TST	R0
    0273 F031      BEQ	0x027A
    0274 9536      LSR	R19
    0275 9527      ROR	R18
    0276 9517      ROR	R17
    0277 9507      ROR	R16
    0278 940A      DEC	R0
    0279 CFF8      RJMP	0x0272
    027A 900F      POP	R0
    027B 9508      RET

⌨️ 快捷键说明

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