⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lesson7.lis

📁 这个是AVR关中定时器与中断方面的程序
💻 LIS
字号:
                        .module lesson7.c
                        .area data(ram, con, rel)
 0000           _num::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile I:\学习\单片机编程\AVR\十天学~1\第七集\lesson7\chengxu\MIAO\lesson7.c
 0001                   .dbsym e num _num c
                        .area vector(rom, abs)
                        .org 32
 0020 0C943A00          jmp _miao
                        .area data(ram, con, rel)
 0001                   .dbfile I:\学习\单片机编程\AVR\十天学~1\第七集\lesson7\chengxu\MIAO\lesson7.c
                        .area code(ram, con, rel)
 0000                   .dbfile I:\学习\单片机编程\AVR\十天学~1\第七集\lesson7\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 I:\学习\单片机编程\AVR\十天学~1\第七集\lesson7\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_gset2
 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 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                   .dbline 17
 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                   .dbline -2
 0026           L1:
 0026 0E940000          xcall pop_gset2
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r i 20 i
 002C                   .dbsym r j 22 i
 002C                   .dbsym r ms 16 i
 002C                   .dbend
 002C                   .dbfunc e show _show fV
 002C           ;              k -> R20
 002C           ;              j -> R22
                        .even
 002C           _show::
 002C 0E940000          xcall push_gset2
 0030 422F              mov R20,R18
 0032 602F              mov R22,R16
 0034                   .dbline -1
 0034                   .dbline 20
 0034           ;          for(j=0;j<1141;j++);
 0034           ;        }
 0034           ; }
 0034           ; void show(uchar j,uchar k)
 0034           ; {
 0034                   .dbline 21
 0034           ;         PORTA|=BIT(3);
 0034 DB9A              sbi 0x1b,3
 0036                   .dbline 22
 0036           ;       PORTB=table[j];
 0036 82E0              ldi R24,2
 0038 869F              mul R24,R22
 003A F001              movw R30,R0
 003C 80E0              ldi R24,<_table
 003E 90E0              ldi R25,>_table
 0040 E80F              add R30,R24
 0042 F91F              adc R31,R25
 0044 0590              lpm R0,Z+
 0046 1490              lpm R1,Z
 0048 F001              movw R30,R0
 004A E8BB              out 0x18,R30
 004C                   .dbline 23
 004C           ;       PORTA&=~BIT(3);
 004C DB98              cbi 0x1b,3
 004E                   .dbline 25
 004E           ;       
 004E           ;       PORTB=0XFF;
 004E 8FEF              ldi R24,255
 0050 88BB              out 0x18,R24
 0052                   .dbline 26
 0052           ;       PORTB&=~BIT(k);
 0052 01E0              ldi R16,1
 0054 142F              mov R17,R20
 0056 0E940000          xcall lsl8
 005A 202E              mov R2,R16
 005C 2094              com R2
 005E 38B2              in R3,0x18
 0060 3220              and R3,R2
 0062 38BA              out 0x18,R3
 0064                   .dbline 27
 0064           ;       PORTA|=BIT(4);
 0064 DC9A              sbi 0x1b,4
 0066                   .dbline 28
 0066           ;       PORTA&=~BIT(4);
 0066 DC98              cbi 0x1b,4
 0068                   .dbline 29
 0068           ;       delay(1);
 0068 01E0              ldi R16,1
 006A 10E0              ldi R17,0
 006C C9DF              xcall _delay
 006E                   .dbline -2
 006E           L10:
 006E 0E940000          xcall pop_gset2
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbsym r k 20 c
 0074                   .dbsym r j 22 c
 0074                   .dbend
 0074                   .dbfunc e miao _miao fV
                        .even
 0074           _miao::
 0074 2A92              st -y,R2
 0076 8A93              st -y,R24
 0078 9A93              st -y,R25
 007A 2FB6              in R2,0x3f
 007C 2A92              st -y,R2
 007E                   .dbline -1
 007E                   .dbline 32
 007E           ; }
 007E           ; void miao()
 007E           ; {
 007E                   .dbline 33
 007E           ;     if(num==60)
 007E 80910000          lds R24,_num
 0082 8C33              cpi R24,60
 0084 19F4              brne L12
 0086                   .dbline 34
 0086           ;          num=0;
 0086 2224              clr R2
 0088 20920000          sts _num,R2
 008C           L12:
 008C                   .dbline 35
 008C           ;        num++;
 008C 80910000          lds R24,_num
 0090 8F5F              subi R24,255    ; addi 1
 0092 80930000          sts _num,R24
 0096                   .dbline 36
 0096           ;       TCNT1H=0X85;
 0096 85E8              ldi R24,133
 0098 8DBD              out 0x2d,R24
 009A                   .dbline 37
 009A           ;       TCNT1L=0XED;  
 009A 8DEE              ldi R24,237
 009C 8CBD              out 0x2c,R24
 009E                   .dbline -2
 009E           L11:
 009E 2990              ld R2,y+
 00A0 2FBE              out 0x3f,R2
 00A2 9991              ld R25,y+
 00A4 8991              ld R24,y+
 00A6 2990              ld R2,y+
 00A8                   .dbline 0 ; func end
 00A8 1895              reti
 00AA                   .dbend
 00AA                   .dbfunc e main _main fV
                        .even
 00AA           _main::
 00AA                   .dbline -1
 00AA                   .dbline 40
 00AA           ; }
 00AA           ; void main()
 00AA           ; {
 00AA                   .dbline 41
 00AA           ;     DDRB=0XFF;
 00AA 8FEF              ldi R24,255
 00AC 87BB              out 0x17,R24
 00AE                   .dbline 42
 00AE           ;       DDRA|=0X18;
 00AE 8AB3              in R24,0x1a
 00B0 8861              ori R24,24
 00B2 8ABB              out 0x1a,R24
 00B4                   .dbline 44
 00B4           ;       
 00B4           ;       TCCR1B=0X04;
 00B4 84E0              ldi R24,4
 00B6 8EBD              out 0x2e,R24
 00B8                   .dbline 45
 00B8           ;       TCNT1H=0X85;
 00B8 85E8              ldi R24,133
 00BA 8DBD              out 0x2d,R24
 00BC                   .dbline 46
 00BC           ;       TCNT1L=0XED;
 00BC 8DEE              ldi R24,237
 00BE 8CBD              out 0x2c,R24
 00C0                   .dbline 47
 00C0           ;       TIMSK|=BIT(2);
 00C0 89B7              in R24,0x39
 00C2 8460              ori R24,4
 00C4 89BF              out 0x39,R24
 00C6                   .dbline 48
 00C6           ;       SREG|=BIT(7);
 00C6 7894              bset 7
 00C8 0EC0              xjmp L16
 00CA           L15:
 00CA                   .dbline 51
 00CA                   .dbline 52
 00CA 2227              clr R18
 00CC 1AE0              ldi R17,10
 00CE 00910000          lds R16,_num
 00D2 0E940000          xcall div8u
 00D6 AADF              xcall _show
 00D8                   .dbline 53
 00D8 21E0              ldi R18,1
 00DA 1AE0              ldi R17,10
 00DC 00910000          lds R16,_num
 00E0 0E940000          xcall mod8u
 00E4 A3DF              xcall _show
 00E6                   .dbline 54
 00E6           L16:
 00E6                   .dbline 50
 00E6 F1CF              xjmp L15
 00E8           X0:
 00E8                   .dbline -2
 00E8           L14:
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
 00EA                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -