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

📄 pwm32.lss

📁 本人用AVR mega32写的一个关于输出32路PWM的程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     8ec:	90 93 89 00 	sts	0x0089, r25
     8f0:	80 93 88 00 	sts	0x0088, r24
     8f4:	df 91       	pop	r29
     8f6:	cf 91       	pop	r28
     8f8:	08 95       	ret

000008fa <T1Set17p5ms>:
	
}
/************************************************************
 Function Name:  T2Init
 Function:       Timer0 initial
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void T1Set17p5ms(void) 
{
     8fa:	cf 93       	push	r28
     8fc:	df 93       	push	r29
     8fe:	cd b7       	in	r28, 0x3d	; 61
     900:	de b7       	in	r29, 0x3e	; 62
	TCNT1   = 0;
     902:	10 92 85 00 	sts	0x0085, r1
     906:	10 92 84 00 	sts	0x0084, r1
	OCR1A   = 2240;				      /*17.5ms*/
     90a:	80 ec       	ldi	r24, 0xC0	; 192
     90c:	98 e0       	ldi	r25, 0x08	; 8
     90e:	90 93 89 00 	sts	0x0089, r25
     912:	80 93 88 00 	sts	0x0088, r24
     916:	df 91       	pop	r29
     918:	cf 91       	pop	r28
     91a:	08 95       	ret

0000091c <T1Init>:
	
}
/************************************************************
 Function Name:  T2Init
 Function:       Timer0 initial
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void T1Init(void) 
{
     91c:	cf 93       	push	r28
     91e:	df 93       	push	r29
     920:	cd b7       	in	r28, 0x3d	; 61
     922:	de b7       	in	r29, 0x3e	; 62
	OCR1A   = 63;				      /* 0.5ms*/
     924:	8f e3       	ldi	r24, 0x3F	; 63
     926:	90 e0       	ldi	r25, 0x00	; 0
     928:	90 93 89 00 	sts	0x0089, r25
     92c:	80 93 88 00 	sts	0x0088, r24
	TCNT1   = 0;
     930:	10 92 85 00 	sts	0x0085, r1
     934:	10 92 84 00 	sts	0x0084, r1
    TCCR1B  = 8;                      /*CTC模式*/
     938:	88 e0       	ldi	r24, 0x08	; 8
     93a:	80 93 81 00 	sts	0x0081, r24
	TIMSK1 |= (1<<OCIE1A);        	  /*中断允许*/
     93e:	80 91 6f 00 	lds	r24, 0x006F
     942:	82 60       	ori	r24, 0x02	; 2
     944:	80 93 6f 00 	sts	0x006F, r24
     948:	df 91       	pop	r29
     94a:	cf 91       	pop	r28
     94c:	08 95       	ret

0000094e <T1Start>:

}


/************************************************************
 Function Name:  T2Start
 Function:       Timer0 start
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void T1Start(void)
{
     94e:	cf 93       	push	r28
     950:	df 93       	push	r29
     952:	cd b7       	in	r28, 0x3d	; 61
     954:	de b7       	in	r29, 0x3e	; 62
    TCNT1   = 0;
     956:	10 92 85 00 	sts	0x0085, r1
     95a:	10 92 84 00 	sts	0x0084, r1
	TCCR1B  |= 0x03;                  /*设置定时器的分频值为64分频并开始*/
     95e:	80 91 81 00 	lds	r24, 0x0081
     962:	83 60       	ori	r24, 0x03	; 3
     964:	80 93 81 00 	sts	0x0081, r24
     968:	df 91       	pop	r29
     96a:	cf 91       	pop	r28
     96c:	08 95       	ret

0000096e <T1Close>:
} 
                                    

/************************************************************
 Function Name:  T2Close
 Function:       Timer0 close
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void T1Close(void)
{
     96e:	cf 93       	push	r28
     970:	df 93       	push	r29
     972:	cd b7       	in	r28, 0x3d	; 61
     974:	de b7       	in	r29, 0x3e	; 62
	TCCR1A  &= 0xF8;                  /*关闭定时器*/
     976:	88 ef       	ldi	r24, 0xF8	; 248
     978:	90 91 80 00 	lds	r25, 0x0080
     97c:	89 23       	and	r24, r25
     97e:	80 93 80 00 	sts	0x0080, r24
     982:	df 91       	pop	r29
     984:	cf 91       	pop	r28
     986:	08 95       	ret

00000988 <__vector_7>:
} 



/************************************************************
 Function Name:  SIGNAL(TIMER0_COMPA_vect)
 Function:       Timer0 interrupt
 Paramenter:     TIMER0_COMPA_vect               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
SIGNAL(TIMER1_COMPA_vect)  
{
     988:	1f 92       	push	r1
     98a:	0f 92       	push	r0
     98c:	0f b6       	in	r0, 0x3f	; 63
     98e:	0f 92       	push	r0
     990:	11 24       	eor	r1, r1
     992:	2f 93       	push	r18
     994:	3f 93       	push	r19
     996:	4f 93       	push	r20
     998:	5f 93       	push	r21
     99a:	6f 93       	push	r22
     99c:	7f 93       	push	r23
     99e:	8f 93       	push	r24
     9a0:	9f 93       	push	r25
     9a2:	af 93       	push	r26
     9a4:	bf 93       	push	r27
     9a6:	ef 93       	push	r30
     9a8:	ff 93       	push	r31
     9aa:	cf 93       	push	r28
     9ac:	df 93       	push	r29
     9ae:	cd b7       	in	r28, 0x3d	; 61
     9b0:	de b7       	in	r29, 0x3e	; 62
     9b2:	22 97       	sbiw	r28, 0x02	; 2
     9b4:	de bf       	out	0x3e, r29	; 62
     9b6:	cd bf       	out	0x3d, r28	; 61
		unsigned char static PwmCtrTimeCounter=1;

    	switch(PwmCtrTimeCounter)
     9b8:	80 91 00 01 	lds	r24, 0x0100
     9bc:	28 2f       	mov	r18, r24
     9be:	33 27       	eor	r19, r19
     9c0:	3a 83       	std	Y+2, r19	; 0x02
     9c2:	29 83       	std	Y+1, r18	; 0x01
     9c4:	89 81       	ldd	r24, Y+1	; 0x01
     9c6:	9a 81       	ldd	r25, Y+2	; 0x02
     9c8:	82 30       	cpi	r24, 0x02	; 2
     9ca:	91 05       	cpc	r25, r1
     9cc:	e9 f0       	breq	.+58     	; 0xa08 <__vector_7+0x80>
     9ce:	29 81       	ldd	r18, Y+1	; 0x01
     9d0:	3a 81       	ldd	r19, Y+2	; 0x02
     9d2:	23 30       	cpi	r18, 0x03	; 3
     9d4:	31 05       	cpc	r19, r1
     9d6:	34 f4       	brge	.+12     	; 0x9e4 <__vector_7+0x5c>
     9d8:	89 81       	ldd	r24, Y+1	; 0x01
     9da:	9a 81       	ldd	r25, Y+2	; 0x02
     9dc:	81 30       	cpi	r24, 0x01	; 1
     9de:	91 05       	cpc	r25, r1
     9e0:	61 f0       	breq	.+24     	; 0x9fa <__vector_7+0x72>
     9e2:	46 c0       	rjmp	.+140    	; 0xa70 <__vector_7+0xe8>
     9e4:	29 81       	ldd	r18, Y+1	; 0x01
     9e6:	3a 81       	ldd	r19, Y+2	; 0x02
     9e8:	23 30       	cpi	r18, 0x03	; 3
     9ea:	31 05       	cpc	r19, r1
     9ec:	b1 f0       	breq	.+44     	; 0xa1a <__vector_7+0x92>
     9ee:	89 81       	ldd	r24, Y+1	; 0x01
     9f0:	9a 81       	ldd	r25, Y+2	; 0x02
     9f2:	84 30       	cpi	r24, 0x04	; 4
     9f4:	91 05       	cpc	r25, r1
     9f6:	b9 f1       	breq	.+110    	; 0xa66 <__vector_7+0xde>
     9f8:	3b c0       	rjmp	.+118    	; 0xa70 <__vector_7+0xe8>
		{
	    	case 1:
			{
				PwmStepCounter=0;
     9fa:	10 92 b0 02 	sts	0x02B0, r1
		    	TurnOnPwm();
     9fe:	0e 94 04 07 	call	0xe08 <TurnOnPwm>
				T1Set0p5ms();
     a02:	0e 94 4a 04 	call	0x894 <T1Set0p5ms>
		    	break;
     a06:	36 c0       	rjmp	.+108    	; 0xa74 <__vector_7+0xec>
        	}
	    	case 2:
			{
				PwmStepCounter=0;
     a08:	10 92 b0 02 	sts	0x02B0, r1
				TrueStepCount=0;
     a0c:	10 92 88 02 	sts	0x0288, r1
				T1Set2ms( );
     a10:	0e 94 5b 04 	call	0x8b6 <T1Set2ms>
            	T0Start( );         //开始   
     a14:	0e 94 18 04 	call	0x830 <T0Start>
				break;       
     a18:	2d c0       	rjmp	.+90     	; 0xa74 <__vector_7+0xec>
        	}
        	case 3:
			{
            	T0Close( ); 
     a1a:	0e 94 26 04 	call	0x84c <T0Close>
				PwmStepCounter=0;
     a1e:	10 92 b0 02 	sts	0x02B0, r1
				ClrPwmPort( );
     a22:	0e 94 17 07 	call	0xe2e <ClrPwmPort>
				if(IS_AD_INPUT && (!RUN_FLAG))
     a26:	80 91 2c 00 	lds	r24, 0x002C
     a2a:	99 27       	eor	r25, r25
     a2c:	80 74       	andi	r24, 0x40	; 64
     a2e:	90 70       	andi	r25, 0x00	; 0
     a30:	00 97       	sbiw	r24, 0x00	; 0
     a32:	79 f4       	brne	.+30     	; 0xa52 <__vector_7+0xca>
     a34:	80 91 c0 01 	lds	r24, 0x01C0
     a38:	81 70       	andi	r24, 0x01	; 1
     a3a:	88 23       	and	r24, r24
     a3c:	51 f4       	brne	.+20     	; 0xa52 <__vector_7+0xca>
				{
					AD_FLAG=1;
     a3e:	80 91 c0 01 	lds	r24, 0x01C0
     a42:	82 60       	ori	r24, 0x02	; 2
     a44:	80 93 c0 01 	sts	0x01C0, r24
					T1Set17p5ms( );
     a48:	0e 94 7d 04 	call	0x8fa <T1Set17p5ms>
					PwmCtrTimeCounter=0;
     a4c:	10 92 00 01 	sts	0x0100, r1
     a50:	07 c0       	rjmp	.+14     	; 0xa60 <__vector_7+0xd8>
				}
				else
				{
					AD_FLAG=0;
     a52:	80 91 c0 01 	lds	r24, 0x01C0
     a56:	8d 7f       	andi	r24, 0xFD	; 253
     a58:	80 93 c0 01 	sts	0x01C0, r24
					T1Set8p7ms( );
     a5c:	0e 94 6c 04 	call	0x8d8 <T1Set8p7ms>
				}
                
				FuctionProcess();
     a60:	0e 94 c5 12 	call	0x258a <FuctionProcess>
				break;
     a64:	07 c0       	rjmp	.+14     	; 0xa74 <__vector_7+0xec>
			}
			case 4:
			{
			    PwmCtrTimeCounter=0;
     a66:	10 92 00 01 	sts	0x0100, r1
				FuctionProcess();
     a6a:	0e 94 c5 12 	call	0x258a <FuctionProcess>
			    break;
     a6e:	02 c0       	rjmp	.+4      	; 0xa74 <__vector_7+0xec>
			}
			default:
			{
			    PwmCtrTimeCounter=0;
     a70:	10 92 00 01 	sts	0x0100, r1
				break;
			}
		}
		PwmCtrTimeCounter++;
     a74:	80 91 00 01 	lds	r24, 0x0100
     a78:	8f 5f       	subi	r24, 0xFF	; 255
     a7a:	80 93 00 01 	sts	0x0100, r24
     a7e:	22 96       	adiw	r28, 0x02	; 2
     a80:	f8 94       	cli
     a82:	de bf       	out	0x3e, r29	; 62
     a84:	cd bf       	out	0x3d, r28	; 61
     a86:	df 91       	pop	r29
     a88:	cf 91       	pop	r28
     a8a:	ff 91       	pop	r31
     a8c:	ef 91       	pop	r30
     a8e:	bf 91       	pop	r27
     a90:	af 91       	pop	r26
     a92:	9f 91       	pop	r25
     a94:	8f 91       	pop	r24
     a96:	7f 91       	pop	r23
     a98:	6f 91       	pop	r22
     a9a:	5f 91       	pop	r21
     a9c:	4f 91       	pop	r20
     a9e:	3f 91       	pop	r19
     aa0:	2f 91       	pop	r18
     aa2:	0f 90       	pop	r0
     aa4:	0f be       	out	0x3f, r0	; 63
     aa6:	0f 90       	pop	r0
     aa8:	1f 90       	pop	r1
     aaa:	18 95       	reti

00000aac <T2Init>:
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void T2Init(void) 
{
     aac:	cf 93       	push	r28
     aae:	df 93       	push	r29
     ab0:	cd b7       	in	r28, 0x3d	; 61
     ab2:	de b7       	in	r29, 0x3e	; 62
	
	OCR2A   = 77;				      /* 10ms频率为100hz*/
     ab4:	8d e4       	ldi	r24, 0x4D	; 77
     ab6:	80 93 b3 00 	sts	0x00B3, r24
    TCCR2A  = 8;                      /*CTC模式*/
     aba:	88 e0       	ldi	r24, 0x08	; 8
     abc:	80 93 b0 00 	sts	0x00B0, r24
	TIMSK2 |= (1<<OCIE2A);        	  /*中断允许*/
     ac0:	80 91 70 00 	lds	r24, 0x0070
     ac4:	82 60       	ori	r24, 0x02	; 2
     ac6:	80 93 70 00 	sts	0x0070, r24
     aca:	df 91       	pop	r29
     acc:	cf 91       	pop	r28
     ace:	08 95       	ret

00000ad0 <T2Start>:

}


/************************************************************
 Function Name:  T2Start
 Function:       Timer0 start
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void T2Start(void)
{
     ad0:	cf 93       	push	r28
     ad2:	df 93       	push	r29
     ad4:	cd b7       	in	r28, 0x3d	; 61
     ad6:	de b7       	in	r29, 0x3e	; 62
    TCNT2   = 0;
     ad8:	10 92 b2 00 	sts	0x00B2, r1
	TCCR2A  |= 0x07;                  /*设置定时器的分频值为1024分频并开始*/
     adc:	80 91 b0 00 	lds	r24, 0x00B0
     ae0:	87 60       	ori	r24, 0x07	; 7
     ae2:	80 93 b0 00 	sts	0x00B0, r24
     ae6:	df 91       	po

⌨️ 快捷键说明

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