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

📄 led.lis

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

⌨️ 快捷键说明

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