📄 delayfunction.lst
字号:
.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
002A _delay::
002A D018 rcall push_gset1
002B .dbline 3{
; #include <io8515.h> /* 定义 8515 */
; void delay(int delayValue)
; {
002B .dbline 5
002B 2744 clr R20
002C 2755 clr R21
002D C002 rjmp L5
002E L2:
002E .dbline 5
002E L3:
002E .dbline 5
002E 5F4F subi R20,255 ; offset = 1
002F 4F5F sbci R21,255
0030 L5:
0030 .dbline 5
; int i;
; for(i=0;i<delayValue;i++) ;
0030 1740 cp R20,R16
0031 0751 cpc R21,R17
0032 F3DC brlt L2
0033 .dbline 6}
; }
0033 L1:
0033 D012 rcall pop_gset1
0034 9508 ret
0035 .dbsym r i 20 I
0035 .dbsym r delayValue 16 I
0035 .dbfunc s main _main fI
; runner -> R20
.even
0035 _main::
0035 .dbline 8{
; void main(void)
; {
0035 .dbline 9
; unsigned char runner = 0x01;
0035 E041 ldi R20,1
0036 .dbline 10
; DDRB = 0xff; /* Port B 输出 */
0036 EF8F ldi R24,255
0037 BB87 out 0x17,R24
0038 .dbline 11
; for (;;) /* 死循环 */
0038 L7:
0038 .dbline 12
; {
0038 .dbline 13
; if (runner) runner <<= 1;
0038 2344 tst R20
0039 F011 breq L11
003A .dbline 13
003A 0F44 lsl R20
003B C001 rjmp L12
003C L11:
003C .dbline 14
; else runner = 0x01;
003C E041 ldi R20,1
003D L12:
003D .dbline 15
; PORTB = runner;
003D BB48 out 0x18,R20
003E .dbline 16
; delay(32767);
003E EF0F ldi R16,255
003F E71F ldi R17,127
0040 DFE9 rcall _delay
0041 .dbline 17
; }
0041 .dbline 11
0041 .dbline 11
0041 CFF6 rjmp L7
0042 X0:
0042 L6:
0042 9508 ret
0043 .dbline 12}
0043 .dbsym r runner 20 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -