📄 feedis_spi.s
字号:
; //CLEAR_SS(); //PULL DOWN THE SS PIN
; //spi_sendbyte(PLAYCURRENT);
; //SET_SS(); //pull up the ss pin
;
; return 0;
clr R16
.dbline -2
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r ADD 20 i
.dbsym r num 20 c
.dbend
.dbfunc e ISDpowerdown _ISDpowerdown fV
.even
_ISDpowerdown::
.dbline -1
.dbline 139
; }
;
; void ISDpowerdown(void)
; {
.dbline 140
; CLEAR_SS();
cbi 0x18,0
.dbline 141
; spi_sendbyte(POWERDOWN);
ldi R16,16
xcall _spi_sendbyte
.dbline 142
; SET_SS();
sbi 0x18,0
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
L13:
.blkb 1
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
.dbfunc e ISDmonitor _ISDmonitor fc
.dbsym s temp L13 c
; temp1 -> R20
.even
_ISDmonitor::
xcall push_gset1
.dbline -1
.dbline 145
; }
; uchar ISDmonitor(void)
; {
.dbline 152
; static uchar temp ;
;
; //static uchar round ;
; //if(ISDstatus & 1)
; //{
;
; if(ISDstatus & 0x02) //如果上一句还未讲完,不能说话
lds R2,_ISDstatus
sbrs R2,1
rjmp L14
.dbline 153
; {
.dbline 156
; //countwait++;
; //if(countwait < 150)
; return 0;
clr R16
xjmp L12
L14:
.dbline 161
; //countwait = 0;
; //ISDstatus &= ~0x02;
; //SPEAK = 1;
; }
; ISDstatus |= 0x02;
lds R24,_ISDstatus
ori R24,2
sts _ISDstatus,R24
.dbline 162
; if((ISDstatus & 0xe0) == 0xe0)
lds R24,_ISDstatus
andi R24,224
cpi R24,224
brne L16
.dbline 163
; {
.dbline 165
;
; ISDplay(34 + ISDmoney[4] ); //播放"你好,几型车"
lds R16,_ISDmoney+4
subi R16,222 ; addi 34
xcall _ISDplay
.dbline 167
; //ISDplay(39); //播放"你好,几型车"
; ISDstatus &= 0x1f;
lds R24,_ISDstatus
andi R24,31
sts _ISDstatus,R24
.dbline 168
; ISDstatus |= 0xc0;
lds R24,_ISDstatus
ori R24,192
sts _ISDstatus,R24
.dbline 170
;
; return 0;
clr R16
xjmp L12
L16:
.dbline 172
; }
; if((ISDstatus & 0xe0) == 0xc0)
lds R24,_ISDstatus
andi R24,224
cpi R24,192
brne L19
.dbline 173
; {
.dbline 175
; //ISDstatus |= 0x02;
; ISDplay(20); //播放"请交"
ldi R16,20
xcall _ISDplay
.dbline 176
; ISDstatus &= 0x1f;
lds R24,_ISDstatus
andi R24,31
sts _ISDstatus,R24
.dbline 177
; ISDstatus |= 0xa0;
lds R24,_ISDstatus
ori R24,160
sts _ISDstatus,R24
.dbline 179
;
; return 0;
clr R16
xjmp L12
L19:
.dbline 181
; }
; if((ISDstatus & 0xe0) == 0xa0)
lds R24,_ISDstatus
andi R24,224
cpi R24,160
breq X2
xjmp L21
X2:
.dbline 182
; {
.dbline 184
; uchar temp1;
; if(temp != 4)
lds R24,L13
cpi R24,4
breq L23
.dbline 185
; temp = (ISDstatus&0x18)>> 3;
lds R24,_ISDstatus
andi R24,24
lsr R24
lsr R24
lsr R24
sts L13,R24
L23:
.dbline 186
; switch(temp)
lds R20,L13
clr R21
cpi R20,0
cpc R20,R21
brne X3
xjmp L61
X3:
X0:
cpi R20,1
ldi R30,0
cpc R21,R30
brne X4
xjmp L50
X4:
cpi R20,2
ldi R30,0
cpc R21,R30
brne X5
xjmp L39
X5:
cpi R20,3
ldi R30,0
cpc R21,R30
breq L28
cpi R20,4
ldi R30,0
cpc R21,R30
brne X6
xjmp L64
X6:
xjmp L26
X1:
.dbline 187
; {
L28:
.dbline 190
;
; case 3:
; ISDplay(ISDmoney[temp]+82);
ldi R24,<_ISDmoney
ldi R25,>_ISDmoney
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
subi R16,174 ; addi 82
xcall _ISDplay
.dbline 191
; temp1 = 0;
clr R20
xjmp L30
L29:
.dbline 193
; while(temp1 < 3)
; {
.dbline 194
; if(!ISDmoney[temp-1])
ldi R24,<_ISDmoney-1
ldi R25,>_ISDmoney-1
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L32
.dbline 195
; {
.dbline 197
;
; temp--;
lds R24,L13
subi R24,1
sts L13,R24
.dbline 199
;
; }
xjmp L33
L32:
.dbline 201
; else
; {
.dbline 202
; ISDstatus &= 0b11100111;
lds R24,_ISDstatus
andi R24,231
sts _ISDstatus,R24
.dbline 203
; ISDstatus += (--temp) << 3;
lds R24,L13
subi R24,1
mov R2,R24
sts L13,R2
lsl R2
lsl R2
lsl R2
lds R3,_ISDstatus
add R3,R2
sts _ISDstatus,R3
.dbline 204
; if((temp1 > 0) )
clr R2
cp R2,R20
brlo X7
xjmp L26
X7:
.dbline 205
; temp = 4;
ldi R24,4
sts L13,R24
.dbline 206
; break;
xjmp L26
L33:
.dbline 208
; }
; temp1++;
inc R20
.dbline 209
; if(temp1 == 3)
cpi R20,3
brne L37
.dbline 210
; {
.dbline 211
; ISDstatus &= 0x1f;
lds R24,_ISDstatus
andi R24,31
sts _ISDstatus,R24
.dbline 212
; ISDstatus |= 0x80;
lds R24,_ISDstatus
ori R24,128
sts _ISDstatus,R24
.dbline 213
; SPEAK = 0;
clr R2
sts _SPEAK,R2
.dbline 214
; }
L37:
.dbline 215
L30:
.dbline 192
cpi R20,3
brsh X8
xjmp L29
X8:
.dbline 217
; }
;
; break;
xjmp L26
L39:
.dbline 219
; case 2:
; ISDplay(ISDmoney[temp]+73);
ldi R24,<_ISDmoney
ldi R25,>_ISDmoney
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
subi R16,183 ; addi 73
xcall _ISDplay
.dbline 220
; temp1 = 0;
clr R20
xjmp L41
L40:
.dbline 222
; while(temp1 < 2)
; {
.dbline 223
; if(!ISDmoney[temp-1])
ldi R24,<_ISDmoney-1
ldi R25,>_ISDmoney-1
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L43
.dbline 224
; {
.dbline 226
;
; temp--;
lds R24,L13
subi R24,1
sts L13,R24
.dbline 228
;
; }
xjmp L44
L43:
.dbline 230
; else
; {
.dbline 231
; ISDstatus &= 0b11100111;
lds R24,_ISDstatus
andi R24,231
sts _ISDstatus,R24
.dbline 232
; ISDstatus += (--temp) << 3;
lds R24,L13
subi R24,1
mov R2,R24
sts L13,R2
lsl R2
lsl R2
lsl R2
lds R3,_ISDstatus
add R3,R2
sts _ISDstatus,R3
.dbline 233
; if((temp1 > 0) )
clr R2
cp R2,R20
brlo X9
xjmp L26
X9:
.dbline 234
; temp = 4;
ldi R24,4
sts L13,R24
.dbline 235
; break;
xjmp L26
L44:
.dbline 237
; }
; temp1++;
inc R20
.dbline 238
; if(temp1 == 2)
cpi R20,2
brne L48
.dbline 239
; {
.dbline 240
; ISDstatus &= 0x1f;
lds R24,_ISDstatus
andi R24,31
sts _ISDstatus,R24
.dbline 241
; ISDstatus |= 0x80;
lds R24,_ISDstatus
ori R24,128
sts _ISDstatus,R24
.dbline 242
; SPEAK = 0;
clr R2
sts _SPEAK,R2
.dbline 243
; }
L48:
.dbline 245
L41:
.dbline 221
cpi R20,2
brsh X10
xjmp L40
X10:
.dbline 246
;
; }
; break;
xjmp L26
L50:
.dbline 248
; case 1:
; ISDplay(ISDmoney[temp]+64);
ldi R24,<_ISDmoney
ldi R25,>_ISDmoney
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
subi R16,192 ; addi 64
xcall _ISDplay
.dbline 249
; temp1 = 0;
clr R20
xjmp L52
L51:
.dbline 251
; while(temp1 < 1)
; {
.dbline 252
; if(!ISDmoney[temp-1])
ldi R24,<_ISDmoney-1
ldi R25,>_ISDmoney-1
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L54
.dbline 253
; {
.dbline 255
;
; temp--;
lds R24,L13
subi R24,1
sts L13,R24
.dbline 257
;
; }
xjmp L55
L54:
.dbline 259
; else
; {
.dbline 260
; ISDstatus &= 0b11100111;
lds R24,_ISDstatus
andi R24,231
sts _ISDstatus,R24
.dbline 261
; ISDstatus += (--temp) << 3;
lds R24,L13
subi R24,1
mov R2,R24
sts L13,R2
lsl R2
lsl R2
lsl R2
lds R3,_ISDstatus
add R3,R2
sts _ISDstatus,R3
.dbline 262
; if((temp1 > 0) )
clr R2
cp R2,R20
brlo X11
xjmp L26
X11:
.dbline 263
; temp = 4;
ldi R24,4
sts L13,R24
.dbline 264
; break;
xjmp L26
L55:
.dbline 266
; }
; temp1++;
inc R20
.dbline 267
; if(temp1 == 1)
cpi R20,1
brne L59
.dbline 268
; {
.dbline 269
; ISDstatus &= 0x1f;
lds R24,_ISDstatus
andi R24,31
sts _ISDstatus,R24
.dbline 270
; ISDstatus |= 0x80;
lds R24,_ISDstatus
ori R24,128
sts _ISDstatus,R24
.dbline 271
; SPEAK = 0;
clr R2
sts _SPEAK,R2
.dbline 272
; }
L59:
.dbline 273
L52:
.dbline 250
cpi R20,1
brsh X12
xjmp L51
X12:
.dbline 274
; }
; break;
xjmp L26
L61:
.dbline 276
; case 0:
; if(ISDmoney[temp])
ldi R24,<_ISDmoney
ldi R25,>_ISDmoney
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
breq L62
.dbline 277
; ISDplay(ISDmoney[temp]+54);
lds R30,L13
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
subi R16,202 ; addi 54
xcall _ISDplay
xjmp L63
L62:
.dbline 279
; else
; ISDstatus &= 0xfd;
lds R24,_ISDstatus
andi R24,253
sts _ISDstatus,R24
L63:
.dbline 280
; ISDstatus &= 0x1f;
lds R24,_ISDstatus
andi R24,31
sts _ISDstatus,R24
.dbline 281
; ISDstatus |= 0x80;
lds R24,_ISDstatus
ori R24,128
sts _ISDstatus,R24
.dbline 282
; SPEAK = 0;
clr R2
sts _SPEAK,R2
.dbline 283
; break;
xjmp L26
L64:
.dbline 285
; case 4:
; ISDplay(54);
ldi R16,54
xcall _ISDplay
.dbline 286
; temp = 5;
ldi R24,5
sts L13,R24
.dbline 287
; break;
.dbline 289
; default:
; break;
L26:
.dbline 294
; }
; //ISDstatus |= 0x02;
;
; //ISDstatus |= 0x02;
; return 0;
clr R16
xjmp L12
L21:
.dbline 296
; }
; if((ISDstatus & 0xe0) == 0x80 && SPEAK)
lds R24,_ISDstatus
andi R24,224
cpi R24,128
brne L65
lds R2,_SPEAK
tst R2
breq L65
.dbline 297
; {
.dbline 298
; ISDplay(44); //
ldi R16,44
xcall _ISDplay
.dbline 299
; ISDstatus &= 0xfc;
lds R24,_ISDstatus
andi R24,252
sts _ISDstatus,R24
.dbline 301
;
; }
L65:
.dbline 303
; //if(ISDstatus & 0x04) //paly the money voice
; {
.dbline 318
; /*if((ISDstatus & 0xe0) == 0xe0) //play "thank you"
; {
; ISDplay(THANKYOU);
; ISDstatus &= 0b11111110; //clear the bit 0,then wait for the end of this voice
; return 0;
; }
; temp = (ISDstatus>>3) & 0x03;
; ISDstatus &= 0b00000011; //clear the bit 2-bit 7
; ISDstatus += temp << 2 + 3;
;
;
;
; ISDstatus |= 0b00000010; //set the busy bit
; */
; }
.dbline -2
L12:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp1 20 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
_ISDmoney::
.blkb 5
.dbsym e ISDmoney _ISDmoney A[5:5]c
_ISDstatus::
.blkb 1
.dbsym e ISDstatus _ISDstatus c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -