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

📄 main.lss

📁 AVR做的打印机控制例子,基于AVR和CH375
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     77e:	cb 01       	movw	r24, r22
     780:	89 8b       	std	Y+17, r24	; 0x11
     782:	9a 8b       	std	Y+18, r25	; 0x12
     784:	ab 8b       	std	Y+19, r26	; 0x13
     786:	bc 8b       	std	Y+20, r27	; 0x14
     788:	20 e0       	ldi	r18, 0x00	; 0
     78a:	30 e0       	ldi	r19, 0x00	; 0
     78c:	40 e8       	ldi	r20, 0x80	; 128
     78e:	5f e3       	ldi	r21, 0x3F	; 63
     790:	69 89       	ldd	r22, Y+17	; 0x11
     792:	7a 89       	ldd	r23, Y+18	; 0x12
     794:	8b 89       	ldd	r24, Y+19	; 0x13
     796:	9c 89       	ldd	r25, Y+20	; 0x14
     798:	0e 94 f8 21 	call	0x43f0	; 0x43f0 <__eqsf2>
     79c:	88 23       	and	r24, r24
     79e:	0c f0       	brlt	.+2      	; 0x7a2 <xReadCH375Data+0xf2>
     7a0:	03 c0       	rjmp	.+6      	; 0x7a8 <xReadCH375Data+0xf8>
     7a2:	81 e0       	ldi	r24, 0x01	; 1
     7a4:	88 8b       	std	Y+16, r24	; 0x10
     7a6:	18 c0       	rjmp	.+48     	; 0x7d8 <xReadCH375Data+0x128>
     7a8:	20 e0       	ldi	r18, 0x00	; 0
     7aa:	30 e0       	ldi	r19, 0x00	; 0
     7ac:	4f e7       	ldi	r20, 0x7F	; 127
     7ae:	53 e4       	ldi	r21, 0x43	; 67
     7b0:	69 89       	ldd	r22, Y+17	; 0x11
     7b2:	7a 89       	ldd	r23, Y+18	; 0x12
     7b4:	8b 89       	ldd	r24, Y+19	; 0x13
     7b6:	9c 89       	ldd	r25, Y+20	; 0x14
     7b8:	0e 94 fb 21 	call	0x43f6	; 0x43f6 <__gesf2>
     7bc:	18 16       	cp	r1, r24
     7be:	0c f0       	brlt	.+2      	; 0x7c2 <xReadCH375Data+0x112>
     7c0:	02 c0       	rjmp	.+4      	; 0x7c6 <xReadCH375Data+0x116>
     7c2:	18 8a       	std	Y+16, r1	; 0x10
     7c4:	09 c0       	rjmp	.+18     	; 0x7d8 <xReadCH375Data+0x128>
     7c6:	69 89       	ldd	r22, Y+17	; 0x11
     7c8:	7a 89       	ldd	r23, Y+18	; 0x12
     7ca:	8b 89       	ldd	r24, Y+19	; 0x13
     7cc:	9c 89       	ldd	r25, Y+20	; 0x14
     7ce:	0e 94 dd 21 	call	0x43ba	; 0x43ba <__fixsfsi>
     7d2:	dc 01       	movw	r26, r24
     7d4:	cb 01       	movw	r24, r22
     7d6:	88 8b       	std	Y+16, r24	; 0x10
     7d8:	88 89       	ldd	r24, Y+16	; 0x10
     7da:	8b 87       	std	Y+11, r24	; 0x0b
     7dc:	8b 85       	ldd	r24, Y+11	; 0x0b
     7de:	8a 95       	dec	r24
     7e0:	f1 f7       	brne	.-4      	; 0x7de <xReadCH375Data+0x12e>
     7e2:	8b 87       	std	Y+11, r24	; 0x0b
     7e4:	80 e0       	ldi	r24, 0x00	; 0
     7e6:	90 e0       	ldi	r25, 0x00	; 0
     7e8:	a0 e8       	ldi	r26, 0x80	; 128
     7ea:	bf e3       	ldi	r27, 0x3F	; 63
     7ec:	8a 83       	std	Y+2, r24	; 0x02
     7ee:	9b 83       	std	Y+3, r25	; 0x03
     7f0:	ac 83       	std	Y+4, r26	; 0x04
     7f2:	bd 83       	std	Y+5, r27	; 0x05
     7f4:	2a ef       	ldi	r18, 0xFA	; 250
     7f6:	3d ee       	ldi	r19, 0xED	; 237
     7f8:	4b e6       	ldi	r20, 0x6B	; 107
     7fa:	50 e4       	ldi	r21, 0x40	; 64
     7fc:	6a 81       	ldd	r22, Y+2	; 0x02
     7fe:	7b 81       	ldd	r23, Y+3	; 0x03
     800:	8c 81       	ldd	r24, Y+4	; 0x04
     802:	9d 81       	ldd	r25, Y+5	; 0x05
     804:	0e 94 48 22 	call	0x4490	; 0x4490 <__mulsf3>
     808:	dc 01       	movw	r26, r24
     80a:	cb 01       	movw	r24, r22
     80c:	8f 83       	std	Y+7, r24	; 0x07
     80e:	98 87       	std	Y+8, r25	; 0x08
     810:	a9 87       	std	Y+9, r26	; 0x09
     812:	ba 87       	std	Y+10, r27	; 0x0a
     814:	20 e0       	ldi	r18, 0x00	; 0
     816:	30 e0       	ldi	r19, 0x00	; 0
     818:	40 e8       	ldi	r20, 0x80	; 128
     81a:	5f e3       	ldi	r21, 0x3F	; 63
     81c:	6f 81       	ldd	r22, Y+7	; 0x07
     81e:	78 85       	ldd	r23, Y+8	; 0x08
     820:	89 85       	ldd	r24, Y+9	; 0x09
     822:	9a 85       	ldd	r25, Y+10	; 0x0a
     824:	0e 94 f8 21 	call	0x43f0	; 0x43f0 <__eqsf2>
     828:	88 23       	and	r24, r24
     82a:	0c f0       	brlt	.+2      	; 0x82e <xReadCH375Data+0x17e>
     82c:	03 c0       	rjmp	.+6      	; 0x834 <xReadCH375Data+0x184>
     82e:	81 e0       	ldi	r24, 0x01	; 1
     830:	8e 83       	std	Y+6, r24	; 0x06
     832:	18 c0       	rjmp	.+48     	; 0x864 <xReadCH375Data+0x1b4>
     834:	20 e0       	ldi	r18, 0x00	; 0
     836:	30 e0       	ldi	r19, 0x00	; 0
     838:	4f e7       	ldi	r20, 0x7F	; 127
     83a:	53 e4       	ldi	r21, 0x43	; 67
     83c:	6f 81       	ldd	r22, Y+7	; 0x07
     83e:	78 85       	ldd	r23, Y+8	; 0x08
     840:	89 85       	ldd	r24, Y+9	; 0x09
     842:	9a 85       	ldd	r25, Y+10	; 0x0a
     844:	0e 94 fb 21 	call	0x43f6	; 0x43f6 <__gesf2>
     848:	18 16       	cp	r1, r24
     84a:	0c f0       	brlt	.+2      	; 0x84e <xReadCH375Data+0x19e>
     84c:	02 c0       	rjmp	.+4      	; 0x852 <xReadCH375Data+0x1a2>
     84e:	1e 82       	std	Y+6, r1	; 0x06
     850:	09 c0       	rjmp	.+18     	; 0x864 <xReadCH375Data+0x1b4>
     852:	6f 81       	ldd	r22, Y+7	; 0x07
     854:	78 85       	ldd	r23, Y+8	; 0x08
     856:	89 85       	ldd	r24, Y+9	; 0x09
     858:	9a 85       	ldd	r25, Y+10	; 0x0a
     85a:	0e 94 dd 21 	call	0x43ba	; 0x43ba <__fixsfsi>
     85e:	dc 01       	movw	r26, r24
     860:	cb 01       	movw	r24, r22
     862:	8e 83       	std	Y+6, r24	; 0x06
     864:	8e 81       	ldd	r24, Y+6	; 0x06
     866:	89 83       	std	Y+1, r24	; 0x01
     868:	89 81       	ldd	r24, Y+1	; 0x01
     86a:	8a 95       	dec	r24
     86c:	f1 f7       	brne	.-4      	; 0x86a <xReadCH375Data+0x1ba>
     86e:	89 83       	std	Y+1, r24	; 0x01
	mDelay1uS( );
	mDelay1uS( );  /* 至少延时1.2uS */
/*
	DDRA = 0x00;  // 数据输入 
	PORTB &= 0xF2;  // 输出有效读控制信号, 读CH375芯片的数据端口, A0=0; CS=0; WR=1; RD=0; 
	DDRA = 0x00;  // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS 
	mData = PINA;  // 从CH375的并口PA输入数据 
	PORTB |= 0x07;  // 输出无效的控制信号, 完成操作CH375芯片, A0=0; CS=1; WR=1; RD=1; 
*/
	mDelay1uS( );
	return( mData );
     870:	8f 8d       	ldd	r24, Y+31	; 0x1f
     872:	99 27       	eor	r25, r25
     874:	6f 96       	adiw	r28, 0x1f	; 31
     876:	0f b6       	in	r0, 0x3f	; 63
     878:	f8 94       	cli
     87a:	de bf       	out	0x3e, r29	; 62
     87c:	0f be       	out	0x3f, r0	; 63
     87e:	cd bf       	out	0x3d, r28	; 61
     880:	df 91       	pop	r29
     882:	cf 91       	pop	r28
     884:	08 95       	ret

00000886 <mDelaymS>:
}

/* 延时指定毫秒时间,根据单片机主频调整,不精确 */
void	mDelaymS( UINT8 ms )
{
     886:	cf 93       	push	r28
     888:	df 93       	push	r29
     88a:	cd b7       	in	r28, 0x3d	; 61
     88c:	de b7       	in	r29, 0x3e	; 62
     88e:	23 97       	sbiw	r28, 0x03	; 3
     890:	0f b6       	in	r0, 0x3f	; 63
     892:	f8 94       	cli
     894:	de bf       	out	0x3e, r29	; 62
     896:	0f be       	out	0x3f, r0	; 63
     898:	cd bf       	out	0x3d, r28	; 61
     89a:	8b 83       	std	Y+3, r24	; 0x03
	UINT16	i;
	while ( ms -- ) for ( i = 2600; i != 0; i -- );
     89c:	0e c0       	rjmp	.+28     	; 0x8ba <mDelaymS+0x34>
     89e:	88 e2       	ldi	r24, 0x28	; 40
     8a0:	9a e0       	ldi	r25, 0x0A	; 10
     8a2:	9a 83       	std	Y+2, r25	; 0x02
     8a4:	89 83       	std	Y+1, r24	; 0x01
     8a6:	05 c0       	rjmp	.+10     	; 0x8b2 <mDelaymS+0x2c>
     8a8:	89 81       	ldd	r24, Y+1	; 0x01
     8aa:	9a 81       	ldd	r25, Y+2	; 0x02
     8ac:	01 97       	sbiw	r24, 0x01	; 1
     8ae:	9a 83       	std	Y+2, r25	; 0x02
     8b0:	89 83       	std	Y+1, r24	; 0x01
     8b2:	89 81       	ldd	r24, Y+1	; 0x01
     8b4:	9a 81       	ldd	r25, Y+2	; 0x02
     8b6:	00 97       	sbiw	r24, 0x00	; 0
     8b8:	b9 f7       	brne	.-18     	; 0x8a8 <mDelaymS+0x22>
     8ba:	8b 81       	ldd	r24, Y+3	; 0x03
     8bc:	81 50       	subi	r24, 0x01	; 1
     8be:	8b 83       	std	Y+3, r24	; 0x03
     8c0:	8b 81       	ldd	r24, Y+3	; 0x03
     8c2:	8f 3f       	cpi	r24, 0xFF	; 255
     8c4:	61 f7       	brne	.-40     	; 0x89e <mDelaymS+0x18>
     8c6:	23 96       	adiw	r28, 0x03	; 3
     8c8:	0f b6       	in	r0, 0x3f	; 63
     8ca:	f8 94       	cli
     8cc:	de bf       	out	0x3e, r29	; 62
     8ce:	0f be       	out	0x3f, r0	; 63
     8d0:	cd bf       	out	0x3d, r28	; 61
     8d2:	df 91       	pop	r29
     8d4:	cf 91       	pop	r28
     8d6:	08 95       	ret

000008d8 <mStopIfError>:
}

/* 检查操作状态,如果错误则显示错误代码 */
void	mStopIfError( UINT8 iError )
{
     8d8:	cf 93       	push	r28
     8da:	df 93       	push	r29
     8dc:	cd b7       	in	r28, 0x3d	; 61
     8de:	de b7       	in	r29, 0x3e	; 62
     8e0:	21 97       	sbiw	r28, 0x01	; 1
     8e2:	0f b6       	in	r0, 0x3f	; 63
     8e4:	f8 94       	cli
     8e6:	de bf       	out	0x3e, r29	; 62
     8e8:	0f be       	out	0x3f, r0	; 63
     8ea:	cd bf       	out	0x3d, r28	; 61
     8ec:	89 83       	std	Y+1, r24	; 0x01
	if ( iError == ERR_SUCCESS ) 
     8ee:	89 81       	ldd	r24, Y+1	; 0x01
     8f0:	88 23       	and	r24, r24
     8f2:	71 f0       	breq	.+28     	; 0x910 <mStopIfError+0x38>
		return;  /* 操作成功 */
	printf( "Error: %02X\n", (UINT16)iError );  /* 显示错误 */
     8f4:	89 81       	ldd	r24, Y+1	; 0x01
     8f6:	99 27       	eor	r25, r25
     8f8:	9f 93       	push	r25
     8fa:	8f 93       	push	r24
     8fc:	80 e0       	ldi	r24, 0x00	; 0
     8fe:	91 e0       	ldi	r25, 0x01	; 1
     900:	9f 93       	push	r25
     902:	8f 93       	push	r24
     904:	0e 94 6f 1e 	call	0x3cde	; 0x3cde <printf>
     908:	0f 90       	pop	r0
     90a:	0f 90       	pop	r0
     90c:	0f 90       	pop	r0
     90e:	0f 90       	pop	r0
     910:	21 96       	adiw	r28, 0x01	; 1
     912:	0f b6       	in	r0, 0x3f	; 63
     914:	f8 94       	cli
     916:	de bf       	out	0x3e, r29	; 62
     918:	0f be       	out	0x3f, r0	; 63
     91a:	cd bf       	out	0x3d, r28	; 61
     91c:	df 91       	pop	r29
     91e:	cf 91       	pop	r28
     920:	08 95       	ret

00000922 <uart_putchar>:
}

/* 为printf和getkey输入输出初始化串口 */
int		uart_putchar( char c, FILE *stream )
{
     922:	cf 93       	push	r28
     924:	df 93       	push	r29
     926:	cd b7       	in	r28, 0x3d	; 61
     928:	de b7       	in	r29, 0x3e	; 62
     92a:	23 97       	sbiw	r28, 0x03	; 3
     92c:	0f b6       	in	r0, 0x3f	; 63
     92e:	f8 94       	cli
     930:	de bf       	out	0x3e, r29	; 62
     932:	0f be       	out	0x3f, r0	; 63
     934:	cd bf       	out	0x3d, r28	; 61
     936:	89 83       	std	Y+1, r24	; 0x01
     938:	7b 83       	std	Y+3, r23	; 0x03
     93a:	6a 83       	std	Y+2, r22	; 0x02
	if (c == '\n') uart_putchar( '\r', stream );
     93c:	89 81       	ldd	r24, Y+1	; 0x01
     93e:	8a 30       	cpi	r24, 0x0A	; 10
     940:	31 f4       	brne	.+12     	; 0x94e <uart_putchar+0x2c>
     942:	8a 81       	ldd	r24, Y+2	; 0x02
     944:	9b 81       	ldd	r25, Y+3	; 0x03
     946:	bc 01       	movw	r22, r24
     948:	8d e0       	ldi	r24, 0x0D	; 13
     94a:	0e 94 91 04 	call	0x922	; 0x922 <uart_putchar>
	while ( ( UCSR0A & ( 1 << UDRE ) ) == 0 );
     94e:	eb e2       	ldi	r30, 0x2B	; 43
     950:	f0 e0       	ldi	r31, 0x00	; 0
     952:	80 81       	ld	r24, Z
     954:	99 27       	eor	r25, r25
     956:	80 72       	andi	r24, 0x20	; 32
     958:	90 70       	andi	r25, 0x00	; 0
     95a:	00 97       	sbiw	r24, 0x00	; 0
     95c:	c1 f3       	breq	.-16     	; 0x94e <uart_putchar+0x2c>
	UDR0 = c;
     95e:	ec e2       	ldi	r30, 0x2C	; 44
     960:	f0 e0       	ldi	r31, 0x00	; 0
     962:	89 81       	ldd	r24, Y+1	; 0x01
     964:	80 83       	st	Z, r24
	return 0;
     966:	80 e0       	ldi	r24, 0x00	; 0
     968:	90 e0       	ldi	r25, 0x00	; 0
     96a:	23 96       	adiw	r28, 0x03	; 3
     96c:	0f b6       	in	r0, 0x3f	; 63
     96e:	f8 94       	cli
     970:	de bf       	out	0x3e, r29	; 62
     972:	0f be       	out	0x3f, r0	; 63
     974:	cd bf       	out	0x3d, r28	; 61
     976:	df 91       	pop	r29
     978:	cf 91       	pop	r28
     97a:	08 95       	ret

0000097c <mInitSTDIO>:
}

FILE	uart_str = FDEV_SETUP_STREAM( uart_putch

⌨️ 快捷键说明

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