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

📄 12864_serial.lss

📁 AVR Devolpment Board
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 a5c:	cf 93       	push	r28
 a5e:	df 93       	push	r29
 a60:	18 2f       	mov	r17, r24
 a62:	06 2f       	mov	r16, r22
 a64:	ea 01       	movw	r28, r20
    WriteCommand(0x30);      //8BitMCU,基本指令集合
 a66:	80 e3       	ldi	r24, 0x30	; 48
 a68:	0e 94 b5 04 	call	0x96a <WriteCommand>
	switch(row)
 a6c:	81 2f       	mov	r24, r17
 a6e:	99 27       	eor	r25, r25
 a70:	81 30       	cpi	r24, 0x01	; 1
 a72:	91 05       	cpc	r25, r1
 a74:	79 f0       	breq	.+30     	; 0xa94 <PutStr+0x3c>
 a76:	82 30       	cpi	r24, 0x02	; 2
 a78:	91 05       	cpc	r25, r1
 a7a:	1c f4       	brge	.+6      	; 0xa82 <PutStr+0x2a>
 a7c:	89 2b       	or	r24, r25
 a7e:	39 f0       	breq	.+14     	; 0xa8e <PutStr+0x36>
 a80:	13 c0       	rjmp	.+38     	; 0xaa8 <PutStr+0x50>
 a82:	82 30       	cpi	r24, 0x02	; 2
 a84:	91 05       	cpc	r25, r1
 a86:	49 f0       	breq	.+18     	; 0xa9a <PutStr+0x42>
 a88:	03 97       	sbiw	r24, 0x03	; 3
 a8a:	51 f0       	breq	.+20     	; 0xaa0 <PutStr+0x48>
 a8c:	0d c0       	rjmp	.+26     	; 0xaa8 <PutStr+0x50>
	{
		case 0:
			WriteCommand(0x80+col);
 a8e:	80 2f       	mov	r24, r16
 a90:	80 58       	subi	r24, 0x80	; 128
 a92:	08 c0       	rjmp	.+16     	; 0xaa4 <PutStr+0x4c>
			break;
		case 1:
			WriteCommand(0x90+col);
 a94:	80 2f       	mov	r24, r16
 a96:	80 57       	subi	r24, 0x70	; 112
 a98:	05 c0       	rjmp	.+10     	; 0xaa4 <PutStr+0x4c>
			break;
		case 2:
			WriteCommand(0x88+col);
 a9a:	80 2f       	mov	r24, r16
 a9c:	88 57       	subi	r24, 0x78	; 120
 a9e:	02 c0       	rjmp	.+4      	; 0xaa4 <PutStr+0x4c>
			break;
		case 3:
			WriteCommand(0x98+col);
 aa0:	80 2f       	mov	r24, r16
 aa2:	88 56       	subi	r24, 0x68	; 104
 aa4:	0e 94 b5 04 	call	0x96a <WriteCommand>
			break;
		default:
			break;
	}
	while(*puts != '\0')      //判断字符串是否显示完毕
	{
		WriteData(*puts);
		puts++;
 aa8:	88 81       	ld	r24, Y
 aaa:	88 23       	and	r24, r24
 aac:	31 f0       	breq	.+12     	; 0xaba <PutStr+0x62>
 aae:	89 91       	ld	r24, Y+
 ab0:	0e 94 cf 04 	call	0x99e <WriteData>
 ab4:	88 81       	ld	r24, Y
 ab6:	88 23       	and	r24, r24
 ab8:	d1 f7       	brne	.-12     	; 0xaae <PutStr+0x56>
 aba:	df 91       	pop	r29
 abc:	cf 91       	pop	r28
 abe:	1f 91       	pop	r17
 ac0:	0f 91       	pop	r16
 ac2:	08 95       	ret

00000ac4 <PutBMP>:
	}
}

void PutBMP(const unsigned char *puts)
{
 ac4:	ff 92       	push	r15
 ac6:	0f 93       	push	r16
 ac8:	1f 93       	push	r17
 aca:	cf 93       	push	r28
 acc:	df 93       	push	r29
 ace:	ec 01       	movw	r28, r24
	uchar n,i,j;
	unsigned char RamVar; //定义无符号变量(Ram变量)
	for(n=0;n<2;n++)		//分两屏显示
 ad0:	ff 24       	eor	r15, r15
	for(i=0;i<32;i++)		//每屏32行	
 ad2:	00 e0       	ldi	r16, 0x00	; 0
	for(j=0;j<8;j++)	     //每行8个X地址坐标
 ad4:	10 e0       	ldi	r17, 0x00	; 0
	{
		WriteCommand(0x80+i);	          //写Y坐标
 ad6:	80 2f       	mov	r24, r16
 ad8:	80 58       	subi	r24, 0x80	; 128
 ada:	0e 94 b5 04 	call	0x96a <WriteCommand>
		WriteCommand(0x80+j+n*8);		  //写X坐标。上半屏(n=0)地址为0x80-0x87,下半屏(n=1)地址为0x88-0x8f
 ade:	8f 2d       	mov	r24, r15
 ae0:	88 0f       	add	r24, r24
 ae2:	88 0f       	add	r24, r24
 ae4:	88 0f       	add	r24, r24
 ae6:	81 0f       	add	r24, r17
 ae8:	80 58       	subi	r24, 0x80	; 128
 aea:	0e 94 b5 04 	call	0x96a <WriteCommand>
		RamVar = pgm_read_byte( &(*puts));
 aee:	fe 01       	movw	r30, r28
 af0:	84 91       	lpm	r24, Z
		//也可RamVar = pgm_read_byte(puts);
		WriteData(RamVar);					  //每个地址写两字节
 af2:	0e 94 cf 04 	call	0x99e <WriteData>
		RamVar = pgm_read_byte( &(*(puts+1)));
 af6:	21 96       	adiw	r28, 0x01	; 1
 af8:	fe 01       	movw	r30, r28
 afa:	84 91       	lpm	r24, Z
		//也可RamVar = pgm_read_byte(puts+1);
		WriteData(RamVar);
 afc:	0e 94 cf 04 	call	0x99e <WriteData>
		puts+=2;
 b00:	21 96       	adiw	r28, 0x01	; 1
 b02:	1f 5f       	subi	r17, 0xFF	; 255
 b04:	18 30       	cpi	r17, 0x08	; 8
 b06:	38 f3       	brcs	.-50     	; 0xad6 <PutBMP+0x12>
 b08:	0f 5f       	subi	r16, 0xFF	; 255
 b0a:	00 32       	cpi	r16, 0x20	; 32
 b0c:	18 f3       	brcs	.-58     	; 0xad4 <PutBMP+0x10>
 b0e:	f3 94       	inc	r15
 b10:	f1 e0       	ldi	r31, 0x01	; 1
 b12:	ff 15       	cp	r31, r15
 b14:	f0 f6       	brcc	.-68     	; 0xad2 <PutBMP+0xe>
	}	  
	WriteCommand(0x36);	       //打开绘图
 b16:	86 e3       	ldi	r24, 0x36	; 54
 b18:	0e 94 b5 04 	call	0x96a <WriteCommand>
 b1c:	df 91       	pop	r29
 b1e:	cf 91       	pop	r28
 b20:	1f 91       	pop	r17
 b22:	0f 91       	pop	r16
 b24:	ff 90       	pop	r15
 b26:	08 95       	ret

00000b28 <Put16_16BMP1>:
}

/***********************************************/
 /*******PutBMP1显示16*16点阵*******************/
 /*****X0---3**************Y0--7***************************/
 /***********将16*16点阵显示在第X行第Y列**********************/
void Put16_16BMP1(const uchar *puts1,uchar x,uchar y)
{
 b28:	cf 92       	push	r12
 b2a:	df 92       	push	r13
 b2c:	ef 92       	push	r14
 b2e:	ff 92       	push	r15
 b30:	0f 93       	push	r16
 b32:	cf 93       	push	r28
 b34:	df 93       	push	r29
 b36:	ec 01       	movw	r28, r24
 b38:	06 2f       	mov	r16, r22
 b3a:	f4 2e       	mov	r15, r20
     uchar i,j;
	 unsigned char RamVar; //定义无符号变量(Ram变量)
	 
	 //Row 行==0
	 if(x==0){x=0x80;y=x+y;}
 b3c:	66 23       	and	r22, r22
 b3e:	11 f4       	brne	.+4      	; 0xb44 <Put16_16BMP1+0x1c>
 b40:	00 e8       	ldi	r16, 0x80	; 128
 b42:	03 c0       	rjmp	.+6      	; 0xb4a <Put16_16BMP1+0x22>
	 if(x==1){x=0x90;y=x+y;}
 b44:	61 30       	cpi	r22, 0x01	; 1
 b46:	19 f4       	brne	.+6      	; 0xb4e <Put16_16BMP1+0x26>
 b48:	00 e9       	ldi	r16, 0x90	; 144
 b4a:	f0 0e       	add	r15, r16
 b4c:	0b c0       	rjmp	.+22     	; 0xb64 <Put16_16BMP1+0x3c>
	 if(x==2){x=0x80;y=x+y+8;}
 b4e:	62 30       	cpi	r22, 0x02	; 2
 b50:	21 f4       	brne	.+8      	; 0xb5a <Put16_16BMP1+0x32>
 b52:	00 e8       	ldi	r16, 0x80	; 128
 b54:	88 e8       	ldi	r24, 0x88	; 136
 b56:	f8 0e       	add	r15, r24
 b58:	05 c0       	rjmp	.+10     	; 0xb64 <Put16_16BMP1+0x3c>
	 if(x==3){x=0x90;y=x+y+8;}
 b5a:	63 30       	cpi	r22, 0x03	; 3
 b5c:	19 f4       	brne	.+6      	; 0xb64 <Put16_16BMP1+0x3c>
 b5e:	00 e9       	ldi	r16, 0x90	; 144
 b60:	e8 e9       	ldi	r30, 0x98	; 152
 b62:	fe 0e       	add	r15, r30
     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次
 b64:	84 e3       	ldi	r24, 0x34	; 52
 b66:	0e 94 b5 04 	call	0x96a <WriteCommand>
     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图
 b6a:	86 e3       	ldi	r24, 0x36	; 54
 b6c:	0e 94 b5 04 	call	0x96a <WriteCommand>
     for(i=0;i<16;i++)            //12864实际为256x32
 b70:	ee 24       	eor	r14, r14
     {
           WriteCommand(x|i);      //行位置
 b72:	80 2f       	mov	r24, r16
 b74:	8e 29       	or	r24, r14
 b76:	0e 94 b5 04 	call	0x96a <WriteCommand>
           WriteCommand(y);      //列位置
 b7a:	8f 2d       	mov	r24, r15
 b7c:	0e 94 b5 04 	call	0x96a <WriteCommand>
 b80:	6e 01       	movw	r12, r28
           for(j=0;j<2;j++)      //256/8=32 byte
           {            //列位置每行自动增加
		   		 RamVar = pgm_read_byte( &(*puts1));////////////
 b82:	fe 01       	movw	r30, r28
 b84:	84 91       	lpm	r24, Z
				 //也可RamVar = pgm_read_byte(puts1);
                 WriteData(RamVar);
 b86:	0e 94 cf 04 	call	0x99e <WriteData>
                 puts1++;
 b8a:	21 96       	adiw	r28, 0x01	; 1
 b8c:	fe 01       	movw	r30, r28
 b8e:	84 91       	lpm	r24, Z
 b90:	0e 94 cf 04 	call	0x99e <WriteData>
 b94:	e6 01       	movw	r28, r12
 b96:	22 96       	adiw	r28, 0x02	; 2
 b98:	e3 94       	inc	r14
 b9a:	ff e0       	ldi	r31, 0x0F	; 15
 b9c:	fe 15       	cp	r31, r14
 b9e:	48 f7       	brcc	.-46     	; 0xb72 <Put16_16BMP1+0x4a>
 ba0:	df 91       	pop	r29
 ba2:	cf 91       	pop	r28
 ba4:	0f 91       	pop	r16
 ba6:	ff 90       	pop	r15
 ba8:	ef 90       	pop	r14
 baa:	df 90       	pop	r13
 bac:	cf 90       	pop	r12
 bae:	08 95       	ret

00000bb0 <main>:
           }
     }
}


int main(void)
{
 bb0:	cf e5       	ldi	r28, 0x5F	; 95
 bb2:	d4 e0       	ldi	r29, 0x04	; 4
 bb4:	de bf       	out	0x3e, r29	; 62
 bb6:	cd bf       	out	0x3d, r28	; 61
	LcmInit();
 bb8:	0e 94 ea 04 	call	0x9d4 <LcmInit>
	LcmClearTXT();
 bbc:	0e 94 ff 04 	call	0x9fe <LcmClearTXT>
	LcmClearBMP();
 bc0:	0e 94 0f 05 	call	0xa1e <LcmClearBMP>
	while(1)
	{
		PutStr(0,0,"Welcome To HRBUST!");
 bc4:	4a e7       	ldi	r20, 0x7A	; 122
 bc6:	50 e0       	ldi	r21, 0x00	; 0
 bc8:	60 e0       	ldi	r22, 0x00	; 0
 bca:	86 2f       	mov	r24, r22
 bcc:	0e 94 2c 05 	call	0xa58 <PutStr>
		delay(2000);
 bd0:	80 ed       	ldi	r24, 0xD0	; 208
 bd2:	97 e0       	ldi	r25, 0x07	; 7
 bd4:	0e 94 67 04 	call	0x8ce <delay>
		LcmClearTXT();
 bd8:	0e 94 ff 04 	call	0x9fe <LcmClearTXT>
		LcmClearBMP();
 bdc:	0e 94 0f 05 	call	0xa1e <LcmClearBMP>
		PutStr(0,0,"欢迎来到哈尔滨理工大学!");
 be0:	4d e8       	ldi	r20, 0x8D	; 141
 be2:	50 e0       	ldi	r21, 0x00	; 0
 be4:	60 e0       	ldi	r22, 0x00	; 0
 be6:	86 2f       	mov	r24, r22
 be8:	0e 94 2c 05 	call	0xa58 <PutStr>
		delay(3000);
 bec:	88 eb       	ldi	r24, 0xB8	; 184
 bee:	9b e0       	ldi	r25, 0x0B	; 11
 bf0:	0e 94 67 04 	call	0x8ce <delay>
		LcmClearTXT();
 bf4:	0e 94 ff 04 	call	0x9fe <LcmClearTXT>
		LcmClearBMP();
 bf8:	0e 94 0f 05 	call	0xa1e <LcmClearBMP>

		PutBMP(bmp0);
 bfc:	84 e9       	ldi	r24, 0x94	; 148
 bfe:	94 e0       	ldi	r25, 0x04	; 4
 c00:	0e 94 62 05 	call	0xac4 <PutBMP>
		delay(2000);
 c04:	80 ed       	ldi	r24, 0xD0	; 208
 c06:	97 e0       	ldi	r25, 0x07	; 7
 c08:	0e 94 67 04 	call	0x8ce <delay>
		LcmClearTXT();
 c0c:	0e 94 ff 04 	call	0x9fe <LcmClearTXT>
		LcmClearBMP();
 c10:	0e 94 0f 05 	call	0xa1e <LcmClearBMP>
		PutBMP(bmp1);
 c14:	84 e9       	ldi	r24, 0x94	; 148
 c16:	90 e0       	ldi	r25, 0x00	; 0
 c18:	0e 94 62 05 	call	0xac4 <PutBMP>
		delay(2000);
 c1c:	80 ed       	ldi	r24, 0xD0	; 208
 c1e:	97 e0       	ldi	r25, 0x07	; 7
 c20:	0e 94 67 04 	call	0x8ce <delay>
		LcmClearTXT();
 c24:	0e 94 ff 04 	call	0x9fe <LcmClearTXT>
		LcmClearBMP();
 c28:	0e 94 0f 05 	call	0xa1e <LcmClearBMP>
		PutStr(1,2,str1);
 c2c:	41 e7       	ldi	r20, 0x71	; 113
 c2e:	50 e0       	ldi	r21, 0x00	; 0
 c30:	62 e0       	ldi	r22, 0x02	; 2
 c32:	81 e0       	ldi	r24, 0x01	; 1
 c34:	0e 94 2c 05 	call	0xa58 <PutStr>
		PutStr(3,0,str2);
 c38:	40 e6       	ldi	r20, 0x60	; 96
 c3a:	50 e0       	ldi	r21, 0x00	; 0
 c3c:	60 e0       	ldi	r22, 0x00	; 0
 c3e:	83 e0       	ldi	r24, 0x03	; 3
 c40:	0e 94 2c 05 	call	0xa58 <PutStr>
		Put16_16BMP1(BMP0,0,0);
 c44:	40 e0       	ldi	r20, 0x00	; 0
 c46:	64 2f       	mov	r22, r20
 c48:	84 e7       	ldi	r24, 0x74	; 116
 c4a:	90 e0       	ldi	r25, 0x00	; 0
 c4c:	0e 94 94 05 	call	0xb28 <Put16_16BMP1>
		Put16_16BMP1(BMP1,0,7);
 c50:	47 e0       	ldi	r20, 0x07	; 7
 c52:	60 e0       	ldi	r22, 0x00	; 0
 c54:	84 e5       	ldi	r24, 0x54	; 84
 c56:	90 e0       	ldi	r25, 0x00	; 0
 c58:	0e 94 94 05 	call	0xb28 <Put16_16BMP1>
		delay(2000);
 c5c:	80 ed       	ldi	r24, 0xD0	; 208
 c5e:	97 e0       	ldi	r25, 0x07	; 7
 c60:	0e 94 67 04 	call	0x8ce <delay>
 c64:	ab cf       	rjmp	.-170    	; 0xbbc <main+0xc>

⌨️ 快捷键说明

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