?? ex_support.lis
字號:
007E ;
007E ; #ifdef _USE_VIRTUAL_SPI_SND_CODE
007E ; /***********************************************************
007E ; * 函數說明:虛擬SPI發送函數 *
007E ; * 輸入: 要發送的字節 *
007E ; * 輸出: 無 *
007E ; * 調用函數:無 *
007E ; ***********************************************************/
007E ; void chVirtualSPISender(UINT8 chData)
007E ; {
007E .dbline 193
007E ; UINT8 chBITCounter = 0;
007E .dbline 195
007E ;
007E ; CLR_VSPI_SS
007E C398 cbi 0x18,3
0080 .dbline 197
0080 ;
0080 ; for (chBITCounter = 0;chBITCounter < 8;chBITCounter++)
0080 4427 clr R20
0082 12C0 rjmp L16
0084 L13:
0084 .dbline 198
0084 ; {
0084 .dbline 199
0084 ; SET_VSPI_CLK
0084 C29A sbi 0x18,2
0086 .dbline 200
0086 ; if (chData & BIT(chBITCounter))
0086 01E0 ldi R16,1
0088 142F mov R17,R20
008A 00D0 rcall lsl8
008C 2A2C mov R2,R10
008E 2022 and R2,R16
0090 11F0 breq L17
0092 X3:
0092 .dbline 201
0092 ; {
0092 .dbline 202
0092 ; SET_VSPI_DATA
0092 C19A sbi 0x18,1
0094 .dbline 203
0094 ; }
0094 01C0 rjmp L18
0096 L17:
0096 .dbline 205
0096 ; else
0096 ; {
0096 .dbline 206
0096 ; CLR_VSPI_DATA
0096 C198 cbi 0x18,1
0098 .dbline 207
0098 ; }
0098 L18:
0098 .dbline 208
0098 ; Delay_MS(5);
0098 05E0 ldi R16,5
009A 10E0 ldi R17,0
009C B2DF rcall _Delay_MS
009E .dbline 209
009E ; CLR_VSPI_CLK
009E C298 cbi 0x18,2
00A0 .dbline 211
00A0 ;
00A0 ; Delay_MS(5);
00A0 05E0 ldi R16,5
00A2 10E0 ldi R17,0
00A4 AEDF rcall _Delay_MS
00A6 .dbline 212
00A6 ; }
00A6 L14:
00A6 .dbline 197
00A6 4395 inc R20
00A8 L16:
00A8 .dbline 197
00A8 4830 cpi R20,8
00AA 60F3 brlo L13
00AC X4:
00AC .dbline 214
00AC ;
00AC ; SET_VSPI_SS
00AC C39A sbi 0x18,3
00AE .dbline -2
00AE L12:
00AE .dbline 0 ; func end
00AE 4991 ld R20,y+
00B0 A990 ld R10,y+
00B2 0895 ret
00B4 .dbsym r chBITCounter1 20 c
00B4 .dbsym r chData 10 c
00B4 .dbend
00B4 .dbfunc e Key_Scan _Key_Scan fc
00B4 ; chTempKeyCode0 -> R16
.even
00B4 _Key_Scan::
00B4 .dbline -1
00B4 .dbline 225
00B4 ; }
00B4 ; #endif
00B4 ;
00B4 ; /***********************************************************
00B4 ; * 函數說明:按鍵掃描函數 *
00B4 ; * 輸入: 無 *
00B4 ; * 輸出: 按鍵的掃描碼(如果無按鍵返回KEY_NULL) *
00B4 ; # 調用函數:無 *
00B4 ; ***********************************************************/
00B4 ; UINT8 Key_Scan(void)
00B4 ; {
00B4 .dbline 226
00B4 ; UINT8 chTempKeyCode = KEY_NULL;
00B4 0FEF ldi R16,255
00B6 .dbline 230
00B6 ; //填寫掃描代碼
00B6 ;
00B6 ; //首先掃描A列
00B6 ; CLR_A;
00B6 85B3 in R24,0x15
00B8 8863 ori R24,56
00BA 85BB out 0x15,R24
00BC .dbline 230
00BC .dbline 230
00BC AB98 cbi 0x15,3
00BE .dbline 230
00BE 0000 nop
00C0 .dbline 230
00C0 .dbline 232
00C0 ;
00C0 ; if (!READ_PINX)
00C0 999B sbis 0x13,1
00C2 02C0 rjmp L22
00C4 X5:
00C4 21E0 ldi R18,1
00C6 01C0 rjmp L23
00C8 L22:
00C8 2227 clr R18
00CA L23:
00CA 2223 tst R18
00CC 11F4 brne L20
00CE X6:
00CE .dbline 233
00CE ; {
00CE .dbline 234
00CE ; chTempKeyCode = 0x00;
00CE 0027 clr R16
00D0 .dbline 235
00D0 ; }
00D0 08C0 rjmp L21
00D2 L20:
00D2 .dbline 236
00D2 ; else if (!READ_PINY)
00D2 9A9B sbis 0x13,2
00D4 02C0 rjmp L26
00D6 X7:
00D6 21E0 ldi R18,1
00D8 01C0 rjmp L27
00DA L26:
00DA 2227 clr R18
00DC L27:
00DC 2223 tst R18
00DE 09F4 brne L24
00E0 X8:
00E0 .dbline 237
00E0 ; {
00E0 .dbline 238
00E0 ; chTempKeyCode = 0x03;
00E0 03E0 ldi R16,3
00E2 .dbline 239
00E2 ; }
00E2 L24:
00E2 L21:
00E2 .dbline 241
00E2 ;
00E2 ; CLR_B;
00E2 85B3 in R24,0x15
00E4 8863 ori R24,56
00E6 85BB out 0x15,R24
00E8 .dbline 241
00E8 .dbline 241
00E8 AC98 cbi 0x15,4
00EA .dbline 241
00EA 0000 nop
00EC .dbline 241
00EC .dbline 242
00EC ; if (!READ_PINX)
00EC 999B sbis 0x13,1
00EE 02C0 rjmp L30
00F0 X9:
00F0 21E0 ldi R18,1
00F2 01C0 rjmp L31
00F4 L30:
00F4 2227 clr R18
00F6 L31:
00F6 2223 tst R18
00F8 11F4 brne L28
00FA X10:
00FA .dbline 243
00FA ; {
00FA .dbline 244
00FA ; chTempKeyCode = 0x01;
00FA 01E0 ldi R16,1
00FC .dbline 245
00FC ; }
00FC 08C0 rjmp L29
00FE L28:
00FE .dbline 246
00FE ; else if (!READ_PINY)
00FE 9A9B sbis 0x13,2
0100 02C0 rjmp L34
0102 X11:
0102 21E0 ldi R18,1
0104 01C0 rjmp L35
0106 L34:
0106 2227 clr R18
0108 L35:
0108 2223 tst R18
010A 09F4 brne L32
010C X12:
010C .dbline 247
010C ; {
010C .dbline 248
010C ; chTempKeyCode = 0x04;
010C 04E0 ldi R16,4
010E .dbline 249
010E ; }
010E L32:
010E L29:
010E .dbline 251
010E ;
010E ; CLR_C;
010E 85B3 in R24,0x15
0110 8863 ori R24,56
0112 85BB out 0x15,R24
0114 .dbline 251
0114 .dbline 251
0114 AD98 cbi 0x15,5
0116 .dbline 251
0116 0000 nop
0118 .dbline 251
0118 .dbline 252
0118 ; if (!READ_PINX)
0118 999B sbis 0x13,1
011A 02C0 rjmp L38
011C X13:
011C 21E0 ldi R18,1
011E 01C0 rjmp L39
0120 L38:
0120 2227 clr R18
0122 L39:
0122 2223 tst R18
0124 11F4 brne L36
0126 X14:
0126 .dbline 253
0126 ; {
0126 .dbline 254
0126 ; chTempKeyCode = 0x02;
0126 02E0 ldi R16,2
0128 .dbline 255
0128 ; }
0128 08C0 rjmp L37
012A L36:
012A .dbline 256
012A ; else if (!READ_PINY)
012A 9A9B sbis 0x13,2
012C 02C0 rjmp L42
012E X15:
012E 21E0 ldi R18,1
0130 01C0 rjmp L43
0132 L42:
0132 2227 clr R18
0134 L43:
0134 2223 tst R18
0136 09F4 brne L40
0138 X16:
0138 .dbline 257
0138 ; {
0138 .dbline 258
0138 ; chTempKeyCode = 0x05;
0138 05E0 ldi R16,5
013A .dbline 259
013A ; }
013A L40:
013A L37:
013A .dbline 261
013A ;
013A ; return chTempKeyCode;
013A .dbline -2
013A L19:
013A .dbline 0 ; func end
013A 0895 ret
013C .dbsym r chTempKeyCode0 16 c
013C .dbend
013C .dbfunc e Key_Scan_New _Key_Scan_New fc
.even
013C _Key_Scan_New::
013C .dbline -1
013C .dbline 265
013C ; }
013C ; ////////////////////////////////////////////////////////////////////////////
013C ; UINT8 Key_Scan_New(void)
013C ; {
013C .dbline 266
013C ; UINT8 chTempKeyCode = KEY_NULL; //為按鍵的編碼設初值
013C .dbline 270
013C ;
013C ;
013C ; //先對21-25按鈕進行掃描
013C ; DDRC &= ~(BIT(1) | BIT(2) | BIT(3) |
013C 84B3 in R24,0x14
013E 817C andi R24,193
0140 84BB out 0x14,R24
0142 .dbline 273
0142 ; BIT(4) | BIT(5)); //把端口pc1-pc5都置為輸入
0142 ;
0142 ; PORTC |= BIT(1) | BIT(2) | BIT(3) |
0142 85B3 in R24,0x15
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -