📄 system.lis
字号:
.module System.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_键盘显示模块-显示驱动测试\System.c
0017 .dbsym e DisTab _DisTab A[23:23]kc
.area data(ram, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-显示驱动测试\System.c
0000 L2:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-显示驱动测试\System.c
.area text(rom, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-显示驱动测试\System.c
0000 .dbfunc e LEDDisplay _LEDDisplay fV
0000 .dbsym s ScanStatu L2 c
0000 ; LocalTime -> R20
.even
0000 _LEDDisplay::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 92
0002 ; /*********************************************************/
0002 ; /* */
0002 ; /* 实例15 键盘显示模块 */
0002 ; /* */
0002 ; /* 显示驱动测试程序 */
0002 ; /* */
0002 ; /* 程序设计 江海波 */
0002 ; /* */
0002 ; /* 编写时间 : 2007-06 版本 : V1.0 */
0002 ; /* */
0002 ; /* 提示 : 代码受版权保护,示例程序用于工程应谨慎 */
0002 ; /* */
0002 ; /* E-mail : soundman@sohu.com */
0002 ; /*-------------------------------------------------------*/
0002 ; /* 硬件环境: */
0002 ; /* */
0002 ; /* 实验电路板,ATmega48单片机,CPU时钟1MHz */
0002 ; /* ------------------------------------------------------*/
0002 ; /* 软件环境: */
0002 ; /* */
0002 ; /* ICCAVR 6.31A */
0002 ; /* ------------------------------------------------------*/
0002 ; /* 最后修改时间: */
0002 ; /* */
0002 ; /*-------------------------------------------------------*/
0002 ; /* 历史版本纪录: */
0002 ; /* */
0002 ; /*********************************************************/
0002 ;
0002 ; /********************
0002 ; * 头 文 件 配 置 区 *
0002 ; ********************/
0002 ; # include "PF_Config.h"
0002 ;
0002 ; /********************
0002 ; * 系 统 宏 定 义 *
0002 ; ********************/
0002 ;
0002 ; /*------------------*
0002 ; * 常 数 宏 定 义 *
0002 ; *------------------*/
0002 ;
0002 ; #define ExtPortNum 3
0002 ;
0002 ; #define Key_Press 0x00
0002 ; #define Key_Bounce 0x01
0002 ; #define Key_Release 0x02
0002 ;
0002 ; #define PINE PortBuffer[0]
0002 ; #define PORTF PortBuffer[1]
0002 ; #define PORTG PortBuffer[2]
0002 ;
0002 ; #define KeyPin PINE
0002 ; #define ScanPort PORTG
0002 ; #define SegPort PORTF
0002 ;
0002 ; unsigned char PortBuffer[3];
0002 ; unsigned char LEDDisBuffer[8];
0002 ;
0002 ; /*------------------*
0002 ; * 动 作 宏 定 义 *
0002 ; *------------------*/
0002 ;
0002 ; /********************
0002 ; * 模块结构体定义区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 模块函数声明区 *
0002 ; ********************/
0002 ;
0002 ; /********************
0002 ; * 模块变量声明区 *
0002 ; ********************/
0002 ;
0002 ; const unsigned char DisTab[]=
0002 ; {
0002 ; 0xFC,0x60,0xDA,0xF2,0x66, //0,1,2,3,4
0002 ; 0xB6,0xBE,0xE0,0xFE,0xF6, //5,6,7,8,9
0002 ; 0xEE,0x3E,0x9C,0x7A,0x9E, //A,b,C,d,E
0002 ; 0x8E,0xCE,0x1C,0x6E,0x7C, //F,P,L,H,U
0002 ; 0x0A,0x10,0x02 //r,_,-
0002 ; };
0002 ;
0002 ; /***********************************************************
0002 ; * 函数说明:端口通讯程序 *
0002 ; * 输入: 无 *
0002 ; * 输出: 无 *
0002 ; * 调用函数: *
0002 ; ***********************************************************/
0002 ; void LEDDisplay (void)
0002 ; {
0002 .dbline 96
0002 ; static unsigned char ScanStatu = 0; //扫描状态标志,扫描程序内部使用
0002 ; unsigned char LocalTime; //函数内部使用的时标
0002 ;
0002 ; LocalTime = g_wSystemTimer%20;
0002 24E1 ldi R18,20
0004 30E0 ldi R19,0
0006 00910000 lds R16,_g_wSystemTimer
000A 10910100 lds R17,_g_wSystemTimer+1
000E 00D0 rcall mod16u
0010 402F mov R20,R16
0012 .dbline 98
0012 ;
0012 ; if (LocalTime > 16)
0012 80E1 ldi R24,16
0014 8017 cp R24,R16
0016 08F4 brsh L3
0018 .dbline 99
0018 ; return;
0018 17C0 rjmp L1
001A L3:
001A .dbline 101
001A ; else
001A ; {
001A .dbline 102
001A ; LocalTime >>= 1;
001A 4695 lsr R20
001C .dbline 103
001C ; ScanPort = (~(1<<LocalTime));
001C 01E0 ldi R16,1
001E 142F mov R17,R20
0020 00D0 rcall lsl8
0022 202E mov R2,R16
0024 2094 com R2
0026 20920A00 sts _PortBuffer+2,R2
002A .dbline 104
002A ; SegPort = (DisTab[LEDDisBuffer[LocalTime]]);
002A 80E0 ldi R24,<_LEDDisBuffer
002C 90E0 ldi R25,>_LEDDisBuffer
002E E42F mov R30,R20
0030 FF27 clr R31
0032 E80F add R30,R24
0034 F91F adc R31,R25
0036 E081 ldd R30,z+0
0038 FF27 clr R31
003A 80E0 ldi R24,<_DisTab
003C 90E0 ldi R25,>_DisTab
003E E80F add R30,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -