📄 lcd1602四线接口应用范例.lst
字号:
(0022) {
(0023) delay_nms(20);
03FF E104 LDI R16,0x14
0400 E010 LDI R17,0
0401 D078 RCALL _delay_nms
(0024) LCD_init();
0402 DC60 RCALL _LCD_init
(0025) //例如要写入以下数据
(0026) BT1_time=545;
0403 E281 LDI R24,0x21
0404 E092 LDI R25,2
0405 939000A9 STS BT1_time+1,R25
0407 938000A8 STS BT1_time,R24
(0027) BT1_T=551;
0409 E287 LDI R24,0x27
040A 939000A7 STS BT1_T+1,R25
040C 938000A6 STS BT1_T,R24
(0028) D882_P=1050;
040E E18A LDI R24,0x1A
040F E094 LDI R25,4
0410 939000A5 STS D882_P+1,R25
0412 938000A4 STS D882_P,R24
(0029) hour=0;min=6;sec=12;//00:06:12
0414 2422 CLR R2
0415 922000AD STS hour,R2
0417 E086 LDI R24,6
0418 938000AC STS min,R24
041A E08C LDI R24,0xC
041B 938000AB STS sec,R24
(0030) //调用功能函数对数据进行处理并写入缓存
(0031) LCD_write_time(7,1,hour,min,sec);
041D 2E28 MOV R2,R24
041E 822C STD Y+4,R2
041F 902000AC LDS R2,min
0421 822A STD Y+2,R2
0422 902000AD LDS R2,hour
0424 8228 STD Y+0,R2
0425 E021 LDI R18,1
0426 E007 LDI R16,7
0427 DEC6 RCALL _LCD_write_time
(0032) LCD_write_number(7,0,0,BT1_time,"sec",10);
0428 E08A LDI R24,0xA
0429 8788 STD Y+8,R24
042A E78F LDI R24,0x7F
042B E090 LDI R25,0
042C 839F STD Y+7,R25
042D 838E STD Y+6,R24
042E 902000A8 LDS R2,BT1_time
0430 903000A9 LDS R3,BT1_time+1
0432 2444 CLR R4
0433 2455 CLR R5
0434 822A STD Y+2,R2
0435 823B STD Y+3,R3
0436 824C STD Y+4,R4
0437 825D STD Y+5,R5
0438 2422 CLR R2
0439 8228 STD Y+0,R2
043A 2722 CLR R18
043B E007 LDI R16,7
043C DD8C RCALL _LCD_write_number
(0033) LCD_write_number(0,1,1,BT1_T,"C",0);
043D 2422 CLR R2
043E 8628 STD Y+8,R2
043F E78D LDI R24,0x7D
0440 E090 LDI R25,0
0441 839F STD Y+7,R25
0442 838E STD Y+6,R24
0443 902000A6 LDS R2,BT1_T
0445 903000A7 LDS R3,BT1_T+1
0447 2444 CLR R4
0448 2455 CLR R5
0449 822A STD Y+2,R2
044A 823B STD Y+3,R3
044B 824C STD Y+4,R4
044C 825D STD Y+5,R5
044D E081 LDI R24,1
044E 8388 STD Y+0,R24
044F E021 LDI R18,1
0450 2700 CLR R16
0451 DD77 RCALL _LCD_write_number
(0034) LCD_write_number(0,0,0,D882_P,"mW",0);
0452 2422 CLR R2
0453 8628 STD Y+8,R2
0454 E78A LDI R24,0x7A
0455 E090 LDI R25,0
0456 839F STD Y+7,R25
0457 838E STD Y+6,R24
0458 902000A4 LDS R2,D882_P
045A 903000A5 LDS R3,D882_P+1
045C 2444 CLR R4
045D 2455 CLR R5
045E 822A STD Y+2,R2
045F 823B STD Y+3,R3
0460 824C STD Y+4,R4
0461 825D STD Y+5,R5
0462 2422 CLR R2
0463 8228 STD Y+0,R2
0464 2722 CLR R18
0465 2700 CLR R16
0466 DD62 RCALL _LCD_write_number
(0035)
(0036) LCD_write_new();//把缓存里的数据写入LCD
0467 DEF3 RCALL _LCD_write_new
0468 C003 RJMP 0x046C
(0037) while(1)
(0038) {
(0039) delay_nms(100);
0469 E604 LDI R16,0x64
046A E010 LDI R17,0
046B D00E RCALL _delay_nms
046C CFFC RJMP 0x0469
046D 9629 ADIW R28,0x9
046E 9508 RET
FILE: E:\刻录的\电子技术\项目\驱动程序\LCD1602四线接口应用范例\delay.c
(0001) #include <iom8v.h>
(0002) #include <macros.h>
(0003) //8MHz时钟下
(0004) void delay_1ms(void)//1ms延时函数
(0005) {
(0006) unsigned int i;
(0007) asm("nop");
_delay_1ms:
i --> R16
046F 0000 NOP
(0008) for (i=0;i<1139;i++)
0470 2700 CLR R16
0471 2711 CLR R17
0472 C002 RJMP 0x0475
0473 5F0F SUBI R16,0xFF
0474 4F1F SBCI R17,0xFF
0475 3703 CPI R16,0x73
0476 E0E4 LDI R30,4
0477 071E CPC R17,R30
0478 F3D0 BCS 0x0473
0479 9508 RET
_delay_nms:
i --> R20
n --> R22
047A D0C8 RCALL push_gset2
047B 01B8 MOVW R22,R16
(0009) {
(0010) }
(0011) }
(0012)
(0013) void delay_nms(unsigned int n)//延时n毫秒
(0014) {
(0015) unsigned int i;
(0016) for (i=0;i<n;i++)//执行n次1毫秒延时
047C 2744 CLR R20
047D 2755 CLR R21
047E C003 RJMP 0x0482
(0017) delay_1ms();
047F DFEF RCALL _delay_1ms
0480 5F4F SUBI R20,0xFF
0481 4F5F SBCI R21,0xFF
0482 1746 CP R20,R22
0483 0757 CPC R21,R23
0484 F3D0 BCS 0x047F
0485 D0B3 RCALL pop_gset2
0486 9508 RET
_delay_nus:
i --> R20
n --> R16
0487 D0BD RCALL push_gset1
(0018) }
(0019)
(0020) void delay_nus(unsigned int n)//延时N微秒,N>=5 晶振:8MHz
(0021) {
(0022) unsigned int i;
(0023) for (i=5;i<n;i++)
0488 E045 LDI R20,5
0489 E050 LDI R21,0
048A C004 RJMP 0x048F
(0024) {
(0025) asm("nop");
048B 0000 NOP
(0026) asm("nop");
FILE: <library>
048C 0000 NOP
048D 5F4F SUBI R20,0xFF
048E 4F5F SBCI R21,0xFF
048F 1740 CP R20,R16
0490 0751 CPC R21,R17
0491 F3C8 BCS 0x048B
0492 D0B5 RCALL pop_gset1
0493 9508 RET
mod16u:
0494 9468 BSET 6
0495 C001 RJMP xdiv16u
div16u:
0496 94E8 BCLR 6
xdiv16u:
0497 92EA ST R14,-Y
0498 92FA ST R15,-Y
0499 938A ST R24,-Y
049A 24EE CLR R14
049B 24FF CLR R15
049C E180 LDI R24,0x10
049D 0F00 LSL R16
049E 1F11 ROL R17
049F 1CEE ROL R14
04A0 1CFF ROL R15
04A1 16E2 CP R14,R18
04A2 06F3 CPC R15,R19
04A3 F018 BCS 0x04A7
04A4 1AE2 SUB R14,R18
04A5 0AF3 SBC R15,R19
04A6 9503 INC R16
04A7 958A DEC R24
04A8 F7A1 BNE 0x049D
04A9 F416 BRTC 0x04AC
04AA 2D0E MOV R16,R14
04AB 2D1F MOV R17,R15
04AC 9189 LD R24,Y+
04AD 90F9 LD R15,Y+
04AE 90E9 LD R14,Y+
04AF 9508 RET
div32u:
04B0 94E8 BCLR 6
04B1 C001 RJMP 0x04B3
mod32u:
04B2 9468 BSET 6
04B3 D02F RCALL long_div_prolog
04B4 24CC CLR R12
04B5 C008 RJMP 0x04BE
div32s:
04B6 94E8 BCLR 6
04B7 C001 RJMP 0x04B9
mod32s:
04B8 9468 BSET 6
04B9 D029 RCALL long_div_prolog
04BA FD37 SBRC R19,7
04BB D053 RCALL neg_R16_R19
04BC FDB7 SBRC R27,7
04BD D05A RCALL neg_R24_R27
04BE 2477 CLR R7
04BF 2488 CLR R8
04C0 2499 CLR R9
04C1 24AA CLR R10
04C2 24BB CLR R11
04C3 D041 RCALL tst_R16_R19
04C4 F0C1 BEQ 0x04DD
04C5 D044 RCALL tst_R24_R27
04C6 F0B1 BEQ 0x04DD
04C7 E2E8 LDI R30,0x28
04C8 0F00 LSL R16
04C9 1F11 ROL R17
04CA 1F22 ROL R18
04CB 1F33 ROL R19
04CC 1C77 ROL R7
04CD 1C88 ROL R8
04CE 1C99 ROL R9
04CF 1CAA ROL R10
04D0 1CBB ROL R11
04D1 1688 CP R8,R24
04D2 0699 CPC R9,R25
04D3 06AA CPC R10,R26
04D4 06BB CPC R11,R27
04D5 F028 BCS 0x04DB
04D6 1A88 SUB R8,R24
04D7 0A99 SBC R9,R25
04D8 0AAA SBC R10,R26
04D9 0ABB SBC R11,R27
04DA 9503 INC R16
04DB 95EA DEC R30
04DC F759 BNE 0x04C8
04DD F426 BRTC 0x04E2
04DE 2D08 MOV R16,R8
04DF 2D19 MOV R17,R9
04E0 2D2A MOV R18,R10
04E1 2D3B MOV R19,R11
04E2 C013 RJMP long_div_epilog
long_div_prolog:
04E3 927A ST R7,-Y
04E4 928A ST R8,-Y
04E5 929A ST R9,-Y
04E6 92AA ST R10,-Y
04E7 92BA ST R11,-Y
04E8 92CA ST R12,-Y
04E9 93EA ST R30,-Y
04EA 938A ST R24,-Y
04EB 939A ST R25,-Y
04EC 93AA ST R26,-Y
04ED 93BA ST R27,-Y
04EE 858B LDD R24,Y+11
04EF 859C LDD R25,Y+12
04F0 85AD LDD R26,Y+13
04F1 85BE LDD R27,Y+14
04F2 2EC3 MOV R12,R19
04F3 F00E BRTS 0x04F5
04F4 26CB EOR R12,R27
04F5 9508 RET
long_div_epilog:
04F6 FCC7 SBRC R12,7
04F7 D017 RCALL neg_R16_R19
04F8 91B9 LD R27,Y+
04F9 91A9 LD R26,Y+
04FA 9199 LD R25,Y+
04FB 9189 LD R24,Y+
04FC 91E9 LD R30,Y+
04FD 90C9 LD R12,Y+
04FE 90B9 LD R11,Y+
04FF 90A9 LD R10,Y+
0500 9099 LD R9,Y+
0501 9089 LD R8,Y+
0502 9079 LD R7,Y+
0503 9624 ADIW R28,4
0504 9508 RET
tst_R16_R19:
0505 2FE0 MOV R30,R16
0506 2BE1 OR R30,R17
0507 2BE2 OR R30,R18
0508 2BE3 OR R30,R19
0509 9508 RET
tst_R24_R27:
050A 2FE8 MOV R30,R24
050B 2BE9 OR R30,R25
050C 2BEA OR R30,R26
050D 2BEB OR R30,R27
050E 9508 RET
neg_R16_R19:
050F 9500 COM R16
0510 9510 COM R17
0511 9520 COM R18
0512 9530 COM R19
0513 5F0F SUBI R16,0xFF
0514 4F1F SBCI R17,0xFF
0515 4F2F SBCI R18,0xFF
0516 4F3F SBCI R19,0xFF
0517 9508 RET
neg_R24_R27:
0518 9580 COM R24
0519 9590 COM R25
051A 95A0 COM R26
051B 95B0 COM R27
051C 5F8F SUBI R24,0xFF
051D 4F9F SBCI R25,0xFF
051E 4FAF SBCI R26,0xFF
051F 4FBF SBCI R27,0xFF
0520 9508 RET
mod8u:
0521 9468 BSET 6
0522 C001 RJMP xdiv8u
div8u:
0523 94E8 BCLR 6
xdiv8u:
0524 932A ST R18,-Y
0525 92FA ST R15,-Y
0526 92EA ST R14,-Y
0527 24FF CLR R15
0528 24EE CLR R14
0529 E120 LDI R18,0x10
052A 0F00 LSL R16
052B 1CFF ROL R15
052C 1CEE ROL R14
052D 16E1 CP R14,R17
052E F010 BCS 0x0531
052F 1AE1 SUB R14,R17
0530 9503 INC R16
0531 952A DEC R18
0532 F7B9 BNE 0x052A
0533 F40E BRTC 0x0535
0534 2D0E MOV R16,R14
0535 90E9 LD R14,Y+
0536 90F9 LD R15,Y+
0537 9129 LD R18,Y+
0538 9508 RET
pop_gset2:
0539 E0E2 LDI R30,2
053A C00E RJMP pop
pop_gset5:
053B 27EE CLR R30
053C C00C RJMP pop
push_gset5:
053D 92FA ST R15,-Y
053E 92EA ST R14,-Y
push_gset4:
053F 92DA ST R13,-Y
0540 92CA ST R12,-Y
push_gset3:
0541 92BA ST R11,-Y
0542 92AA ST R10,-Y
push_gset2:
0543 937A ST R23,-Y
0544 936A ST R22,-Y
push_gset1:
0545 935A ST R21,-Y
0546 934A ST R20,-Y
0547 9508 RET
pop_gset1:
0548 E0E1 LDI R30,1
pop:
0549 9149 LD R20,Y+
054A 9159 LD R21,Y+
054B FDE0 SBRC R30,0
054C 9508 RET
054D 9169 LD R22,Y+
054E 9179 LD R23,Y+
054F FDE1 SBRC R30,1
0550 9508 RET
0551 90A9 LD R10,Y+
0552 90B9 LD R11,Y+
0553 FDE2 SBRC R30,2
0554 9508 RET
0555 90C9 LD R12,Y+
0556 90D9 LD R13,Y+
0557 FDE3 SBRC R30,3
0558 9508 RET
0559 90E9 LD R14,Y+
055A 90F9 LD R15,Y+
055B 9508 RET
asgncblk:
055C 93AA ST R26,-Y
055D 93BA ST R27,-Y
055E 93EA ST R30,-Y
055F 93FA ST R31,-Y
0560 920A ST R0,-Y
0561 81AF LDD R26,Y+7
0562 85B8 LDD R27,Y+8
0563 81ED LDD R30,Y+5
0564 81FE LDD R31,Y+6
0565 3000 CPI R16,0
0566 0701 CPC R16,R17
0567 F031 BEQ 0x056E
0568 95C8 LPM
0569 920D ST R0,X+
056A 9631 ADIW R30,1
056B 5001 SUBI R16,1
056C 4010 SBCI R17,0
056D CFF7 RJMP 0x0565
056E 9009 LD R0,Y+
056F 91F9 LD R31,Y+
0570 91E9 LD R30,Y+
0571 91B9 LD R27,Y+
0572 91A9 LD R26,Y+
0573 9624 ADIW R28,4
0574 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -