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

📄 ex_support.lis

📁 LCD1602键盘显示模块实例
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -