📄 test.lst
字号:
(0015) {
(0016) unsigned char t=2;
_delay_us:
t --> R16
030D E002 LDI R16,2
(0017) t--;
030E 950A DEC R16
030F 9508 RET
_delay_nus:
t --> R20
0310 940E03F0 CALL push_gset1
0312 01A8 MOVW R20,R16
(0018) }
(0019)
(0020) /*-----------------------------------------------------------------------
(0021) delay_nus :长延时函数
(0022)
(0023) 输入参数: t :延时时间 us
(0024) -----------------------------------------------------------------------*/
(0025) void delay_nus(unsigned int t)
(0026) {
0313 C001 RJMP 0x0315
(0027) while (t--)
(0028) delay_us();
0314 DFF8 RCALL _delay_us
0315 011A MOVW R2,R20
0316 5041 SUBI R20,1
0317 4050 SBCI R21,0
0318 2022 TST R2
0319 F7D1 BNE 0x0314
031A 2033 TST R3
031B F7C1 BNE 0x0314
031C 940E03F3 CALL pop_gset1
031E 9508 RET
(0029) }
(0030)
(0031) /*-----------------------------------------------------------------------
(0032) delay_ms :1ms延时函数
(0033) -----------------------------------------------------------------------*/
(0034) void delay_ms(void)
(0035) {
(0036) delay_nus(1000);
_delay_ms:
031F EE08 LDI R16,0xE8
0320 E013 LDI R17,3
0321 DFEE RCALL _delay_nus
0322 9508 RET
_delay_nms:
t --> R20
0323 940E03F0 CALL push_gset1
0325 01A8 MOVW R20,R16
(0037) }
(0038)
(0039) /*-----------------------------------------------------------------------
(0040) delay_nms :长延时函数
(0041)
(0042) 输入参数: t :延时时间 ms
(0043) -----------------------------------------------------------------------*/
(0044) void delay_nms(unsigned int t)
(0045) {
0326 C001 RJMP 0x0328
(0046) while (t--)
(0047) delay_ms();
0327 DFF7 RCALL _delay_ms
0328 011A MOVW R2,R20
0329 5041 SUBI R20,1
032A 4050 SBCI R21,0
032B 2022 TST R2
032C F7D1 BNE 0x0327
032D 2033 TST R3
032E F7C1 BNE 0x0327
032F 940E03F3 CALL pop_gset1
0331 9508 RET
FILE: F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\ocmj_lcd.c
(0001) #include <iom128v.h>
(0002) #include "ocmj_lcd.h"
(0003) #include "delay.h"
(0004) /* OCMJ4X8LCD初始化 */
(0005) void ocmj_init(void)
(0006) {
(0007) MCUCR=0;
_ocmj_init:
0332 2422 CLR R2
0333 BE25 OUT 0x35,R2
(0008) DDRA=0xff;
0334 EF8F LDI R24,0xFF
0335 BB8A OUT 0x1A,R24
(0009) PORTA=0xff;
0336 BB8B OUT 0x1B,R24
(0010) DDRE=0b10000000;
0337 E880 LDI R24,0x80
0338 B982 OUT 0x02,R24
(0011) PORTE=0xff;
0339 EF8F LDI R24,0xFF
033A B983 OUT 0x03,R24
(0012) clr_reset;//LCD复位
033B 98AB CBI 0x15,3
(0013) delay_nms(10);
033C E00A LDI R16,0xA
033D E010 LDI R17,0
033E 940E0323 CALL _delay_nms
(0014) set_reset;
0340 9AAB SBI 0x15,3
(0015) clr_answer;
0341 981F CBI 0x03,7
(0016) delay_nms(10);
0342 E00A LDI R16,0xA
0343 E010 LDI R17,0
0344 940E0323 CALL _delay_nms
0346 9508 RET
(0017) }
(0018) /* 写数据到LCD */
(0019) void ocmj_write(unsigned char data)
(0020) {
(0021) while(ask!=0)
_ocmj_write:
data --> R16
0347 990E SBIC 0x01,6
0348 CFFE RJMP _ocmj_write
(0022) ;
(0023) data_port=data;
0349 BB0B OUT 0x1B,R16
(0024) wait;
034A 0000 NOP
034B 0000 NOP
(0025) set_answer;
034C 9A1F SBI 0x03,7
(0026) wait;
034D 0000 NOP
034E 0000 NOP
(0027) while(ask==0)
034F 9B0E SBIS 0x01,6
0350 CFFE RJMP 0x034F
(0028) ;
(0029) clr_answer;
0351 981F CBI 0x03,7
0352 9508 RET
_asc_tran:
asc_p --> R20
y --> R22
x --> R10
0353 940E03EC CALL push_gset3
0355 2F62 MOV R22,R18
0356 2EA0 MOV R10,R16
0357 814E LDD R20,Y+6
0358 815F LDD R21,Y+7
(0030) }
(0031) /* 传送ASCII字母到LCD */
(0032) /* x:0x00~0x0f y:0~64 */
(0033) void asc_tran(unsigned char x,unsigned char y,unsigned char *asc_p)
(0034) {
(0035) x+=4;
0359 2D8A MOV R24,R10
035A 5F8C SUBI R24,0xFC
035B 2EA8 MOV R10,R24
035C C013 RJMP 0x0370
(0036) while((*asc_p)!=0)
(0037) {
(0038) ocmj_write(0xf1);
035D EF01 LDI R16,0xF1
035E DFE8 RCALL _ocmj_write
(0039) ocmj_write(x);
035F 2D0A MOV R16,R10
0360 DFE6 RCALL _ocmj_write
(0040) ocmj_write(y);
0361 2F06 MOV R16,R22
0362 DFE4 RCALL _ocmj_write
(0041) ocmj_write(*asc_p);
0363 01FA MOVW R30,R20
0364 8100 LDD R16,Z+0
0365 DFE1 RCALL _ocmj_write
(0042) asc_p++;
0366 5F4F SUBI R20,0xFF
0367 4F5F SBCI R21,0xFF
(0043) if (x<0x13)
0368 2D8A MOV R24,R10
0369 3183 CPI R24,0x13
036A F410 BCC 0x036D
(0044) x++;
036B 94A3 INC R10
036C C003 RJMP 0x0370
(0045) else
(0046) {
(0047) x=0x04;
036D E084 LDI R24,4
036E 2EA8 MOV R10,R24
(0048) y+=8;
FILE: <library>
036F 5F68 SUBI R22,0xF8
0370 01FA MOVW R30,R20
0371 8020 LDD R2,Z+0
0372 2022 TST R2
0373 F749 BNE 0x035D
0374 940E03E2 CALL pop_gset3
0376 9508 RET
_strcat:
0377 2FA0 MOV R26,R16
0378 2FB1 MOV R27,R17
0379 2FE2 MOV R30,R18
037A 2FF3 MOV R31,R19
037B 912D LD R18,X+
037C 2322 TST R18
037D F7E9 BNE 0x037B
037E 9711 SBIW R26,1
037F 9121 LD R18,Z+
0380 932D ST R18,X+
0381 2322 TST R18
0382 F7E1 BNE 0x037F
0383 9508 RET
_strcpy:
0384 2FA0 MOV R26,R16
0385 2FB1 MOV R27,R17
0386 2FE2 MOV R30,R18
0387 2FF3 MOV R31,R19
0388 9001 LD R0,Z+
0389 920D ST R0,X+
038A 2000 TST R0
038B F7E1 BNE 0x0388
038C 9508 RET
mod16s:
038D 9468 BSET 6
038E 92DA ST R13,-Y
038F 2ED1 MOV R13,R17
0390 C004 RJMP 0x0395
div16s:
0391 94E8 BCLR 6
0392 92DA ST R13,-Y
0393 2ED1 MOV R13,R17
0394 26D3 EOR R13,R19
0395 FF17 SBRS R17,7
0396 C004 RJMP 0x039B
0397 9510 COM R17
0398 9500 COM R16
0399 5F0F SUBI R16,0xFF
039A 4F1F SBCI R17,0xFF
039B FF37 SBRS R19,7
039C C004 RJMP 0x03A1
039D 9530 COM R19
039E 9520 COM R18
039F 5F2F SUBI R18,0xFF
03A0 4F3F SBCI R19,0xFF
03A1 940E03AE CALL xdiv16u
03A3 FED7 SBRS R13,7
03A4 C004 RJMP 0x03A9
03A5 9510 COM R17
03A6 9500 COM R16
03A7 5F0F SUBI R16,0xFF
03A8 4F1F SBCI R17,0xFF
03A9 90D9 LD R13,Y+
03AA 9508 RET
mod16u:
03AB 9468 BSET 6
03AC C001 RJMP xdiv16u
div16u:
03AD 94E8 BCLR 6
xdiv16u:
03AE 92EA ST R14,-Y
03AF 92FA ST R15,-Y
03B0 938A ST R24,-Y
03B1 24EE CLR R14
03B2 24FF CLR R15
03B3 E180 LDI R24,0x10
03B4 0F00 LSL R16
03B5 1F11 ROL R17
03B6 1CEE ROL R14
03B7 1CFF ROL R15
03B8 16E2 CP R14,R18
03B9 06F3 CPC R15,R19
03BA F018 BCS 0x03BE
03BB 1AE2 SUB R14,R18
03BC 0AF3 SBC R15,R19
03BD 9503 INC R16
03BE 958A DEC R24
03BF F7A1 BNE 0x03B4
03C0 F416 BRTC 0x03C3
03C1 2D0E MOV R16,R14
03C2 2D1F MOV R17,R15
03C3 9189 LD R24,Y+
03C4 90F9 LD R15,Y+
03C5 90E9 LD R14,Y+
03C6 9508 RET
mod8u:
03C7 9468 BSET 6
03C8 C001 RJMP xdiv8u
div8u:
03C9 94E8 BCLR 6
xdiv8u:
03CA 932A ST R18,-Y
03CB 92FA ST R15,-Y
03CC 92EA ST R14,-Y
03CD 24FF CLR R15
03CE 24EE CLR R14
03CF E120 LDI R18,0x10
03D0 0F00 LSL R16
03D1 1CFF ROL R15
03D2 1CEE ROL R14
03D3 16E1 CP R14,R17
03D4 F010 BCS 0x03D7
03D5 1AE1 SUB R14,R17
03D6 9503 INC R16
03D7 952A DEC R18
03D8 F7B9 BNE 0x03D0
03D9 F40E BRTC 0x03DB
03DA 2D0E MOV R16,R14
03DB 90E9 LD R14,Y+
03DC 90F9 LD R15,Y+
03DD 9129 LD R18,Y+
03DE 9508 RET
pop_gset2:
03DF E0E2 LDI R30,2
03E0 940C03F4 JMP pop
pop_gset3:
03E2 E0E4 LDI R30,4
03E3 940C03F4 JMP pop
pop_gset5:
03E5 27EE CLR R30
03E6 940C03F4 JMP pop
push_gset5:
03E8 92FA ST R15,-Y
03E9 92EA ST R14,-Y
push_gset4:
03EA 92DA ST R13,-Y
03EB 92CA ST R12,-Y
push_gset3:
03EC 92BA ST R11,-Y
03ED 92AA ST R10,-Y
push_gset2:
03EE 937A ST R23,-Y
03EF 936A ST R22,-Y
push_gset1:
03F0 935A ST R21,-Y
03F1 934A ST R20,-Y
03F2 9508 RET
pop_gset1:
03F3 E0E1 LDI R30,1
pop:
03F4 9149 LD R20,Y+
03F5 9159 LD R21,Y+
03F6 FDE0 SBRC R30,0
03F7 9508 RET
03F8 9169 LD R22,Y+
03F9 9179 LD R23,Y+
03FA FDE1 SBRC R30,1
03FB 9508 RET
03FC 90A9 LD R10,Y+
03FD 90B9 LD R11,Y+
03FE FDE2 SBRC R30,2
03FF 9508 RET
0400 90C9 LD R12,Y+
0401 90D9 LD R13,Y+
0402 FDE3 SBRC R30,3
0403 9508 RET
0404 90E9 LD R14,Y+
0405 90F9 LD R15,Y+
0406 9508 RET
_itoa:
0407 940E03E8 CALL push_gset5
0409 2EC2 MOV R12,R18
040A 2ED3 MOV R13,R19
040B 2F40 MOV R20,R16
040C 2F51 MOV R21,R17
040D 97A2 SBIW R28,0x22
040E A4AC LDD R10,Y+44
040F A4BD LDD R11,Y+45
0410 2D8C MOV R24,R12
0411 2D9D MOV R25,R13
0412 3080 CPI R24,0
0413 E0E0 LDI R30,0
0414 079E CPC R25,R30
0415 F444 BGE 0x041E
0416 E061 LDI R22,1
0417 9580 COM R24
0418 9590 COM R25
0419 5F8F SUBI R24,0xFF
041A 4F9F SBCI R25,0xFF
041B 2EC8 MOV R12,R24
041C 2ED9 MOV R13,R25
041D C001 RJMP 0x041F
041E 2766 CLR R22
041F 2422 CLR R2
0420 A229 STD Y+33,R2
0421 2F8C MOV R24,R28
0422 2F9D MOV R25,R29
0423 9681 ADIW R24,0x21
0424 2EE8 MOV R14,R24
0425 2EF9 MOV R15,R25
0426 2D8E MOV R24,R14
0427 2D9F MOV R25,R15
0428 9701 SBIW R24,1
0429 2E28 MOV R2,R24
042A 2E39 MOV R3,R25
042B 2EE8 MOV R14,R24
042C 2EF9 MOV R15,R25
042D 2D2A MOV R18,R10
042E 2D3B MOV R19,R11
042F 2D0C MOV R16,R12
0430 2D1D MOV R17,R13
0431 940E038D CALL mod16s
0433 2FE0 MOV R30,R16
0434 2FF1 MOV R31,R17
0435 E384 LDI R24,0x34
0436 E091 LDI R25,1
0437 0FE8 ADD R30,R24
0438 1FF9 ADC R31,R25
0439 8040 LDD R4,Z+0
043A 2DE2 MOV R30,R2
043B 2DF3 MOV R31,R3
043C 8240 STD Z+0,R4
043D 2D2A MOV R18,R10
043E 2D3B MOV R19,R11
043F 2D0C MOV R16,R12
0440 2D1D MOV R17,R13
0441 940E0391 CALL div16s
0443 2EC0 MOV R12,R16
0444 2ED1 MOV R13,R17
0445 20CC TST R12
0446 F6F9 BNE 0x0426
0447 20DD TST R13
0448 F6E9 BNE 0x0426
0449 2366 TST R22
044A F059 BEQ 0x0456
044B 2D8E MOV R24,R14
044C 2D9F MOV R25,R15
044D 9701 SBIW R24,1
044E 2E28 MOV R2,R24
044F 2E39 MOV R3,R25
0450 2EE8 MOV R14,R24
0451 2EF9 MOV R15,R25
0452 E28D LDI R24,0x2D
0453 2DE2 MOV R30,R2
0454 2DF3 MOV R31,R3
0455 8380 STD Z+0,R24
0456 2D2E MOV R18,R14
0457 2D3F MOV R19,R15
0458 2F04 MOV R16,R20
0459 2F15 MOV R17,R21
045A 940E0384 CALL _strcpy
045C 96A2 ADIW R28,0x22
045D 940E03E5 CALL pop_gset5
045F 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -