📄 ex_support.lis
字号:
.module EX_Support.c
.area text(rom, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\EX_Support.c
.area data(ram, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\EX_Support.c
0000 _s_wSystemDelayTimerCounter:
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile O:\2007全国电子设计大赛\键盘显示模块\EX_Support.c
0002 _g_wSystemTimer::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile O:\2007全国电子设计大赛\键盘显示模块\EX_Support.c
0004 _g_wCommunicationTimer::
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile O:\2007全国电子设计大赛\键盘显示模块\EX_Support.c
.area text(rom, con, rel)
0000 .dbfile O:\2007全国电子设计大赛\键盘显示模块\EX_Support.c
0000 .dbfunc e Driver_INIT _Driver_INIT fV
.even
0000 _Driver_INIT::
0000 .dbline -1
0000 .dbline 88
0000 ; /***********************************************************
0000 ; * 函数库说明:底层硬件初始化驱动函数库 *
0000 ; * 版本: *
0000 ; * 作者: *
0000 ; * 创建日期: *
0000 ; * -------------------------------------------------------- *
0000 ; * [硬件说明] *
0000 ; * 处理器: *
0000 ; * 系统时钟: *
0000 ; * -------------------------------------------------------- *
0000 ; * [支 持 库] *
0000 ; * 支持库名称:PF_Config.h *
0000 ; * 需要版本: ----- *
0000 ; * 声明库说明:硬件平台配置声明库 *
0000 ; * *
0000 ; * 支持库名称:HD_Support.h *
0000 ; * 需要版本: ----- *
0000 ; * 声明库说明:底层硬件初始化声明库 *
0000 ; * *
0000 ; * 支持库名称:EX_Support.h *
0000 ; * 需要版本: ----- *
0000 ; * 声明库说明:底层硬件初始化驱动声明库 *
0000 ; * -------------------------------------------------------- *
0000 ; * [版本更新] *
0000 ; * 修改: *
0000 ; * 修改日期: *
0000 ; * 版本: *
0000 ; * -------------------------------------------------------- *
0000 ; * [版本历史] *
0000 ; * -------------------------------------------------------- *
0000 ; * [使用说明] *
0000 ; ***********************************************************/
0000 ;
0000 ; /********************
0000 ; * 头 文 件 配 置 区 *
0000 ; ********************/
0000 ; # include "PF_Config.h"
0000 ; # include "EX_Support.h"
0000 ; # include "LIB_Config.h"
0000 ;
0000 ; /********************
0000 ; * 系 统 宏 定 义 *
0000 ; ********************/
0000 ;
0000 ; /*------------------*
0000 ; * 常 数 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /*------------------*
0000 ; * 动 作 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /********************
0000 ; * 模块结构体定义区 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 函 数 声 明 区 *
0000 ; ********************/
0000 ; void Delay_MS(uint16 wTime);
0000 ; void Insert_Timer0_OVF_ISR_Code(void);
0000 ; void Driver_INIT(void);
0000 ; uint8 Key_Press_Scan(void);
0000 ;
0000 ; /********************
0000 ; * 模块函数声明区 *
0000 ; ********************/
0000 ;
0000 ;
0000 ; /********************
0000 ; * 模块变量声明区 *
0000 ; ********************/
0000 ; static uint16 s_wSystemDelayTimerCounter = 0;
0000 ;
0000 ; /********************
0000 ; * 全局变量声明区 *
0000 ; ********************/
0000 ; uint16 g_wSystemTimer = 0;
0000 ; uint16 g_wCommunicationTimer = 0;
0000 ;
0000 ; /***********************************************************
0000 ; * 函数说明:软件驱动初始化函数 *
0000 ; * 输入: 无 *
0000 ; * 输出: 无 *
0000 ; * 调用函数:无 *
0000 ; ***********************************************************/
0000 ; void Driver_INIT(void)
0000 ; {
0000 .dbline 89
0000 ; CMOS_INIT();
0000 0E940000 xcall _CMOS_INIT
0004 .dbline 90
0004 ; LCDInit();
0004 0E940000 xcall _LCDInit
0008 .dbline 91
0008 ; LED_Flash_Control_INIT();
0008 0E940000 xcall _LED_Flash_Control_INIT
000C .dbline -2
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
000E .dbfunc e Delay_MS _Delay_MS fV
000E ; wTime -> R16,R17
.even
000E _Delay_MS::
000E .dbline -1
000E .dbline 102
000E ; }
000E ;
000E ;
000E ; /***********************************************************
000E ; * 函数说明:系统毫秒延时函数 *
000E ; * 输入: 需要延时的时间长度 *
000E ; * 输出: 无 *
000E ; * 调用函数:无 *
000E ; ***********************************************************/
000E ; void Delay_MS(uint16 wTime)
000E ; {
000E .dbline 103
000E ; s_wSystemDelayTimerCounter = wTime;
000E 10930100 sts _s_wSystemDelayTimerCounter+1,R17
0012 00930000 sts _s_wSystemDelayTimerCounter,R16
0016 L3:
0016 .dbline 105
0016 ;
0016 ; while(s_wSystemDelayTimerCounter);
0016 L4:
0016 .dbline 105
0016 20900000 lds R2,_s_wSystemDelayTimerCounter
001A 30900100 lds R3,_s_wSystemDelayTimerCounter+1
001E 2220 tst R2
0020 D1F7 brne L3
0022 3320 tst R3
0024 C1F7 brne L3
0026 X0:
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r wTime 16 i
0028 .dbend
0028 .dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
.even
0028 _Insert_Timer0_OVF_ISR_Code::
0028 .dbline -1
0028 .dbline 115
0028 ; }
0028 ;
0028 ; /***********************************************************
0028 ; * 函数说明:定时器0中断处理程序代码插入函数 *
0028 ; * 输入: 无 *
0028 ; * 输出: 无 *
0028 ; * 调用函数:无 *
0028 ; ***********************************************************/
0028 ; void Insert_Timer0_OVF_ISR_Code(void)
0028 ; {
0028 .dbline 116
0028 ; g_wSystemTimer++;
0028 80910200 lds R24,_g_wSystemTimer
002C 90910300 lds R25,_g_wSystemTimer+1
0030 0196 adiw R24,1
0032 90930300 sts _g_wSystemTimer+1,R25
0036 80930200 sts _g_wSystemTimer,R24
003A .dbline 118
003A ;
003A ; if (s_wSystemDelayTimerCounter)
003A 20900000 lds R2,_s_wSystemDelayTimerCounter
003E 30900100 lds R3,_s_wSystemDelayTimerCounter+1
0042 2220 tst R2
0044 11F4 brne X1
0046 3320 tst R3
0048 31F0 breq L7
004A X1:
004A .dbline 119
004A ; {
004A .dbline 120
004A ; s_wSystemDelayTimerCounter--;
004A C101 movw R24,R2
004C 0197 sbiw R24,1
004E 90930100 sts _s_wSystemDelayTimerCounter+1,R25
0052 80930000 sts _s_wSystemDelayTimerCounter,R24
0056 .dbline 121
0056 ; }
0056 L7:
0056 .dbline 125
0056 ;
0056 ; //USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE
0056 ;
0056 ; if (g_wCommunicationTimer)
0056 20900400 lds R2,_g_wCommunicationTimer
005A 30900500 lds R3,_g_wCommunicationTimer+1
005E 2220 tst R2
0060 11F4 brne X2
0062 3320 tst R3
0064 51F0 breq L9
0066 X2:
0066 .dbline 126
0066 ; {
0066 .dbline 127
0066 ; g_wCommunicationTimer--;
0066 C101 movw R24,R2
0068 0197 sbiw R24,1
006A 90930500 sts _g_wCommunicationTimer+1,R25
006E 80930400 sts _g_wCommunicationTimer,R24
0072 .dbline 128
0072 ; LED_DATA = LED_FLASH_VERY_FAST;
0072 86E0 ldi R24,6
0074 80930100 sts _g_cLEDs+1,R24
0078 .dbline 129
0078 ; }
0078 03C0 xjmp L10
007A L9:
007A .dbline 131
007A ; else
007A ; {
007A .dbline 132
007A ; LED_DATA = LED_ON;
007A 81E0 ldi R24,1
007C 80930100 sts _g_cLEDs+1,R24
0080 .dbline 133
0080 ; }
0080 L10:
0080 .dbline 143
0080 ; /*
0080 ; if (!(g_wSystemTimer & 0x0f))
0080 ; {
0080 ; LCDSP027_refresh_DISP_BUFF();
0080 ; }
0080 ; */
0080 ; //PROC_Serial_Transmitter();
0080 ; //Serial_Frame_Process_Refresh();
0080 ;
0080 ; PROC_LED_FLASH.IfProcAlive = TRUE;
0080 81E0 ldi R24,1
0082 80930500 sts _ProcPCB+3+2,R24
0086 .dbline -2
0086 L6:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbend
0088 .dbfunc e Key_Press_Scan _Key_Press_Scan fc
0088 ; cKeyScanValue0 -> R16
.even
0088 _Key_Press_Scan::
0088 .dbline -1
0088 .dbline 153
0088 ; }
0088 ;
0088 ; /***********************************************************
0088 ; * 函数说明:键盘扫描函数(不去抖) *
0088 ; * 输入: 无 *
0088 ; * 输出: 无 *
0088 ; * 调用函数:无 *
0088 ; ***********************************************************/
0088 ; uint8 Key_Press_Scan(void)
0088 ; {
0088 .dbline 154
0088 ; uint8 cKeyScanValue = KEY_NULL;
0088 0FEF ldi R16,255
008A .dbline 157
008A ;
008A ; //扫描第一行
008A ; SET_KEY_OUT_ALL_PORT_HIGH
008A 82B3 in R24,0x12
008C 8C67 ori R24,124
008E 82BB out 0x12,R24
0090 .dbline 158
0090 ; KEY_OUT_Y_P1 = LOW;
0090 82B3 in R24,0x12
0092 8B7F andi R24,251
0094 82BB out 0x12,R24
0096 .dbline 159
0096 ; NOP();
0096 0000 nop
0098 .dbline 160
0098 ; if (!KEY_IN_X_P1)
0098 83B3 in R24,0x13
009A 8695 lsr R24
009C 8695 lsr R24
009E 8170 andi R24,1
00A0 09F4 brne L16
00A2 X3:
00A2 .dbline 161
00A2 ; {
00A2 .dbline 162
00A2 ; cKeyScanValue = 0x00;
00A2 0027 clr R16
00A4 .dbline 163
00A4 ; }
00A4 L16:
00A4 .dbline 164
00A4 ; if (!KEY_IN_X_P2)
00A4 83B3 in R24,0x13
00A6 8695 lsr R24
00A8 8695 lsr R24
00AA 8695 lsr R24
00AC 8170 andi R24,1
00AE 09F4 brne L18
00B0 X4:
00B0 .dbline 165
00B0 ; {
00B0 .dbline 166
00B0 ; cKeyScanValue = 0x01;
00B0 01E0 ldi R16,1
00B2 .dbline 167
00B2 ; }
00B2 L18:
00B2 .dbline 168
00B2 ; if (!KEY_IN_X_P3)
00B2 83B3 in R24,0x13
00B4 8295 swap R24
00B6 8F70 andi R24,#0x0F
00B8 8170 andi R24,1
00BA 09F4 brne L20
00BC X5:
00BC .dbline 169
00BC ; {
00BC .dbline 170
00BC ; cKeyScanValue = 0x02;
00BC 02E0 ldi R16,2
00BE .dbline 171
00BE ; }
00BE L20:
00BE .dbline 172
00BE ; if (!KEY_IN_X_P4)
00BE 83B3 in R24,0x13
00C0 8695 lsr R24
00C2 8695 lsr R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -