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

📄 keylcd.lss

📁 我学习AVR的代码例子
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     b68:	11 1d       	adc	r17, r1
  W_comm(0x4c);
     b6a:	8c e4       	ldi	r24, 0x4C	; 76
     b6c:	0e 94 c7 04 	call	0x98e
  W_comm(0x46);
     b70:	86 e4       	ldi	r24, 0x46	; 70
     b72:	0e 94 c7 04 	call	0x98e
  W_code(LOBYTE(addr));
     b76:	80 2f       	mov	r24, r16
     b78:	0e 94 cf 04 	call	0x99e
  W_code(HIBYTE(addr));
     b7c:	81 2f       	mov	r24, r17
     b7e:	99 27       	eor	r25, r25
     b80:	0e 94 cf 04 	call	0x99e
     b84:	1f 91       	pop	r17
     b86:	0f 91       	pop	r16
     b88:	08 95       	ret

00000b8a <set_pos>:
}

void set_pos(BYTE pos_x,BYTE pos_y)
{
     b8a:	0f 93       	push	r16
     b8c:	1f 93       	push	r17
  WORD addr;
  addr=pos_x+pos_y*40+0x4b0;
     b8e:	98 e2       	ldi	r25, 0x28	; 40
     b90:	69 9f       	mul	r22, r25
     b92:	80 01       	movw	r16, r0
     b94:	11 24       	eor	r1, r1
     b96:	08 0f       	add	r16, r24
     b98:	11 1d       	adc	r17, r1
     b9a:	00 55       	subi	r16, 0x50	; 80
     b9c:	1b 4f       	sbci	r17, 0xFB	; 251
  W_comm(0x4c);
     b9e:	8c e4       	ldi	r24, 0x4C	; 76
     ba0:	0e 94 c7 04 	call	0x98e
  W_comm(0x46);
     ba4:	86 e4       	ldi	r24, 0x46	; 70
     ba6:	0e 94 c7 04 	call	0x98e
  W_code(LOBYTE(addr));
     baa:	80 2f       	mov	r24, r16
     bac:	0e 94 cf 04 	call	0x99e
  W_code(HIBYTE(addr));
     bb0:	81 2f       	mov	r24, r17
     bb2:	99 27       	eor	r25, r25
     bb4:	0e 94 cf 04 	call	0x99e
     bb8:	1f 91       	pop	r17
     bba:	0f 91       	pop	r16
     bbc:	08 95       	ret

00000bbe <r_pos>:
}

WORD r_pos(void)
{
     bbe:	cf 93       	push	r28
  BYTE tp=0;
     bc0:	c0 e0       	ldi	r28, 0x00	; 0
  WORD ad=0;
  W_comm(0x4c);
     bc2:	8c e4       	ldi	r24, 0x4C	; 76
     bc4:	0e 94 c7 04 	call	0x98e
  W_comm(0x47);
     bc8:	87 e4       	ldi	r24, 0x47	; 71
     bca:	0e 94 c7 04 	call	0x98e
  DDRA=0x00;
     bce:	ca bb       	out	0x1a, r28	; 26
  PORTB|=(1<<PB7); //A0
     bd0:	c7 9a       	sbi	0x18, 7	; 24
  PORTA=0xff;
     bd2:	8f ef       	ldi	r24, 0xFF	; 255
     bd4:	8b bb       	out	0x1b, r24	; 27
  PORTB|=(1<<PB4); //WD
     bd6:	c4 9a       	sbi	0x18, 4	; 24
  PORTA=0xff;
     bd8:	8b bb       	out	0x1b, r24	; 27
  PORTB&=~(1<<PB5); //RD
     bda:	c5 98       	cbi	0x18, 5	; 24
  asm volatile("nop"::);
     bdc:	00 00       	nop
  tp=PINA;
     bde:	c9 b3       	in	r28, 0x19	; 25
  PORTB|=(1<<PB5); //RD
     be0:	c5 9a       	sbi	0x18, 5	; 24
  
  PORTB&=~(1<<PB5); //RD
     be2:	c5 98       	cbi	0x18, 5	; 24
  asm volatile("nop"::);
     be4:	00 00       	nop
  ad = (WORD)(PINA);
     be6:	89 b3       	in	r24, 0x19	; 25
     be8:	99 27       	eor	r25, r25
  ad<<=8;
     bea:	98 2f       	mov	r25, r24
     bec:	88 27       	eor	r24, r24
  ad|=tp;
     bee:	4c 2f       	mov	r20, r28
     bf0:	55 27       	eor	r21, r21
  PORTB|=(1<<PB5); //RD
     bf2:	c5 9a       	sbi	0x18, 5	; 24
  
  PORTA=0x00;
     bf4:	1b ba       	out	0x1b, r1	; 27
  DDRA=0xff;
     bf6:	2f ef       	ldi	r18, 0xFF	; 255
     bf8:	2a bb       	out	0x1a, r18	; 26
  return(ad);
}
     bfa:	84 2b       	or	r24, r20
     bfc:	95 2b       	or	r25, r21
     bfe:	cf 91       	pop	r28
     c00:	08 95       	ret

00000c02 <printf_16>:

unsigned char printf_16(unsigned char x,unsigned char y, char *ptr)
{
     c02:	8f 92       	push	r8
     c04:	9f 92       	push	r9
     c06:	af 92       	push	r10
     c08:	bf 92       	push	r11
     c0a:	cf 92       	push	r12
     c0c:	df 92       	push	r13
     c0e:	ef 92       	push	r14
     c10:	ff 92       	push	r15
     c12:	0f 93       	push	r16
     c14:	1f 93       	push	r17
     c16:	cf 93       	push	r28
     c18:	c8 2f       	mov	r28, r24
     c1a:	e6 2e       	mov	r14, r22
     c1c:	5a 01       	movw	r10, r20
    unsigned char c1,c2,i=0,j,k,uLen=0;
     c1e:	88 24       	eor	r8, r8
     c20:	98 2c       	mov	r9, r8
    while (ptr[uLen]!=0) //探测字串长度
    {
        uLen++;
     c22:	fa 01       	movw	r30, r20
     c24:	80 81       	ld	r24, Z
     c26:	88 23       	and	r24, r24
     c28:	09 f4       	brne	.+2      	; 0xc2c
     c2a:	a0 c0       	rjmp	.+320    	; 0xd6c
     c2c:	83 94       	inc	r8
     c2e:	f5 01       	movw	r30, r10
     c30:	e8 0d       	add	r30, r8
     c32:	f1 1d       	adc	r31, r1
     c34:	80 81       	ld	r24, Z
     c36:	88 23       	and	r24, r24
     c38:	c9 f7       	brne	.-14     	; 0xc2c
    }	
    while(i<uLen)
    {
	    set_pos(x++,y);
		if(x>39) {x=0;y+=16;set_pos(x,y);}
    	c1 = ptr[i];
    	c2 = ptr[i+1];
        //ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码
    	if(c1 <=128)	// ASCII
      	{
            for(j=0;j<16;j++) //写16行
            {
				W_comm(0X42);    			// 写数据(命令)
				if (c1 >= 0x20)
				{
            	    W_code(pgm_read_byte(ASC+(c1-0x20)*16+j)); 
				}
				else
				{
					W_code(0);
				}
				set_pos(x,y+1+j);
            }	
        }
    	else    	// 中文
      	{
            for(j=0;j<sizeof(GB16_Index)/sizeof(GB16_Index[0]);j++)  	// 查找定位
            {
                if(c1 ==pgm_read_byte(GB16_Index+j*2) && c2 == pgm_read_byte(GB16_Index+j*2+1))
                {
                    break;
                }        				
            }
            for(k=0;k<16;k++)
            {
                set_pos(x,y+k);
				if(x>38) {x=0;y+=16;set_pos(x,y);}
				W_comm(0X42);      		// 写数据
				if(j < sizeof(GB16_Index)/sizeof(GB16_Index[0]))
				{
					W_code(pgm_read_byte(GB16_Msk+j*32+k*2));
					W_code(pgm_read_byte(GB16_Msk+j*32+k*2+1));
				}
				else   		// 未找到该字
				{
					if(k < 8)
            	    {
                        W_code(0x00);
						W_code(0x00);
            	     }
					else
            	    {
						W_code(0xff);
						W_code(0xff);
            	    }
                }
			}
			x++;
			i++;
      	};
    	i++;
     c3a:	98 14       	cp	r9, r8
     c3c:	08 f0       	brcs	.+2      	; 0xc40
     c3e:	96 c0       	rjmp	.+300    	; 0xd6c
     c40:	8c 2f       	mov	r24, r28
     c42:	cf 5f       	subi	r28, 0xFF	; 255
     c44:	6e 2d       	mov	r22, r14
     c46:	0e 94 c5 05 	call	0xb8a
     c4a:	c8 32       	cpi	r28, 0x28	; 40
     c4c:	38 f0       	brcs	.+14     	; 0xc5c
     c4e:	c0 e0       	ldi	r28, 0x00	; 0
     c50:	f0 e1       	ldi	r31, 0x10	; 16
     c52:	ef 0e       	add	r14, r31
     c54:	6e 2d       	mov	r22, r14
     c56:	8c 2f       	mov	r24, r28
     c58:	0e 94 c5 05 	call	0xb8a
     c5c:	f5 01       	movw	r30, r10
     c5e:	e9 0d       	add	r30, r9
     c60:	f1 1d       	adc	r31, r1
     c62:	d0 80       	ld	r13, Z
     c64:	91 81       	ldd	r25, Z+1	; 0x01
     c66:	80 e8       	ldi	r24, 0x80	; 128
     c68:	8d 15       	cp	r24, r13
     c6a:	38 f1       	brcs	.+78     	; 0xcba
     c6c:	fe 2c       	mov	r15, r14
     c6e:	f3 94       	inc	r15
     c70:	00 e0       	ldi	r16, 0x00	; 0
     c72:	10 e0       	ldi	r17, 0x00	; 0
     c74:	5f e0       	ldi	r21, 0x0F	; 15
     c76:	c5 2e       	mov	r12, r21
     c78:	82 e4       	ldi	r24, 0x42	; 66
     c7a:	0e 94 c7 04 	call	0x98e
     c7e:	ef e1       	ldi	r30, 0x1F	; 31
     c80:	ed 15       	cp	r30, r13
     c82:	68 f4       	brcc	.+26     	; 0xc9e
     c84:	ed 2d       	mov	r30, r13
     c86:	ff 27       	eor	r31, r31
     c88:	44 e0       	ldi	r20, 0x04	; 4
     c8a:	ee 0f       	add	r30, r30
     c8c:	ff 1f       	adc	r31, r31
     c8e:	4a 95       	dec	r20
     c90:	e1 f7       	brne	.-8      	; 0xc8a
     c92:	e0 0f       	add	r30, r16
     c94:	f1 1f       	adc	r31, r17
     c96:	ec 55       	subi	r30, 0x5C	; 92
     c98:	ff 4f       	sbci	r31, 0xFF	; 255
     c9a:	84 91       	lpm	r24, Z
     c9c:	01 c0       	rjmp	.+2      	; 0xca0
     c9e:	80 e0       	ldi	r24, 0x00	; 0
     ca0:	0e 94 cf 04 	call	0x99e
     ca4:	6f 2d       	mov	r22, r15
     ca6:	8c 2f       	mov	r24, r28
     ca8:	0e 94 c5 05 	call	0xb8a
     cac:	ca 94       	dec	r12
     cae:	0f 5f       	subi	r16, 0xFF	; 255
     cb0:	1f 4f       	sbci	r17, 0xFF	; 255
     cb2:	f3 94       	inc	r15
     cb4:	c7 fe       	sbrs	r12, 7
     cb6:	e0 cf       	rjmp	.-64     	; 0xc78
     cb8:	57 c0       	rjmp	.+174    	; 0xd68
     cba:	cc 24       	eor	r12, r12
     cbc:	4a e9       	ldi	r20, 0x9A	; 154
     cbe:	52 e0       	ldi	r21, 0x02	; 2
     cc0:	9a 01       	movw	r18, r20
     cc2:	21 50       	subi	r18, 0x01	; 1
     cc4:	30 40       	sbci	r19, 0x00	; 0
     cc6:	f9 01       	movw	r30, r18
     cc8:	84 91       	lpm	r24, Z
     cca:	d8 16       	cp	r13, r24
     ccc:	21 f4       	brne	.+8      	; 0xcd6
     cce:	fa 01       	movw	r30, r20
     cd0:	84 91       	lpm	r24, Z
     cd2:	98 17       	cp	r25, r24
     cd4:	41 f0       	breq	.+16     	; 0xce6
     cd6:	c3 94       	inc	r12
     cd8:	2e 5f       	subi	r18, 0xFE	; 254
     cda:	3f 4f       	sbci	r19, 0xFF	; 255
     cdc:	4e 5f       	subi	r20, 0xFE	; 254
     cde:	5f 4f       	sbci	r21, 0xFF	; 255
     ce0:	fa e0       	ldi	r31, 0x0A	; 10
     ce2:	fc 15       	cp	r31, r12
     ce4:	80 f7       	brcc	.-32     	; 0xcc6
     ce6:	ff 24       	eor	r15, r15
     ce8:	8e 2d       	mov	r24, r14
     cea:	8f 0d       	add	r24, r15
     cec:	68 2f       	mov	r22, r24
     cee:	8c 2f       	mov	r24, r28
     cf0:	0e 94 c5 05 	call	0xb8a
     cf4:	c7 32       	cpi	r28, 0x27	; 39
     cf6:	38 f0       	brcs	.+14     	; 0xd06
     cf8:	c0 e0       	ldi	r28, 0x00	; 0
     cfa:	80 e1       	ldi	r24, 0x10	; 16
     cfc:	e8 0e       	add	r14, r24
     cfe:	6e 2d       	mov	r22, r14
     d00:	8c 2f       	mov	r24, r28
     d02:	0e 94 c5 05 	call	0xb8a
     d06:	82 e4       	ldi	r24, 0x42	; 66
     d08:	0e 94 c7 04 	call	0x98e
     d0c:	ea e0       	ldi	r30, 0x0A	; 10
     d0e:	ec 15       	cp	r30, r12
     d10:	b0 f0       	brcs	.+44     	; 0xd3e
     d12:	0c 2d       	mov	r16, r12
     d14:	11 27       	eor	r17, r17
     d16:	34 e0       	ldi	r19, 0x04	; 4
     d18:	00 0f       	add	r16, r16
     d1a:	11 1f       	adc	r17, r17
     d1c:	3a 95       	dec	r19
     d1e:	e1 f7       	brne	.-8      	; 0xd18
     d20:	0f 0d       	add	r16, r15
     d22:	11 1d       	adc	r17, r1
     d24:	00 0f       	add	r16, r16
     d26:	11 1f       	adc	r17, r17
     d28:	f8 01       	movw	r30, r16
     d2a:	e7 50       	subi	r30, 0x07	; 7
     d2c:	fe 4f       	sbci	r31, 0xFE	; 254
     d2e:	84 91       	lpm	r24, Z
     d30:	0e 94 cf 04 	call	0x99e
     d34:	06 50       	subi	r16, 0x06	; 6
     d36:	1e 4f       	sbci	r17, 0xFE	; 254
     d38:	f8 01       	movw	r30, r16
     d3a:	84 91       	lpm	r24, Z
     d3c:	0c c0       	rjmp	.+24     	; 0xd56
     d3e:	f7 e0       	ldi	r31, 0x07	; 7
     d40:	ff 15       	cp	r31, r15
     d42:	28 f0       	brcs	.+10     	; 0xd4e
     d44:	80 e0       	ldi	r24, 0x00	; 0
     d46:	0e 94 cf 04 	call	0x99e
     d4a:	80 e0       	ldi	r24, 0x00	; 0
     d4c:	04 c0       	rjmp	.+8      	; 0xd56
     d4e:	8f ef       	ldi	r24, 0xFF	; 255
     d50:	0e 94 cf 04 	call	0x99e
     d54:	8f ef       	ldi	r24, 0xFF	; 255
     d56:	0e 94 cf 04 	call	0x99e
     d5a:	f3 94       	inc	r15
     d5c:	8f e0       	ldi	r24, 0x0F	; 15
     d5e:	8f 15       	cp	r24, r15
     d60:	08 f0       	brcs	.+2      	; 0xd64
     d62:	c2 cf       	rjmp	.-124    	; 0xce8
     d64:	cf 5f       	subi	r28, 0xFF	; 255
     d66:	93 94       	inc	r9
     d68:	93 94       	inc	r9
     d6a:	67 cf       	rjmp	.-306    	; 0xc3a
    }
    return uLen;        //返回字串长度,汉字按2字节计算
} 
     d6c:	88 2d       	mov	r24, r8
     d6e:	99 27       	eor	r25, r25
     d70:	cf 91       	pop	r28
     d72:	1f 91       	pop	r17
     d74:	0f 91       	pop	r16
     d76:	ff 90       	pop	r15
     d78:	ef 90       	pop	r14
     d7a:	df 90       	pop	r13
     d7c:	cf 90       	pop	r12
     d7e:	bf 90       	pop	r11
     d80:	af 90       	pop	r10
     d82:	9f 90       	pop	r9
     d84:	8f 90       	pop	r8
     d86:	08 95       	ret

00000d88 <printf_24>:

⌨️ 快捷键说明

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