📄 din0.lis
字号:
.module din0.c
.area data(ram, con, rel)
0000 _num::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\chengxu\lesson7_2\lesson7_3\din0.c
0001 .dbsym e num _num c
.area code(ram, con, rel)
0000 .dbfile D:\chengxu\lesson7_2\lesson7_3\din0.c
.area lit(rom, con, rel)
0000 _table::
0000 3F00 .word 63
0002 0600 .word 6
0004 5B00 .word 91
0006 4F00 .word 79
0008 6600 .word 102
000A 6D00 .word 109
000C 7D00 .word 125
000E 0700 .word 7
0010 7F00 .word 127
0012 6F00 .word 111
0014 7700 .word 119
0016 7C00 .word 124
0018 3900 .word 57
001A 5E00 .word 94
001C 7900 .word 121
001E 7100 .word 113
0020 .dbsym e table _table A[32:16]I
.area vector(rom, abs)
.org 16
0010 0C944800 jmp _miao
.area lit(rom, con, rel)
.area text(rom, con, rel)
0000 .dbfile D:\chengxu\lesson7_2\lesson7_3\din0.c
0000 .dbfunc e delay _delay fV
0000 ; x -> R20,R21
0000 ; y -> R22,R23
0000 ; z -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_gset2
0004 .dbline -1
0004 .dbline 12
0004 ; #include<iom16v.h>
0004 ; #include<macros.h>
0004 ; #include<stdio.h>
0004 ; #define uint unsigned int
0004 ; #define uchar unsigned char
0004 ; uchar num=0;
0004 ; #pragma data:code
0004 ; const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0004 ; 0x39,0x5e,0x79,0x71};
0004 ; #pragma interrupt_handler miao:5
0004 ; void delay(uint z)
0004 ; {uint x,y;
0004 .dbline 13
0004 ; for (x=0;x<z;x++)
0004 4427 clr R20
0006 5527 clr R21
0008 0BC0 xjmp L5
000A L2:
000A .dbline 14
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 14
0010 L7:
0010 .dbline 14
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 14
0014 6035 cpi R22,80
0016 E4E0 ldi R30,4
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C L3:
001C .dbline 13
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 13
0020 4017 cp R20,R16
0022 5107 cpc R21,R17
0024 90F3 brlo L2
0026 .dbline -2
0026 .dbline 15
0026 ; for(y=0;y<1104;y++);
0026 ; }
0026 L1:
0026 0E940000 xcall pop_gset2
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r x 20 i
002C .dbsym r y 22 i
002C .dbsym r z 16 i
002C .dbend
002C .dbfunc e show _show fV
002C ; y -> R20
002C ; x -> R22
.even
002C _show::
002C 0E940000 xcall push_gset2
0030 422F mov R20,R18
0032 602F mov R22,R16
0034 .dbline -1
0034 .dbline 17
0034 ; void show(uchar x,uchar y)
0034 ; {DDRA|=0x18;
0034 .dbline 17
0034 8AB3 in R24,0x1a
0036 8861 ori R24,24
0038 8ABB out 0x1a,R24
003A .dbline 18
003A ; DDRB=0xff;
003A 8FEF ldi R24,255
003C 87BB out 0x17,R24
003E .dbline 19
003E ; PORTB=table[x];
003E 82E0 ldi R24,2
0040 869F mul R24,R22
0042 F001 movw R30,R0
0044 80E0 ldi R24,<_table
0046 90E0 ldi R25,>_table
0048 E80F add R30,R24
004A F91F adc R31,R25
004C 0590 lpm R0,Z+
004E 1490 lpm R1,Z
0050 F001 movw R30,R0
0052 E8BB out 0x18,R30
0054 .dbline 20
0054 ; PORTA|=BIT(3);
0054 DB9A sbi 0x1b,3
0056 .dbline 21
0056 ; PORTA&=~BIT(3);
0056 DB98 cbi 0x1b,3
0058 .dbline 22
0058 ; PORTB=0XFF;
0058 8FEF ldi R24,255
005A 88BB out 0x18,R24
005C .dbline 23
005C ; PORTB&=~BIT(y);
005C 01E0 ldi R16,1
005E 142F mov R17,R20
0060 0E940000 xcall lsl8
0064 202E mov R2,R16
0066 2094 com R2
0068 38B2 in R3,0x18
006A 3220 and R3,R2
006C 38BA out 0x18,R3
006E .dbline 24
006E ; PORTA|=BIT(4);
006E DC9A sbi 0x1b,4
0070 .dbline 25
0070 ; PORTA&=~BIT(4);
0070 DC98 cbi 0x1b,4
0072 .dbline 26
0072 ; delay(1);}
0072 01E0 ldi R16,1
0074 10E0 ldi R17,0
0076 C4DF xcall _delay
0078 .dbline -2
0078 .dbline 26
0078 L10:
0078 0E940000 xcall pop_gset2
007C .dbline 0 ; func end
007C 0895 ret
007E .dbsym r y 20 c
007E .dbsym r x 22 c
007E .dbend
007E .dbfunc e init _init fV
.even
007E _init::
007E .dbline -1
007E .dbline 40
007E ; /* void show(uchar x,uchar y)
007E ; {DDRA|=0X18;
007E ; DDRB=0XFF;
007E ; PORTB=table[x];
007E ; PORTA|=BIT(3);
007E ; PORTA&=~BIT(3);
007E ; PORTB=0XFF;
007E ; PORTB&=~BIT(y);
007E ; PORTA|=BIT(4);
007E ; PORTA&=~BIT(4);
007E ; delay(1);
007E ; }*/
007E ; void init() //定时器0的初始化
007E ; {TCNT0=0X01;
007E .dbline 40
007E 81E0 ldi R24,1
0080 82BF out 0x32,R24
0082 .dbline 41
0082 ; TCCR0=0x05;
0082 85E0 ldi R24,5
0084 83BF out 0x33,R24
0086 .dbline 42
0086 ; TIMSK|=BIT(2);
0086 89B7 in R24,0x39
0088 8460 ori R24,4
008A 89BF out 0x39,R24
008C .dbline 43
008C ; SREG|=BIT(7);
008C 7894 bset 7
008E .dbline -2
008E .dbline 44
008E ; }
008E L11:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
0090 .dbfunc e miao _miao fV
.even
0090 _miao::
0090 2A92 st -y,R2
0092 8A93 st -y,R24
0094 9A93 st -y,R25
0096 2FB6 in R2,0x3f
0098 2A92 st -y,R2
009A .dbline -1
009A .dbline 60
009A ;
009A ;
009A ; /* void init() //定时器2的初始化
009A ; {TCNT2=0X01;
009A ; TCCR2=0x05;
009A ; TIMSK|=BIT(6);
009A ; SREG|=BIT(7);
009A ; }
009A ; void miao() //中断函数2
009A ; {if(num==1000)
009A ; {num=0;}
009A ; else num++;
009A ; TCNT2=0X01;
009A ; }*/
009A ; void miao() //中断函数0
009A ; {if(num==1000)
009A .dbline 60
009A 80910000 lds R24,_num
009E 883E cpi R24,232
00A0 21F4 brne L13
00A2 .dbline 61
00A2 ; {num=0;}
00A2 .dbline 61
00A2 2224 clr R2
00A4 20920000 sts _num,R2
00A8 .dbline 61
00A8 05C0 xjmp L14
00AA L13:
00AA .dbline 62
00AA ; else num++;
00AA 80910000 lds R24,_num
00AE 8F5F subi R24,255 ; addi 1
00B0 80930000 sts _num,R24
00B4 L14:
00B4 .dbline 63
00B4 ; TCNT0=0X01;
00B4 81E0 ldi R24,1
00B6 82BF out 0x32,R24
00B8 .dbline -2
00B8 .dbline 64
00B8 ; }
00B8 L12:
00B8 2990 ld R2,y+
00BA 2FBE out 0x3f,R2
00BC 9991 ld R25,y+
00BE 8991 ld R24,y+
00C0 2990 ld R2,y+
00C2 .dbline 0 ; func end
00C2 1895 reti
00C4 .dbend
00C4 .dbfunc e main _main fV
00C4 ; fen -> R20
.even
00C4 _main::
00C4 .dbline -1
00C4 .dbline 67
00C4 ;
00C4 ; void main(void)
00C4 ; {uchar fen=0;
00C4 .dbline 67
00C4 4427 clr R20
00C6 .dbline 68
00C6 ; init();
00C6 DBDF xcall _init
00C8 18C0 xjmp L17
00CA L16:
00CA .dbline 70
00CA ; while(1)
00CA ; {
00CA .dbline 71
00CA ; if(num==1000)
00CA 80910000 lds R24,_num
00CE 883E cpi R24,232
00D0 41F4 brne L19
00D2 .dbline 72
00D2 ; {num=0;
00D2 .dbline 72
00D2 2224 clr R2
00D4 20920000 sts _num,R2
00D8 .dbline 73
00D8 ; if(fen==59)
00D8 4B33 cpi R20,59
00DA 11F4 brne L21
00DC .dbline 74
00DC ; {fen=0;
00DC .dbline 74
00DC 4427 clr R20
00DE .dbline 75
00DE ; }
00DE 01C0 xjmp L22
00E0 L21:
00E0 .dbline 76
00E0 ; else fen++;
00E0 4395 inc R20
00E2 L22:
00E2 .dbline 77
00E2 ; }
00E2 L19:
00E2 .dbline 78
00E2 2227 clr R18
00E4 1AE0 ldi R17,10
00E6 042F mov R16,R20
00E8 0E940000 xcall div8u
00EC 9FDF xcall _show
00EE .dbline 79
00EE 21E0 ldi R18,1
00F0 1AE0 ldi R17,10
00F2 042F mov R16,R20
00F4 0E940000 xcall mod8u
00F8 99DF xcall _show
00FA .dbline 80
00FA L17:
00FA .dbline 69
00FA E7CF xjmp L16
00FC X0:
00FC .dbline -2
00FC .dbline 81
00FC ; show(fen/10,0);
00FC ; show(fen%10,1);
00FC ; }
00FC ; }
00FC L15:
00FC .dbline 0 ; func end
00FC 0895 ret
00FE .dbsym r fen 20 c
00FE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -