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

📄 ex_support.lis

📁 SPI简单的数据传输.用单片595传输数据.简单易懂
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0006 00930000          sts _s_wSystemDelayTimerCounter,R16
 000A           L3:
 000A                   .dbline 103
 000A           ;     
 000A           ;     while(s_wSystemDelayTimerCounter);
 000A           L4:
 000A                   .dbline 103
 000A 20900000          lds R2,_s_wSystemDelayTimerCounter
 000E 30900100          lds R3,_s_wSystemDelayTimerCounter+1
 0012 2220              tst R2
 0014 D1F7              brne L3
 0016 3320              tst R3
 0018 C1F7              brne L3
 001A           X0:
 001A                   .dbline -2
 001A           L2:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r wTime 16 i
 001C                   .dbend
 001C                   .dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
                        .even
 001C           _Insert_Timer0_OVF_ISR_Code::
 001C                   .dbline -1
 001C                   .dbline 113
 001C           ; }
 001C           ; 
 001C           ; /***********************************************************
 001C           ; *   函数说明:定时器0中断处理程序代码插入函数              *
 001C           ; *   输入:    无                                           *
 001C           ; *   输出:    无                                           *
 001C           ; *   调用函数:无                                           *
 001C           ; ***********************************************************/
 001C           ; void Insert_Timer0_OVF_ISR_Code(void)
 001C           ; {
 001C                   .dbline 114
 001C           ;     g_wSystemTimer++;
 001C 80911900          lds R24,_g_wSystemTimer
 0020 90911A00          lds R25,_g_wSystemTimer+1
 0024 0196              adiw R24,1
 0026 90931A00          sts _g_wSystemTimer+1,R25
 002A 80931900          sts _g_wSystemTimer,R24
 002E                   .dbline 116
 002E           ; 
 002E           ;     if (s_wSystemDelayTimerCounter)         //若计数器累加不为零
 002E 20900000          lds R2,_s_wSystemDelayTimerCounter
 0032 30900100          lds R3,_s_wSystemDelayTimerCounter+1
 0036 2220              tst R2
 0038 11F4              brne X1
 003A 3320              tst R3
 003C 31F0              breq L7
 003E           X1:
 003E                   .dbline 117
 003E           ;     {
 003E                   .dbline 118
 003E           ;         s_wSystemDelayTimerCounter--;        
 003E C101              movw R24,R2
 0040 0197              sbiw R24,1
 0042 90930100          sts _s_wSystemDelayTimerCounter+1,R25
 0046 80930000          sts _s_wSystemDelayTimerCounter,R24
 004A                   .dbline 119
 004A           ;     }
 004A           L7:
 004A                   .dbline 121
 004A           ;     
 004A           ;     if (!(g_wSystemTimer & (BIT(10) - 1)))     //除以2的10次方取余为0
 004A 80911900          lds R24,_g_wSystemTimer
 004E 90911A00          lds R25,_g_wSystemTimer+1
 0052 9370              andi R25,3
 0054 8030              cpi R24,0
 0056 8907              cpc R24,R25
 0058 41F4              brne L9
 005A           X2:
 005A                   .dbline 122
 005A           ;     {
 005A                   .dbline 123
 005A           ;         g_chCounter++;
 005A 80911B00          lds R24,_g_chCounter
 005E 8F5F              subi R24,255    ; addi 1
 0060 80931B00          sts _g_chCounter,R24
 0064                   .dbline 124
 0064           ;         g_chCounter &= (BIT(4)-1);            //对2的4次方取余
 0064 8F70              andi R24,15
 0066 80931B00          sts _g_chCounter,R24
 006A                   .dbline 125
 006A           ;     }
 006A           L9:
 006A                   .dbline -2
 006A           L6:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
 006C                   .dbfunc e Insert_SPI_STC_ISR_Code _Insert_SPI_STC_ISR_Code fV
 006C           ;             n1 -> R22
 006C           ; bIfKeyPressed0 -> R20
 006C           ;      chKeyNUM0 -> R10
                        .even
 006C           _Insert_SPI_STC_ISR_Code::
 006C 00D0              rcall push_xgsetF00C
 006E                   .dbline -1
 006E                   .dbline 129
 006E           ; }
 006E           ; 
 006E           ; void Insert_SPI_STC_ISR_Code(void)
 006E           ; {
 006E                   .dbline 130
 006E           ;     UINT8 chKeyNUM = ~SPDR;    //读取数据寄存器存贮的数据 
 006E AFB0              in R10,0xf
 0070 A094              com R10
 0072                   .dbline 131
 0072           ;     UINT8 n = 0;
 0072                   .dbline 132
 0072           ;     BOOL bIfKeyPressed = FALSE;
 0072 4427              clr R20
 0074                   .dbline 134
 0074           ;     
 0074           ;     PORT_SS = HIGH;            //SS拉高
 0074 88B3              in R24,0x18
 0076 8460              ori R24,4
 0078 88BB              out 0x18,R24
 007A                   .dbline 135
 007A           ;       PORT_SS = LOW;             //ss拉低
 007A 88B3              in R24,0x18
 007C 8B7F              andi R24,251
 007E 88BB              out 0x18,R24
 0080                   .dbline 136
 0080           ;     for (n = 0;n < 8;n++)      //读取数据的每一位 
 0080 6627              clr R22
 0082 12C0              rjmp L15
 0084           L12:
 0084                   .dbline 137
 0084           ;     {
 0084                   .dbline 138
 0084           ;         if (chKeyNUM & BIT(n))     //读取第n位
 0084 01E0              ldi R16,1
 0086 162F              mov R17,R22
 0088 00D0              rcall lsl8
 008A 2A2C              mov R2,R10
 008C 2022              and R2,R16
 008E 59F0              breq L16
 0090           X3:
 0090                   .dbline 139
 0090           ;         {
 0090                   .dbline 140
 0090           ;             SPDR = ~s_cDISPCode[n];    
 0090 80E0              ldi R24,<_s_cDISPCode
 0092 90E0              ldi R25,>_s_cDISPCode
 0094 E62F              mov R30,R22
 0096 FF27              clr R31
 0098 E80F              add R30,R24
 009A F91F              adc R31,R25
 009C 2080              ldd R2,z+0
 009E 2094              com R2
 00A0 2FB8              out 0xf,R2
 00A2                   .dbline 141
 00A2           ;             bIfKeyPressed = TRUE;
 00A2 41E0              ldi R20,1
 00A4                   .dbline 142
 00A4           ;             break;
 00A4 03C0              rjmp L14
 00A6           L16:
 00A6                   .dbline 144
 00A6           ;         }
 00A6           ;     }
 00A6           L13:
 00A6                   .dbline 136
 00A6 6395              inc R22
 00A8           L15:
 00A8                   .dbline 136
 00A8 6830              cpi R22,8
 00AA 60F3              brlo L12
 00AC           X4:
 00AC           L14:
 00AC                   .dbline 146
 00AC           ;     
 00AC           ;     if (!bIfKeyPressed)
 00AC 4423              tst R20
 00AE 51F4              brne L18
 00B0           X5:
 00B0                   .dbline 147
 00B0           ;     {
 00B0                   .dbline 148
 00B0           ;         SPDR = ~s_cDISPCode[g_chCounter];
 00B0 80E0              ldi R24,<_s_cDISPCode
 00B2 90E0              ldi R25,>_s_cDISPCode
 00B4 E0911B00          lds R30,_g_chCounter
 00B8 FF27              clr R31
 00BA E80F              add R30,R24
 00BC F91F              adc R31,R25
 00BE 2080              ldd R2,z+0
 00C0 2094              com R2
 00C2 2FB8              out 0xf,R2
 00C4                   .dbline 149
 00C4           ;     }
 00C4           L18:
 00C4                   .dbline -2
 00C4           L11:
 00C4                   .dbline 0 ; func end
 00C4 00C0              rjmp pop_xgsetF00C
 00C6                   .dbsym r n1 22 c
 00C6                   .dbsym r bIfKeyPressed0 20 c
 00C6                   .dbsym r chKeyNUM0 10 c
 00C6                   .dbend
 00C6           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -