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

📄 main.lss

📁 用超声波来测量距离
💻 LSS
📖 第 1 页 / 共 5 页
字号:
/* 全局变量:无                      */
/* 返回值:  无                      */
//************************************/
void sentbyte_12864(uchar sentbyte)
{
    uint i;
    CLK_12864_0(); 
     462:	a6 9a       	sbi	0x14, 6	; 20
     464:	00 00       	nop
     466:	ae 98       	cbi	0x15, 6	; 21
     468:	27 e0       	ldi	r18, 0x07	; 7
     46a:	30 e0       	ldi	r19, 0x00	; 0
    for(i=0;i<8;i++)
        {
		  if(sentbyte&0x80){SID_12864_1();}
     46c:	87 ff       	sbrs	r24, 7
     46e:	04 c0       	rjmp	.+8      	; 0x478 <sentbyte_12864+0x16>
     470:	a5 9a       	sbi	0x14, 5	; 20
     472:	00 00       	nop
     474:	ad 9a       	sbi	0x15, 5	; 21
     476:	03 c0       	rjmp	.+6      	; 0x47e <sentbyte_12864+0x1c>
		  else {SID_12864_0();}
     478:	a5 9a       	sbi	0x14, 5	; 20
     47a:	00 00       	nop
     47c:	ad 98       	cbi	0x15, 5	; 21
		  asm("nop");
     47e:	00 00       	nop
		  CLK_12864_1();
     480:	a6 9a       	sbi	0x14, 6	; 20
     482:	00 00       	nop
     484:	ae 9a       	sbi	0x15, 6	; 21
		  sentbyte<<=1;
     486:	88 0f       	add	r24, r24
		  CLK_12864_0();
     488:	a6 9a       	sbi	0x14, 6	; 20
     48a:	00 00       	nop
     48c:	ae 98       	cbi	0x15, 6	; 21
		  asm("nop");
     48e:	00 00       	nop
     490:	21 50       	subi	r18, 0x01	; 1
     492:	30 40       	sbci	r19, 0x00	; 0
     494:	37 ff       	sbrs	r19, 7
     496:	ea cf       	rjmp	.-44     	; 0x46c <sentbyte_12864+0xa>
     498:	08 95       	ret

0000049a <readbyte_12864>:
        }
}
//*************函数部分***************/
/* 名字:readbyte_12864()            */
/* 功能:读RT12864M                  */
/* 局部变量:readtype                */
/* 全局变量:无                      */
/* 返回值:  temp                    */
//************************************/
uchar readbyte_12864(uchar readtype)
{
     49a:	cf 93       	push	r28
     49c:	df 93       	push	r29
     49e:	cd b7       	in	r28, 0x3d	; 61
     4a0:	de b7       	in	r29, 0x3e	; 62
     4a2:	22 97       	sbiw	r28, 0x02	; 2
     4a4:	0f b6       	in	r0, 0x3f	; 63
     4a6:	f8 94       	cli
     4a8:	de bf       	out	0x3e, r29	; 62
     4aa:	0f be       	out	0x3f, r0	; 63
     4ac:	cd bf       	out	0x3d, r28	; 61
    uchar tmp1=0,tmp2=0,temp=0;
     4ae:	90 e0       	ldi	r25, 0x00	; 0
     4b0:	9a 83       	std	Y+2, r25	; 0x02
	uint i;
	sentbyte_12864(readtype);
     4b2:	99 83       	std	Y+1, r25	; 0x01
     4b4:	0e 94 31 02 	call	0x462 <sentbyte_12864>
	SID_12864_io=0;
     4b8:	a5 98       	cbi	0x14, 5	; 20
	CLK_12864_0();
     4ba:	a6 9a       	sbi	0x14, 6	; 20
     4bc:	00 00       	nop
     4be:	ae 98       	cbi	0x15, 6	; 21
     4c0:	27 e0       	ldi	r18, 0x07	; 7
     4c2:	30 e0       	ldi	r19, 0x00	; 0
     4c4:	99 81       	ldd	r25, Y+1	; 0x01
	for(i=0;i<8;i++)
	   {
	     asm("nop");
     4c6:	00 00       	nop
		 CLK_12864_1();
     4c8:	a6 9a       	sbi	0x14, 6	; 20
     4ca:	00 00       	nop
     4cc:	ae 9a       	sbi	0x15, 6	; 21
		 if(SID_12864_r)tmp1|=0x01;
     4ce:	83 b3       	in	r24, 0x13	; 19
     4d0:	82 95       	swap	r24
     4d2:	86 95       	lsr	r24
     4d4:	87 70       	andi	r24, 0x07	; 7
     4d6:	80 ff       	sbrs	r24, 0
     4d8:	03 c0       	rjmp	.+6      	; 0x4e0 <readbyte_12864+0x46>
     4da:	8a 81       	ldd	r24, Y+2	; 0x02
     4dc:	81 60       	ori	r24, 0x01	; 1
     4de:	8a 83       	std	Y+2, r24	; 0x02
		 tmp1<<=1;
     4e0:	ea 81       	ldd	r30, Y+2	; 0x02
     4e2:	ee 0f       	add	r30, r30
     4e4:	ea 83       	std	Y+2, r30	; 0x02
		 CLK_12864_0();
     4e6:	a6 9a       	sbi	0x14, 6	; 20
     4e8:	00 00       	nop
     4ea:	ae 98       	cbi	0x15, 6	; 21
     4ec:	21 50       	subi	r18, 0x01	; 1
     4ee:	30 40       	sbci	r19, 0x00	; 0
     4f0:	37 ff       	sbrs	r19, 7
     4f2:	e9 cf       	rjmp	.-46     	; 0x4c6 <readbyte_12864+0x2c>
     4f4:	27 e0       	ldi	r18, 0x07	; 7
     4f6:	30 e0       	ldi	r19, 0x00	; 0
	   }
	for(i=0;i<8;i++)
	   {
	     asm("nop");
     4f8:	00 00       	nop
		 CLK_12864_1();
     4fa:	a6 9a       	sbi	0x14, 6	; 20
     4fc:	00 00       	nop
     4fe:	ae 9a       	sbi	0x15, 6	; 21
		 if(SID_12864_r)tmp2|=0x01;
     500:	83 b3       	in	r24, 0x13	; 19
     502:	82 95       	swap	r24
     504:	86 95       	lsr	r24
     506:	87 70       	andi	r24, 0x07	; 7
     508:	80 fd       	sbrc	r24, 0
     50a:	91 60       	ori	r25, 0x01	; 1
		 tmp2<<=1;
     50c:	99 0f       	add	r25, r25
		 CLK_12864_0();
     50e:	a6 9a       	sbi	0x14, 6	; 20
     510:	00 00       	nop
     512:	ae 98       	cbi	0x15, 6	; 21
     514:	21 50       	subi	r18, 0x01	; 1
     516:	30 40       	sbci	r19, 0x00	; 0
     518:	37 ff       	sbrs	r19, 7
     51a:	ee cf       	rjmp	.-36     	; 0x4f8 <readbyte_12864+0x5e>
	   }
	temp=(tmp1&0xf0)|((tmp2&0xf0)>>4);
     51c:	fa 81       	ldd	r31, Y+2	; 0x02
     51e:	f0 7f       	andi	r31, 0xF0	; 240
     520:	89 2f       	mov	r24, r25
     522:	99 27       	eor	r25, r25
     524:	e4 e0       	ldi	r30, 0x04	; 4
     526:	96 95       	lsr	r25
     528:	87 95       	ror	r24
     52a:	ea 95       	dec	r30
     52c:	e1 f7       	brne	.-8      	; 0x526 <readbyte_12864+0x8c>
     52e:	f8 2b       	or	r31, r24
	return (temp);
}
     530:	8f 2f       	mov	r24, r31
     532:	99 27       	eor	r25, r25
     534:	22 96       	adiw	r28, 0x02	; 2
     536:	0f b6       	in	r0, 0x3f	; 63
     538:	f8 94       	cli
     53a:	de bf       	out	0x3e, r29	; 62
     53c:	0f be       	out	0x3f, r0	; 63
     53e:	cd bf       	out	0x3d, r28	; 61
     540:	df 91       	pop	r29
     542:	cf 91       	pop	r28
     544:	08 95       	ret

00000546 <busywait_12864>:
//*************函数部分***************/
/* 名字:busywait_12864()            */
/* 功能:检测RT12864M是否忙          */
/* 局部变量:无                      */
/* 全局变量:无                      */
/* 返回值:  无                      */
//************************************/
void busywait_12864(void)
{
    uchar bf;
loop:
    bf=readbyte_12864(CM_rcomm);
     546:	8c ef       	ldi	r24, 0xFC	; 252
     548:	0e 94 4d 02 	call	0x49a <readbyte_12864>
    if(bf&0x80)goto loop;
     54c:	88 23       	and	r24, r24
     54e:	dc f3       	brlt	.-10     	; 0x546 <busywait_12864>
     550:	08 95       	ret

00000552 <writecomm_12864>:
}
//*************函数部分***************/
/* 名字:writecomm_12864()           */
/* 功能:写命令进RT12864M            */
/* 局部变量:command                 */
/* 全局变量:无                      */
/* 返回值:  无                      */
//************************************/ 
void writecomm_12864(uchar command)
{
     552:	cf 93       	push	r28
     554:	c8 2f       	mov	r28, r24
    busywait_12864();
     556:	0e 94 a3 02 	call	0x546 <busywait_12864>
    CS_12864_1();
     55a:	a4 9a       	sbi	0x14, 4	; 20
     55c:	00 00       	nop
     55e:	ac 9a       	sbi	0x15, 4	; 21
    sentbyte_12864(CM_wcomm);  
     560:	88 ef       	ldi	r24, 0xF8	; 248
     562:	0e 94 31 02 	call	0x462 <sentbyte_12864>
    sentbyte_12864(command&0xf0); 
     566:	8c 2f       	mov	r24, r28
     568:	80 7f       	andi	r24, 0xF0	; 240
     56a:	0e 94 31 02 	call	0x462 <sentbyte_12864>
    sentbyte_12864((command<<4)&0xf0); 
     56e:	8c 2f       	mov	r24, r28
     570:	99 27       	eor	r25, r25
     572:	f4 e0       	ldi	r31, 0x04	; 4
     574:	88 0f       	add	r24, r24
     576:	99 1f       	adc	r25, r25
     578:	fa 95       	dec	r31
     57a:	e1 f7       	brne	.-8      	; 0x574 <writecomm_12864+0x22>
     57c:	80 7f       	andi	r24, 0xF0	; 240
     57e:	0e 94 31 02 	call	0x462 <sentbyte_12864>
     582:	cf 91       	pop	r28
     584:	08 95       	ret

00000586 <writedata_12864>:
}
//*************函数部分***************/
/* 名字:writedata_12864()           */
/* 功能:写数据写进RT12864M          */
/* 局部变量:wrdata                  */
/* 全局变量:无                      */
/* 返回值:  无                      */
//************************************/ 
void writedata_12864(uchar wrdata)
{
     586:	cf 93       	push	r28
     588:	c8 2f       	mov	r28, r24
    busywait_12864();
     58a:	0e 94 a3 02 	call	0x546 <busywait_12864>
    CS_12864_1();
     58e:	a4 9a       	sbi	0x14, 4	; 20
     590:	00 00       	nop
     592:	ac 9a       	sbi	0x15, 4	; 21
    sentbyte_12864(CM_wdata);  
     594:	8a ef       	ldi	r24, 0xFA	; 250
     596:	0e 94 31 02 	call	0x462 <sentbyte_12864>
    sentbyte_12864(wrdata&0xf0); 
     59a:	8c 2f       	mov	r24, r28
     59c:	80 7f       	andi	r24, 0xF0	; 240
     59e:	0e 94 31 02 	call	0x462 <sentbyte_12864>
    sentbyte_12864((wrdata<<4)&0xf0); 
     5a2:	8c 2f       	mov	r24, r28
     5a4:	99 27       	eor	r25, r25
     5a6:	a4 e0       	ldi	r26, 0x04	; 4
     5a8:	88 0f       	add	r24, r24
     5aa:	99 1f       	adc	r25, r25
     5ac:	aa 95       	dec	r26
     5ae:	e1 f7       	brne	.-8      	; 0x5a8 <writedata_12864+0x22>
     5b0:	80 7f       	andi	r24, 0xF0	; 240
     5b2:	0e 94 31 02 	call	0x462 <sentbyte_12864>
     5b6:	cf 91       	pop	r28
     5b8:	08 95       	ret

000005ba <Init_12864>:
}
//*************函数部分***************/
/* 名字:Init_12864()                */
/* 功能:初始化RT12864M              */
/* 局部变量:无                      */
/* 全局变量:无                      */
/* 返回值:  无                      */
//************************************/
void Init_12864(void)
{
    PSB_12864_0();  //选择串口通信
     5ba:	a7 9a       	sbi	0x14, 7	; 20
     5bc:	00 00       	nop
     5be:	af 98       	cbi	0x15, 7	; 21
	CLK_12864_0(); 
     5c0:	a6 9a       	sbi	0x14, 6	; 20
     5c2:	00 00       	nop
     5c4:	ae 98       	cbi	0x15, 6	; 21
    writecomm_12864(0x30);//功能设置 8位数据,基本指令
     5c6:	80 e3       	ldi	r24, 0x30	; 48
     5c8:	0e 94 a9 02 	call	0x552 <writecomm_12864>
    RT12864delay_ms(10);
     5cc:	8a e0       	ldi	r24, 0x0A	; 10
     5ce:	90 e0       	ldi	r25, 0x00	; 0
     5d0:	0e 94 22 02 	call	0x444 <RT12864delay_ms>
	writecomm_12864(0x0c);//显示状态 ON,游标OFF,反白OFF
     5d4:	8c e0       	ldi	r24, 0x0C	; 12
     5d6:	0e 94 a9 02 	call	0x552 <writecomm_12864>
    RT12864delay_ms(10);
     5da:	8a e0       	ldi	r24, 0x0A	; 10
     5dc:	90 e0       	ldi	r25, 0x00	; 0
     5de:	0e 94 22 02 	call	0x444 <RT12864delay_ms>
    writecomm_12864(0x01);//清除显示
     5e2:	81 e0       	ldi	r24, 0x01	; 1
     5e4:	0e 94 a9 02 	call	0x552 <writecomm_12864>
    RT12864delay_ms(10);
     5e8:	8a e0       	ldi	r24, 0x0A	; 10
     5ea:	90 e0       	ldi	r25, 0x00	; 0
     5ec:	0e 94 22 02 	call	0x444 <RT12864delay_ms>
    writecomm_12864(0x02);//地址归位
     5f0:	82 e0       	ldi	r24, 0x02	; 2
     5f2:	0e 94 a9 02 	call	0x552 <writecomm_12864>
     5f6:	08 95       	ret

000005f8 <locatexy_12864>:
}
//*************函数部分***************/
/* 名字:locatexy_12864()            */
/* 功能:定位显示地址                */
/* 局部变量:x,y                     */
/* 全局变量:无                      */
/* 返回值:  无                      */
//************************************/
void locatexy_12864(uchar x,uchar y)
{
     5f8:	28 2f       	mov	r18, r24
     5fa:	86 2f       	mov	r24, r22
    uchar addr=0;
     5fc:	30 e0       	ldi	r19, 0x00	; 0
    switch(y)
     5fe:	99 27       	eor	r25, r25
     600:	81 30       	cpi	r24, 0x01	; 1
     602:	91 05       	cpc	r25, r1
     604:	79 f0       	breq	.+30     	; 0x624 <locatexy_12864+0x2c>
     606:	82 30       	cpi	r24, 0x02	; 2
     608:	91 05       	cpc	r25, r1
     60a:	1c f4       	brge	.+6      	; 0x612 <locatexy_12864+0x1a>
     60c:	89 2b       	or	r24, r25
     60e:	39 f0       	breq	.+14     	; 0x61e <locatexy_12864+0x26>
     610:	11 c0       	rjmp	.+34     	; 0x634 <locatexy_12864+0x3c>
     612:	82 30       	cpi	r24, 0x02	; 2
     614:	91 05       	cpc	r25, r1
     616:	49 f0       	breq	.+18     	; 0x62a <locatexy_12864+0x32>
     618:	03 97       	sbiw	r24, 0x03	; 3
     61a:	51 f0       	breq	.+20     	; 0x630 <locatexy_12864+0x38>
     61c:	0b c0       	rjmp	.+22     	; 0x634 <locatexy_12864+0x3c>
        {

⌨️ 快捷键说明

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