📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
_charindex::
.blkb 2
.area idata
.byte 48,49
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.blkb 2
.area idata
.byte 50,51
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.blkb 2
.area idata
.byte 52,53
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.blkb 2
.area idata
.byte 54,55
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.blkb 2
.area idata
.byte 56,57
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.blkb 1
.area idata
.byte 58
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.dbfile E:\AVR实验\ds1302+12864时钟\charindex.h
.dbsym e charindex _charindex A[11:11]c
_mid::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\charindex.h
.blkb 9
.area idata
.byte 0,0,0,0,0,0,0,0,0
.area data(ram, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\charindex.h
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.dbsym e mid _mid A[10:10]c
.area text(rom, con, rel)
.dbfile E:\AVR实验\ds1302+12864时钟\main.c
.dbfunc e jisuan _jisuan fV
; d -> R20
; e -> R22
; b_data -> R16
.even
_jisuan::
st -y,R20
st -y,R22
.dbline -1
.dbline 15
; #include <iom8515v.h>
; #include "ds1302.h"
; #include "jhd12864.h"
; #include "d4094.h"
; #include "charindex.h"
;
;
;
; uint gewei,shiwei;
; uint sec,min,hour,year,month,day,date;
; uchar mid[10]={0};
;
;
; void jisuan(uchar b_data)
; {
.dbline 17
; uchar e,d;
; e=b_data;
mov R22,R16
.dbline 18
; d=e;
mov R20,R22
.dbline 19
; e=e&0x0f;
andi R22,15
.dbline 20
; d=d>>4;
mov R24,R20
swap R24
andi R24,#0x0F
mov R20,R24
.dbline 21
; gewei=(e&0x01)+((e>>1)&0x01)*2+((e>>2)&0x01)*4+((e>>3)&0x01)*8;
mov R24,R22
clr R25
asr R25
ror R24
andi R24,1
andi R25,0
movw R2,R24
lsl R2
rol R3
mov R24,R22
clr R25
andi R24,1
andi R25,0
movw R4,R24
add R4,R2
adc R5,R3
mov R24,R22
clr R25
asr R25
ror R24
asr R25
ror R24
andi R24,1
andi R25,0
lsl R24
rol R25
lsl R24
rol R25
add R4,R24
adc R5,R25
mov R24,R22
clr R25
asr R25
ror R24
asr R25
ror R24
asr R25
ror R24
andi R24,1
andi R25,0
lsl R24
rol R25
lsl R24
rol R25
lsl R24
rol R25
add R4,R24
adc R5,R25
sts _gewei+1,R5
sts _gewei,R4
.dbline 22
; shiwei=(d&0x01)+((d>>1)&0x01)*2+((d>>2)&0x01)*4+((d>>3)&0x01)*8;
mov R24,R20
clr R25
asr R25
ror R24
andi R24,1
andi R25,0
movw R2,R24
lsl R2
rol R3
mov R24,R20
clr R25
andi R24,1
andi R25,0
movw R4,R24
add R4,R2
adc R5,R3
mov R24,R20
clr R25
asr R25
ror R24
asr R25
ror R24
andi R24,1
andi R25,0
lsl R24
rol R25
lsl R24
rol R25
add R4,R24
adc R5,R25
mov R24,R20
clr R25
asr R25
ror R24
asr R25
ror R24
asr R25
ror R24
andi R24,1
andi R25,0
lsl R24
rol R25
lsl R24
rol R25
lsl R24
rol R25
add R4,R24
adc R5,R25
sts _shiwei+1,R5
sts _shiwei,R4
.dbline -2
L1:
.dbline 0 ; func end
ld R22,y+
ld R20,y+
ret
.dbsym r d 20 c
.dbsym r e 22 c
.dbsym r b_data 16 c
.dbend
.dbfunc e main _main fV
; num -> R20
.even
_main::
sbiw R28,4
.dbline -1
.dbline 29
;
; }
;
;
;
; void main()
; {
.dbline 31
;
; uchar num=0x01;
ldi R20,1
.dbline 33
;
; DDRC=0xFF;
ldi R24,255
out 0x14,R24
.dbline 34
; PORTC=0xFF;
out 0x15,R24
.dbline 36
;
; LCD_Init();
rcall _LCD_Init
.dbline 37
; delay_1ms(50);
ldi R16,50
ldi R17,0
rcall _delay_1ms
.dbline 38
; LCD_Init(); //初始化两边是关键,否则液晶上电重起将不能显示
rcall _LCD_Init
.dbline 40
;
; WriteSec(0x50);
ldi R16,80
ldi R17,0
rcall _WriteSec
.dbline 41
; WriteMin(0x59);
ldi R16,89
ldi R17,0
rcall _WriteMin
.dbline 42
; WriteHour(0x23);
ldi R16,35
ldi R17,0
rcall _WriteHour
.dbline 43
; WriteYear(0x99);
ldi R16,153
ldi R17,0
rcall _WriteYear
.dbline 44
; WriteMonth(0x12);
ldi R16,18
ldi R17,0
rcall _WriteMonth
.dbline 45
; WriteDate(0x31);
ldi R16,49
ldi R17,0
rcall _WriteDate
.dbline 47
;
; WriteDay(0x07);
ldi R16,7
ldi R17,0
rcall _WriteDay
.dbline 49
;
; Char_Set_XY(1,0,"time");
ldi R24,<L3
ldi R25,>L3
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _Char_Set_XY
.dbline 50
; Char_Set_XY(1,1,"date");
ldi R24,<L4
ldi R25,>L4
std y+1,R25
std y+0,R24
ldi R18,1
ldi R19,0
ldi R16,1
ldi R17,0
rcall _Char_Set_XY
.dbline 51
; Char_Set_XY(1,2,"week");
ldi R24,<L5
ldi R25,>L5
std y+1,R25
std y+0,R24
ldi R18,2
ldi R19,0
ldi R16,1
ldi R17,0
rcall _Char_Set_XY
.dbline 54
;
;
; Char_Set_XY_BYTE(6,0,charindex[10],2);
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
lds R2,_charindex+10
clr R3
std y+1,R3
std y+0,R2
clr R18
clr R19
ldi R16,6
ldi R17,0
rcall _Char_Set_XY_BYTE
.dbline 55
; Char_Set_XY_BYTE(5,0,charindex[10],1);
ldi R24,1
ldi R25,0
std y+3,R25
std y+2,R24
lds R2,_charindex+10
clr R3
std y+1,R3
std y+0,R2
clr R18
clr R19
ldi R16,5
ldi R17,0
rcall _Char_Set_XY_BYTE
.dbline 56
; Char_Set_XY_BYTE(6,1,charindex[10],2);
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
lds R2,_charindex+10
clr R3
std y+1,R3
std y+0,R2
ldi R18,1
ldi R19,0
ldi R16,6
ldi R17,0
rcall _Char_Set_XY_BYTE
.dbline 57
; Char_Set_XY_BYTE(5,1,charindex[10],1);
ldi R24,1
ldi R25,0
std y+3,R25
std y+2,R24
lds R2,_charindex+10
clr R3
std y+1,R3
std y+0,R2
ldi R18,1
ldi R19,0
ldi R16,5
ldi R17,0
rcall _Char_Set_XY_BYTE
rjmp L11
L10:
.dbline 60
;
; while(1)
; {
.dbline 63
;
;
; sec=ReadSec();
rcall _ReadSec
sts _sec+1,R17
sts _sec,R16
.dbline 64
; if(mid[1]!=sec)
lds R4,_mid+1
clr R5
cp R4,R16
cpc R5,R17
brne X9
rjmp L13
X9:
X0:
.dbline 65
; {
.dbline 66
; num++;
inc R20
.dbline 67
; if(num>0x02)num=0x01;
ldi R24,2
cp R24,R20
brsh L16
X1:
.dbline 67
ldi R20,1
L16:
.dbline 68
; jisuan(sec);
lds R16,_sec
rcall _jisuan
.dbline 69
; Char_Set_XY_BYTE(7,0,charindex[gewei],2);
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,<_charindex
ldi R25,>_charindex
lds R30,_gewei
lds R31,_gewei+1
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
std y+1,R3
std y+0,R2
clr R18
clr R19
ldi R16,7
ldi R17,0
rcall _Char_Set_XY_BYTE
.dbline 70
; Char_Set_XY_BYTE(7,0,charindex[shiwei],1);
ldi R24,1
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,<_charindex
ldi R25,>_charindex
lds R30,_shiwei
lds R31,_shiwei+1
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
std y+1,R3
std y+0,R2
clr R18
clr R19
ldi R16,7
ldi R17,0
rcall _Char_Set_XY_BYTE
.dbline 71
; Char_Set_XY_BYTE(0,3,num,1);
ldi R24,1
ldi R25,0
std y+3,R25
std y+2,R24
mov R2,R20
clr R3
std y+1,R3
std y+0,R2
ldi R18,3
ldi R19,0
clr R16
clr R17
rcall _Char_Set_XY_BYTE
.dbline 72
; }
L13:
.dbline 73
; mid[1]=sec;
lds R2,_sec
lds R3,_sec+1
sts _mid+1,R2
.dbline 76
;
;
; min = ReadMin();
rcall _ReadMin
sts _min+1,R17
sts _min,R16
.dbline 77
; if(mid[2]!=min)
lds R4,_mid+2
clr R5
cp R4,R16
cpc R5,R17
brne X10
rjmp L19
X10:
X2:
.dbline 78
; {
.dbline 79
; jisuan(min);
rcall _jisuan
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -