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

📄 pwm32.lss

📁 本人用AVR mega32写的一个关于输出32路PWM的程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     262:	89 23       	and	r24, r25
     264:	80 93 2b 00 	sts	0x002B, r24
		    	PORTF=PwmStepBuffer23[TrueStepCount] & DDRF;
     268:	80 91 88 02 	lds	r24, 0x0288
     26c:	99 27       	eor	r25, r25
     26e:	fc 01       	movw	r30, r24
     270:	ed 5e       	subi	r30, 0xED	; 237
     272:	fe 4f       	sbci	r31, 0xFE	; 254
     274:	90 81       	ld	r25, Z
     276:	80 91 30 00 	lds	r24, 0x0030
     27a:	89 23       	and	r24, r25
     27c:	80 93 31 00 	sts	0x0031, r24
            	TrueStepCount++;
     280:	80 91 88 02 	lds	r24, 0x0288
     284:	8f 5f       	subi	r24, 0xFF	; 255
     286:	80 93 88 02 	sts	0x0288, r24
     28a:	b9 cf       	rjmp	.-142    	; 0x1fe <main+0x168>
     		}
		}
    	while(1)
		{

      		if(PwmStepCounter>PwmPulse[TrueStepCount])               //最开始时应该设为0
     28c:	80 91 88 02 	lds	r24, 0x0288
     290:	99 27       	eor	r25, r25
     292:	fc 01       	movw	r30, r24
     294:	e3 57       	subi	r30, 0x73	; 115
     296:	fd 4f       	sbci	r31, 0xFD	; 253
     298:	90 81       	ld	r25, Z
     29a:	80 91 b0 02 	lds	r24, 0x02B0
     29e:	98 17       	cp	r25, r24
     2a0:	a8 f7       	brcc	.-22     	; 0x28c <main+0x1f6>
        	{
	        	PORTA=PwmStepBuffer0[TrueStepCount];
     2a2:	80 91 88 02 	lds	r24, 0x0288
     2a6:	99 27       	eor	r25, r25
     2a8:	fc 01       	movw	r30, r24
     2aa:	e8 5c       	subi	r30, 0xC8	; 200
     2ac:	fe 4f       	sbci	r31, 0xFE	; 254
     2ae:	80 81       	ld	r24, Z
     2b0:	80 93 22 00 	sts	0x0022, r24
		    	PORTC=PwmStepBuffer7[TrueStepCount];
     2b4:	80 91 88 02 	lds	r24, 0x0288
     2b8:	99 27       	eor	r25, r25
     2ba:	fc 01       	movw	r30, r24
     2bc:	e5 59       	subi	r30, 0x95	; 149
     2be:	fe 4f       	sbci	r31, 0xFE	; 254
     2c0:	80 81       	ld	r24, Z
     2c2:	80 93 28 00 	sts	0x0028, r24
	    		PORTD=PwmStepBuffer15[TrueStepCount];
     2c6:	80 91 88 02 	lds	r24, 0x0288
     2ca:	99 27       	eor	r25, r25
     2cc:	fc 01       	movw	r30, r24
     2ce:	e9 59       	subi	r30, 0x99	; 153
     2d0:	fd 4f       	sbci	r31, 0xFD	; 253
     2d2:	80 81       	ld	r24, Z
     2d4:	80 93 2b 00 	sts	0x002B, r24
		    	PORTF=PwmStepBuffer23[TrueStepCount];
     2d8:	80 91 88 02 	lds	r24, 0x0288
     2dc:	99 27       	eor	r25, r25
     2de:	fc 01       	movw	r30, r24
     2e0:	ed 5e       	subi	r30, 0xED	; 237
     2e2:	fe 4f       	sbci	r31, 0xFE	; 254
     2e4:	80 81       	ld	r24, Z
     2e6:	80 93 31 00 	sts	0x0031, r24
            	TrueStepCount++;
     2ea:	80 91 88 02 	lds	r24, 0x0288
     2ee:	8f 5f       	subi	r24, 0xFF	; 255
     2f0:	80 93 88 02 	sts	0x0288, r24
     2f4:	cb cf       	rjmp	.-106    	; 0x28c <main+0x1f6>

000002f6 <UARTClose>:
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void UARTClose(void)
{
     2f6:	cf 93       	push	r28
     2f8:	df 93       	push	r29
     2fa:	cd b7       	in	r28, 0x3d	; 61
     2fc:	de b7       	in	r29, 0x3e	; 62
	UCSRB = 0x00;		/*允许接收和发送*/
     2fe:	10 92 c1 00 	sts	0x00C1, r1
     302:	df 91       	pop	r29
     304:	cf 91       	pop	r28
     306:	08 95       	ret

00000308 <UARTInitial>:
}

/************************************************************
 Function Name:  T2Init
 Function:       Timer0 initial
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen May.30.2008 
*************************************************************/
void UARTInitial(void)
{
     308:	cf 93       	push	r28
     30a:	df 93       	push	r29
     30c:	cd b7       	in	r28, 0x3d	; 61
     30e:	de b7       	in	r29, 0x3e	; 62

	UCSRA = 0x02;		/*倍速*/
     310:	82 e0       	ldi	r24, 0x02	; 2
     312:	80 93 c0 00 	sts	0x00C0, r24
	UCSRB = 0x98;		/*允许接收和发送*/
     316:	88 e9       	ldi	r24, 0x98	; 152
     318:	80 93 c1 00 	sts	0x00C1, r24
	UCSRC = 0x06;		/*8位数据,1位停止位*/
     31c:	86 e0       	ldi	r24, 0x06	; 6
     31e:	80 93 c2 00 	sts	0x00C2, r24
	UBRR  =  103;	    /*9600*/
     322:	87 e6       	ldi	r24, 0x67	; 103
     324:	90 e0       	ldi	r25, 0x00	; 0
     326:	90 93 c5 00 	sts	0x00C5, r25
     32a:	80 93 c4 00 	sts	0x00C4, r24
     32e:	df 91       	pop	r29
     330:	cf 91       	pop	r28
     332:	08 95       	ret

00000334 <__vector_13>:
}


/************************************************************
 Function Name:  SIGNAL(USART_RX_vect)
 Function:       在中断中接收host传来的数据
 Paramenter:     None               
 Return value:   None                     
 Author:         Chen yuan zhen Mar.04.2008 
*************************************************************/
SIGNAL(USART0_RX_vect)
{
     334:	1f 92       	push	r1
     336:	0f 92       	push	r0
     338:	0f b6       	in	r0, 0x3f	; 63
     33a:	0f 92       	push	r0
     33c:	11 24       	eor	r1, r1
     33e:	2f 93       	push	r18
     340:	3f 93       	push	r19
     342:	4f 93       	push	r20
     344:	5f 93       	push	r21
     346:	6f 93       	push	r22
     348:	7f 93       	push	r23
     34a:	8f 93       	push	r24
     34c:	9f 93       	push	r25
     34e:	af 93       	push	r26
     350:	bf 93       	push	r27
     352:	ef 93       	push	r30
     354:	ff 93       	push	r31
     356:	cf 93       	push	r28
     358:	df 93       	push	r29
     35a:	cd b7       	in	r28, 0x3d	; 61
     35c:	de b7       	in	r29, 0x3e	; 62
     35e:	28 97       	sbiw	r28, 0x08	; 8
     360:	de bf       	out	0x3e, r29	; 62
     362:	cd bf       	out	0x3d, r28	; 61
    static unsigned char RxCounter=0;
	unsigned char RxStatus , data ,checksum=0;
     364:	1b 82       	std	Y+3, r1	; 0x03
    RxStatus = UCSRA; 
     366:	80 91 c0 00 	lds	r24, 0x00C0
     36a:	89 83       	std	Y+1, r24	; 0x01
    data =UDR;
     36c:	80 91 c6 00 	lds	r24, 0x00C6
     370:	8a 83       	std	Y+2, r24	; 0x02
   	if(IS_UART_REC_READY)             
     372:	80 91 8c 02 	lds	r24, 0x028C
     376:	81 70       	andi	r24, 0x01	; 1
     378:	88 23       	and	r24, r24
     37a:	09 f4       	brne	.+2      	; 0x37e <__vector_13+0x4a>
     37c:	cc c1       	rjmp	.+920    	; 0x716 <__stack+0x217>
	{
        if(  ( RxStatus & ERROR_UART  )==0)         //如果没有帧错误和溢出错误
     37e:	89 81       	ldd	r24, Y+1	; 0x01
     380:	99 27       	eor	r25, r25
     382:	88 71       	andi	r24, 0x18	; 24
     384:	90 70       	andi	r25, 0x00	; 0
     386:	00 97       	sbiw	r24, 0x00	; 0
     388:	09 f0       	breq	.+2      	; 0x38c <__vector_13+0x58>
     38a:	be c1       	rjmp	.+892    	; 0x708 <__stack+0x209>
	    { 
		 		   
		    if(IS_DOWN_LOAD_ENABLE)                  //下载  ^^%^
     38c:	80 91 8c 02 	lds	r24, 0x028C
     390:	82 70       	andi	r24, 0x02	; 2
     392:	88 23       	and	r24, r24
     394:	09 f4       	brne	.+2      	; 0x398 <__vector_13+0x64>
     396:	4a c1       	rjmp	.+660    	; 0x62c <__stack+0x12d>
		    {                                        //可以从这里区分最后的信息
                SET_DL_CONTINUE_FLAG;
     398:	80 91 8c 02 	lds	r24, 0x028C
     39c:	84 60       	ori	r24, 0x04	; 4
     39e:	80 93 8c 02 	sts	0x028C, r24
				    switch(RxCounter)
     3a2:	80 91 0a 01 	lds	r24, 0x010A
     3a6:	28 2f       	mov	r18, r24
     3a8:	33 27       	eor	r19, r19
     3aa:	3e 83       	std	Y+6, r19	; 0x06
     3ac:	2d 83       	std	Y+5, r18	; 0x05
     3ae:	4d 81       	ldd	r20, Y+5	; 0x05
     3b0:	5e 81       	ldd	r21, Y+6	; 0x06
     3b2:	44 30       	cpi	r20, 0x04	; 4
     3b4:	51 05       	cpc	r21, r1
     3b6:	09 f4       	brne	.+2      	; 0x3ba <__vector_13+0x86>
     3b8:	e7 c0       	rjmp	.+462    	; 0x588 <__stack+0x89>
     3ba:	8d 81       	ldd	r24, Y+5	; 0x05
     3bc:	9e 81       	ldd	r25, Y+6	; 0x06
     3be:	85 30       	cpi	r24, 0x05	; 5
     3c0:	91 05       	cpc	r25, r1
     3c2:	ec f4       	brge	.+58     	; 0x3fe <__vector_13+0xca>
     3c4:	2d 81       	ldd	r18, Y+5	; 0x05
     3c6:	3e 81       	ldd	r19, Y+6	; 0x06
     3c8:	21 30       	cpi	r18, 0x01	; 1
     3ca:	31 05       	cpc	r19, r1
     3cc:	09 f4       	brne	.+2      	; 0x3d0 <__vector_13+0x9c>
     3ce:	49 c0       	rjmp	.+146    	; 0x462 <__vector_13+0x12e>
     3d0:	4d 81       	ldd	r20, Y+5	; 0x05
     3d2:	5e 81       	ldd	r21, Y+6	; 0x06
     3d4:	42 30       	cpi	r20, 0x02	; 2
     3d6:	51 05       	cpc	r21, r1
     3d8:	2c f4       	brge	.+10     	; 0x3e4 <__vector_13+0xb0>
     3da:	8d 81       	ldd	r24, Y+5	; 0x05
     3dc:	9e 81       	ldd	r25, Y+6	; 0x06
     3de:	00 97       	sbiw	r24, 0x00	; 0
     3e0:	09 f1       	breq	.+66     	; 0x424 <__vector_13+0xf0>
     3e2:	24 c1       	rjmp	.+584    	; 0x62c <__stack+0x12d>
     3e4:	2d 81       	ldd	r18, Y+5	; 0x05
     3e6:	3e 81       	ldd	r19, Y+6	; 0x06
     3e8:	22 30       	cpi	r18, 0x02	; 2
     3ea:	31 05       	cpc	r19, r1
     3ec:	09 f4       	brne	.+2      	; 0x3f0 <__vector_13+0xbc>
     3ee:	50 c0       	rjmp	.+160    	; 0x490 <__vector_13+0x15c>
     3f0:	4d 81       	ldd	r20, Y+5	; 0x05
     3f2:	5e 81       	ldd	r21, Y+6	; 0x06
     3f4:	43 30       	cpi	r20, 0x03	; 3
     3f6:	51 05       	cpc	r21, r1
     3f8:	09 f4       	brne	.+2      	; 0x3fc <__vector_13+0xc8>
     3fa:	71 c0       	rjmp	.+226    	; 0x4de <__vector_13+0x1aa>
     3fc:	17 c1       	rjmp	.+558    	; 0x62c <__stack+0x12d>
     3fe:	8d 81       	ldd	r24, Y+5	; 0x05
     400:	9e 81       	ldd	r25, Y+6	; 0x06
     402:	86 32       	cpi	r24, 0x26	; 38
     404:	91 05       	cpc	r25, r1
     406:	3c f4       	brge	.+14     	; 0x416 <__vector_13+0xe2>
     408:	2d 81       	ldd	r18, Y+5	; 0x05
     40a:	3e 81       	ldd	r19, Y+6	; 0x06
     40c:	26 30       	cpi	r18, 0x06	; 6
     40e:	31 05       	cpc	r19, r1
     410:	0c f0       	brlt	.+2      	; 0x414 <__vector_13+0xe0>
     412:	cc c0       	rjmp	.+408    	; 0x5ac <__stack+0xad>
     414:	c2 c0       	rjmp	.+388    	; 0x59a <__stack+0x9b>
     416:	4d 81       	ldd	r20, Y+5	; 0x05
     418:	5e 81       	ldd	r21, Y+6	; 0x06
     41a:	46 32       	cpi	r20, 0x26	; 38
     41c:	51 05       	cpc	r21, r1
     41e:	09 f4       	brne	.+2      	; 0x422 <__vector_13+0xee>
     420:	d3 c0       	rjmp	.+422    	; 0x5c8 <__stack+0xc9>
     422:	04 c1       	rjmp	.+520    	; 0x62c <__stack+0x12d>
                    {
	                    case 0:
		                {
						    if(data==0xFF)
     424:	8a 81       	ldd	r24, Y+2	; 0x02
     426:	8f 3f       	cpi	r24, 0xFF	; 255
     428:	31 f4       	brne	.+12     	; 0x436 <__vector_13+0x102>
							{
                      		    RxCounter++;
     42a:	80 91 0a 01 	lds	r24, 0x010A
     42e:	8f 5f       	subi	r24, 0xFF	; 255
     430:	80 93 0a 01 	sts	0x010A, r24
						        break;
     434:	fb c0       	rjmp	.+502    	; 0x62c <__stack+0x12d>
							}
							else if(data==0x11)
     436:	8a 81       	ldd	r24, Y+2	; 0x02
     438:	81 31       	cpi	r24, 0x11	; 17
     43a:	59 f4       	brne	.+22     	; 0x452 <__vector_13+0x11e>
							{
								DL_OVER_FLAG=1;
     43c:	80 91 8c 02 	lds	r24, 0x028C
     440:	80 61       	ori	r24, 0x10	; 16
     442:	80 93 8c 02 	sts	0x028C, r24
                      		    RxCounter++;
     446:	80 91 0a 01 	lds	r24, 0x010A
     44a:	8f 5f       	subi	r24, 0xFF	; 255
     44c:	80 93 0a 01 	sts	0x010A, r24
							    break;
     450:	ed c0       	rjmp	.+474    	; 0x62c <__stack+0x12d>
							}
							else                                   //出错
							{
							    RxCounter=0;
     452:	10 92 0a 01 	sts	0x010A, r1
								UART_ERROR_FLAG=1;
     456:	80 91 8c 02 	lds	r24, 0x028C
     45a:	88 60       	ori	r24, 0x08	; 8
     45c:	80 93 8c 02 	sts	0x028C, r24
							    break;
     460:	e5 c0       	rjmp	.+458    	; 0x62c <__stack+0x12d>
                            }

	                    }
						case 1:
						{
						    /***************1111****************/
							if(DL_OVER_FLAG)
     462:	80 91 8c 02 	lds	r24, 0x028C
     466:	80 71       	andi	r24, 0x10	; 16
     468:	88 23       	and	r24, r24
     46a:	49 f0       	breq	.+18     	; 0x47e <__vector_13+0x14a>
							{
							    Interval=data;
     46c:	8a 81       	ldd	r24, Y+2	; 0x02
     46e:	80 93 65 02 	sts	0x0265, r24
							    RxCounter++;
     472:	80 91 0a 01 	lds	r24, 0x010A
     476:	8f 5f       	subi	r24, 0xFF	; 255
     478:	80 93 0a 01 	sts	0x010A, r24
							    break;
     47c:	d7 c0       	rjmp	.+430    	; 0x62c <__stack+0x12d>
							}
							/***************2222****************/
							else
							{
							    LStartTime=data;
     47e:	8a 81       	ldd	r24, Y+2	; 0x02
     480:	80 93 b1 02 	sts	0x02B1, r24
							    RxCounter++;
     484:	80 91 0a 01 	lds	r24, 0x010A
     488:	8f 5f       	subi	r24, 0xFF	; 255
     48a:	80 93 0a 01 	sts	0x010A, r24
							    break;
     48e:	ce c0       	rjmp	.+412    	; 0x62c <__stack+0x12d>
							}
						}
						case 2:
						{
						    /***************1111****************/
						    if(DL_OVER_FLAG)
     490:	80 91 8c 02 	lds	r24, 0x028C
     494:	80 71       	andi	r24, 0x10	; 16
     496:	88 23       	and	r24, r24
     498:	c9 f0       	breq	.+50     	; 0x4cc <__vector_13+0x198>
							{
							     if((Interval+data)==255)
     49a:	80 91 65 02 	lds	r24, 0x0265
     49e:	28 2f       	mov	r18, r24
     4a0:	33 27       	eor	r19, r19
     4a2:	8a 81       	ldd	r24, Y+2	; 0x02
     4a4:	99 27       	eor	r25, r25
     4a6:	82 0f       	add	r24, r18
     4a8:	93 1f       	adc	r25, r19
     4aa:	8f 3f       	cpi	r24, 0xFF	; 255
     4ac:	91 05       	cpc	r25, r1
     4ae:	31 f4       	brne	.+12     	; 0x4bc <__vector_13+0x188>
								 {
								     RxCounter++;
     4b0:	80 91 0a 01 	lds	r24, 0x010A

⌨️ 快捷键说明

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