📄 ocmj_lcd.s
字号:
.module ocmj_lcd.c
.area text(rom, con, rel)
.dbfile F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\ocmj_lcd.c
.dbfunc e ocmj_init _ocmj_init fV
.even
_ocmj_init::
.dbline -1
.dbline 6
; #include <iom128v.h>
; #include "ocmj_lcd.h"
; #include "delay.h"
; /* OCMJ4X8LCD初始化 */
; void ocmj_init(void)
; {
.dbline 7
; MCUCR=0;
clr R2
out 0x35,R2
.dbline 8
; DDRA=0xff;
ldi R24,255
out 0x1a,R24
.dbline 9
; PORTA=0xff;
out 0x1b,R24
.dbline 10
; DDRE=0b10000000;
ldi R24,128
out 0x2,R24
.dbline 11
; PORTE=0xff;
ldi R24,255
out 0x3,R24
.dbline 12
; clr_reset;//LCD复位
cbi 0x15,3
.dbline 13
; delay_nms(10);
ldi R16,10
ldi R17,0
xcall _delay_nms
.dbline 14
; set_reset;
sbi 0x15,3
.dbline 15
; clr_answer;
cbi 0x03,7
.dbline 16
; delay_nms(10);
ldi R16,10
ldi R17,0
xcall _delay_nms
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ocmj_write _ocmj_write fV
; data -> R16
.even
_ocmj_write::
.dbline -1
.dbline 20
; }
; /* 写数据到LCD */
; void ocmj_write(unsigned char data)
; {
L3:
.dbline 22
L4:
.dbline 21
; while(ask!=0)
sbic 0x1,6
rjmp L3
.dbline 23
; ;
; data_port=data;
out 0x1b,R16
.dbline 24
; wait;
nop
nop
.dbline 25
; set_answer;
sbi 0x03,7
.dbline 26
; wait;
nop
nop
L6:
.dbline 28
L7:
.dbline 27
; while(ask==0)
sbis 0x1,6
rjmp L6
.dbline 29
; ;
; clr_answer;
cbi 0x03,7
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e asc_tran _asc_tran fV
; asc_p -> R20,R21
; y -> R22
; x -> R10
.even
_asc_tran::
xcall push_gset3
mov R22,R18
mov R10,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 34
; }
; /* 传送ASCII字母到LCD */
; /* x:0x00~0x0f y:0~64 */
; void asc_tran(unsigned char x,unsigned char y,unsigned char *asc_p)
; {
.dbline 35
; x+=4;
mov R24,R10
subi R24,252 ; addi 4
mov R10,R24
xjmp L11
L10:
.dbline 37
; while((*asc_p)!=0)
; {
.dbline 38
; ocmj_write(0xf1);
ldi R16,241
xcall _ocmj_write
.dbline 39
; ocmj_write(x);
mov R16,R10
xcall _ocmj_write
.dbline 40
; ocmj_write(y);
mov R16,R22
xcall _ocmj_write
.dbline 41
; ocmj_write(*asc_p);
movw R30,R20
ldd R16,z+0
xcall _ocmj_write
.dbline 42
; asc_p++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 43
; if (x<0x13)
mov R24,R10
cpi R24,19
brsh L13
.dbline 44
; x++;
inc R10
xjmp L14
L13:
.dbline 46
; else
; {
.dbline 47
; x=0x04;
ldi R24,4
mov R10,R24
.dbline 48
; y+=8;
subi R22,248 ; addi 8
.dbline 49
; }
L14:
.dbline 50
L11:
.dbline 36
movw R30,R20
ldd R2,z+0
tst R2
brne L10
.dbline -2
L9:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r asc_p 20 pc
.dbsym r y 22 c
.dbsym r x 10 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -