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

📄 led.lis

📁 单片机实例书籍
💻 LIS
字号:
                        .module Led.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\机器人3\avr\AVR典型实例\第2章程序\复件IO~1\跑马灯设计\Led.c
 0000                   .dbfunc e DelayMs _DelayMs fV
 0000           ;              j -> R20,R21
 0000           ;              i -> R16,R17
                        .even
 0000           _DelayMs::
 0000 4A93              st -y,R20
 0002 5A93              st -y,R21
 0004                   .dbline -1
 0004                   .dbline 9
 0004           ; //******************************FileName: LED.C******************************//
 0004           ; //******************************ICCAVR V6.30编译****************************//
 0004           ; 
 0004           ; #include<io8535v.h>            //头文件,AT90S8535单片机的寄存器定义
 0004           ; #define uchar unsigned char    //数据类型说明
 0004           ; #define uint  unsigned int     //数据类型说明
 0004           ; 
 0004           ; void DelayMs(uint i)           //Ms级延时函数,参数i:延时时间
 0004           ; {uint j;
 0004                   .dbline 10
 0004           ;  for(;i!=0;i--)
 0004 0AC0              xjmp L5
 0006           L2:
 0006                   .dbline 11
 0006           ;   {for(j=8000;j!=0;j--) ;}
 0006                   .dbline 11
 0006 40E4              ldi R20,8000
 0008 5FE1              ldi R21,31
 000A 02C0              xjmp L9
 000C           L6:
 000C                   .dbline 11
 000C           L7:
 000C                   .dbline 11
 000C 4150              subi R20,1
 000E 5040              sbci R21,0
 0010           L9:
 0010                   .dbline 11
 0010 4030              cpi R20,0
 0012 4507              cpc R20,R21
 0014 D9F7              brne L6
 0016           X0:
 0016                   .dbline 11
 0016           L3:
 0016                   .dbline 10
 0016 0150              subi R16,1
 0018 1040              sbci R17,0
 001A           L5:
 001A                   .dbline 10
 001A 0030              cpi R16,0
 001C 0107              cpc R16,R17
 001E 99F7              brne L2
 0020           X1:
 0020                   .dbline -2
 0020           L1:
 0020                   .dbline 0 ; func end
 0020 5991              ld R21,y+
 0022 4991              ld R20,y+
 0024 0895              ret
 0026                   .dbsym r j 20 i
 0026                   .dbsym r i 16 i
 0026                   .dbend
 0026                   .dbfunc e Horse _Horse fV
 0026           ;              i -> R16
                        .even
 0026           _Horse::
 0026 4A93              st -y,R20
 0028 5A93              st -y,R21
 002A                   .dbline -1
 002A                   .dbline 15
 002A           ; }
 002A           ; 
 002A           ; void Horse(uchar i)            //跑马灯程序,通过步判断点亮相应的LED
 002A           ; {switch(i)                     //高电平点亮LED
 002A                   .dbline 15
 002A 402F              mov R20,R16
 002C 5527              clr R21
 002E 4130              cpi R20,1
 0030 E0E0              ldi R30,0
 0032 5E07              cpc R21,R30
 0034 E9F0              breq L14
 0036           X2:
 0036 4230              cpi R20,2
 0038 E0E0              ldi R30,0
 003A 5E07              cpc R21,R30
 003C E1F0              breq L15
 003E           X3:
 003E 4330              cpi R20,3
 0040 E0E0              ldi R30,0
 0042 5E07              cpc R21,R30
 0044 D9F0              breq L16
 0046           X4:
 0046 4430              cpi R20,4
 0048 E0E0              ldi R30,0
 004A 5E07              cpc R21,R30
 004C D1F0              breq L17
 004E           X5:
 004E 4530              cpi R20,5
 0050 E0E0              ldi R30,0
 0052 5E07              cpc R21,R30
 0054 C9F0              breq L18
 0056           X6:
 0056 4630              cpi R20,6
 0058 E0E0              ldi R30,0
 005A 5E07              cpc R21,R30
 005C C1F0              breq L19
 005E           X7:
 005E 4730              cpi R20,7
 0060 E0E0              ldi R30,0
 0062 5E07              cpc R21,R30
 0064 B9F0              breq L20
 0066           X8:
 0066 4830              cpi R20,8
 0068 E0E0              ldi R30,0
 006A 5E07              cpc R21,R30
 006C B1F0              breq L21
 006E           X9:
 006E 17C0              xjmp L12
 0070           L14:
 0070                   .dbline 16
 0070           ;  {case 1:PORTA=0x01;break;     //0000 0001B 点亮LED1
 0070 81E0              ldi R24,1
 0072 8BBB              out 0x1b,R24
 0074                   .dbline 16
 0074 14C0              xjmp L12
 0076           L15:
 0076                   .dbline 17
 0076           ;   case 2:PORTA=0x03;break;     //0000 0011B 点亮LED1~LED2
 0076 83E0              ldi R24,3
 0078 8BBB              out 0x1b,R24
 007A                   .dbline 17
 007A 11C0              xjmp L12
 007C           L16:
 007C                   .dbline 18
 007C           ;   case 3:PORTA=0x07;break;     //0000 0111B 点亮LED1~LED3
 007C 87E0              ldi R24,7
 007E 8BBB              out 0x1b,R24
 0080                   .dbline 18
 0080 0EC0              xjmp L12
 0082           L17:
 0082                   .dbline 19
 0082           ;   case 4:PORTA=0x0f;break;     //0000 1111B 点亮LED1~LED4
 0082 8FE0              ldi R24,15
 0084 8BBB              out 0x1b,R24
 0086                   .dbline 19
 0086 0BC0              xjmp L12
 0088           L18:
 0088                   .dbline 20
 0088           ;   case 5:PORTA=0x1f;break;     //0001 1111B 点亮LED1~LED5
 0088 8FE1              ldi R24,31
 008A 8BBB              out 0x1b,R24
 008C                   .dbline 20
 008C 08C0              xjmp L12
 008E           L19:
 008E                   .dbline 21
 008E           ;   case 6:PORTA=0x3f;break;     //0011 1111B 点亮LED1~LED6
 008E 8FE3              ldi R24,63
 0090 8BBB              out 0x1b,R24
 0092                   .dbline 21
 0092 05C0              xjmp L12
 0094           L20:
 0094                   .dbline 22
 0094           ;   case 7:PORTA=0x7f;break;     //0111 1111B 点亮LED1~LED7
 0094 8FE7              ldi R24,127
 0096 8BBB              out 0x1b,R24
 0098                   .dbline 22
 0098 02C0              xjmp L12
 009A           L21:
 009A                   .dbline 23
 009A           ;   case 8:PORTA=0xff;break;     //1111 1111B 点亮LED1~LED8
 009A 8FEF              ldi R24,255
 009C 8BBB              out 0x1b,R24
 009E                   .dbline 23
 009E                   .dbline 24
 009E           ;   default:break;}
 009E           L12:
 009E                   .dbline -2
 009E           L10:
 009E                   .dbline 0 ; func end
 009E 5991              ld R21,y+
 00A0 4991              ld R20,y+
 00A2 0895              ret
 00A4                   .dbsym r i 16 c
 00A4                   .dbend
 00A4                   .dbfunc e main _main fV
 00A4           ;              i -> R20
                        .even
 00A4           _main::
 00A4                   .dbline -1
 00A4                   .dbline 28
 00A4           ; }
 00A4           ; 
 00A4           ; void main(void)               
 00A4           ; {uchar i;
 00A4                   .dbline 29
 00A4           ;  DDRA=0xff;                    //端口设置:PA口设置为推挽1输出
 00A4 8FEF              ldi R24,255
 00A6 8ABB              out 0x1a,R24
 00A8                   .dbline 30
 00A8           ;  PORTA=0xff;
 00A8 8BBB              out 0x1b,R24
 00AA                   .dbline 31
 00AA           ;  PORTA=0x00;                   //PORTA初始值为0,灭掉所有的LED      
 00AA 2224              clr R2
 00AC 2BBA              out 0x1b,R2
 00AE                   .dbline 32
 00AE           ;  DelayMs(1000);
 00AE 08EE              ldi R16,1000
 00B0 13E0              ldi R17,3
 00B2 A6DF              xcall _DelayMs
 00B4 14C0              xjmp L24
 00B6           L23:
 00B6                   .dbline 34
 00B6           ;  while(1)                      //程序无条件执行
 00B6           ;   { for(i=0;i<9;i++)           //依次点亮LED1~LED8
 00B6                   .dbline 34
 00B6 4427              clr R20
 00B8 06C0              xjmp L29
 00BA           L26:
 00BA                   .dbline 35
 00BA           ;       {Horse(i);
 00BA                   .dbline 35
 00BA 042F              mov R16,R20
 00BC B4DF              xcall _Horse
 00BE                   .dbline 36
 00BE           ;          DelayMs(1000);}         //点亮时间约1秒
 00BE 08EE              ldi R16,1000
 00C0 13E0              ldi R17,3
 00C2 9EDF              xcall _DelayMs
 00C4                   .dbline 36
 00C4           L27:
 00C4                   .dbline 34
 00C4 4395              inc R20
 00C6           L29:
 00C6                   .dbline 34
 00C6 4930              cpi R20,9
 00C8 C0F3              brlo L26
 00CA           X10:
 00CA                   .dbline 37
 00CA           ;       for(i=7;i!=0;i--)          //依次熄灭LED8~LED1
 00CA 47E0              ldi R20,7
 00CC 06C0              xjmp L33
 00CE           L30:
 00CE                   .dbline 38
 00CE           ;       {Horse(i);
 00CE                   .dbline 38
 00CE 042F              mov R16,R20
 00D0 AADF              xcall _Horse
 00D2                   .dbline 39
 00D2           ;          DelayMs(1000);}         //熄灭时间约1秒
 00D2 08EE              ldi R16,1000
 00D4 13E0              ldi R17,3
 00D6 94DF              xcall _DelayMs
 00D8                   .dbline 39
 00D8           L31:
 00D8                   .dbline 37
 00D8 4A95              dec R20
 00DA           L33:
 00DA                   .dbline 37
 00DA 4423              tst R20
 00DC C1F7              brne L30
 00DE           X11:
 00DE                   .dbline 40
 00DE           ;   }
 00DE           L24:
 00DE                   .dbline 33
 00DE EBCF              xjmp L23
 00E0           X12:
 00E0                   .dbline -2
 00E0           L22:
 00E0                   .dbline 0 ; func end
 00E0 0895              ret
 00E2                   .dbsym r i 20 c
 00E2                   .dbend
 00E2           ; }

⌨️ 快捷键说明

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