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

📄 灯亮.lis

📁 led灯循环亮,对初学单片机者来说,ICCAVR 芯片atmega16l
💻 LIS
字号:
                        .module _灯亮.c
                        .area text(rom, con, rel)
 0000                   .dbfile 灯亮.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; #include <iom16v.h> //和单片机类型相对应的头文件,选择Atmega8做实验;
 0000           ; #include <macros.h>
 0000           ; void delay_1ms(void); //函数声明,本实验中会用到这两个函数
 0000           ; void delay_nms(unsigned int n);
 0000           ; void main(void) //主函数
 0000           ; {
 0000                   .dbline 7
 0000           ; OSCCAL=0X9E;//系统时钟校准,不同的芯片和不同的频率,
 0000 8EE9              ldi R24,158
 0002 81BF              out 0x31,R24
 0004                   .dbline 8
 0004           ; DDRC=0B00000011; //定义B口的PB0、PB1为输出口
 0004 83E0              ldi R24,3
 0006 84BB              out 0x14,R24
 0008                   .dbline 9
 0008           ; PORTC=0B00000001; //PB0口输出高电平,PB1口输出低电平,绿灯亮
 0008 81E0              ldi R24,1
 000A 85BB              out 0x15,R24
 000C                   .dbline 10
 000C           ; delay_nms(5000); //延时5秒
 000C 08E8              ldi R16,5000
 000E 13E1              ldi R17,19
 0010 19D0              xcall _delay_nms
 0012                   .dbline 11
 0012           ; PORTC=0B00000010; //PB1口输出高电平,PB0口输出低电平,关闭绿灯,红灯亮
 0012 82E0              ldi R24,2
 0014 85BB              out 0x15,R24
 0016                   .dbline 12
 0016           ; delay_nms(5000); //延时5秒
 0016 08E8              ldi R16,5000
 0018 13E1              ldi R17,19
 001A 14D0              xcall _delay_nms
 001C 07C0              xjmp L3
 001E           L2:
 001E                   .dbline 14
 001E                   .dbline 15
 001E 83E0              ldi R24,3
 0020 25B2              in R2,0x15
 0022 2826              eor R2,R24
 0024 25BA              out 0x15,R2
 0026                   .dbline 16
 0026 08EE              ldi R16,1000
 0028 13E0              ldi R17,3
 002A 0CD0              xcall _delay_nms
 002C                   .dbline 17
 002C           L3:
 002C                   .dbline 13
 002C F8CF              xjmp L2
 002E           X0:
 002E                   .dbline -2
 002E           L1:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbend
 0030                   .dbfunc e delay_1ms _delay_1ms fV
 0030           ;              i -> R16,R17
                        .even
 0030           _delay_1ms::
 0030                   .dbline -1
 0030                   .dbline 20
 0030           ; while(1) //程序一直执行该循环 
 0030           ; {
 0030           ;   PORTC^=0B00000011; //翻转PB0和PB1口
 0030           ;   delay_nms(1000);
 0030           ; }
 0030           ; }
 0030           ; void delay_1ms(void)//1ms延时函数
 0030           ; {
 0030                   .dbline 22
 0030           ; unsigned int i;
 0030           ; for (i=0;i<150;i++)
 0030 0027              clr R16
 0032 1127              clr R17
 0034 02C0              xjmp L9
 0036           L6:
 0036                   .dbline 23
 0036                   .dbline 24
 0036           L7:
 0036                   .dbline 22
 0036 0F5F              subi R16,255  ; offset = 1
 0038 1F4F              sbci R17,255
 003A           L9:
 003A                   .dbline 22
 003A 0639              cpi R16,150
 003C E0E0              ldi R30,0
 003E 1E07              cpc R17,R30
 0040 D0F3              brlo L6
 0042                   .dbline -2
 0042           L5:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r i 16 i
 0044                   .dbend
 0044                   .dbfunc e delay_nms _delay_nms fV
 0044           ;              i -> R20,R21
 0044           ;              n -> R22,R23
                        .even
 0044           _delay_nms::
 0044 0E940000          xcall push_gset2
 0048 B801              movw R22,R16
 004A                   .dbline -1
 004A                   .dbline 27
 004A           ; {
 004A           ; } 
 004A           ; }
 004A           ; void delay_nms(unsigned int n)//延时n毫秒
 004A           ; {
 004A                   .dbline 29
 004A           ; unsigned int i;
 004A           ; for (i=0;i<n;i++)//执行n次1毫秒延时
 004A 4427              clr R20
 004C 5527              clr R21
 004E 03C0              xjmp L14
 0050           L11:
 0050                   .dbline 30
 0050 EFDF              xcall _delay_1ms
 0052           L12:
 0052                   .dbline 29
 0052 4F5F              subi R20,255  ; offset = 1
 0054 5F4F              sbci R21,255
 0056           L14:
 0056                   .dbline 29
 0056 4617              cp R20,R22
 0058 5707              cpc R21,R23
 005A D0F3              brlo L11
 005C                   .dbline -2
 005C           L10:
 005C 0E940000          xcall pop_gset2
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbsym r i 20 i
 0062                   .dbsym r n 22 i
 0062                   .dbend

⌨️ 快捷键说明

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