📄 12864.s
字号:
; void write_byte(uchar dat); //写一字节数据
; void write_ds1302(uchar addr,uchar data); //在指定地址写一字节数据
; void set_ds1302(uchar addr,uchar *p,uchar n); //设置初始化
; void init_ds1302(void); //初始化函数
; /***************从DS1302中读一个字节数据********************/
; uchar read_byte(void)
; {
.dbline 28
; uchar i,dat=0;
clr R20
.dbline 29
; IO_IN;
cbi 0x17,1
.dbline 30
; IO_CLR;
cbi 0x18,1
.dbline 31
; for(i=0;i<7;i++)
clr R22
rjmp L61
L58:
.dbline 32
; {
.dbline 33
; SCK_SET;
sbi 0x18,0
.dbline 34
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 35
; SCK_CLR;
cbi 0x18,0
.dbline 36
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 37
; if(IO_R)
sbis 0x16,1
rjmp L62
X14:
.dbline 38
; dat|=0X80;
ori R20,128
rjmp L63
L62:
.dbline 40
; else
; dat&=0X7F;
andi R20,127
L63:
.dbline 41
; SCK_SET;
sbi 0x18,0
.dbline 42
; dat=dat>>1;
lsr R20
.dbline 43
; }
L59:
.dbline 31
inc R22
L61:
.dbline 31
cpi R22,7
brlo L58
X15:
.dbline 44
; IO_OUT;
sbi 0x17,1
.dbline 45
; return dat;
mov R16,R20
.dbline -2
L57:
.dbline 0 ; func end
ld R22,y+
ld R20,y+
ret
.dbsym r i 22 c
.dbsym r dat 20 c
.dbend
.dbfunc e write_byte _write_byte fV
; i -> R20
; dat -> R10
.even
_write_byte::
st -y,R10
st -y,R20
mov R10,R16
.dbline -1
.dbline 49
; }
; /***************从DS1302中写一个字节数据********************/
; void write_byte(uchar dat)
; {
.dbline 51
; uchar i;
; for(i=0;i<8;i++)
clr R20
rjmp L68
L65:
.dbline 52
; {
.dbline 53
; SCK_CLR;
cbi 0x18,0
.dbline 54
; if(dat&0X01)
sbrs R10,0
rjmp L69
X16:
.dbline 55
; IO_SET;
sbi 0x18,1
rjmp L70
L69:
.dbline 57
; else
; IO_CLR;
cbi 0x18,1
L70:
.dbline 58
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 59
; SCK_SET;
sbi 0x18,0
.dbline 60
; dat>>=1;
lsr R10
.dbline 61
; }
L66:
.dbline 51
inc R20
L68:
.dbline 51
cpi R20,8
brlo L65
X17:
.dbline -2
L64:
.dbline 0 ; func end
ld R20,y+
ld R10,y+
ret
.dbsym r i 20 c
.dbsym r dat 10 c
.dbend
.dbfunc e read_ds1302 _read_ds1302 fc
; data -> R10
; addr -> R10
.even
_read_ds1302::
st -y,R10
mov R10,R16
.dbline -1
.dbline 65
; }
; /*********************在指定的地址读一字节数据************************/
; uchar read_ds1302(uchar addr)
; {
.dbline 67
; char data;
; RST_CLR;
cbi 0x18,2
.dbline 68
; SCK_CLR;
cbi 0x18,0
.dbline 69
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 70
; RST_SET;
sbi 0x18,2
.dbline 71
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 72
; write_byte(addr);
mov R16,R10
rcall _write_byte
.dbline 73
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 74
; data=read_byte();
rcall _read_byte
mov R10,R16
.dbline 75
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 76
; SCK_CLR;
cbi 0x18,0
.dbline 77
; RST_CLR;
cbi 0x18,2
.dbline 81
; //DDRD|=(1<<PD3);
; //delay_us(100);
; //DDRD&=~(1<<PD3);
; return data;
mov R16,R10
.dbline -2
L71:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r data 10 c
.dbsym r addr 10 c
.dbend
.dbfunc e write_ds1302 _write_ds1302 fV
; data -> R10
; addr -> R12
.even
_write_ds1302::
st -y,R10
st -y,R12
mov R10,R18
mov R12,R16
.dbline -1
.dbline 84
; }
; void write_ds1302(uchar addr,uchar data)
; {
.dbline 85
; RST_CLR;
cbi 0x18,2
.dbline 86
; SCK_CLR;
cbi 0x18,0
.dbline 87
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 88
; RST_SET;
sbi 0x18,2
.dbline 89
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 90
; write_byte(addr);
mov R16,R12
rcall _write_byte
.dbline 91
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 92
; SCK_CLR;
cbi 0x18,0
.dbline 93
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 94
; write_byte(data);
mov R16,R10
rcall _write_byte
.dbline 95
; SCK_CLR;
cbi 0x18,0
.dbline 96
; delay_us(10);
ldi R16,10
ldi R17,0
rcall _delay_us
.dbline 97
; RST_CLR;
cbi 0x18,2
.dbline -2
L72:
.dbline 0 ; func end
ld R12,y+
ld R10,y+
ret
.dbsym r data 10 c
.dbsym r addr 12 c
.dbend
.dbfunc e set_ds1302 _set_ds1302 fV
; n -> R10
; p -> R20,R21
; addr -> R22
.even
_set_ds1302::
rcall push_xgsetF00C
movw R20,R18
mov R22,R16
ldd R10,y+6
.dbline -1
.dbline 101
; }
; /************************设置初始化函数*******************************/
; void set_ds1302(uchar addr,uchar *p,uchar n)
; {
.dbline 102
; write_ds1302(0X8E,0X00);
clr R18
ldi R16,142
rcall _write_ds1302
.dbline 103
; for(;n>0;n--)
rjmp L77
L74:
.dbline 104
; {
.dbline 105
; write_ds1302(addr,*p);
movw R30,R20
ldd R18,z+0
mov R16,R22
rcall _write_ds1302
.dbline 106
; p++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 107
; addr=addr+2;
subi R22,254 ; addi 2
.dbline 108
; }
L75:
.dbline 103
dec R10
L77:
.dbline 103
ldi R24,0
cp R24,R10
brlo L74
X18:
.dbline 109
; write_ds1302(0X8E,0X80);
ldi R18,128
ldi R16,142
rcall _write_ds1302
.dbline -2
L73:
.dbline 0 ; func end
rjmp pop_xgsetF00C
.dbsym r n 10 c
.dbsym r p 20 pc
.dbsym r addr 22 c
.dbend
.dbfunc e init_ds1302 _init_ds1302 fV
.even
_init_ds1302::
.dbline -1
.dbline 113
; }
; /**********************初始化DS1302函数*******************************/
; void init_ds1302(void)
; {
.dbline 114
; RST_CLR;
cbi 0x18,2
.dbline 115
; SCK_CLR;
cbi 0x18,0
.dbline 116
; RST_OUT;
sbi 0x17,2
.dbline 117
; SCK_OUT;
sbi 0x17,0
.dbline 118
; write_ds1302(0X80,0X00);
clr R18
ldi R16,128
rcall _write_ds1302
.dbline 119
; write_ds1302(0X90,0XAB);
ldi R18,171
ldi R16,144
rcall _write_ds1302
.dbline 120
; write_ds1302(0X8E,0X80);
ldi R18,128
ldi R16,142
rcall _write_ds1302
.dbline -2
L78:
.dbline 0 ; func end
ret
.dbend
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\DS1302_drive.h
_line1_data::
.blkb 17
.area idata
.byte 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\DS1302_drive.h
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e line1_data _line1_data A[17:17]c
_line2_data::
.blkb 17
.area idata
.byte 181,231,215,211,200,213,192,250,207,212,202,190,206,194,182,200
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e line2_data _line2_data A[17:17]c
_line3_data::
.blkb 17
.area idata
.byte 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e line3_data _line3_data A[17:17]c
_line4_data::
.blkb 17
.area idata
.byte 42,42,176,180,189,248,200,235,188,252,189,248,200,235,42,42
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e line4_data _line4_data A[17:17]c
_switch_menu::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e switch_menu _switch_menu c
_K1_FLAG::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e K1_FLAG _K1_FLAG i
_time_buf::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 6
.area idata
.byte 0,0,0,0,0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e time_buf _time_buf A[7:7]c
_time_dis_buf::
.blkb 2
.area idata
.byte 0,6
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 2
.area idata
.byte 1,2
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 2
.area idata
.byte 0,7
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 2
.area idata
.byte 2,3
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 2
.area idata
.byte 1,7
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 2
.area idata
.byte 0,4
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.blkb 2
.area idata
.byte 3,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbsym e time_dis_buf _time_dis_buf A[14:14]c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 21
; /**********************************************************************
; 创建人:李小磊(QQ:1397301068)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -