⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 feedis_spi.lis

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -