📄 feedis_spi.lis
字号:
00AC C401 .word 452
.area data(ram, con, rel)
00AE .blkb 2
.area idata
00AE C801 .word 456
.area data(ram, con, rel)
00B0 .blkb 2
.area idata
00B0 CC01 .word 460
.area data(ram, con, rel)
00B2 .blkb 2
.area idata
00B2 D001 .word 464
.area data(ram, con, rel)
00B4 .blkb 2
.area idata
00B4 D401 .word 468
.area data(ram, con, rel)
00B6 .blkb 2
.area idata
00B6 D801 .word 472
.area data(ram, con, rel)
00B8 .blkb 2
.area idata
00B8 DC01 .word 476
.area data(ram, con, rel)
00BA .blkb 2
.area idata
00BA E001 .word 480
.area data(ram, con, rel)
00BC .blkb 2
.area idata
00BC E401 .word 484
.area data(ram, con, rel)
00BE .blkb 2
.area idata
00BE E901 .word 489
.area data(ram, con, rel)
00C0 .blkb 2
.area idata
00C0 EE01 .word 494
.area data(ram, con, rel)
00C2 .blkb 2
.area idata
00C2 F301 .word 499
.area data(ram, con, rel)
00C4 .blkb 2
.area idata
00C4 F801 .word 504
.area data(ram, con, rel)
00C6 .blkb 2
.area idata
00C6 FC01 .word 508
.area data(ram, con, rel)
00C8 .blkb 2
.area idata
00C8 0102 .word 513
.area data(ram, con, rel)
00CA .blkb 2
.area idata
00CA 0602 .word 518
.area data(ram, con, rel)
00CC .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
00CC .dbsym e voiceadd _voiceadd A[204:102]i
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
0000 .dbfunc e spi_init _spi_init fV
.even
0000 _spi_init::
0000 0E940000 xcall push_gset2
0004 .dbline -1
0004 .dbline 65
0004 ; #include <include.h>
0004 ;
0004 ; //volatile uchar countwait;
0004 ; volatile uchar ISDstatus;
0004 ;
0004 ; /*
0004 ; MSB LSB
0004 ; 0b 7 6 5 4 3 2 1 0
0004 ; setbit bit5-7 bit3-4 moeny wati_i voice on
0004 ;
0004 ; cleanbit the bigest moeny s_car ready voice off
0004 ; 00 x
0004 ; the 3 01 x*10
0004 ; bits are used 10 x*100
0004 ; store the 11 x*1000
0004 ; sequence of moeny voice and when it becomes 111 ,play "thank you".
0004 ;
0004 ; */
0004 ; uchar ISDmoney[5];
0004 ; /*
0004 ; ISDmoney[0] 个位
0004 ; ISDmoney[1] 十位
0004 ; ISDmoney[2] 百位
0004 ; ISDmoney[3] 千位
0004 ; ISDmoney[4] 车型
0004 ;
0004 ; */
0004 ; extern uchar SPEAK;
0004 ;
0004 ; //#pragma data:code
0004 ; unsigned int voiceadd[]={
0004 ; 0b000000000000,0b000000000111,0b000000001110,0b000000010101,
0004 ; 0b000000011100,0b000000100100,0b000000101011,0b000000110011,
0004 ; 0b000000111011,0b000001000011,0b000001001011,0b000001010100,
0004 ; 0b000001011100,0b000001100100,0b000001101100,0b000001110100,
0004 ; 0b000001111100,0b000010000100,0b000010001100,0b000010010100,
0004 ; 0b000010011001,0b000010011101,0b000010100010,0b000010100111,
0004 ; 0b000010101100,0b000010110001,0b000010110110,0b000010111011,
0004 ; 0b000011000000,0b000011000101,0b000011001010,0b000011001111,
0004 ; 0b000011010100,0b000011011001,0b000011011110,0b000011100011,
0004 ; 0b000011101011,0b000011110011,0b000011111011,0b000100000011,
0004 ; 0b000100001011,0b000100010011,0b000100011100,0b000100100101,
0004 ; 0b000100101101,0b000100110000,0b000100110100,0b000100111000,
0004 ; 0b000100111100,0b000101000000,0b000101000100,0b000101001000,
0004 ; 0b000101001100,0b000101010000,0b000101010100,0b000101010110,
0004 ; 0b000101011000,0b000101011010,0b000101011101,0b000101100000,
0004 ; 0b000101100011,0b000101100101,0b000101101000,0b000101101010,
0004 ; 0b000101101101,0b000101110000,0b000101110100,0b000101111000,
0004 ; 0b000101111100,0b000110000000,0b000110000100,0b000110001000,
0004 ; 0b000110001100,0b000110010000,0b000110010100,0b000110011000,
0004 ; 0b000110011100,0b000110100000,0b000110100100,0b000110101000,
0004 ; 0b000110101100,0b000110110000,0b000110110100,0b000110111000,
0004 ; 0b000110111100,0b000111000000,0b000111000100,0b000111001000,
0004 ; 0b000111001100,0b000111010000,0b000111010100,0b000111011000,
0004 ; 0b000111011100,0b000111100000,0b000111100100,0b000111101001,
0004 ; 0b000111101110,0b000111110011,0b000111111000,0b000111111100,
0004 ; 0b001000000001,0b001000000110
0004 ; };
0004 ; //#pragma data:data
0004 ;
0004 ; /***********************************************************************
0004 ; Init the hardware for SPI communication
0004 ; ***********************************************************************/
0004 ; void spi_init(void)
0004 ; {
0004 .dbline 66
0004 ; SET_MOSI();
0004 C29A sbi 0x18,2
0006 .dbline 67
0006 ; CLEAR_SCLK();
0006 C198 cbi 0x18,1
0008 .dbline 68
0008 ; SET_SS();
0008 C09A sbi 0x18,0
000A .dbline 72
000A ; //SET_SDI_TO_OUTPUT();
000A ; //SET_SCLK_TO_OUTPUT();
000A ; //SET_SDO_TO_INPUT();
000A ; waitms(500);
000A 04EF ldi R16,244
000C 11E0 ldi R17,1
000E 20E0 ldi R18,0
0010 30E0 ldi R19,0
0012 0E940000 xcall _waitms
0016 .dbline -2
0016 L2:
0016 0E940000 xcall pop_gset2
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
001C .dbfunc e spi_sendbyte _spi_sendbyte fV
001C ; temp -> R22
001C ; idx -> R20
001C ; data -> R16
.even
001C _spi_sendbyte::
001C 0E940000 xcall push_gset2
0020 .dbline -1
0020 .dbline 79
0020 ; }
0020 ;
0020 ; /***********************************************************************
0020 ; Write one data byte to the SPI bus
0020 ; ***********************************************************************/
0020 ; void spi_sendbyte(unsigned char data)
0020 ; {
0020 .dbline 80
0020 ; uchar idx = 0;
0020 4427 clr R20
0022 .dbline 81
0022 ; uchar temp = 0;
0022 6627 clr R22
0024 .dbline 82
0024 ; CLEAR_SCLK();
0024 C198 cbi 0x18,1
0026 .dbline 83
0026 ; CLEAR_MOSI();
0026 C298 cbi 0x18,2
0028 0FC0 xjmp L5
002A L4:
002A .dbline 86
002A ;
002A ; while(idx < 8)
002A ; {
002A .dbline 87
002A ; CLEAR_SCLK();
002A C198 cbi 0x18,1
002C .dbline 91
002C ;
002C ; //waitus(100);
002C ; //for(temp = 0;temp < 130;temp++)
002C ; NOP();
002C 0000 nop
002E .dbline 95
002E 00FF sbrs R16,0
0030 02C0 rjmp L7
0032 .dbline 95
0032 C29A sbi 0x18,2
0034 01C0 xjmp L8
0036 L7:
0036 .dbline 95
0036 ; // NOP();
0036 ; // NOP();
0036 ; // NOP();
0036 ; if (data & 0x1) SET_MOSI(); else CLEAR_MOSI();
0036 C298 cbi 0x18,2
0038 L8:
0038 .dbline 96
0038 0695 lsr R16
003A .dbline 98
003A 0000 nop
003C .dbline 99
003C 0000 nop
003E .dbline 100
003E 0000 nop
0040 .dbline 101
0040 0000 nop
0042 .dbline 103
0042 C19A sbi 0x18,1
0044 .dbline 105
0044 0000 nop
0046 .dbline 108
0046 4395 inc R20
0048 .dbline 109
0048 L5:
0048 .dbline 85
0048 4830 cpi R20,8
004A 78F3 brlo L4
004C .dbline -2
004C L3:
004C 0E940000 xcall pop_gset2
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r temp 22 c
0052 .dbsym r idx 20 c
0052 .dbsym r data 16 c
0052 .dbend
0052 .dbfunc e spi_sendint _spi_sendint fV
0052 ; datatemp -> R20
0052 ; data -> R22,R23
.even
0052 _spi_sendint::
0052 0E940000 xcall push_gset2
0056 B801 movw R22,R16
0058 .dbline -1
0058 .dbline 112
0058 ; data >>= 1;
0058 ; //for(temp = 0;temp < 20;temp++)
0058 ; NOP();
0058 ; NOP();
0058 ; NOP();
0058 ; NOP();
0058 ;
0058 ; SET_SCLK();
0058 ; //for(temp = 0;temp <130;temp++)
0058 ; NOP();
0058 ;
0058 ; //waitus(200);
0058 ; idx++;
0058 ; }
0058 ; }
0058 ; void spi_sendint(uint data)
0058 ; {
0058 .dbline 114
0058 ; uchar datatemp;
0058 ; datatemp = (uchar) data;
0058 462F mov R20,R22
005A .dbline 115
005A ; spi_sendbyte(datatemp);
005A 042F mov R16,R20
005C DFDF xcall _spi_sendbyte
005E .dbline 116
005E ; datatemp = (uchar)(data >> 8);
005E AB01 movw R20,R22
0060 452F mov R20,R21
0062 5527 clr R21
0064 .dbline 117
0064 ; spi_sendbyte(datatemp);
0064 042F mov R16,R20
0066 DADF xcall _spi_sendbyte
0068 .dbline -2
0068 L9:
0068 0E940000 xcall pop_gset2
006C .dbline 0 ; func end
006C 0895 ret
006E .dbsym r datatemp 20 c
006E .dbsym r data 22 i
006E .dbend
006E .dbfunc e ISDplay _ISDplay fc
006E ; ADD -> R20,R21
006E ; num -> R20
.even
006E _ISDplay::
006E 0E940000 xcall push_gset1
0072 402F mov R20,R16
0074 .dbline -1
0074 .dbline 121
0074 ; }
0074 ;
0074 ; unsigned char ISDplay(unsigned char num)
0074 ; {
0074 .dbline 123
0074 ; uint ADD;
0074 ; CLEAR_SS(); //PULL DOWN THE SS PIN
0074 C098 cbi 0x18,0
0076 .dbline 124
0076 ; spi_sendbyte(POWERUP);
0076 00E2 ldi R16,32
0078 D1DF xcall _spi_sendbyte
007A .dbline 125
007A ; SET_SS(); //pull up the ss pin
007A C09A sbi 0x18,0
007C .dbline 127
007C ; //waitms(10);
007C ; ADD = PLAYADD + voiceadd[num];
007C 82E0 ldi R24,2
007E 849F mul R24,R20
0080 F001 movw R30,R0
0082 80E0 ldi R24,<_voiceadd
0084 90E0 ldi R25,>_voiceadd
0086 E80F add R30,R24
0088 F91F adc R31,R25
008A 4081 ldd R20,z+0
008C 5181 ldd R21,z+1
008E 4050 subi R20,0 ; offset = 57344
0090 5042 sbci R21,32
0092 .dbline 128
0092 ; CLEAR_SS(); //PULL DOWN THE SS PIN
0092 C098 cbi 0x18,0
0094 .dbline 129
0094 ; spi_sendint(ADD);
0094 8A01 movw R16,R20
0096 DDDF xcall _spi_sendint
0098 .dbline 130
0098 ; SET_SS(); //pull up the ss pin
0098 C09A sbi 0x18,0
009A .dbline 135
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -