📄 system.s
字号:
.module System.c
.area text(rom, con, rel)
.dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\System.c
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 66
; /*********************************************************/
; /* */
; /* 实例15 键盘显示模块 */
; /* */
; /* */
; /* 程序设计 江海波 */
; /* */
; /* 编写时间 : 2007-06 版本 : V1.0 */
; /* */
; /* 提示 : 代码受版权保护,示例程序用于工程应谨慎 */
; /* */
; /* E-mail : soundman@sohu.com */
; /*-------------------------------------------------------*/
; /* 硬件环境: */
; /* */
; /* 实验电路板,ATmega48单片机,CPU时钟1MHz */
; /* ------------------------------------------------------*/
; /* 软件环境: */
; /* */
; /* ICCAVR 6.31A */
; /* ------------------------------------------------------*/
; /* 最后修改时间: */
; /* */
; /*-------------------------------------------------------*/
; /* 历史版本纪录: */
; /* */
; /*********************************************************/
;
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; #include "PF_Config.h"
; #include "KeyDis_Drv.h"
;
; /********************
; * 系 统 宏 定 义 *
; ********************/
;
; /*------------------*
; * 常 数 宏 定 义 *
; *------------------*/
;
; /*------------------*
; * 动 作 宏 定 义 *
; *------------------*/
;
; /********************
; * 模块结构体定义区 *
; ********************/
;
; /********************
; * 模块函数声明区 *
; ********************/
;
; /********************
; * 模块变量声明区 *
; ********************/
;
; /***********************************************************
; * 函数说明:主函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:System_INIT() *
; ***********************************************************/
; void main(void)
; {
.dbline 69
; unsigned char i;
;
; System_INIT(); //代码初始化
rcall _System_INIT
.dbline 71
;
; LEDDisBuffer[0] = Key_Null;
clr R2
sts _LEDDisBuffer,R2
.dbline 72
; LEDDisBuffer[1] = Key_Null;
sts _LEDDisBuffer+1,R2
.dbline 73
; LEDDisBuffer[2] = Key_Null;
sts _LEDDisBuffer+2,R2
.dbline 74
; LEDDisBuffer[3] = Key_Null;
sts _LEDDisBuffer+3,R2
.dbline 75
; LEDDisBuffer[4] = Key_Null;
sts _LEDDisBuffer+4,R2
.dbline 76
; LEDDisBuffer[5] = Key_Null;
sts _LEDDisBuffer+5,R2
.dbline 77
; LEDDisBuffer[6] = Key_Null;
sts _LEDDisBuffer+6,R2
.dbline 78
; LEDDisBuffer[7] = Key_Null;
sts _LEDDisBuffer+7,R2
rjmp L10
L9:
.dbline 81
;
; while(TRUE) //超级循环
; {
.dbline 82
; if (KeyBuffer != Key_Null)
lds R2,_KeyBuffer
tst R2
breq L12
.dbline 83
; {
.dbline 84
; for (i=7; i>0; i--)
ldi R20,7
rjmp L17
L14:
.dbline 85
.dbline 86
ldi R24,<_LEDDisBuffer-1
ldi R25,>_LEDDisBuffer-1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_LEDDisBuffer
ldi R25,>_LEDDisBuffer
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 87
L15:
.dbline 84
dec R20
L17:
.dbline 84
clr R2
cp R2,R20
brlo L14
.dbline 89
; {
; LEDDisBuffer[i] = LEDDisBuffer[i-1];
; }
;
; LEDDisBuffer[0] = KeyBuffer;
lds R2,_KeyBuffer
sts _LEDDisBuffer,R2
.dbline 91
;
; KeyBuffer = Key_Null;
clr R2
sts _KeyBuffer,R2
.dbline 92
; }
L12:
.dbline 94
;
; if (DoTime == TRUE)
lds R24,_DoTime
cpi R24,1
brne L19
.dbline 95
; {
.dbline 96
; DoTime = FALSE;
clr R2
sts _DoTime,R2
.dbline 97
; LEDDisplay();
rcall _LEDDisplay
.dbline 98
; Port_refresh();
rcall _Port_refresh
.dbline 99
; KeyBuffer = Key_service();
rcall _Key_service
sts _KeyBuffer,R16
.dbline 100
; }
L19:
.dbline 101
L10:
.dbline 80
rjmp L9
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -