?? 12864_paiallel.lss
字號(hào):
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>
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; //定義無符號(hào)變量(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個(gè)X地址坐標(biāo)
a74: 10 e0 ldi r17, 0x00 ; 0
{
WriteCommand(0x80+i); //寫Y坐標(biāo)
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坐標(biāo)。上半屏(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); //每個(gè)地址寫兩字節(jié)
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點(diǎn)陣*******************/
/*****X0---3**************Y0--7***************************/
/***********將16*16點(diǎn)陣顯示在第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; //定義無符號(hào)變量(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擴(kuò)充指令集,即使是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實(shí)際為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
{ //列位置每行自動(dòng)增加
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,"歡迎來到哈爾濱理工大學(xué)!");
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>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -