📄 slave.lst
字号:
(0062) { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
(0063) { 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
(0064) { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
(0065) { 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
(0066) { 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
(0067) { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
(0068) { 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
(0069) { 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
(0070) { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
(0071) { 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
(0072) { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
(0073) { 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
(0074) { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
(0075) { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
(0076) { 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
(0077) { 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
(0078) { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
(0079) { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
(0080) { 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
(0081) { 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
(0082) { 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
(0083) { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
(0084) { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
(0085) { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
(0086) { 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
(0087) { 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // \
(0088) { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
(0089) { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
(0090) { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
(0091) { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
(0092) { 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
(0093) { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
(0094) { 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
(0095) { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
(0096) { 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
(0097) { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
(0098) { 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
(0099) { 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
(0100) { 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
(0101) { 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
(0102) { 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
(0103) { 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
(0104) { 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
(0105) { 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
(0106) { 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
(0107) { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
(0108) { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p
(0109) { 0x08, 0x14, 0x14, 0x18, 0x7C }, // q
(0110) { 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
(0111) { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
(0112) { 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
(0113) { 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
(0114) { 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
(0115) { 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
(0116) { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
(0117) { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
(0118) { 0x44, 0x64, 0x54, 0x4C, 0x44 } // z
(0119) };
(0120) /*--------------------------------------------------------------------------------------------------
(0121) 函数原型声明
(0122) --------------------------------------------------------------------------------------------------*/
(0123) void init_lcd ( void );
(0124) void clear_lcd ( void );
(0125) void display_lcd ( unsigned char, unsigned char);
(0126) void locat_lcd ( unsigned char, unsigned char);
(0127)
(0128)
(0129) ////////////////////////////////////////////////////////////////////////////////////////////////////
(0130) ////////////////////////////////////////////////////////////////////////////////////////////////////
(0131) ////////////////////////////////////////////////////////////////////////////////////////////////////
(0132) ////////////////////////////////////////////////////////////////////////////////////////////////////
(0133)
(0134) void init_lcd(void)
(0135) {
(0136) PORTD|=RST; //RESET LCD
_init_lcd:
0365 9A90 SBI 0x12,0
(0137) DIS905();
0366 9AC4 SBI 0x18,4
(0138) ENLCD();
0367 9891 CBI 0x12,1
(0139) PORTB&=~RST; //RESETED
0368 98C0 CBI 0x18,0
(0140)
(0141)
(0142)
(0143) //SPI SETTINGS
(0144)
(0145)
(0146) //DISABLE LCD
(0147) PORTD|=CE;
0369 9A91 SBI 0x12,1
(0148) display_lcd( 0x21, 0 ); // LCD Extended Commands.
036A 2722 CLR R18
036B E201 LDI R16,0x21
036C D02F RCALL _display_lcd
(0149) display_lcd( 0xC8, 0 ); // Set LCD Vop (Contrast).
036D 2722 CLR R18
036E EC08 LDI R16,0xC8
036F D02C RCALL _display_lcd
(0150) display_lcd( 0x06, 0 ); // Set Temp coefficent.
0370 2722 CLR R18
0371 E006 LDI R16,6
0372 D029 RCALL _display_lcd
(0151) display_lcd( 0x13, 0 ); // LCD bias mode 1:48.
0373 2722 CLR R18
0374 E103 LDI R16,0x13
0375 D026 RCALL _display_lcd
(0152) display_lcd( 0x20, 0 ); // LCD Standard Commands, Horizontal addressing mode.
0376 2722 CLR R18
0377 E200 LDI R16,0x20
0378 D023 RCALL _display_lcd
(0153) display_lcd( 0x0C, 0 ); // LCD in normal mode.
0379 2722 CLR R18
037A E00C LDI R16,0xC
037B D020 RCALL _display_lcd
(0154)
(0155)
(0156) clear_lcd();
037C D005 RCALL _clear_lcd
(0157) locat_lcd(X_Init,Y_Init);
037D E022 LDI R18,2
037E E00A LDI R16,0xA
037F D029 RCALL _locat_lcd
(0158) DISLCD();
0380 9A91 SBI 0x12,1
0381 9508 RET
_clear_lcd:
i --> R20
0382 940E040C CALL push_gset1
(0159) }
(0160) //
(0161) //
(0162) void clear_lcd(void)
(0163) {
(0164) unsigned int i;
(0165)
(0166) display_lcd(0x0c, 0);
0384 2722 CLR R18
0385 E00C LDI R16,0xC
0386 D015 RCALL _display_lcd
(0167) display_lcd(0x80, 0);
0387 2722 CLR R18
0388 E800 LDI R16,0x80
0389 D012 RCALL _display_lcd
(0168)
(0169) locat_lcd(0,0);
038A 2722 CLR R18
038B 2700 CLR R16
038C D01C RCALL _locat_lcd
(0170) for (i=0; i<504; i++)
038D 2744 CLR R20
038E 2755 CLR R21
038F C005 RJMP 0x0395
(0171) display_lcd(0, 1);
0390 E021 LDI R18,1
0391 2700 CLR R16
0392 D009 RCALL _display_lcd
0393 5F4F SUBI R20,0xFF
0394 4F5F SBCI R21,0xFF
0395 3F48 CPI R20,0xF8
0396 E0E1 LDI R30,1
0397 075E CPC R21,R30
0398 F3B8 BCS 0x0390
0399 940E040F CALL pop_gset1
039B 9508 RET
(0172) }
(0173) //
(0174) //
(0175) void display_lcd(unsigned char data,unsigned char mode)
(0176) {
(0177) PORTD&=~CE;
_display_lcd:
mode --> R18
data --> R16
039C 9891 CBI 0x12,1
(0178) if(mode==0)PORTD&=~DC;
039D 2322 TST R18
039E F411 BNE 0x03A1
039F 9892 CBI 0x12,2
03A0 C001 RJMP 0x03A2
(0179) else PORTD|=DC;
03A1 9A92 SBI 0x12,2
(0180)
(0181) SPDR=data;
03A2 B90F OUT 0x0F,R16
(0182) while((SPSR&0x80)!=0x80);
03A3 B18E IN R24,0x0E
03A4 7880 ANDI R24,0x80
03A5 3880 CPI R24,0x80
03A6 F7E1 BNE 0x03A3
(0183)
(0184) PORTD|=CE;
03A7 9A91 SBI 0x12,1
03A8 9508 RET
_locat_lcd:
y --> R20
x --> R22
03A9 940E040A CALL push_gset2
03AB 2F42 MOV R20,R18
03AC 2F60 MOV R22,R16
(0185) }
(0186) //
(0187) //
(0188) void locat_lcd(unsigned char x,unsigned char y)
(0189) {
(0190) display_lcd(0x80|x,0); // set initial column
03AD 2722 CLR R18
03AE 2F06 MOV R16,R22
03AF 6800 ORI R16,0x80
03B0 DFEB RCALL _display_lcd
(0191) display_lcd(0x40|y,0); // set initial row
03B1 2722 CLR R18
03B2 2F04 MOV R16,R20
03B3 6400 ORI R16,0x40
03B4 DFE7 RCALL _display_lcd
03B5 940E03FE CALL pop_gset2
03B7 9508 RET
_PutChar:
i --> R20
ch --> R22
03B8 940E040A CALL push_gset2
03BA 2F60 MOV R22,R16
(0192) }
(0193) //
(0194) //
(0195) void PutChar (unsigned char ch)
(0196) { unsigned char i;
(0197) ch-=32;
03BB 5260 SUBI R22,0x20
(0198) for(i=0;i<5;i++)
03BC 2744 CLR R20
03BD C00F RJMP 0x03CD
(0199) display_lcd(CharList[ch][i],1);
03BE E021 LDI R18,1
03BF E085 LDI R24,5
03C0 9F86 MUL R24,R22
03C1 0110 MOVW R2,R0
03C2 E784 LDI R24,0x74
03C3 E090 LDI R25,0
03C4 0E28 ADD R2,R24
03C5 1E39 ADC R3,R25
03C6 2FE4 MOV R30,R20
03C7 27FF CLR R31
03C8 0DE2 ADD R30,R2
03C9 1DF3 ADC R31,R3
03CA 9104 LPM R16,0(Z)
03CB DFD0 RCALL _display_lcd
03CC 9543 INC R20
03CD 3045 CPI R20,5
03CE F378 BCS 0x03BE
03CF 940E03FE CALL pop_gset2
03D1 9508 RET
_LCD:
data --> R20
03D2 940E040C CALL push_gset1
03D4 2F40 MOV R20,R16
(0200) }
(0201) //
(0202) //
(0203)
(0204) void LCD(unsigned char data)
(0205) {
(0206)
(0207) if((X+=10)>=80){Y++;X=1;}
03D5 91800064 LDS R24,Y+3
03D7 5F86 SUBI R24,0xF6
03D8 2E28 MOV R2,R24
03D9 92200064 STS Y+3,R2
03DB 3580 CPI R24,0x50
03DC F040 BCS 0x03E5
03DD 91800065 LDS R24,0x65
03DF 5F8F SUBI R24,0xFF
03E0 93800065 STS 0x65,R24
03E2 E081 LDI R24,1
03E3 93800064 STS Y+3,R24
(0208) if(Y>5){Y=0;}
03E5 E085 LDI R24,5
03E6 90200065 LDS R2,0x65
03E8 1582 CP R24,R2
03E9 F418 BCC 0x03ED
03EA 2422 CLR R2
03EB 92200065 STS 0x65,R2
(0209) locat_lcd(X,Y);
03ED 91200065 LDS R18,0x65
03EF 91000064 LDS R16,Y+3
03F1 DFB7 RCALL _locat_lcd
(0210)
(0211)
(0212)
(0213) data+=48;
03F2 5D40 SUBI R20,0xD0
(0214) if(data>57)data+=7;
03F3 E389 LDI R24,0x39
03F4 1784 CP R24,R20
03F5 F408 BCC 0x03F7
03F6 5F49 SUBI R20,0xF9
(0215) PutChar(data);
03F7 2F04 MOV R16,R20
03F8 DFBF RCALL _PutChar
(0216) DISLCD();
03F9 9A91 SBI 0x12,1
(0217) EN905();
FILE: <library>
03FA 98C4 CBI 0x18,4
03FB 940E040F CALL pop_gset1
03FD 9508 RET
pop_gset2:
03FE E0E2 LDI R30,2
03FF 940C0410 JMP pop
pop_gset3:
0401 E0E4 LDI R30,4
0402 940C0410 JMP pop
push_gset5:
0404 92FA ST R15,-Y
0405 92EA ST R14,-Y
push_gset4:
0406 92DA ST R13,-Y
0407 92CA ST R12,-Y
push_gset3:
0408 92BA ST R11,-Y
0409 92AA ST R10,-Y
push_gset2:
040A 937A ST R23,-Y
040B 936A ST R22,-Y
push_gset1:
040C 935A ST R21,-Y
040D 934A ST R20,-Y
040E 9508 RET
pop_gset1:
040F E0E1 LDI R30,1
pop:
0410 9149 LD R20,Y+
0411 9159 LD R21,Y+
0412 FDE0 SBRC R30,0
0413 9508 RET
0414 9169 LD R22,Y+
0415 9179 LD R23,Y+
0416 FDE1 SBRC R30,1
0417 9508 RET
0418 90A9 LD R10,Y+
0419 90B9 LD R11,Y+
041A FDE2 SBRC R30,2
041B 9508 RET
041C 90C9 LD R12,Y+
041D 90D9 LD R13,Y+
041E FDE3 SBRC R30,3
041F 9508 RET
0420 90E9 LD R14,Y+
0421 90F9 LD R15,Y+
0422 9508 RET
asgncblk:
0423 93AA ST R26,-Y
0424 93BA ST R27,-Y
0425 93EA ST R30,-Y
0426 93FA ST R31,-Y
0427 920A ST R0,-Y
0428 81AF LDD R26,Y+7
0429 85B8 LDD R27,Y+8
042A 81ED LDD R30,Y+5
042B 81FE LDD R31,Y+6
042C 3000 CPI R16,0
042D 0701 CPC R16,R17
042E F031 BEQ 0x0435
042F 95C8 LPM
0430 920D ST R0,X+
0431 9631 ADIW R30,1
0432 5001 SUBI R16,1
0433 4010 SBCI R17,0
0434 CFF7 RJMP 0x042C
0435 9009 LD R0,Y+
0436 91F9 LD R31,Y+
0437 91E9 LD R30,Y+
0438 91B9 LD R27,Y+
0439 91A9 LD R26,Y+
043A 9624 ADIW R28,4
043B 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -