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

📄 diy0816_08.lis

📁 AVR单片机应用开发指南及实例,包含许多实例,挺不错
💻 LIS
字号:
                        .module diy0816_08.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\SL-DIY~1\diy0208_16_8\diy0816_08.c
 0000                   .dbfunc e delay_us _delay_us fV
 0000           ;           time -> R16,R17
                        .even
 0000           _delay_us::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; //8.  I/O端口的进一步应用。
 0000           ; //请你设计SL-DIY08-16主板上4个I/O口32个LED灯的变化多样的广告灯程序。
 0000           ; //     www.sl.com.cn
 0000           ; //    teny@sl.com.cn    05-11-12
 0000           ; // Target : atmega16     Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #define delay_time 500
 0000           ;      //delay_time=500,定义延时常量
 0000           ; unsigned char pa_buf,pb_buf,pc_buf,pd_buf,loop_timers;
 0000           ;        //定义为字符型变量
 0000           ; void delay_us(int time)
 0000           ; {    //微秒延时         
 0000           L2:
 0000                   .dbline 17
 0000           ;  do
 0000           ;  {
 0000                   .dbline 18
 0000           ;   time--;
 0000 0150              subi R16,1
 0002 1040              sbci R17,0
 0004                   .dbline 19
 0004           ;  }    
 0004           L3:
 0004                   .dbline 20
 0004           ;   while (time>1);
 0004 81E0              ldi R24,1
 0006 90E0              ldi R25,0
 0008 8017              cp R24,R16
 000A 9107              cpc R25,R17
 000C CCF3              brlt L2
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r time 16 I
 0010                   .dbend
 0010                   .dbfunc e delay_ms _delay_ms fV
 0010           ;           time -> R20,R21
                        .even
 0010           _delay_ms::
 0010 0E940000          xcall push_gset1
 0014 A801              movw R20,R16
 0016                   .dbline -1
 0016                   .dbline 24
 0016           ; }       
 0016           ; 
 0016           ; void delay_ms(unsigned int time)
 0016           ; {    //毫秒延时
 0016 05C0              xjmp L7
 0018           L6:
 0018                   .dbline 26
 0018                   .dbline 27
 0018 08EE              ldi R16,1000
 001A 13E0              ldi R17,3
 001C F1DF              xcall _delay_us
 001E                   .dbline 28
 001E 4150              subi R20,1
 0020 5040              sbci R21,0
 0022                   .dbline 29
 0022           L7:
 0022                   .dbline 25
 0022           ;  while(time!=0)
 0022 4030              cpi R20,0
 0024 4507              cpc R20,R21
 0026 C1F7              brne L6
 0028           X0:
 0028                   .dbline -2
 0028           L5:
 0028 0E940000          xcall pop_gset1
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r time 20 i
 002E                   .dbend
 002E                   .dbfunc e shiyan8 _shiyan8 fV
                        .even
 002E           _shiyan8::
 002E                   .dbline -1
 002E                   .dbline 33
 002E           ;  {            
 002E           ;   delay_us(1000);
 002E           ;   time--;
 002E           ;  }
 002E           ; }             
 002E           ; 
 002E           ; void shiyan8()
 002E           ; {      //PA口、PB口、PC口、PD口都为输出口
 002E                   .dbline 34
 002E           ;  DDRA=0xFF;PORTA=0xFF;
 002E 8FEF              ldi R24,255
 0030 8ABB              out 0x1a,R24
 0032                   .dbline 34
 0032 8BBB              out 0x1b,R24
 0034                   .dbline 35
 0034           ;  DDRB=0xFF;PORTB=0xFF;
 0034 87BB              out 0x17,R24
 0036                   .dbline 35
 0036 88BB              out 0x18,R24
 0038                   .dbline 36
 0038           ;  DDRC=0xFF;PORTC=0xFF;
 0038 84BB              out 0x14,R24
 003A                   .dbline 36
 003A 85BB              out 0x15,R24
 003C                   .dbline 37
 003C           ;  DDRD=0xFF;PORTD=0xFF;
 003C 81BB              out 0x11,R24
 003E                   .dbline 37
 003E 82BB              out 0x12,R24
 0040                   .dbline 38
 0040           ;  delay_ms(delay_time/2);
 0040 0AEF              ldi R16,250
 0042 10E0              ldi R17,0
 0044 E5DF              xcall _delay_ms
 0046 9CC0              xjmp L11
 0048           L10:
 0048                   .dbline 40
 0048           ;  while(1)//循环运行
 0048           ;  {
 0048                   .dbline 41
 0048           ;   pa_buf=0x01;//PA0~PA7依次点亮
 0048 81E0              ldi R24,1
 004A 80930400          sts _pa_buf,R24
 004E                   .dbline 42
 004E           ;   for(loop_timers=0;loop_timers<8;loop_timers++)
 004E 2224              clr R2
 0050 20920000          sts _loop_timers,R2
 0054 11C0              xjmp L16
 0056           L13:
 0056                   .dbline 43
 0056                   .dbline 43
 0056 20900400          lds R2,_pa_buf
 005A 2094              com R2
 005C 2BBA              out 0x1b,R2
 005E                   .dbline 43
 005E 20900400          lds R2,_pa_buf
 0062 220C              lsl R2
 0064 20920400          sts _pa_buf,R2
 0068                   .dbline 43
 0068 06EA              ldi R16,166
 006A 10E0              ldi R17,0
 006C D1DF              xcall _delay_ms
 006E                   .dbline 43
 006E           L14:
 006E                   .dbline 42
 006E 80910000          lds R24,_loop_timers
 0072 8F5F              subi R24,255    ; addi 1
 0074 80930000          sts _loop_timers,R24
 0078           L16:
 0078                   .dbline 42
 0078 80910000          lds R24,_loop_timers
 007C 8830              cpi R24,8
 007E 58F3              brlo L13
 0080                   .dbline 44
 0080           ;   {PORTA=~pa_buf;pa_buf=pa_buf<<1;delay_ms(delay_time/3);}
 0080           ;   PORTA=0xff;//PA口熄灭
 0080 8FEF              ldi R24,255
 0082 8BBB              out 0x1b,R24
 0084                   .dbline 45
 0084           ;   pc_buf=0x80;//PC7~PC0一次点亮
 0084 80E8              ldi R24,128
 0086 80930200          sts _pc_buf,R24
 008A                   .dbline 46
 008A           ;   for(loop_timers=0;loop_timers<8;loop_timers++)
 008A 2224              clr R2
 008C 20920000          sts _loop_timers,R2
 0090 11C0              xjmp L20
 0092           L17:
 0092                   .dbline 47
 0092                   .dbline 47
 0092 20900200          lds R2,_pc_buf
 0096 2094              com R2
 0098 25BA              out 0x15,R2
 009A                   .dbline 47
 009A 20900200          lds R2,_pc_buf
 009E 2694              lsr R2
 00A0 20920200          sts _pc_buf,R2
 00A4                   .dbline 47
 00A4 0DE7              ldi R16,125
 00A6 10E0              ldi R17,0
 00A8 B3DF              xcall _delay_ms
 00AA                   .dbline 47
 00AA           L18:
 00AA                   .dbline 46
 00AA 80910000          lds R24,_loop_timers
 00AE 8F5F              subi R24,255    ; addi 1
 00B0 80930000          sts _loop_timers,R24
 00B4           L20:
 00B4                   .dbline 46
 00B4 80910000          lds R24,_loop_timers
 00B8 8830              cpi R24,8
 00BA 58F3              brlo L17
 00BC                   .dbline 48
 00BC           ;   {PORTC=~pc_buf;pc_buf=pc_buf>>1;delay_ms(delay_time/4);}
 00BC           ;   PORTC=0xff;//PC口熄灭
 00BC 8FEF              ldi R24,255
 00BE 85BB              out 0x15,R24
 00C0                   .dbline 49
 00C0           ;   pb_buf=0x01;//PB0~PB7依次点亮
 00C0 81E0              ldi R24,1
 00C2 80930300          sts _pb_buf,R24
 00C6                   .dbline 50
 00C6           ;   for(loop_timers=0;loop_timers<8;loop_timers++)
 00C6 2224              clr R2
 00C8 20920000          sts _loop_timers,R2
 00CC 11C0              xjmp L24
 00CE           L21:
 00CE                   .dbline 51
 00CE                   .dbline 51
 00CE 20900300          lds R2,_pb_buf
 00D2 2094              com R2
 00D4 28BA              out 0x18,R2
 00D6                   .dbline 51
 00D6 20900300          lds R2,_pb_buf
 00DA 220C              lsl R2
 00DC 20920300          sts _pb_buf,R2
 00E0                   .dbline 51
 00E0 0DE7              ldi R16,125
 00E2 10E0              ldi R17,0
 00E4 95DF              xcall _delay_ms
 00E6                   .dbline 51
 00E6           L22:
 00E6                   .dbline 50
 00E6 80910000          lds R24,_loop_timers
 00EA 8F5F              subi R24,255    ; addi 1
 00EC 80930000          sts _loop_timers,R24
 00F0           L24:
 00F0                   .dbline 50
 00F0 80910000          lds R24,_loop_timers
 00F4 8830              cpi R24,8
 00F6 58F3              brlo L21
 00F8                   .dbline 52
 00F8           ;   {PORTB=~pb_buf;pb_buf=pb_buf<<1;delay_ms(delay_time/4);}
 00F8           ;   PORTB=0xff;//PB口熄灭
 00F8 8FEF              ldi R24,255
 00FA 88BB              out 0x18,R24
 00FC                   .dbline 53
 00FC           ;   pd_buf=0x01;//PD0~PD7依次点亮
 00FC 81E0              ldi R24,1
 00FE 80930100          sts _pd_buf,R24
 0102                   .dbline 54
 0102           ;   for(loop_timers=0;loop_timers<8;loop_timers++)
 0102 2224              clr R2
 0104 20920000          sts _loop_timers,R2
 0108 11C0              xjmp L28
 010A           L25:
 010A                   .dbline 55
 010A                   .dbline 55
 010A 20900100          lds R2,_pd_buf
 010E 2094              com R2
 0110 22BA              out 0x12,R2
 0112                   .dbline 55
 0112 20900100          lds R2,_pd_buf
 0116 220C              lsl R2
 0118 20920100          sts _pd_buf,R2
 011C                   .dbline 55
 011C 0DE7              ldi R16,125
 011E 10E0              ldi R17,0
 0120 77DF              xcall _delay_ms
 0122                   .dbline 55
 0122           L26:
 0122                   .dbline 54
 0122 80910000          lds R24,_loop_timers
 0126 8F5F              subi R24,255    ; addi 1
 0128 80930000          sts _loop_timers,R24
 012C           L28:
 012C                   .dbline 54
 012C 80910000          lds R24,_loop_timers
 0130 8830              cpi R24,8
 0132 58F3              brlo L25
 0134                   .dbline 56
 0134           ;   {PORTD=~pd_buf;pd_buf=pd_buf<<1;delay_ms(delay_time/4);}
 0134           ;   PORTD=0xff;//PD口熄灭
 0134 8FEF              ldi R24,255
 0136 82BB              out 0x12,R24
 0138                   .dbline 57
 0138           ;   for(loop_timers=0;loop_timers<4;loop_timers++)
 0138 2224              clr R2
 013A 20920000          sts _loop_timers,R2
 013E 17C0              xjmp L32
 0140           L29:
 0140                   .dbline 58
 0140                   .dbline 59
 0140 80EF              ldi R24,240
 0142 82BB              out 0x12,R24
 0144 8BBB              out 0x1b,R24
 0146                   .dbline 59
 0146 8FE0              ldi R24,15
 0148 85BB              out 0x15,R24
 014A 88BB              out 0x18,R24
 014C                   .dbline 59
 014C 0AEF              ldi R16,250
 014E 10E0              ldi R17,0
 0150 5FDF              xcall _delay_ms
 0152                   .dbline 60
 0152 8FE0              ldi R24,15
 0154 82BB              out 0x12,R24
 0156 8BBB              out 0x1b,R24
 0158                   .dbline 60
 0158 80EF              ldi R24,240
 015A 85BB              out 0x15,R24
 015C 88BB              out 0x18,R24
 015E                   .dbline 60
 015E 0AEF              ldi R16,250
 0160 10E0              ldi R17,0
 0162 56DF              xcall _delay_ms
 0164                   .dbline 61
 0164           L30:
 0164                   .dbline 57
 0164 80910000          lds R24,_loop_timers
 0168 8F5F              subi R24,255    ; addi 1
 016A 80930000          sts _loop_timers,R24
 016E           L32:
 016E                   .dbline 57
 016E 80910000          lds R24,_loop_timers
 0172 8430              cpi R24,4
 0174 28F3              brlo L29
 0176                   .dbline 62
 0176 8FEF              ldi R24,255
 0178 82BB              out 0x12,R24
 017A 85BB              out 0x15,R24
 017C 88BB              out 0x18,R24
 017E 8BBB              out 0x1b,R24
 0180                   .dbline 63
 0180           L11:
 0180                   .dbline 39
 0180 63CF              xjmp L10
 0182           X1:
 0182                   .dbline -2
 0182           L9:
 0182                   .dbline 0 ; func end
 0182 0895              ret
 0184                   .dbend
 0184                   .dbfunc e main _main fV
                        .even
 0184           _main::
 0184                   .dbline -1
 0184                   .dbline 67
 0184           ;   {
 0184           ;    PORTA=PORTD=0xf0;PORTB=PORTC=0x0f;delay_ms(delay_time/2);
 0184           ;    PORTA=PORTD=0x0f;PORTB=PORTC=0xf0;delay_ms(delay_time/2);
 0184           ;   }//PA、PB、PC、PD对半交替闪烁
 0184           ;   PORTA=PORTB=PORTC=PORTD=0xFF;//熄灭四个口所有的LED
 0184           ;  }
 0184           ; }
 0184           ; 
 0184           ; void main()
 0184           ; {
 0184                   .dbline 68
 0184           ;  shiyan8();//实验8函数
 0184 54DF              xcall _shiyan8
 0186                   .dbline -2
 0186           L33:
 0186                   .dbline 0 ; func end
 0186 0895              ret
 0188                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\SL-DIY~1\diy0208_16_8\diy0816_08.c
 0000           _loop_timers::
 0000                   .blkb 1
 0001                   .dbsym e loop_timers _loop_timers c
 0001           _pd_buf::
 0001                   .blkb 1
 0002                   .dbsym e pd_buf _pd_buf c
 0002           _pc_buf::
 0002                   .blkb 1
 0003                   .dbsym e pc_buf _pc_buf c
 0003           _pb_buf::
 0003                   .blkb 1
 0004                   .dbsym e pb_buf _pb_buf c
 0004           _pa_buf::
 0004                   .blkb 1
 0005                   .dbsym e pa_buf _pa_buf c

⌨️ 快捷键说明

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