📄 feedis_spi.s
字号:
.module feedis_spi.c
.area data(ram, con, rel)
_voiceadd::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.blkb 2
.area idata
.word 7
.area data(ram, con, rel)
.blkb 2
.area idata
.word 14
.area data(ram, con, rel)
.blkb 2
.area idata
.word 21
.area data(ram, con, rel)
.blkb 2
.area idata
.word 28
.area data(ram, con, rel)
.blkb 2
.area idata
.word 36
.area data(ram, con, rel)
.blkb 2
.area idata
.word 43
.area data(ram, con, rel)
.blkb 2
.area idata
.word 51
.area data(ram, con, rel)
.blkb 2
.area idata
.word 59
.area data(ram, con, rel)
.blkb 2
.area idata
.word 67
.area data(ram, con, rel)
.blkb 2
.area idata
.word 75
.area data(ram, con, rel)
.blkb 2
.area idata
.word 84
.area data(ram, con, rel)
.blkb 2
.area idata
.word 92
.area data(ram, con, rel)
.blkb 2
.area idata
.word 100
.area data(ram, con, rel)
.blkb 2
.area idata
.word 108
.area data(ram, con, rel)
.blkb 2
.area idata
.word 116
.area data(ram, con, rel)
.blkb 2
.area idata
.word 124
.area data(ram, con, rel)
.blkb 2
.area idata
.word 132
.area data(ram, con, rel)
.blkb 2
.area idata
.word 140
.area data(ram, con, rel)
.blkb 2
.area idata
.word 148
.area data(ram, con, rel)
.blkb 2
.area idata
.word 153
.area data(ram, con, rel)
.blkb 2
.area idata
.word 157
.area data(ram, con, rel)
.blkb 2
.area idata
.word 162
.area data(ram, con, rel)
.blkb 2
.area idata
.word 167
.area data(ram, con, rel)
.blkb 2
.area idata
.word 172
.area data(ram, con, rel)
.blkb 2
.area idata
.word 177
.area data(ram, con, rel)
.blkb 2
.area idata
.word 182
.area data(ram, con, rel)
.blkb 2
.area idata
.word 187
.area data(ram, con, rel)
.blkb 2
.area idata
.word 192
.area data(ram, con, rel)
.blkb 2
.area idata
.word 197
.area data(ram, con, rel)
.blkb 2
.area idata
.word 202
.area data(ram, con, rel)
.blkb 2
.area idata
.word 207
.area data(ram, con, rel)
.blkb 2
.area idata
.word 212
.area data(ram, con, rel)
.blkb 2
.area idata
.word 217
.area data(ram, con, rel)
.blkb 2
.area idata
.word 222
.area data(ram, con, rel)
.blkb 2
.area idata
.word 227
.area data(ram, con, rel)
.blkb 2
.area idata
.word 235
.area data(ram, con, rel)
.blkb 2
.area idata
.word 243
.area data(ram, con, rel)
.blkb 2
.area idata
.word 251
.area data(ram, con, rel)
.blkb 2
.area idata
.word 259
.area data(ram, con, rel)
.blkb 2
.area idata
.word 267
.area data(ram, con, rel)
.blkb 2
.area idata
.word 275
.area data(ram, con, rel)
.blkb 2
.area idata
.word 284
.area data(ram, con, rel)
.blkb 2
.area idata
.word 293
.area data(ram, con, rel)
.blkb 2
.area idata
.word 301
.area data(ram, con, rel)
.blkb 2
.area idata
.word 304
.area data(ram, con, rel)
.blkb 2
.area idata
.word 308
.area data(ram, con, rel)
.blkb 2
.area idata
.word 312
.area data(ram, con, rel)
.blkb 2
.area idata
.word 316
.area data(ram, con, rel)
.blkb 2
.area idata
.word 320
.area data(ram, con, rel)
.blkb 2
.area idata
.word 324
.area data(ram, con, rel)
.blkb 2
.area idata
.word 328
.area data(ram, con, rel)
.blkb 2
.area idata
.word 332
.area data(ram, con, rel)
.blkb 2
.area idata
.word 336
.area data(ram, con, rel)
.blkb 2
.area idata
.word 340
.area data(ram, con, rel)
.blkb 2
.area idata
.word 342
.area data(ram, con, rel)
.blkb 2
.area idata
.word 344
.area data(ram, con, rel)
.blkb 2
.area idata
.word 346
.area data(ram, con, rel)
.blkb 2
.area idata
.word 349
.area data(ram, con, rel)
.blkb 2
.area idata
.word 352
.area data(ram, con, rel)
.blkb 2
.area idata
.word 355
.area data(ram, con, rel)
.blkb 2
.area idata
.word 357
.area data(ram, con, rel)
.blkb 2
.area idata
.word 360
.area data(ram, con, rel)
.blkb 2
.area idata
.word 362
.area data(ram, con, rel)
.blkb 2
.area idata
.word 365
.area data(ram, con, rel)
.blkb 2
.area idata
.word 368
.area data(ram, con, rel)
.blkb 2
.area idata
.word 372
.area data(ram, con, rel)
.blkb 2
.area idata
.word 376
.area data(ram, con, rel)
.blkb 2
.area idata
.word 380
.area data(ram, con, rel)
.blkb 2
.area idata
.word 384
.area data(ram, con, rel)
.blkb 2
.area idata
.word 388
.area data(ram, con, rel)
.blkb 2
.area idata
.word 392
.area data(ram, con, rel)
.blkb 2
.area idata
.word 396
.area data(ram, con, rel)
.blkb 2
.area idata
.word 400
.area data(ram, con, rel)
.blkb 2
.area idata
.word 404
.area data(ram, con, rel)
.blkb 2
.area idata
.word 408
.area data(ram, con, rel)
.blkb 2
.area idata
.word 412
.area data(ram, con, rel)
.blkb 2
.area idata
.word 416
.area data(ram, con, rel)
.blkb 2
.area idata
.word 420
.area data(ram, con, rel)
.blkb 2
.area idata
.word 424
.area data(ram, con, rel)
.blkb 2
.area idata
.word 428
.area data(ram, con, rel)
.blkb 2
.area idata
.word 432
.area data(ram, con, rel)
.blkb 2
.area idata
.word 436
.area data(ram, con, rel)
.blkb 2
.area idata
.word 440
.area data(ram, con, rel)
.blkb 2
.area idata
.word 444
.area data(ram, con, rel)
.blkb 2
.area idata
.word 448
.area data(ram, con, rel)
.blkb 2
.area idata
.word 452
.area data(ram, con, rel)
.blkb 2
.area idata
.word 456
.area data(ram, con, rel)
.blkb 2
.area idata
.word 460
.area data(ram, con, rel)
.blkb 2
.area idata
.word 464
.area data(ram, con, rel)
.blkb 2
.area idata
.word 468
.area data(ram, con, rel)
.blkb 2
.area idata
.word 472
.area data(ram, con, rel)
.blkb 2
.area idata
.word 476
.area data(ram, con, rel)
.blkb 2
.area idata
.word 480
.area data(ram, con, rel)
.blkb 2
.area idata
.word 484
.area data(ram, con, rel)
.blkb 2
.area idata
.word 489
.area data(ram, con, rel)
.blkb 2
.area idata
.word 494
.area data(ram, con, rel)
.blkb 2
.area idata
.word 499
.area data(ram, con, rel)
.blkb 2
.area idata
.word 504
.area data(ram, con, rel)
.blkb 2
.area idata
.word 508
.area data(ram, con, rel)
.blkb 2
.area idata
.word 513
.area data(ram, con, rel)
.blkb 2
.area idata
.word 518
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
.dbsym e voiceadd _voiceadd A[204:102]i
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
.dbfunc e spi_init _spi_init fV
.even
_spi_init::
xcall push_gset2
.dbline -1
.dbline 65
; #include <include.h>
;
; //volatile uchar countwait;
; volatile uchar ISDstatus;
;
; /*
; MSB LSB
; 0b 7 6 5 4 3 2 1 0
; setbit bit5-7 bit3-4 moeny wati_i voice on
;
; cleanbit the bigest moeny s_car ready voice off
; 00 x
; the 3 01 x*10
; bits are used 10 x*100
; store the 11 x*1000
; sequence of moeny voice and when it becomes 111 ,play "thank you".
;
; */
; uchar ISDmoney[5];
; /*
; ISDmoney[0] 个位
; ISDmoney[1] 十位
; ISDmoney[2] 百位
; ISDmoney[3] 千位
; ISDmoney[4] 车型
;
; */
; extern uchar SPEAK;
;
; //#pragma data:code
; unsigned int voiceadd[]={
; 0b000000000000,0b000000000111,0b000000001110,0b000000010101,
; 0b000000011100,0b000000100100,0b000000101011,0b000000110011,
; 0b000000111011,0b000001000011,0b000001001011,0b000001010100,
; 0b000001011100,0b000001100100,0b000001101100,0b000001110100,
; 0b000001111100,0b000010000100,0b000010001100,0b000010010100,
; 0b000010011001,0b000010011101,0b000010100010,0b000010100111,
; 0b000010101100,0b000010110001,0b000010110110,0b000010111011,
; 0b000011000000,0b000011000101,0b000011001010,0b000011001111,
; 0b000011010100,0b000011011001,0b000011011110,0b000011100011,
; 0b000011101011,0b000011110011,0b000011111011,0b000100000011,
; 0b000100001011,0b000100010011,0b000100011100,0b000100100101,
; 0b000100101101,0b000100110000,0b000100110100,0b000100111000,
; 0b000100111100,0b000101000000,0b000101000100,0b000101001000,
; 0b000101001100,0b000101010000,0b000101010100,0b000101010110,
; 0b000101011000,0b000101011010,0b000101011101,0b000101100000,
; 0b000101100011,0b000101100101,0b000101101000,0b000101101010,
; 0b000101101101,0b000101110000,0b000101110100,0b000101111000,
; 0b000101111100,0b000110000000,0b000110000100,0b000110001000,
; 0b000110001100,0b000110010000,0b000110010100,0b000110011000,
; 0b000110011100,0b000110100000,0b000110100100,0b000110101000,
; 0b000110101100,0b000110110000,0b000110110100,0b000110111000,
; 0b000110111100,0b000111000000,0b000111000100,0b000111001000,
; 0b000111001100,0b000111010000,0b000111010100,0b000111011000,
; 0b000111011100,0b000111100000,0b000111100100,0b000111101001,
; 0b000111101110,0b000111110011,0b000111111000,0b000111111100,
; 0b001000000001,0b001000000110
; };
; //#pragma data:data
;
; /***********************************************************************
; Init the hardware for SPI communication
; ***********************************************************************/
; void spi_init(void)
; {
.dbline 66
; SET_MOSI();
sbi 0x18,2
.dbline 67
; CLEAR_SCLK();
cbi 0x18,1
.dbline 68
; SET_SS();
sbi 0x18,0
.dbline 72
; //SET_SDI_TO_OUTPUT();
; //SET_SCLK_TO_OUTPUT();
; //SET_SDO_TO_INPUT();
; waitms(500);
ldi R16,244
ldi R17,1
ldi R18,0
ldi R19,0
xcall _waitms
.dbline -2
L2:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e spi_sendbyte _spi_sendbyte fV
; temp -> R22
; idx -> R20
; data -> R16
.even
_spi_sendbyte::
xcall push_gset2
.dbline -1
.dbline 79
; }
;
; /***********************************************************************
; Write one data byte to the SPI bus
; ***********************************************************************/
; void spi_sendbyte(unsigned char data)
; {
.dbline 80
; uchar idx = 0;
clr R20
.dbline 81
; uchar temp = 0;
clr R22
.dbline 82
; CLEAR_SCLK();
cbi 0x18,1
.dbline 83
; CLEAR_MOSI();
cbi 0x18,2
xjmp L5
L4:
.dbline 86
;
; while(idx < 8)
; {
.dbline 87
; CLEAR_SCLK();
cbi 0x18,1
.dbline 91
;
; //waitus(100);
; //for(temp = 0;temp < 130;temp++)
; NOP();
nop
.dbline 95
sbrs R16,0
rjmp L7
.dbline 95
sbi 0x18,2
xjmp L8
L7:
.dbline 95
; // NOP();
; // NOP();
; // NOP();
; if (data & 0x1) SET_MOSI(); else CLEAR_MOSI();
cbi 0x18,2
L8:
.dbline 96
lsr R16
.dbline 98
nop
.dbline 99
nop
.dbline 100
nop
.dbline 101
nop
.dbline 103
sbi 0x18,1
.dbline 105
nop
.dbline 108
inc R20
.dbline 109
L5:
.dbline 85
cpi R20,8
brlo L4
.dbline -2
L3:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp 22 c
.dbsym r idx 20 c
.dbsym r data 16 c
.dbend
.dbfunc e spi_sendint _spi_sendint fV
; datatemp -> R20
; data -> R22,R23
.even
_spi_sendint::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 112
; data >>= 1;
; //for(temp = 0;temp < 20;temp++)
; NOP();
; NOP();
; NOP();
; NOP();
;
; SET_SCLK();
; //for(temp = 0;temp <130;temp++)
; NOP();
;
; //waitus(200);
; idx++;
; }
; }
; void spi_sendint(uint data)
; {
.dbline 114
; uchar datatemp;
; datatemp = (uchar) data;
mov R20,R22
.dbline 115
; spi_sendbyte(datatemp);
mov R16,R20
xcall _spi_sendbyte
.dbline 116
; datatemp = (uchar)(data >> 8);
movw R20,R22
mov R20,R21
clr R21
.dbline 117
; spi_sendbyte(datatemp);
mov R16,R20
xcall _spi_sendbyte
.dbline -2
L9:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r datatemp 20 c
.dbsym r data 22 i
.dbend
.dbfunc e ISDplay _ISDplay fc
; ADD -> R20,R21
; num -> R20
.even
_ISDplay::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 121
; }
;
; unsigned char ISDplay(unsigned char num)
; {
.dbline 123
; uint ADD;
; CLEAR_SS(); //PULL DOWN THE SS PIN
cbi 0x18,0
.dbline 124
; spi_sendbyte(POWERUP);
ldi R16,32
xcall _spi_sendbyte
.dbline 125
; SET_SS(); //pull up the ss pin
sbi 0x18,0
.dbline 127
; //waitms(10);
; ADD = PLAYADD + voiceadd[num];
ldi R24,2
mul R24,R20
movw R30,R0
ldi R24,<_voiceadd
ldi R25,>_voiceadd
add R30,R24
adc R31,R25
ldd R20,z+0
ldd R21,z+1
subi R20,0 ; offset = 57344
sbci R21,32
.dbline 128
; CLEAR_SS(); //PULL DOWN THE SS PIN
cbi 0x18,0
.dbline 129
; spi_sendint(ADD);
movw R16,R20
xcall _spi_sendint
.dbline 130
; SET_SS(); //pull up the ss pin
sbi 0x18,0
.dbline 135
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -