📄 lesson7.lis
字号:
.module lesson7.c
.area text(rom, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\MIAO\lesson7.c
.area data(ram, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\MIAO\lesson7.c
0000 _num::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\MIAO\lesson7.c
0001 .dbsym e num _num c
.area vector(rom, abs)
.org 32
0020 0C943900 jmp _miao
.area data(ram, con, rel)
0001 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\MIAO\lesson7.c
.area code(ram, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\MIAO\lesson7.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]kI
.area text(rom, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\MIAO\lesson7.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_xgsetF000
0004 .dbline -1
0004 .dbline 12
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; uchar num=0;
0004 ; #pragma interrupt_handler miao:9
0004 ; #pragma data:code
0004 ; const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0004 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
0004 ;
0004 ; void delay(uint ms)
0004 ; {
0004 .dbline 14
0004 ; uint i,j;
0004 ; for(i=0;i<ms;i++)
0004 4427 clr R20
0006 5527 clr R21
0008 0BC0 xjmp L5
000A L2:
000A .dbline 15
000A ; {
000A .dbline 16
000A ; for(j=0;j<1141;j++);
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 16
0010 L7:
0010 .dbline 16
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 16
0014 6537 cpi R22,117
0016 E4E0 ldi R30,4
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C X0:
001C .dbline 17
001C ; }
001C L3:
001C .dbline 14
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 14
0020 4017 cp R20,R16
0022 5107 cpc R21,R17
0024 90F3 brlo L2
0026 X1:
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0C940000 xjmp pop_xgsetF000
002A .dbsym r i 20 i
002A .dbsym r j 22 i
002A .dbsym r ms 16 i
002A .dbend
002A .dbfunc e show _show fV
002A ; k -> R10
002A ; j -> R12
.even
002A _show::
002A AA92 st -y,R10
002C CA92 st -y,R12
002E A22E mov R10,R18
0030 C02E mov R12,R16
0032 .dbline -1
0032 .dbline 20
0032 ; }
0032 ; void show(uchar j,uchar k)
0032 ; {
0032 .dbline 21
0032 ; PORTA|=BIT(3);
0032 DB9A sbi 0x1b,3
0034 .dbline 22
0034 ; PORTB=table[j];
0034 80E0 ldi R24,<_table
0036 90E0 ldi R25,>_table
0038 EC2D mov R30,R12
003A FF27 clr R31
003C EE0F lsl R30
003E FF1F rol R31
0040 E80F add R30,R24
0042 F91F adc R31,R25
0044 2590 lpm R2,Z+
0046 3490 lpm R3,Z
0048 28BA out 0x18,R2
004A .dbline 23
004A ; PORTA&=~BIT(3);
004A DB98 cbi 0x1b,3
004C .dbline 25
004C ;
004C ; PORTB=0XFF;
004C 8FEF ldi R24,255
004E 88BB out 0x18,R24
0050 .dbline 26
0050 ; PORTB&=~BIT(k);
0050 01E0 ldi R16,1
0052 1A2D mov R17,R10
0054 0E940000 xcall lsl8
0058 202E mov R2,R16
005A 2094 com R2
005C 38B2 in R3,0x18
005E 3220 and R3,R2
0060 38BA out 0x18,R3
0062 .dbline 27
0062 ; PORTA|=BIT(4);
0062 DC9A sbi 0x1b,4
0064 .dbline 28
0064 ; PORTA&=~BIT(4);
0064 DC98 cbi 0x1b,4
0066 .dbline 29
0066 ; delay(80);//delay(1);
0066 00E5 ldi R16,80
0068 10E0 ldi R17,0
006A CADF xcall _delay
006C .dbline -2
006C L10:
006C .dbline 0 ; func end
006C C990 ld R12,y+
006E A990 ld R10,y+
0070 0895 ret
0072 .dbsym r k 10 c
0072 .dbsym r j 12 c
0072 .dbend
0072 .dbfunc e miao _miao fV
.even
0072 _miao::
0072 2A92 st -y,R2
0074 8A93 st -y,R24
0076 9A93 st -y,R25
0078 2FB6 in R2,0x3f
007A 2A92 st -y,R2
007C .dbline -1
007C .dbline 32
007C ; }
007C ; void miao()
007C ; {
007C .dbline 33
007C ; if(num==60)
007C 80910000 lds R24,_num
0080 8C33 cpi R24,60
0082 19F4 brne L12
0084 X2:
0084 .dbline 34
0084 ; num=0;
0084 2224 clr R2
0086 20920000 sts _num,R2
008A L12:
008A .dbline 35
008A ; num++;
008A 80910000 lds R24,_num
008E 8F5F subi R24,255 ; addi 1
0090 80930000 sts _num,R24
0094 .dbline 36
0094 ; TCNT1H=0X85;
0094 85E8 ldi R24,133
0096 8DBD out 0x2d,R24
0098 .dbline 37
0098 ; TCNT1L=0XED;
0098 8DEE ldi R24,237
009A 8CBD out 0x2c,R24
009C .dbline -2
009C L11:
009C .dbline 0 ; func end
009C 2990 ld R2,y+
009E 2FBE out 0x3f,R2
00A0 9991 ld R25,y+
00A2 8991 ld R24,y+
00A4 2990 ld R2,y+
00A6 1895 reti
00A8 .dbend
00A8 .dbfunc e main _main fV
.even
00A8 _main::
00A8 .dbline -1
00A8 .dbline 40
00A8 ; }
00A8 ; void main()
00A8 ; {
00A8 .dbline 41
00A8 ; DDRB=0XFF;
00A8 8FEF ldi R24,255
00AA 87BB out 0x17,R24
00AC .dbline 42
00AC ; DDRA|=0X18;//573锁存端
00AC 8AB3 in R24,0x1a
00AE 8861 ori R24,24
00B0 8ABB out 0x1a,R24
00B2 .dbline 44
00B2 ;
00B2 ; TCCR1B=0X04;//T/C1控制寄存器B
00B2 84E0 ldi R24,4
00B4 8EBD out 0x2e,R24
00B6 .dbline 45
00B6 ; TCNT1H=0X85;//计数寄存器(高位)
00B6 85E8 ldi R24,133
00B8 8DBD out 0x2d,R24
00BA .dbline 46
00BA ; TCNT1L=0XED;//计数寄存器(低位)
00BA 8DEE ldi R24,237
00BC 8CBD out 0x2c,R24
00BE .dbline 47
00BE ; TIMSK|=BIT(2);//T/C1中断屏蔽寄存器
00BE 89B7 in R24,0x39
00C0 8460 ori R24,4
00C2 89BF out 0x39,R24
00C4 .dbline 48
00C4 ; SREG|=BIT(7);//总中断
00C4 7894 bset 7
00C6 0EC0 xjmp L16
00C8 L15:
00C8 .dbline 51
00C8 ;
00C8 ; while(1)
00C8 ; {
00C8 .dbline 52
00C8 ; show(num/10,1);
00C8 21E0 ldi R18,1
00CA 1AE0 ldi R17,10
00CC 00910000 lds R16,_num
00D0 0E940000 xcall div8u
00D4 AADF xcall _show
00D6 .dbline 53
00D6 ; show(num%10,0);
00D6 2227 clr R18
00D8 1AE0 ldi R17,10
00DA 00910000 lds R16,_num
00DE 0E940000 xcall mod8u
00E2 A3DF xcall _show
00E4 .dbline 54
00E4 ; }
00E4 L16:
00E4 .dbline 50
00E4 F1CF xjmp L15
00E6 X3:
00E6 .dbline -2
00E6 L14:
00E6 .dbline 0 ; func end
00E6 0895 ret
00E8 .dbend
00E8 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -