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

📄 12864_paiallel.lss

📁 AVR Devolpment Board
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 a30:	80 58       	subi	r24, 0x80	; 128
 a32:	08 c0       	rjmp	.+16     	; 0xa44 <PutStr+0x4c>
			break;
		case 1:
			WriteCommand(0x90+col);
 a34:	80 2f       	mov	r24, r16
 a36:	80 57       	subi	r24, 0x70	; 112
 a38:	05 c0       	rjmp	.+10     	; 0xa44 <PutStr+0x4c>
			break;
		case 2:
			WriteCommand(0x88+col);
 a3a:	80 2f       	mov	r24, r16
 a3c:	88 57       	subi	r24, 0x78	; 120
 a3e:	02 c0       	rjmp	.+4      	; 0xa44 <PutStr+0x4c>
			break;
		case 3:
			WriteCommand(0x98+col);
 a40:	80 2f       	mov	r24, r16
 a42:	88 56       	subi	r24, 0x68	; 104
 a44:	0e 94 a5 04 	call	0x94a <WriteCommand>
			break;
		default:
			break;
	}
	while(*puts != '\0')      //判断字符串是否显示完毕
	{
		WriteData(*puts);
		puts++;
 a48:	88 81       	ld	r24, Y
 a4a:	88 23       	and	r24, r24
 a4c:	31 f0       	breq	.+12     	; 0xa5a <PutStr+0x62>
 a4e:	89 91       	ld	r24, Y+
 a50:	0e 94 b0 04 	call	0x960 <WriteData>
 a54:	88 81       	ld	r24, Y
 a56:	88 23       	and	r24, r24
 a58:	d1 f7       	brne	.-12     	; 0xa4e <PutStr+0x56>
 a5a:	df 91       	pop	r29
 a5c:	cf 91       	pop	r28
 a5e:	1f 91       	pop	r17
 a60:	0f 91       	pop	r16
 a62:	08 95       	ret

00000a64 <PutBMP>:
	}
}

void PutBMP(const unsigned char *puts)
{
 a64:	ff 92       	push	r15
 a66:	0f 93       	push	r16
 a68:	1f 93       	push	r17
 a6a:	cf 93       	push	r28
 a6c:	df 93       	push	r29
 a6e:	ec 01       	movw	r28, r24
	uchar n,i,j;
	unsigned char RamVar; //定义无符号变量(Ram变量)
	for(n=0;n<2;n++)		//分两屏显示
 a70:	ff 24       	eor	r15, r15
	for(i=0;i<32;i++)		//每屏32行	
 a72:	00 e0       	ldi	r16, 0x00	; 0
	for(j=0;j<8;j++)	     //每行8个X地址坐标
 a74:	10 e0       	ldi	r17, 0x00	; 0
	{
		WriteCommand(0x80+i);	          //写Y坐标
 a76:	80 2f       	mov	r24, r16
 a78:	80 58       	subi	r24, 0x80	; 128
 a7a:	0e 94 a5 04 	call	0x94a <WriteCommand>
		WriteCommand(0x80+j+n*8);		  //写X坐标。上半屏(n=0)地址为0x80-0x87,下半屏(n=1)地址为0x88-0x8f
 a7e:	8f 2d       	mov	r24, r15
 a80:	88 0f       	add	r24, r24
 a82:	88 0f       	add	r24, r24
 a84:	88 0f       	add	r24, r24
 a86:	81 0f       	add	r24, r17
 a88:	80 58       	subi	r24, 0x80	; 128
 a8a:	0e 94 a5 04 	call	0x94a <WriteCommand>
		RamVar = pgm_read_byte( &(*puts));
 a8e:	fe 01       	movw	r30, r28
 a90:	84 91       	lpm	r24, Z
		//也可RamVar = pgm_read_byte(puts);
		WriteData(RamVar);					  //每个地址写两字节
 a92:	0e 94 b0 04 	call	0x960 <WriteData>
		RamVar = pgm_read_byte( &(*(puts+1)));
 a96:	21 96       	adiw	r28, 0x01	; 1
 a98:	fe 01       	movw	r30, r28
 a9a:	84 91       	lpm	r24, Z
		//也可RamVar = pgm_read_byte(puts+1);
		WriteData(RamVar);
 a9c:	0e 94 b0 04 	call	0x960 <WriteData>
		puts+=2;
 aa0:	21 96       	adiw	r28, 0x01	; 1
 aa2:	1f 5f       	subi	r17, 0xFF	; 255
 aa4:	18 30       	cpi	r17, 0x08	; 8
 aa6:	38 f3       	brcs	.-50     	; 0xa76 <PutBMP+0x12>
 aa8:	0f 5f       	subi	r16, 0xFF	; 255
 aaa:	00 32       	cpi	r16, 0x20	; 32
 aac:	18 f3       	brcs	.-58     	; 0xa74 <PutBMP+0x10>
 aae:	f3 94       	inc	r15
 ab0:	f1 e0       	ldi	r31, 0x01	; 1
 ab2:	ff 15       	cp	r31, r15
 ab4:	f0 f6       	brcc	.-68     	; 0xa72 <PutBMP+0xe>
	}	 
	WriteCommand(0x36);	       //打开绘图
 ab6:	86 e3       	ldi	r24, 0x36	; 54
 ab8:	0e 94 a5 04 	call	0x94a <WriteCommand>
 abc:	df 91       	pop	r29
 abe:	cf 91       	pop	r28
 ac0:	1f 91       	pop	r17
 ac2:	0f 91       	pop	r16
 ac4:	ff 90       	pop	r15
 ac6:	08 95       	ret

00000ac8 <Put16_16BMP1>:
}

/***********************************************/
 /*******PutBMP1显示16*16点阵*******************/
 /*****X0---3**************Y0--7***************************/
 /***********将16*16点阵显示在第X行第Y列**********************/
void Put16_16BMP1(const uchar *puts1,uchar x,uchar y)
{
 ac8:	cf 92       	push	r12
 aca:	df 92       	push	r13
 acc:	ef 92       	push	r14
 ace:	ff 92       	push	r15
 ad0:	0f 93       	push	r16
 ad2:	cf 93       	push	r28
 ad4:	df 93       	push	r29
 ad6:	ec 01       	movw	r28, r24
 ad8:	06 2f       	mov	r16, r22
 ada:	f4 2e       	mov	r15, r20
     uchar i,j;
	 unsigned char RamVar; //定义无符号变量(Ram变量)
	 
	 //Row 行==0
	 if(x==0){x=0x80;y=x+y;}
 adc:	66 23       	and	r22, r22
 ade:	11 f4       	brne	.+4      	; 0xae4 <Put16_16BMP1+0x1c>
 ae0:	00 e8       	ldi	r16, 0x80	; 128
 ae2:	03 c0       	rjmp	.+6      	; 0xaea <Put16_16BMP1+0x22>
	 if(x==1){x=0x90;y=x+y;}
 ae4:	61 30       	cpi	r22, 0x01	; 1
 ae6:	19 f4       	brne	.+6      	; 0xaee <Put16_16BMP1+0x26>
 ae8:	00 e9       	ldi	r16, 0x90	; 144
 aea:	f0 0e       	add	r15, r16
 aec:	0b c0       	rjmp	.+22     	; 0xb04 <Put16_16BMP1+0x3c>
	 if(x==2){x=0x80;y=x+y+8;}
 aee:	62 30       	cpi	r22, 0x02	; 2
 af0:	21 f4       	brne	.+8      	; 0xafa <Put16_16BMP1+0x32>
 af2:	00 e8       	ldi	r16, 0x80	; 128
 af4:	88 e8       	ldi	r24, 0x88	; 136
 af6:	f8 0e       	add	r15, r24
 af8:	05 c0       	rjmp	.+10     	; 0xb04 <Put16_16BMP1+0x3c>
	 if(x==3){x=0x90;y=x+y+8;}
 afa:	63 30       	cpi	r22, 0x03	; 3
 afc:	19 f4       	brne	.+6      	; 0xb04 <Put16_16BMP1+0x3c>
 afe:	00 e9       	ldi	r16, 0x90	; 144
 b00:	e8 e9       	ldi	r30, 0x98	; 152
 b02:	fe 0e       	add	r15, r30
     WriteCommand(0x34);      //8Bit扩充指令集,即使是36H也要写两次
 b04:	84 e3       	ldi	r24, 0x34	; 52
 b06:	0e 94 a5 04 	call	0x94a <WriteCommand>
     WriteCommand(0x36);      //绘图ON,基本指令集里面36H不能开绘图
 b0a:	86 e3       	ldi	r24, 0x36	; 54
 b0c:	0e 94 a5 04 	call	0x94a <WriteCommand>
     for(i=0;i<16;i++)            //12864实际为256x32
 b10:	ee 24       	eor	r14, r14
     {
           WriteCommand(x|i);      //行位置
 b12:	80 2f       	mov	r24, r16
 b14:	8e 29       	or	r24, r14
 b16:	0e 94 a5 04 	call	0x94a <WriteCommand>
           WriteCommand(y);      //列位置
 b1a:	8f 2d       	mov	r24, r15
 b1c:	0e 94 a5 04 	call	0x94a <WriteCommand>
 b20:	6e 01       	movw	r12, r28
           for(j=0;j<2;j++)      //256/8=32 byte
           {            //列位置每行自动增加
		   		 RamVar = pgm_read_byte( &(*puts1));////////////
 b22:	fe 01       	movw	r30, r28
 b24:	84 91       	lpm	r24, Z
				 //也可RamVar = pgm_read_byte(puts1);
                 WriteData(RamVar);
 b26:	0e 94 b0 04 	call	0x960 <WriteData>
                 puts1++;
 b2a:	21 96       	adiw	r28, 0x01	; 1
 b2c:	fe 01       	movw	r30, r28
 b2e:	84 91       	lpm	r24, Z
 b30:	0e 94 b0 04 	call	0x960 <WriteData>
 b34:	e6 01       	movw	r28, r12
 b36:	22 96       	adiw	r28, 0x02	; 2
 b38:	e3 94       	inc	r14
 b3a:	ff e0       	ldi	r31, 0x0F	; 15
 b3c:	fe 15       	cp	r31, r14
 b3e:	48 f7       	brcc	.-46     	; 0xb12 <Put16_16BMP1+0x4a>
 b40:	df 91       	pop	r29
 b42:	cf 91       	pop	r28
 b44:	0f 91       	pop	r16
 b46:	ff 90       	pop	r15
 b48:	ef 90       	pop	r14
 b4a:	df 90       	pop	r13
 b4c:	cf 90       	pop	r12
 b4e:	08 95       	ret

00000b50 <main>:
           }
     }
}


int main(void)
{
 b50:	cf e5       	ldi	r28, 0x5F	; 95
 b52:	d4 e0       	ldi	r29, 0x04	; 4
 b54:	de bf       	out	0x3e, r29	; 62
 b56:	cd bf       	out	0x3d, r28	; 61
	LcmInit();
 b58:	0e 94 bb 04 	call	0x976 <LcmInit>
	LcmClearTXT();
 b5c:	0e 94 cf 04 	call	0x99e <LcmClearTXT>
	LcmClearBMP();
 b60:	0e 94 df 04 	call	0x9be <LcmClearBMP>
	while(1)
	{
		PutStr(0,0,"Welcome To HRBUST!");
 b64:	4a e7       	ldi	r20, 0x7A	; 122
 b66:	50 e0       	ldi	r21, 0x00	; 0
 b68:	60 e0       	ldi	r22, 0x00	; 0
 b6a:	86 2f       	mov	r24, r22
 b6c:	0e 94 fc 04 	call	0x9f8 <PutStr>
		delay_ms(2000);
 b70:	80 ed       	ldi	r24, 0xD0	; 208
 b72:	97 e0       	ldi	r25, 0x07	; 7
 b74:	0e 94 67 04 	call	0x8ce <delay_ms>
		LcmClearTXT();
 b78:	0e 94 cf 04 	call	0x99e <LcmClearTXT>
		LcmClearBMP();
 b7c:	0e 94 df 04 	call	0x9be <LcmClearBMP>
		PutStr(0,0,"欢迎来到哈尔滨理工大学!");
 b80:	4d e8       	ldi	r20, 0x8D	; 141
 b82:	50 e0       	ldi	r21, 0x00	; 0
 b84:	60 e0       	ldi	r22, 0x00	; 0
 b86:	86 2f       	mov	r24, r22
 b88:	0e 94 fc 04 	call	0x9f8 <PutStr>
		delay_ms(2000);
 b8c:	80 ed       	ldi	r24, 0xD0	; 208
 b8e:	97 e0       	ldi	r25, 0x07	; 7
 b90:	0e 94 67 04 	call	0x8ce <delay_ms>
		LcmClearTXT();
 b94:	0e 94 cf 04 	call	0x99e <LcmClearTXT>
		LcmClearBMP();
 b98:	0e 94 df 04 	call	0x9be <LcmClearBMP>
		PutBMP(bmp0);
 b9c:	84 e9       	ldi	r24, 0x94	; 148
 b9e:	94 e0       	ldi	r25, 0x04	; 4
 ba0:	0e 94 32 05 	call	0xa64 <PutBMP>
		delay_ms(2000);
 ba4:	80 ed       	ldi	r24, 0xD0	; 208
 ba6:	97 e0       	ldi	r25, 0x07	; 7
 ba8:	0e 94 67 04 	call	0x8ce <delay_ms>
		LcmClearTXT();
 bac:	0e 94 cf 04 	call	0x99e <LcmClearTXT>
		LcmClearBMP();
 bb0:	0e 94 df 04 	call	0x9be <LcmClearBMP>
		PutBMP(bmp1);
 bb4:	84 e9       	ldi	r24, 0x94	; 148
 bb6:	90 e0       	ldi	r25, 0x00	; 0
 bb8:	0e 94 32 05 	call	0xa64 <PutBMP>
		delay_ms(2000);
 bbc:	80 ed       	ldi	r24, 0xD0	; 208
 bbe:	97 e0       	ldi	r25, 0x07	; 7
 bc0:	0e 94 67 04 	call	0x8ce <delay_ms>
		LcmClearTXT();
 bc4:	0e 94 cf 04 	call	0x99e <LcmClearTXT>
		LcmClearBMP();
 bc8:	0e 94 df 04 	call	0x9be <LcmClearBMP>
		PutStr(1,2,str1);
 bcc:	41 e7       	ldi	r20, 0x71	; 113
 bce:	50 e0       	ldi	r21, 0x00	; 0
 bd0:	62 e0       	ldi	r22, 0x02	; 2
 bd2:	81 e0       	ldi	r24, 0x01	; 1
 bd4:	0e 94 fc 04 	call	0x9f8 <PutStr>
		PutStr(3,0,str2);
 bd8:	40 e6       	ldi	r20, 0x60	; 96
 bda:	50 e0       	ldi	r21, 0x00	; 0
 bdc:	60 e0       	ldi	r22, 0x00	; 0
 bde:	83 e0       	ldi	r24, 0x03	; 3
 be0:	0e 94 fc 04 	call	0x9f8 <PutStr>
		Put16_16BMP1(BMP0,0,0);
 be4:	40 e0       	ldi	r20, 0x00	; 0
 be6:	64 2f       	mov	r22, r20
 be8:	84 e7       	ldi	r24, 0x74	; 116
 bea:	90 e0       	ldi	r25, 0x00	; 0
 bec:	0e 94 64 05 	call	0xac8 <Put16_16BMP1>
		Put16_16BMP1(BMP1,0,7);
 bf0:	47 e0       	ldi	r20, 0x07	; 7
 bf2:	60 e0       	ldi	r22, 0x00	; 0
 bf4:	84 e5       	ldi	r24, 0x54	; 84
 bf6:	90 e0       	ldi	r25, 0x00	; 0
 bf8:	0e 94 64 05 	call	0xac8 <Put16_16BMP1>
		delay_ms(2000);
 bfc:	80 ed       	ldi	r24, 0xD0	; 208
 bfe:	97 e0       	ldi	r25, 0x07	; 7
 c00:	0e 94 67 04 	call	0x8ce <delay_ms>
 c04:	ab cf       	rjmp	.-170    	; 0xb5c <main+0xc>

⌨️ 快捷键说明

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