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

📄 fangbojishu.lis

📁 AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega16中文资料及Protel部分电路图
💻 LIS
字号:
                        .module FANGBOJISHU.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\fangbojishu\FANGBOJISHU.c
                        .area data(ram, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\fangbojishu\FANGBOJISHU.c
 0000           _num::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\fangbojishu\FANGBOJISHU.c
 0001                   .dbsym e num _num c
                        .area vector(rom, abs)
                        .org 24
 0018 0C943900          jmp _miao
                        .area data(ram, con, rel)
 0001                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\fangbojishu\FANGBOJISHU.c
                        .area code(ram, con, rel)
 0000                   .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\fangbojishu\FANGBOJISHU.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\fangbojishu\FANGBOJISHU.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:7
 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=0X00;
 0094 2224              clr R2
 0096 2DBC              out 0x2d,R2
 0098                   .dbline 37
 0098           ;       TCNT1L=0X00;  
 0098 2CBC              out 0x2c,R2
 009A                   .dbline -2
 009A           L11:
 009A                   .dbline 0 ; func end
 009A 2990              ld R2,y+
 009C 2FBE              out 0x3f,R2
 009E 9991              ld R25,y+
 00A0 8991              ld R24,y+
 00A2 2990              ld R2,y+
 00A4 1895              reti
 00A6                   .dbend
 00A6                   .dbfunc e main _main fV
                        .even
 00A6           _main::
 00A6                   .dbline -1
 00A6                   .dbline 40
 00A6           ; }
 00A6           ; void main()
 00A6           ; {
 00A6                   .dbline 41
 00A6           ;     DDRB=0XFF;
 00A6 8FEF              ldi R24,255
 00A8 87BB              out 0x17,R24
 00AA                   .dbline 42
 00AA           ;       DDRD|=0X30;
 00AA 81B3              in R24,0x11
 00AC 8063              ori R24,48
 00AE 81BB              out 0x11,R24
 00B0                   .dbline 43
 00B0           ;       DDRA|=0X18;//573锁存端
 00B0 8AB3              in R24,0x1a
 00B2 8861              ori R24,24
 00B4 8ABB              out 0x1a,R24
 00B6                   .dbline 44
 00B6           ;       TCCR1A=0X50;//T/C1控制寄存器A
 00B6 80E5              ldi R24,80
 00B8 8FBD              out 0x2f,R24
 00BA                   .dbline 45
 00BA           ;       TCCR1B=0X0A;//T/C1控制寄存器B
 00BA 8AE0              ldi R24,10
 00BC 8EBD              out 0x2e,R24
 00BE                   .dbline 46
 00BE           ;       TCNT1=0;//计数寄存器
 00BE 2224              clr R2
 00C0 3324              clr R3
 00C2 3DBC              out 0x2d,R3
 00C4 2CBC              out 0x2c,R2
 00C6                   .dbline 47
 00C6           ;       OCR1A=999;//比较寄存器
 00C6 87EE              ldi R24,999
 00C8 93E0              ldi R25,3
 00CA 9BBD              out 0x2b,R25
 00CC 8ABD              out 0x2a,R24
 00CE                   .dbline 48
 00CE           ;       TIMSK|=BIT(2);//T/C1中断屏蔽寄存器
 00CE 89B7              in R24,0x39
 00D0 8460              ori R24,4
 00D2 89BF              out 0x39,R24
 00D4                   .dbline 49
 00D4           ;       TIFR|=BIT(4);//T/C中断标志寄存器
 00D4 88B7              in R24,0x38
 00D6 8061              ori R24,16
 00D8 88BF              out 0x38,R24
 00DA                   .dbline 50
 00DA           ;       TIFR|=BIT(3);//T/C中断标志寄存器
 00DA 88B7              in R24,0x38
 00DC 8860              ori R24,8
 00DE 88BF              out 0x38,R24
 00E0                   .dbline 51
 00E0           ;       SREG|=BIT(7);//总中断
 00E0 7894              bset 7
 00E2 0EC0              xjmp L16
 00E4           L15:
 00E4                   .dbline 54
 00E4           ;       
 00E4           ;       while(1)
 00E4           ;       {
 00E4                   .dbline 55
 00E4           ;           show(num/10,1);
 00E4 21E0              ldi R18,1
 00E6 1AE0              ldi R17,10
 00E8 00910000          lds R16,_num
 00EC 0E940000          xcall div8u
 00F0 9CDF              xcall _show
 00F2                   .dbline 56
 00F2           ;               show(num%10,0);
 00F2 2227              clr R18
 00F4 1AE0              ldi R17,10
 00F6 00910000          lds R16,_num
 00FA 0E940000          xcall mod8u
 00FE 95DF              xcall _show
 0100                   .dbline 57
 0100           ;       }
 0100           L16:
 0100                   .dbline 53
 0100 F1CF              xjmp L15
 0102           X3:
 0102                   .dbline -2
 0102           L14:
 0102                   .dbline 0 ; func end
 0102 0895              ret
 0104                   .dbend
 0104           ; }

⌨️ 快捷键说明

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