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

📄 keydis_drv.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module KeyDis_Drv.c
                        .area lit(rom, con, rel)
 0000           _DisTab::
 0000 FC60              .byte 252,96
 0002 DAF2              .byte 218,242
 0004 66B6              .byte 'f,182
 0006 BEE0              .byte 190,224
 0008 FEF6              .byte 254,246
 000A EE3E              .byte 238,62
 000C 9C7A              .byte 156,'z
 000E 9E8E              .byte 158,142
 0010 CE1C              .byte 206,28
 0012 6E7C              .byte 'n,124
 0014 0A10              .byte 10,16
 0016 02                .byte 2
 0017                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\KeyDis_Drv.c
 0017                   .dbsym e DisTab _DisTab A[23:23]kc
                        .area text(rom, con, rel)
 0000                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\KeyDis_Drv.c
 0000                   .dbfunc e SPI_INIT _SPI_INIT fV
                        .even
 0000           _SPI_INIT::
 0000                   .dbline -1
 0000                   .dbline 107
 0000           ; /***********************************************************
 0000           ; *   函数库说明:键盘显示模块驱动函数库                     *
 0000           ; *   版本:                                                 *
 0000           ; *   作者:                                                 *
 0000           ; *   创建日期:                                             *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [硬件说明]                                              *
 0000           ; *   处理器:                                               *
 0000           ; *   系统时钟:                                             *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [支 持 库]                                              *
 0000           ; *   支持库名称:KeyDis_Drv.h                               *
 0000           ; *   需要版本:  -----                                      *
 0000           ; *   支持库说明:键盘显示模块驱动声明库                     *
 0000           ; *                                                          *
 0000           ; *   支持库名称:                                           *
 0000           ; *   需要版本:  -----                                      *
 0000           ; *   支持库说明:                                           *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [版本更新]                                              *
 0000           ; *   修改:                                                 *
 0000           ; *   修改日期:                                             *
 0000           ; *   版本:                                                 *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [版本历史]                                              *
 0000           ; * -------------------------------------------------------- *
 0000           ; *  [使用说明]                                              *
 0000           ; ***********************************************************/
 0000           ; 
 0000           ; /********************
 0000           ; * 头 文 件 配 置 区 *
 0000           ; ********************/
 0000           ; #include <iom48v.h>   //在这里填写你所用处理器的专用头文件 //
 0000           ; #include "EX_Support.h"
 0000           ; #include "KeyDis_Drv.h"
 0000           ; 
 0000           ; /********************
 0000           ; *   系 统 宏 定 义  *
 0000           ; ********************/
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   常 数 宏 定 义  *
 0000           ; *------------------*/
 0000           ; 
 0000           ; #define ExtPortNum 3
 0000           ; 
 0000           ; #define Key_Press 0x00
 0000           ; #define Key_Bounce 0x01
 0000           ; #define Key_Release 0x02
 0000           ; 
 0000           ; #define PINE PortBuffer[0]
 0000           ; #define PORTF PortBuffer[1]
 0000           ; #define PORTG PortBuffer[2]
 0000           ; 
 0000           ; #define KeyPin PINE
 0000           ; #define ScanPort PORTG
 0000           ; #define SegPort PORTF
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   动 作 宏 定 义  *
 0000           ; *------------------*/
 0000           ; 
 0000           ; #define SS_Low PORTB &= ~(1<<2)
 0000           ; #define SS_High PORTB |= (1<<2)
 0000           ; 
 0000           ; /********************
 0000           ; *  模块结构体定义区 *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   函 数 声 明 区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   模块函数声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   模块变量声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   全局变量声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; unsigned char PortBuffer[3];
 0000           ; unsigned char LEDDisBuffer[8];
 0000           ; unsigned char KeyBuffer;
 0000           ; 
 0000           ; const unsigned char DisTab[]=
 0000           ; {
 0000           ;       0xFC,0x60,0xDA,0xF2,0x66,       //0,1,2,3,4
 0000           ;       0xB6,0xBE,0xE0,0xFE,0xF6,       //5,6,7,8,9
 0000           ;       0xEE,0x3E,0x9C,0x7A,0x9E,       //A,b,C,d,E
 0000           ;       0x8E,0xCE,0x1C,0x6E,0x7C,       //F,P,L,H,U
 0000           ;       0x0A,0x10,0x02                          //r,_,-
 0000           ; };
 0000           ; 
 0000           ; /***********************************************************
 0000           ; *   函数声明:SPI初始化程序                                *
 0000           ; *   输入:    无                                           *
 0000           ; *   输出:    无                                           *
 0000           ; *   调用函数:无                                           *
 0000           ; ***********************************************************/
 0000           ; 
 0000           ; void SPI_INIT (void)
 0000           ; {
 0000                   .dbline 108
 0000           ;     SPCR = 0x7D;    //禁止SPI中断,使能SPI模块,LSB先传送,选择主机模式,空闲时时钟为高,时钟结束沿采样,时钟频率64分频
 0000 8DE7              ldi R24,125
 0002 8CBD              out 0x2c,R24
 0004                   .dbline 109
 0004           ;     SPSR = 0x00;    //不使用SPI倍速
 0004 2224              clr R2
 0006 2DBC              out 0x2d,R2
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\KeyDis_Drv.c
 0000           L3:
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\KeyDis_Drv.c
                        .area text(rom, con, rel)
 000A                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\KeyDis_Drv.c
 000A                   .dbfunc e LEDDisplay _LEDDisplay fV
 000A                   .dbsym s ScanStatu L3 c
 000A           ;      LocalTime -> R20
                        .even
 000A           _LEDDisplay::
 000A 00D0              rcall push_gset1
 000C                   .dbline -1
 000C                   .dbline 119
 000C           ; }
 000C           ; 
 000C           ; /***********************************************************
 000C           ; *   函数说明:端口通讯程序                                 *
 000C           ; *   输入:    无                                           *
 000C           ; *   输出:    无                                           *
 000C           ; *   调用函数:                                             *
 000C           ; ***********************************************************/
 000C           ; void LEDDisplay (void)
 000C           ; {
 000C                   .dbline 123
 000C           ;     static unsigned char ScanStatu = 0;     //扫描状态标志,扫描程序内部使用
 000C           ;     unsigned char LocalTime;                //函数内部使用的时标
 000C           ; 
 000C           ;     LocalTime = g_wSystemTimer%20;
 000C 24E1              ldi R18,20
 000E 30E0              ldi R19,0
 0010 00910000          lds R16,_g_wSystemTimer
 0014 10910100          lds R17,_g_wSystemTimer+1
 0018 00D0              rcall mod16u
 001A 402F              mov R20,R16
 001C                   .dbline 125
 001C           ; 
 001C           ;     if (LocalTime > 16)
 001C 80E1              ldi R24,16
 001E 8017              cp R24,R16
 0020 20F4              brsh L4
 0022                   .dbline 126
 0022           ;     {
 0022                   .dbline 127
 0022           ;         ScanPort = 0xFF;
 0022 8FEF              ldi R24,255
 0024 80930C00          sts _PortBuffer+2,R24
 0028                   .dbline 128
 0028           ;         return;
 0028 17C0              rjmp L2
 002A           L4:
 002A                   .dbline 132
 002A           ;     }
 002A           ;             
 002A           ;     else
 002A           ;     {
 002A                   .dbline 133
 002A           ;         LocalTime >>= 1;
 002A 4695              lsr R20
 002C                   .dbline 134
 002C           ;         ScanPort = (~(1<<LocalTime));
 002C 01E0              ldi R16,1
 002E 142F              mov R17,R20
 0030 00D0              rcall lsl8
 0032 202E              mov R2,R16
 0034 2094              com R2
 0036 20920C00          sts _PortBuffer+2,R2
 003A                   .dbline 135
 003A           ;         SegPort = (DisTab[LEDDisBuffer[LocalTime]]);
 003A 80E0              ldi R24,<_LEDDisBuffer
 003C 90E0              ldi R25,>_LEDDisBuffer
 003E E42F              mov R30,R20
 0040 FF27              clr R31
 0042 E80F              add R30,R24
 0044 F91F              adc R31,R25
 0046 E081              ldd R30,z+0
 0048 FF27              clr R31
 004A 80E0              ldi R24,<_DisTab
 004C 90E0              ldi R25,>_DisTab
 004E E80F              add R30,R24
 0050 F91F              adc R31,R25
 0052 E491              lpm R30,Z
 0054 E0930B00          sts _PortBuffer+1,R30
 0058                   .dbline 136
 0058           ;     }
 0058                   .dbline -2
 0058           L2:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -