📄 ex_support.lis
字号:
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 + -