📄 nokia5110.lst
字号:
00345 2D0C MOV R16,R12
00346 940E 03CD CALL mod8u
00348 2300 TST R16
00349 F429 BNE 0x034F
(0327) {
(0328) row=Pix_y/8; //计算位图所占行数
0034A 2D6C MOV R22,R12
0034B 9566 LSR R22
0034C 9566 LSR R22
0034D 9566 LSR R22
(0329) }
0034E C005 RJMP 0x0354
(0330) else
(0331) {
(0332) row=Pix_y/8+1;
0034F 2D6C MOV R22,R12
00350 9566 LSR R22
00351 9566 LSR R22
00352 9566 LSR R22
00353 5F6F SUBI R22,0xFF
(0333) }
(0334) for (n=0;n<row;n++)
00354 2744 CLR R20
00355 2755 CLR R21
00356 C025 RJMP 0x037C
(0335) {
(0336) LCD_set_XY(X,Y);
00357 852C LDD R18,Y+12
00358 850A LDD R16,Y+10
00359 DF60 RCALL _LCD_set_XY
(0337) for(i=0; i<Pix_x; i++)
0035A 24CC CLR R12
0035B 24DD CLR R13
0035C C015 RJMP 0x0372
(0338) {
(0339) LCD_write_byte(map[i+n*Pix_x], 1);
0035D E021 LDI R18,1
0035E 2C2A MOV R2,R10
0035F 2433 CLR R3
00360 932F PUSH R18
00361 933F PUSH R19
00362 0191 MOVW R18,R2
00363 018A MOVW R16,R20
00364 940E 03E5 CALL empy16s
00366 913F POP R19
00367 912F POP R18
00368 01F6 MOVW R30,R12
00369 0FE0 ADD R30,R16
0036A 1FF1 ADC R31,R17
0036B 0DEE ADD R30,R14
0036C 1DFF ADC R31,R15
0036D 8100 LD R16,Z
0036E D016 RCALL _LCD_write_byte
0036F 01C6 MOVW R24,R12
00370 9601 ADIW R24,1
00371 016C MOVW R12,R24
00372 2C2A MOV R2,R10
00373 2433 CLR R3
00374 14C2 CP R12,R2
00375 04D3 CPC R13,R3
00376 F330 BCS 0x035D
(0340) }
(0341) Y++; //换行
00377 840C LDD R0,Y+12
00378 9403 INC R0
00379 860C STD Y+12,R0
0037A 5F4F SUBI R20,0xFF
0037B 4F5F SBCI R21,0xFF
0037C 2E26 MOV R2,R22
0037D 2433 CLR R3
0037E 1542 CP R20,R2
0037F 0553 CPC R21,R3
00380 F2B0 BCS 0x0357
00381 940E 03F5 CALL pop_xgsetF0FC
00383 9624 ADIW R28,4
00384 9508 RET
_LCD_write_byte:
i --> R20
command --> R18
dat --> R16
00385 934A ST -Y,R20
(0342) }
(0343) }
(0344) /**********************************************/
(0345) /*---------------------------------------------
(0346) LCD_write_byte : 写数据到LCD
(0347)
(0348) 输入参数:data :写入的数据;
(0349) command :写数据/命令选择;
(0350) ---------------------------------------------*/
(0351) void LCD_write_byte(unsigned char dat, unsigned char command)
(0352) {
(0353) unsigned char i;
(0354) CLEARBIT(LCD_PORT,LCD_CE);// 使能LCD_CE = 0
00386 98AD CBI 0x15,5
(0355) if (command == 0)
00387 2322 TST R18
00388 F411 BNE 0x038B
(0356) {
(0357) CLEARBIT(LCD_PORT,LCD_DC);// 传送命令 LCD_DC = 0;
00389 98AB CBI 0x15,3
(0358) }
0038A C001 RJMP 0x038C
(0359) else
(0360) {
(0361) SETBIT(LCD_PORT,LCD_DC);// 传送数据LCD_DC = 1;
0038B 9AAB SBI 0x15,3
(0362) }
(0363)
(0364) for(i=0;i<8;i++)
0038C 2744 CLR R20
0038D C009 RJMP 0x0397
(0365) {
(0366) if(dat&0x80)
0038E FF07 SBRS R16,7
0038F C002 RJMP 0x0392
(0367) {
(0368) SETBIT(LCD_PORT,SDIN);//SDIN = 1;
00390 9AAA SBI 0x15,2
(0369) }
00391 C001 RJMP 0x0393
(0370) else
(0371) {
(0372) CLEARBIT(LCD_PORT,SDIN);//SDIN = 0;
00392 98AA CBI 0x15,2
(0373) }
(0374) CLEARBIT(LCD_PORT,SCLK);//SCLK = 0;
00393 98A9 CBI 0x15,1
(0375) dat = dat << 1;
00394 0F00 LSL R16
(0376) SETBIT(LCD_PORT,SCLK);//SCLK = 1;
00395 9AA9 SBI 0x15,1
00396 9543 INC R20
00397 3048 CPI R20,0x8
00398 F3A8 BCS 0x038E
(0377) }
(0378) SETBIT(LCD_PORT,LCD_CE);//LCD_CE = 1;
00399 9AAD SBI 0x15,5
0039A 9149 LD R20,Y+
0039B 9508 RET
_main:
0039C 9727 SBIW R28,7
FILE: D:\蔺贻立\模块化编程\avr程序\7.nokia5110\main.c
(0001) #include <iom16v.h>
(0002) #include <MACROS.h>
(0003) #include"nokia5110.h"
(0004) void main(void)
(0005) {
(0006) DDRA=0xFF;
0039D EF8F LDI R24,0xFF
0039E BB8A OUT 0x1A,R24
(0007) PORTA=0x3F;
0039F E38F LDI R24,0x3F
003A0 BB8B OUT 0x1B,R24
(0008) LCD_init();//初始化液晶
003A1 DED6 RCALL _LCD_init
(0009) LCD_clear();
003A2 DEF6 RCALL _LCD_clear
(0010) {
(0011) LCD_write_chinese_string(4,0,12,2,0,0);
003A3 2422 CLR R2
003A4 822E STD Y+6,R2
003A5 822C STD Y+4,R2
003A6 E082 LDI R24,2
003A7 838A STD Y+2,R24
003A8 E08C LDI R24,0xC
003A9 8388 ST Y,R24
003AA 2722 CLR R18
003AB E004 LDI R16,4
003AC DF4C RCALL _LCD_write_chinese_string
(0012) LCD_draw_bmp_pixel(32,0,AVR_bmp,48,24);
003AD E188 LDI R24,0x18
003AE 838C STD Y+4,R24
003AF E380 LDI R24,0x30
003B0 838A STD Y+2,R24
003B1 E080 LDI R24,0
003B2 E092 LDI R25,2
003B3 8399 STD Y+1,R25
003B4 8388 ST Y,R24
003B5 2722 CLR R18
003B6 E200 LDI R16,0x20
003B7 DF84 RCALL _LCD_draw_bmp_pixel
(0013) LCD_write_english_string(0,3," ---skyxjh--- ");
003B8 EB87 LDI R24,0xB7
003B9 E095 LDI R25,5
003BA 8399 STD Y+1,R25
003BB 8388 ST Y,R24
003BC E023 LDI R18,3
003BD 2700 CLR R16
003BE DF25 RCALL _LCD_write_english_string
(0014) LCD_write_english_string(0,5," QQ:1055590969");
003BF EA88 LDI R24,0xA8
003C0 E095 LDI R25,5
003C1 8399 STD Y+1,R25
003C2 8388 ST Y,R24
003C3 E025 LDI R18,5
003C4 2700 CLR R16
003C5 DF1E RCALL _LCD_write_english_string
(0015) }
FILE: <library>
003C6 9627 ADIW R28,7
003C7 9508 RET
push_arg4:
003C8 933A ST -Y,R19
003C9 932A ST -Y,R18
push_arg2:
003CA 931A ST -Y,R17
003CB 930A ST -Y,R16
003CC 9508 RET
mod8u:
003CD 9468 BSET 6
003CE C001 RJMP xdiv8u
div8u:
003CF 94E8 BCLR 6
xdiv8u:
003D0 932A ST -Y,R18
003D1 92FA ST -Y,R15
003D2 92EA ST -Y,R14
003D3 24FF CLR R15
003D4 24EE CLR R14
003D5 E120 LDI R18,0x10
003D6 0F00 LSL R16
003D7 1CFF ROL R15
003D8 1CEE ROL R14
003D9 16E1 CP R14,R17
003DA F010 BCS 0x03DD
003DB 1AE1 SUB R14,R17
003DC 9503 INC R16
003DD 952A DEC R18
003DE F7B9 BNE 0x03D6
003DF F40E BRTC 0x03E1
003E0 2D0E MOV R16,R14
003E1 90E9 LD R14,Y+
003E2 90F9 LD R15,Y+
003E3 9129 LD R18,Y+
003E4 9508 RET
empy16s:
003E5 920A ST -Y,R0
003E6 921A ST -Y,R1
003E7 938A ST -Y,R24
003E8 939A ST -Y,R25
003E9 9F02 MUL R16,R18
003EA 01C0 MOVW R24,R0
003EB 9F12 MUL R17,R18
003EC 0D90 ADD R25,R0
003ED 9F03 MUL R16,R19
003EE 0D90 ADD R25,R0
003EF 018C MOVW R16,R24
003F0 9199 LD R25,Y+
003F1 9189 LD R24,Y+
003F2 9019 LD R1,Y+
003F3 9009 LD R0,Y+
003F4 9508 RET
pop_xgsetF0FC:
003F5 90A9 LD R10,Y+
003F6 90B9 LD R11,Y+
003F7 90C9 LD R12,Y+
003F8 90D9 LD R13,Y+
003F9 90E9 LD R14,Y+
003FA 90F9 LD R15,Y+
003FB 9149 LD R20,Y+
003FC 9159 LD R21,Y+
003FD 9169 LD R22,Y+
003FE 9179 LD R23,Y+
003FF 9508 RET
push_xgsetF0FC:
00400 937A ST -Y,R23
00401 936A ST -Y,R22
push_xgset30FC:
00402 935A ST -Y,R21
00403 934A ST -Y,R20
push_xgset00FC:
00404 92FA ST -Y,R15
00405 92EA ST -Y,R14
push_xgset003C:
00406 92DA ST -Y,R13
00407 92CA ST -Y,R12
00408 92BA ST -Y,R11
00409 92AA ST -Y,R10
0040A 9508 RET
push_xgset303C:
0040B 935A ST -Y,R21
0040C 934A ST -Y,R20
0040D 92DA ST -Y,R13
0040E 92CA ST -Y,R12
0040F 92BA ST -Y,R11
00410 92AA ST -Y,R10
00411 9508 RET
pop_xgset303C:
00412 90A9 LD R10,Y+
00413 90B9 LD R11,Y+
00414 90C9 LD R12,Y+
00415 90D9 LD R13,Y+
00416 9149 LD R20,Y+
00417 9159 LD R21,Y+
00418 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -