?? ex_support.lis
字號:
.module EX_Support.c
.area text(rom, con, rel)
0000 .dbfile F:\AVR\按鍵掃描\EX_Support.c
.area data(ram, con, rel)
0000 .dbfile F:\AVR\按鍵掃描\EX_Support.c
0000 _s_wSystemDelayTimerCounter:
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile F:\AVR\按鍵掃描\EX_Support.c
0002 _g_wSystemTimer::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile F:\AVR\按鍵掃描\EX_Support.c
.area text(rom, con, rel)
0000 .dbfile F:\AVR\按鍵掃描\EX_Support.c
0000 .dbfunc e Driver_INIT _Driver_INIT fV
.even
0000 _Driver_INIT::
0000 .dbline -1
0000 .dbline 108
0000 ; /***********************************************************
0000 ; * 函數庫說明:底層硬件初始化驅動函數庫 *
0000 ; * 版本: *
0000 ; * 作者: *
0000 ; * 創建日期: *
0000 ; * -------------------------------------------------------- *
0000 ; * [硬件說明] *
0000 ; * 處理器: *
0000 ; * 系統時鐘: *
0000 ; * -------------------------------------------------------- *
0000 ; * [支 持 庫] *
0000 ; * 支持庫名稱:HD_Support.h *
0000 ; * 需要版本: ----- *
0000 ; * 支持庫說明:底層硬件初始化聲明庫 *
0000 ; * *
0000 ; * 支持庫名稱:EX_Support.h *
0000 ; * 需要版本: ----- *
0000 ; * 支持庫說明:底層硬件初始化驅動聲明庫 *
0000 ; * *
0000 ; * 支持庫名稱:PF_Config.h *
0000 ; * 需要版本: ----- *
0000 ; * 支持庫說明:硬件平臺配置聲明庫 *
0000 ; * -------------------------------------------------------- *
0000 ; * [版本更新] *
0000 ; * 修改: *
0000 ; * 修改日期: *
0000 ; * 版本: *
0000 ; * -------------------------------------------------------- *
0000 ; * [版本歷史] *
0000 ; * -------------------------------------------------------- *
0000 ; * [使用說明] *
0000 ; ***********************************************************/
0000 ;
0000 ; /********************
0000 ; * 頭 文 件 配 置 區 *
0000 ; ********************/
0000 ; //# define _USE_VIRTUAL_SPI_SND_CODE
0000 ; # include "PF_Config.h"
0000 ; # include "Ex_Support.h"
0000 ;
0000 ; /********************
0000 ; * 系 統 宏 定 義 *
0000 ; ********************/
0000 ;
0000 ; /*------------------*
0000 ; * 常 數 宏 定 義 *
0000 ; *------------------*/
0000 ;
0000 ; /*------------------*
0000 ; * 動 作 宏 定 義 *
0000 ; *------------------*/
0000 ; /*
0000 ; # define VSPI_WAIT_SIGNAL_LOW(__SIGNAL) \
0000 ; do\
0000 ; {\
0000 ; while((__SIGNAL));\
0000 ; Delay_MS(50);\
0000 ; }\
0000 ; while((__SIGNAL));
0000 ; # define VSPI_WAIT_SIGNAL_HIGH(__SIGNAL) \
0000 ; do\
0000 ; {\
0000 ; while(!(__SIGNAL));\
0000 ; Delay_MS(50);\
0000 ; }\
0000 ; while(!(__SIGNAL));
0000 ; */
0000 ; # define VSPI_WAIT_SIGNAL_LOW(__SIGNAL) while((__SIGNAL));
0000 ; # define VSPI_WAIT_SIGNAL_HIGH(__SIGNAL) while(!(__SIGNAL));
0000 ; /********************
0000 ; * 模塊結構體定義區 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 函 數 聲 明 區 *
0000 ; ********************/
0000 ; void Insert_Timer0_OVF_ISR_Code(void);
0000 ; void Driver_INIT(void);
0000 ; void Delay_MS(uint16 wTime);
0000 ; UINT8 Key_Scan(void);
0000 ; #ifdef _USE_VIRTUAL_SPI_RCV_CODE
0000 ; UINT8 chVirtualSPIReceiver(void);
0000 ; #endif
0000 ; #ifdef _USE_VIRTUAL_SPI_SND_CODE
0000 ; void chVirtualSPISender(UINT8 chData);
0000 ; #endif
0000 ; /********************
0000 ; * 模塊函數聲明區 *
0000 ; ********************/
0000 ;
0000 ;
0000 ; /********************
0000 ; * 模塊變量聲明區 *
0000 ; ********************/
0000 ; static uint16 s_wSystemDelayTimerCounter = 0;
0000 ; /********************
0000 ; * 全局變量聲明區 *
0000 ; ********************/
0000 ; uint16 g_wSystemTimer = 0;
0000 ;
0000 ; /***********************************************************
0000 ; * 函數說明:軟件驅動初始化函數 *
0000 ; * 輸入: 無 *
0000 ; * 輸出: 無 *
0000 ; * 調用函數:無 *
0000 ; ***********************************************************/
0000 ; void Driver_INIT(void)
0000 ; {
0000 .dbline -2
0000 L1:
0000 .dbline 0 ; func end
0000 0895 ret
0002 .dbend
0002 .dbfunc e Delay_MS _Delay_MS fV
0002 ; wTime -> R16,R17
.even
0002 _Delay_MS::
0002 .dbline -1
0002 .dbline 119
0002 ; //*在這里插入你的各類軟件驅動初始化代碼*//
0002 ; }
0002 ;
0002 ; /***********************************************************
0002 ; * 函數說明:系統毫秒延時函數 *
0002 ; * 輸入: 需要延時的時間長度 *
0002 ; * 輸出: 無 *
0002 ; * 調用函數:無 *
0002 ; ***********************************************************/
0002 ; void Delay_MS(uint16 wTime)
0002 ; {
0002 .dbline 120
0002 ; s_wSystemDelayTimerCounter = wTime;
0002 10930100 sts _s_wSystemDelayTimerCounter+1,R17
0006 00930000 sts _s_wSystemDelayTimerCounter,R16
000A L3:
000A .dbline 122
000A ;
000A ; while(s_wSystemDelayTimerCounter);
000A L4:
000A .dbline 122
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
.area data(ram, con, rel)
0004 .dbfile F:\AVR\按鍵掃描\EX_Support.c
0004 L7:
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile F:\AVR\按鍵掃描\EX_Support.c
.area text(rom, con, rel)
001C .dbfile F:\AVR\按鍵掃描\EX_Support.c
001C .dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
001C .dbsym s n L7 c
.even
001C _Insert_Timer0_OVF_ISR_Code::
001C .dbline -1
001C .dbline 132
001C ; }
001C ;
001C ; /***********************************************************
001C ; * 函數說明:定時器0中斷處理程序代碼插入函數 *
001C ; * 輸入: 無 *
001C ; * 輸出: 無 *
001C ; * 調用函數:無 *
001C ; ***********************************************************/
001C ; void Insert_Timer0_OVF_ISR_Code(void)
001C ; {
001C .dbline 134
001C ; static UINT8 n = 0;
001C ; g_wSystemTimer++;
001C 80910200 lds R24,_g_wSystemTimer
0020 90910300 lds R25,_g_wSystemTimer+1
0024 0196 adiw R24,1
0026 90930300 sts _g_wSystemTimer+1,R25
002A 80930200 sts _g_wSystemTimer,R24
002E .dbline 136
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 L8
003E X1:
003E .dbline 137
003E ; {
003E .dbline 138
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 139
004A ; }
004A L8:
004A .dbline 141
004A ;
004A ; if (!(g_wSystemTimer & (BIT(7) - 1)))
004A 80910200 lds R24,_g_wSystemTimer
004E 90910300 lds R25,_g_wSystemTimer+1
0052 8F77 andi R24,127
0054 9070 andi R25,0
0056 8030 cpi R24,0
0058 8907 cpc R24,R25
005A 69F4 brne L10
005C X2:
005C .dbline 142
005C ; {
005C .dbline 143
005C ; n++;
005C 80910400 lds R24,L7
0060 8F5F subi R24,255 ; addi 1
0062 80930400 sts L7,R24
0066 .dbline 144
0066 ; n &= BIT(3)-1;
0066 8770 andi R24,7
0068 80930400 sts L7,R24
006C .dbline 145
006C ; chVirtualSPISender(~BIT(n));
006C 182F mov R17,R24
006E 01E0 ldi R16,1
0070 00D0 rcall lsl8
0072 0095 com R16
0074 01D0 rcall _chVirtualSPISender
0076 .dbline 146
0076 ; }
0076 L10:
0076 .dbline -2
0076 L6:
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbend
0078 .dbfunc e chVirtualSPISender _chVirtualSPISender fV
0078 ; chBITCounter1 -> R20
0078 ; chData -> R10
.even
0078 _chVirtualSPISender::
0078 AA92 st -y,R10
007A 4A93 st -y,R20
007C A02E mov R10,R16
007E .dbline -1
007E .dbline 192
007E ; }
007E ;
007E ;
007E ;
007E ; #ifdef _USE_VIRTUAL_SPI_RCV_CODE
007E ; /***********************************************************
007E ; * 函數說明:虛擬SPI接收機 *
007E ; * 輸入: 無 *
007E ; * 輸出: 接收到的數據 *
007E ; * 調用函數:無 *
007E ; ***********************************************************/
007E ; UINT8 chVirtualSPIReceiver(void)
007E ; {
007E ; UINT8 chRCVData = 0;
007E ; UINT8 chCounter = 0;
007E ;
007E ; VSPI_WAIT_SIGNAL_LOW(VSPI_SS)
007E ; //PORTC &= ~BIT(PC0);
007E ; while(!VSPI_SS)
007E ; {
007E ; VSPI_WAIT_SIGNAL_LOW(VSPI_CLK)
007E ; PORTC ^= BIT(PC0);
007E ; chRCVData <<= 1;
007E ; chRCVData |= VSPI_DATA;
007E ; chCounter++;
007E ; VSPI_WAIT_SIGNAL_HIGH(VSPI_CLK)
007E ; if (chCounter == 8)
007E ; {
007E ; break;
007E ; }
007E ; }
007E ; PORTC &= ~BIT(PC0);
007E ; return chRCVData;
007E ;
007E ; }
007E ; #endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -