📄 delayfunction.lis
字号:
.module delayfunction.c
.area text
0000 .dbfile E:\grc\licc\例子10.3.2\delayfunction.c
0000 .dbfunc s delay _delay fI
; i -> R20,R21
; delayValue -> R16,R17
.even
0000 _delay::
0000 00D0 rcall push_gset1
0002 .dbline 3{
; #include <io8515.h> /* 定义 8515 */
; void delay(int delayValue)
; {
0002 .dbline 5
0002 4427 clr R20
0004 5527 clr R21
0006 02C0 rjmp L5
0008 L2:
0008 .dbline 5
0008 L3:
0008 .dbline 5
0008 4F5F subi R20,255 ; offset = 1
000A 5F4F sbci R21,255
000C L5:
000C .dbline 5
; int i;
; for(i=0;i<delayValue;i++) ;
000C 4017 cp R20,R16
000E 5107 cpc R21,R17
0010 DCF3 brlt L2
0012 .dbline 6}
; }
0012 L1:
0012 00D0 rcall pop_gset1
0014 0895 ret
0016 .dbsym r i 20 I
0016 .dbsym r delayValue 16 I
0016 .dbfunc s main _main fI
; runner -> R20
.even
0016 _main::
0016 .dbline 8{
; void main(void)
; {
0016 .dbline 9
; unsigned char runner = 0x01;
0016 41E0 ldi R20,1
0018 .dbline 10
; DDRB = 0xff; /* Port B 输出 */
0018 8FEF ldi R24,255
001A 87BB out 0x17,R24
001C .dbline 11
; for (;;) /* 死循环 */
001C L7:
001C .dbline 12
; {
001C .dbline 13
; if (runner) runner <<= 1;
001C 4423 tst R20
001E 11F0 breq L11
0020 .dbline 13
0020 440F lsl R20
0022 01C0 rjmp L12
0024 L11:
0024 .dbline 14
; else runner = 0x01;
0024 41E0 ldi R20,1
0026 L12:
0026 .dbline 15
; PORTB = runner;
0026 48BB out 0x18,R20
0028 .dbline 16
; delay(32767);
0028 0FEF ldi R16,255
002A 1FE7 ldi R17,127
002C E9DF rcall _delay
002E .dbline 17
; }
002E .dbline 11
002E .dbline 11
002E F6CF rjmp L7
0030 X0:
0030 L6:
0030 0895 ret
0032 .dbline 12}
0032 .dbsym r runner 20 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -