📄 ac15-1.s
字号:
nop
.dbline 176
nop
.dbline 176
nop
.dbline 176
nop
.dbline 176
nop
.dbline 176
nop
.dbline 176
nop
.dbline 176
nop
.dbline 176
.dbline 177
; SCL_0;Some_NOP();
cbi 0x15,0
.dbline 177
.dbline 177
nop
.dbline 177
nop
.dbline 177
nop
.dbline 177
nop
.dbline 177
nop
.dbline 177
nop
.dbline 177
nop
.dbline 177
nop
.dbline 177
.dbline -2
L46:
.dbline 0 ; func end
ret
.dbend
.dbfunc e shift8 _shift8 fV
; j -> R20
; i -> R22
; a -> R16
.even
_shift8::
xcall push_gset2
.dbline -1
.dbline 181
; }
; //*************写入8位子函数*************
; void shift8(char a)
; {
.dbline 183
; uchar i,j;
; DDRC=0x03;
ldi R24,3
out 0x14,R24
.dbline 184
; com_data=a;
sts _com_data,R16
.dbline 185
; for(i=0;i<8;i++)
clr R22
xjmp L51
L48:
.dbline 186
; {
.dbline 187
; j=com_data&0x80;
lds R20,_com_data
andi R20,128
.dbline 188
; if(j==0)SDA_0;
brne L52
.dbline 188
cbi 0x15,1
xjmp L53
L52:
.dbline 189
; else SDA_1;
sbi 0x15,1
L53:
.dbline 191
sbi 0x15,0
.dbline 191
.dbline 191
nop
.dbline 191
nop
.dbline 191
nop
.dbline 191
nop
.dbline 191
nop
.dbline 191
nop
.dbline 191
nop
.dbline 191
nop
.dbline 191
.dbline 192
cbi 0x15,0
.dbline 192
.dbline 192
nop
.dbline 192
nop
.dbline 192
nop
.dbline 192
nop
.dbline 192
nop
.dbline 192
nop
.dbline 192
nop
.dbline 192
nop
.dbline 192
.dbline 193
lds R2,_com_data
lsl R2
sts _com_data,R2
.dbline 194
L49:
.dbline 185
inc R22
L51:
.dbline 185
cpi R22,8
brlo L48
.dbline -2
L47:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 22 c
.dbsym r a 16 c
.dbend
.dbfunc e rd_24c01 _rd_24c01 fc
; command -> R20
; i -> R20
; a -> R22
.even
_rd_24c01::
xcall push_gset2
mov R22,R16
.dbline -1
.dbline 198
;
; SCL_1;Some_NOP();
; SCL_0;Some_NOP();
; com_data=com_data<<1;
; }
; }
; //**************读24C01A中a地址单元的数据************
; uchar rd_24c01(char a)
; {
.dbline 200
; uchar i,command;
; DDRC=0x03;
ldi R24,3
out 0x14,R24
.dbline 201
; SDA_1;Some_NOP();
sbi 0x15,1
.dbline 201
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
.dbline 202
; SCL_0;Some_NOP();
cbi 0x15,0
.dbline 202
.dbline 202
nop
.dbline 202
nop
.dbline 202
nop
.dbline 202
nop
.dbline 202
nop
.dbline 202
nop
.dbline 202
nop
.dbline 202
nop
.dbline 202
.dbline 203
; start();
xcall _start
.dbline 204
; command=160;
ldi R20,160
.dbline 205
; shift8(command);
mov R16,R20
xcall _shift8
.dbline 206
; ack();
xcall _ack
.dbline 207
; shift8(a);
mov R16,R22
xcall _shift8
.dbline 208
; ack();
xcall _ack
.dbline 209
; start();
xcall _start
.dbline 210
; command=161;
ldi R20,161
.dbline 211
; shift8(command);
mov R16,R20
xcall _shift8
.dbline 212
; ack();
xcall _ack
.dbline 214
;
; SDA_1;Some_NOP();
sbi 0x15,1
.dbline 214
.dbline 214
nop
.dbline 214
nop
.dbline 214
nop
.dbline 214
nop
.dbline 214
nop
.dbline 214
nop
.dbline 214
nop
.dbline 214
nop
.dbline 214
.dbline 215
; for(i=0;i<8;i++)
clr R20
xjmp L58
L55:
.dbline 216
; {
.dbline 217
; DDRC=0x01;
ldi R24,1
out 0x14,R24
.dbline 218
; com_data=com_data<<1;
lds R2,_com_data
lsl R2
sts _com_data,R2
.dbline 219
; SCL_1;Some_NOP();
sbi 0x15,0
.dbline 219
.dbline 219
nop
.dbline 219
nop
.dbline 219
nop
.dbline 219
nop
.dbline 219
nop
.dbline 219
nop
.dbline 219
nop
.dbline 219
nop
.dbline 219
.dbline 220
; if(PIN_SDA==0)com_data&=0xfe;
sbic 0x13,1
rjmp L59
.dbline 220
mov R24,R2
andi R24,254
sts _com_data,R24
xjmp L60
L59:
.dbline 221
; else com_data|=0x01;
lds R24,_com_data
ori R24,1
sts _com_data,R24
L60:
.dbline 222
cbi 0x15,0
.dbline 222
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
.dbline 223
L56:
.dbline 215
inc R20
L58:
.dbline 215
cpi R20,8
brlo L55
.dbline 224
; SCL_0;Some_NOP();
; }
; stop();
xcall _stop
.dbline 225
; return(com_data);
lds R16,_com_data
.dbline -2
L54:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r command 20 c
.dbsym r i 20 c
.dbsym r a 22 c
.dbend
.dbfunc e wr_24c01 _wr_24c01 fV
; command -> R10
; b -> R20
; a -> R22
.even
_wr_24c01::
xcall push_gset3
mov R20,R18
mov R22,R16
.dbline -1
.dbline 229
; }
; //********将RAM中b地址单元的数据写入24C01A中a地址单元中***********
; void wr_24c01(char a,char b)
; {
.dbline 231
; uchar command;
; DDRC=0x03;
ldi R24,3
out 0x14,R24
.dbline 232
; SDA_1;Some_NOP();
sbi 0x15,1
.dbline 232
.dbline 232
nop
.dbline 232
nop
.dbline 232
nop
.dbline 232
nop
.dbline 232
nop
.dbline 232
nop
.dbline 232
nop
.dbline 232
nop
.dbline 232
.dbline 233
; SCL_0;Some_NOP();
cbi 0x15,0
.dbline 233
.dbline 233
nop
.dbline 233
nop
.dbline 233
nop
.dbline 233
nop
.dbline 233
nop
.dbline 233
nop
.dbline 233
nop
.dbline 233
nop
.dbline 233
.dbline 234
; start();
xcall _start
.dbline 235
; command=160;
ldi R24,160
mov R10,R24
.dbline 236
; shift8(command);
mov R16,R24
xcall _shift8
.dbline 237
; ack();
xcall _ack
.dbline 238
; shift8(a);
mov R16,R22
xcall _shift8
.dbline 239
; ack();
xcall _ack
.dbline 240
; shift8(b);
mov R16,R20
xcall _shift8
.dbline 241
; ack();
xcall _ack
.dbline 242
; stop();
xcall _stop
.dbline 243
; Some_NOP();
.dbline 243
nop
.dbline 243
nop
.dbline 243
nop
.dbline 243
nop
.dbline 243
nop
.dbline 243
nop
.dbline 243
nop
.dbline 243
nop
.dbline 243
.dbline -2
L61:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r command 10 c
.dbsym r b 20 c
.dbsym r a 22 c
.dbend
.dbfunc e delay_iic _delay_iic fV
; i -> R20,R21
; n -> R16,R17
.even
_delay_iic::
xcall push_gset1
.dbline -1
.dbline 247
; }
; //**************延时子函数***********
; void delay_iic(int n)
; {
.dbline 249
ldi R20,1
ldi R21,0
xjmp L66
L63:
.dbline 249
.dbline 249
.dbline 249
L64:
.dbline 249
subi R20,255 ; offset = 1
sbci R21,255
L66:
.dbline 249
; int i;
; for(i=1;i<n;i++){;}
cp R20,R16
cpc R21,R17
brlt L63
.dbline -2
L62:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 I
.dbsym r n 16 I
.dbend
.dbfunc e main _main fV
; key_val -> R10
; rd_val -> R22
; wr_val -> R20
.even
_main::
sbiw R28,2
.dbline -1
.dbline 253
; }
; //******************************************
; void main(void)
; {
.dbline 254
; uchar key_val,wr_val=0,rd_val=0;
clr R20
.dbline 254
clr R22
.dbline 255
; port_init();
xcall _port_init
.dbline 256
; Delay_nms(400);
ldi R16,400
ldi R17,1
xcall _Delay_nms
.dbline 257
; InitLcd();
xcall _InitLcd
.dbline 258
; LcdWriteCommand(0x01,1);
ldi R18,1
ldi R16,1
xcall _LcdWriteCommand
.dbline 259
; LcdWriteCommand(0x0c,1);
ldi R18,1
ldi R16,12
xcall _LcdWriteCommand
.dbline 260
; ePutstr(0,0,str0);
ldi R24,<_str0
ldi R25,>_str0
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _ePutstr
.dbline 261
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 262
; ePutstr(0,1,str1);
ldi R24,<_str1
ldi R25,>_str1
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
xcall _ePutstr
.dbline 263
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
xjmp L69
L68:
.dbline 266
; /********************************************/
; while(1)
; {
.dbline 267
; DisplayOneChar(9,0,wr_val/100+0x30);
ldi R17,100
mov R16,R20
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
clr R18
ldi R16,9
xcall _DisplayOneChar
.dbline 268
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 269
; DisplayOneChar(10,0,(wr_val/10)%10+0x30);
ldi R17,10
mov R16,R20
xcall div8u
ldi R17,10
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
clr R18
ldi R16,10
xcall _DisplayOneChar
.dbline 270
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 271
; DisplayOneChar(11,0,wr_val%10+0x30);
ldi R17,10
mov R16,R20
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
clr R18
ldi R16,11
xcall _DisplayOneChar
.dbline 272
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 274
;
; DisplayOneChar(8,1,rd_val/100+0x30);
ldi R17,100
mov R16,R22
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
ldi R18,1
ldi R16,8
xcall _DisplayOneChar
.dbline 275
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 276
; DisplayOneChar(9,1,(rd_val/10%10)+0x30);
ldi R17,10
mov R16,R22
xcall div8u
ldi R17,10
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
ldi R18,1
ldi R16,9
xcall _DisplayOneChar
.dbline 277
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 278
; DisplayOneChar(10,1,rd_val%10+0x30);
ldi R17,10
mov R16,R22
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
ldi R18,1
ldi R16,10
xcall _DisplayOneChar
.dbline 279
; Delay_nms(10);
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 281
;
; key_val=scan_key();
xcall _scan_key
mov R10,R16
.dbline 282
; switch(key_val)
mov R12,R10
clr R13
movw R24,R12
cpi R24,191
ldi R30,0
cpc R25,R30
breq L80
ldi R24,191
cp R24,R12
cpc R25,R13
brlt L83
L82:
movw R24,R12
cpi R24,127
ldi R30,0
cpc R25,R30
breq L81
xjmp L72
L83:
movw R24,R12
cpi R24,223
ldi R30,0
cpc R25,R30
breq L77
cpi R24,223
ldi R30,0
cpc R25,R30
brlt L72
L84:
movw R24,R12
cpi R24,239
ldi R30,0
cpc R25,R30
breq L74
xjmp L72
X0:
.dbline 283
; {
L74:
.dbline 284
; case 0xef:if(wr_val<255)wr_val++;break;
cpi R20,255
brsh L72
.dbline 284
inc R20
.dbline 284
xjmp L72
L77:
.dbline 285
; case 0xdf:if(wr_val>0)wr_val--;break;
clr R2
cp R2,R20
brsh L72
.dbline 285
dec R20
.dbline 285
xjmp L72
L80:
.dbline 286
; case 0xbf:wr_24c01(10,wr_val);delay_iic(2500);
mov R18,R20
ldi R16,10
xcall _wr_24c01
.dbline 286
ldi R16,2500
ldi R17,9
xcall _delay_iic
.dbline 287
; DisplayOneChar(15,0,0xef);break;
ldi R24,239
std y+0,R24
clr R18
ldi R16,15
xcall _DisplayOneChar
.dbline 287
xjmp L72
L81:
.dbline 288
; case 0x7f:rd_val=rd_24c01(10);delay_iic(2500);
ldi R16,10
xcall _rd_24c01
mov R22,R16
.dbline 288
ldi R16,2500
ldi R17,9
xcall _delay_iic
.dbline 289
; DisplayOneChar(15,1,0xef);break;
ldi R24,239
std y+0,R24
ldi R18,1
ldi R16,15
xcall _DisplayOneChar
.dbline 289
.dbline 290
; default:break;
L72:
.dbline 292
ldi R16,200
ldi R17,0
xcall _Delay_nms
.dbline 293
ldi R24,32
std y+0,R24
clr R18
ldi R16,15
xcall _DisplayOneChar
.dbline 293
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 294
ldi R24,32
std y+0,R24
ldi R18,1
ldi R16,15
xcall _DisplayOneChar
.dbline 294
ldi R16,10
ldi R17,0
xcall _Delay_nms
.dbline 296
L69:
.dbline 265
xjmp L68
X1:
.dbline -2
L67:
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r key_val 10 c
.dbsym r rd_val 22 c
.dbsym r wr_val 20 c
.dbend
.area bss(ram, con, rel)
.dbfile d:\MYDOCU~1\ac15-1\ac15-1.c
_cnt::
.blkb 1
.dbsym e cnt _cnt c
_com_data::
.blkb 1
.dbsym e com_data _com_data c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -