📄 main.s
字号:
X30:
cpi R22,8
ldi R30,0
cpc R23,R30
brne X31
rjmp L96
X31:
cpi R22,9
ldi R30,0
cpc R23,R30
brne X32
rjmp L97
X32:
cpi R22,10
ldi R30,0
cpc R23,R30
brne X33
rjmp L98
X33:
rjmp L85
X7:
.dbline 133
; {
L88:
.dbline 134
; case 0 :write_data(0x88,((read_data(0x89))&0x0f)|(t<<4));;break;//0
ldi R16,137
rcall _read_data
mov R24,R20
andi R24,#0x0F
swap R24
mov R18,R16
andi R18,15
or R18,R24
ldi R16,136
rcall _write_data
.dbline 134
.dbline 134
rjmp L86
L89:
.dbline 135
; case 1 :write_data(0x88,((read_data(0x89))&0xf0)|t);;break;
ldi R16,137
rcall _read_data
mov R18,R16
andi R18,240
or R18,R20
ldi R16,136
rcall _write_data
.dbline 135
.dbline 135
rjmp L86
L90:
.dbline 136
; case 2 :write_data(0x86,((read_data(0x87))&0x0f)|(t<<4));;break;
ldi R16,135
rcall _read_data
mov R24,R20
andi R24,#0x0F
swap R24
mov R18,R16
andi R18,15
or R18,R24
ldi R16,134
rcall _write_data
.dbline 136
.dbline 136
rjmp L86
L91:
.dbline 137
; case 3 :write_data(0x86,((read_data(0x87))&0xf0)|t);;break;
ldi R16,135
rcall _read_data
mov R18,R16
andi R18,240
or R18,R20
ldi R16,134
rcall _write_data
.dbline 137
.dbline 137
rjmp L86
L92:
.dbline 138
; case 4 :write_data(0x84,((read_data(0x85))&0x0f)|(t<<4));;break;
ldi R16,133
rcall _read_data
mov R24,R20
andi R24,#0x0F
swap R24
mov R18,R16
andi R18,15
or R18,R24
ldi R16,132
rcall _write_data
.dbline 138
.dbline 138
rjmp L86
L93:
.dbline 139
; case 5 :write_data(0x84,((read_data(0x85))&0xf0)|t);;break;
ldi R16,133
rcall _read_data
mov R18,R16
andi R18,240
or R18,R20
ldi R16,132
rcall _write_data
.dbline 139
.dbline 139
rjmp L86
L94:
.dbline 140
; case 6 :write_data(0x82,((read_data(0x83))&0x0f)|(t<<4));;break;
ldi R16,131
rcall _read_data
mov R24,R20
andi R24,#0x0F
swap R24
mov R18,R16
andi R18,15
or R18,R24
ldi R16,130
rcall _write_data
.dbline 140
.dbline 140
rjmp L86
L95:
.dbline 141
; case 7 :write_data(0x82,((read_data(0x83))&0xf0)|t);;break;
ldi R16,131
rcall _read_data
mov R18,R16
andi R18,240
or R18,R20
ldi R16,130
rcall _write_data
.dbline 141
.dbline 141
rjmp L86
L96:
.dbline 142
; case 8 :write_data(0x80,((read_data(0x81))&0x0f)|(t<<4));;break;
ldi R16,129
rcall _read_data
mov R24,R20
andi R24,#0x0F
swap R24
mov R18,R16
andi R18,15
or R18,R24
ldi R16,128
rcall _write_data
.dbline 142
.dbline 142
rjmp L86
L97:
.dbline 143
; case 9 :write_data(0x80,((read_data(0x81))&0xf0)|t);;break;
ldi R16,129
rcall _read_data
mov R18,R16
andi R18,240
or R18,R20
ldi R16,128
rcall _write_data
.dbline 143
.dbline 143
rjmp L86
L98:
.dbline 144
; case 10 :write_data(0x8a,t);;break;
mov R18,R20
ldi R16,138
rcall _write_data
.dbline 144
.dbline 144
L85:
L86:
.dbline 146
; }
; LCD_set_xy(9,1); //这一位抗干拢
ldi R18,1
ldi R16,9
rcall _LCD_set_xy
.dbline 147
; LCD_write_char(n+48);
lds R16,_n
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 148
; }
rjmp L52
L51:
.dbline 150
; else
; {
.dbline 151
; LCD_DATA_PORT=0x01; //清屏
ldi R24,1
out 0x1b,R24
.dbline 152
; command_enable();
rcall _command_enable
.dbline 153
; delay_ms(10); //等待1.53ms以上
ldi R16,10
rcall _delay_ms
.dbline 154
; }
L52:
L24:
.dbline 155
; ret:SEI();
sei
.dbline -2
L17:
adiw R28,2
rcall pop_gset4
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym r t 20 c
.dbsym r store 20 i
.dbsym r user_code 12 i
.dbsym r data_code 22 i
.dbsym r i 10 c
.dbend
.dbfunc e main _main fV
; a -> y+10
; temm -> R10
; count -> R12
; temh -> R14
; teml -> R20
; th -> y+9
; tl -> y+8
; s -> y+7
; i -> R22
.even
_main::
sbiw R28,13
.dbline -1
.dbline 161
; }
; /******************************************************
; 主程序
; ******************************************************/
; void main(void)
; {
.dbline 165
;
; uchar s,i,th,tl;
; uchar temh,teml,a,count,temm;
; init_devices();
rcall _init_devices
.dbline 166
; init_1302();
rcall _init_1302
.dbline 167
; init_1302();
rcall _init_1302
.dbline 168
; init_lcd() ;
rcall _init_lcd
.dbline 169
; init_lcd() ;
rcall _init_lcd
.dbline 170
; init_time(0x00,0x01,0x02,0x03,0x04,0x05);
ldi R24,5
std y+6,R24
ldi R24,4
std y+4,R24
ldi R24,3
std y+2,R24
ldi R24,2
std y+0,R24
ldi R18,1
clr R16
rcall _init_time
rjmp L101
L100:
.dbline 172
; while(1)
; {
.dbline 174
; //1302
; LCD_set_xy(0,0);
clr R18
clr R16
rcall _LCD_set_xy
.dbline 176
; //month
; s=read_data(0x89);
ldi R16,137
rcall _read_data
std y+7,R16
.dbline 177
; tl=s&0x0f;
mov R24,R16
andi R24,15
std y+8,R24
.dbline 178
; th=(s>>4);
ldd R24,y+7
swap R24
andi R24,#0x0F
std y+9,R24
.dbline 179
; LCD_write_char(th+48);
mov R16,R24
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 180
; LCD_write_char(tl+48);
ldd R16,y+8
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 181
; LCD_write_char(':');
ldi R16,58
rcall _LCD_write_char
.dbline 183
; //day
; s=read_data(0x87);
ldi R16,135
rcall _read_data
std y+7,R16
.dbline 184
; tl=s&0x0f;
mov R24,R16
andi R24,15
std y+8,R24
.dbline 185
; th=(s>>4);
ldd R24,y+7
swap R24
andi R24,#0x0F
std y+9,R24
.dbline 186
; LCD_write_char(th+48);
mov R16,R24
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 187
; LCD_write_char(tl+48);
ldd R16,y+8
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 188
; LCD_write_char(' ');
ldi R16,32
rcall _LCD_write_char
.dbline 189
; LCD_write_char(' ');
ldi R16,32
rcall _LCD_write_char
.dbline 191
; //hour
; s=read_data(0x85);
ldi R16,133
rcall _read_data
std y+7,R16
.dbline 192
; tl=s&0x0f;
mov R24,R16
andi R24,15
std y+8,R24
.dbline 193
; th=(s>>4);
ldd R24,y+7
swap R24
andi R24,#0x0F
std y+9,R24
.dbline 194
; LCD_write_char(th+48);
mov R16,R24
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 195
; LCD_write_char(tl+48);
ldd R16,y+8
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 196
; LCD_write_char(':');
ldi R16,58
rcall _LCD_write_char
.dbline 198
; //min
; s=read_data(0x83);
ldi R16,131
rcall _read_data
std y+7,R16
.dbline 199
; tl=s&0x0f;
mov R24,R16
andi R24,15
std y+8,R24
.dbline 200
; th=(s>>4);
ldd R24,y+7
swap R24
andi R24,#0x0F
std y+9,R24
.dbline 201
; LCD_write_char(th+48);
mov R16,R24
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 202
; LCD_write_char(tl+48);
ldd R16,y+8
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 203
; LCD_write_char(':');
ldi R16,58
rcall _LCD_write_char
.dbline 205
; //sec
; s=read_data(0x81);
ldi R16,129
rcall _read_data
std y+7,R16
.dbline 206
; tl=s&0x0f;
mov R24,R16
andi R24,15
std y+8,R24
.dbline 207
; th=(s>>4);
ldd R24,y+7
swap R24
andi R24,#0x0F
std y+9,R24
.dbline 208
; LCD_write_char(th+48);
mov R16,R24
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 209
; LCD_write_char(tl+48);
ldd R16,y+8
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 211
; //date
; s=read_data(0x8b);
ldi R16,139
rcall _read_data
std y+7,R16
.dbline 212
; tl=s&0x0f;
mov R24,R16
andi R24,15
std y+8,R24
.dbline 213
; switch(tl)
mov R2,R24
clr R3
std y+12,R3
std y+11,R2
mov R24,R2
mov R25,R3
cpi R24,1
ldi R30,0
cpc R25,R30
breq L106
cpi R24,2
ldi R30,0
cpc R25,R30
breq L108
cpi R24,3
ldi R30,0
cpc R25,R30
breq L110
cpi R24,4
ldi R30,0
cpc R25,R30
breq L112
cpi R24,5
ldi R30,0
cpc R25,R30
breq L114
cpi R24,6
ldi R30,0
cpc R25,R30
breq L116
cpi R24,7
ldi R30,0
cpc R25,R30
breq L118
rjmp L103
X34:
.dbline 214
; {
L106:
.dbline 215
; case 1:LCD_write_string(0,1,"monday");break;
ldi R24,<L107
ldi R25,>L107
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 215
rjmp L104
L108:
.dbline 216
; case 2:LCD_write_string(0,1,"tuesday");break;
ldi R24,<L109
ldi R25,>L109
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 216
rjmp L104
L110:
.dbline 217
; case 3:LCD_write_string(0,1,"wednesday");break;
ldi R24,<L111
ldi R25,>L111
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 217
rjmp L104
L112:
.dbline 218
; case 4:LCD_write_string(0,1,"thursday");break;
ldi R24,<L113
ldi R25,>L113
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 218
rjmp L104
L114:
.dbline 219
; case 5:LCD_write_string(0,1,"friday");break;
ldi R24,<L115
ldi R25,>L115
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 219
rjmp L104
L116:
.dbline 220
; case 6:LCD_write_string(0,1,"saturday");break;
ldi R24,<L117
ldi R25,>L117
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 220
rjmp L104
L118:
.dbline 221
; case 7:LCD_write_string(0,1,"sunday");break;
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 221
L103:
L104:
.dbline 224
; }
; //18b20
; a=init_1820(); //复位18b20
rcall _init_1820
std y+10,R16
.dbline 225
; write_1820(0xCC); // SKIP THE ROM
ldi R16,204
rcall _write_1820
.dbline 226
; write_1820(0x44); //启动温度转换
ldi R16,68
rcall _write_1820
.dbline 227
; for(i=0;i<200;i++) //每次转换需要延时200ms以上
clr R22
rjmp L123
L120:
.dbline 228
ldi R16,200
rcall _delay
L121:
.dbline 227
inc R22
L123:
.dbline 227
cpi R22,200
brlo L120
.dbline 229
rcall _init_1820
std y+10,R16
.dbline 230
ldi R16,204
rcall _write_1820
.dbline 231
ldi R16,190
rcall _write_1820
.dbline 232
rcall _read_1820
mov R20,R16
.dbline 233
rcall _read_1820
mov R14,R16
.dbline 234
mov R10,R20
.dbline 235
mov R24,R10
andi R24,15
mov R10,R24
.dbline 236
mov R24,R20
swap R24
andi R24,#0x0F
mov R20,R24
.dbline 237
mov R24,R14
andi R24,#0x0F
swap R24
mov R14,R24
.dbline 238
mov R12,R20
or R12,R24
.dbline 239
ldi R17,10
mov R16,R12
rcall div8u
sts _temh_d,R16
.dbline 240
mov R18,R10
clr R19
ldi R16,6
ldi R17,0
rcall mpy16s
ldi R18,10
ldi R19,0
rcall div16s
sts _temm_d,R16
.dbline 241
ldi R17,10
mov R16,R12
rcall mod8u
sts _teml_d,R16
.dbline 242
ldi R16,200
rcall _delay
.dbline 243
ldi R18,1
ldi R16,10
rcall _LCD_set_xy
.dbline 244
lds R16,_temh_d
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 245
ldi R18,1
ldi R16,11
rcall _LCD_set_xy
.dbline 246
lds R16,_teml_d
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 247
ldi R18,1
ldi R16,12
rcall _LCD_set_xy
.dbline 248
ldi R16,46
rcall _LCD_write_char
.dbline 249
ldi R18,1
ldi R16,13
rcall _LCD_set_xy
.dbline 250
lds R16,_temm_d
subi R16,208 ; addi 48
rcall _LCD_write_char
.dbline 251
ldi R24,<L124
ldi R25,>L124
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,14
rcall _LCD_write_string
.dbline 252
L101:
.dbline 171
rjmp L100
X35:
.dbline -2
L99:
adiw R28,13
.dbline 0 ; func end
ret
.dbsym l a 10 c
.dbsym r temm 10 c
.dbsym r count 12 c
.dbsym r temh 14 c
.dbsym r teml 20 c
.dbsym l th 9 c
.dbsym l tl 8 c
.dbsym l s 7 c
.dbsym r i 22 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
_temm_d::
.blkb 1
.dbsym e temm_d _temm_d c
_teml_d::
.blkb 1
.dbsym e teml_d _teml_d c
_temh_d::
.blkb 1
.dbsym e temh_d _temh_d c
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L124:
.blkb 3
.area idata
.byte 96,'C,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L119:
.blkb 7
.area idata
.byte 's,'u,'n,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L117:
.blkb 9
.area idata
.byte 's,'a,'t,'u,'r,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L115:
.blkb 7
.area idata
.byte 'f,'r,'i,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L113:
.blkb 9
.area idata
.byte 't,'h,'u,'r,'s,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L111:
.blkb 10
.area idata
.byte 'w,'e,'d,'n,'e,'s,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L109:
.blkb 8
.area idata
.byte 't,'u,'e,'s,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L107:
.blkb 7
.area idata
.byte 'm,'o,'n,'d,'a,'y,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
L53:
.blkb 2
.area idata
.byte 's,0
.area data(ram, con, rel)
.dbfile D:\时钟芯片\1302\1302-162\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -