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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module main.c
                        .area code(ram, con, rel)
                        .area lit(rom, con, rel)
 0000           _seg7_data::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010 00                .byte 0
 0011                   .dbfile E:\avr\2.10.5\main.c
 0011                   .dbsym e seg7_data _seg7_data A[17:17]kc
                        .area data(ram, con, rel)
 0000                   .dbfile E:\avr\2.10.5\main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\avr\2.10.5\main.c
 0000                   .dbfunc e delay100us _delay100us fV
 0000           ;              i -> R20
 0000           ;              n -> R16
                        .even
 0000           _delay100us::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 32
 0004           ; //ICC-AVR application builder : 2007-5-23 0:45:25
 0004           ; // Target : M16
 0004           ; // Crystal: 1.0000Mhz
 0004           ; 
 0004           ; #include <iom16v.h>
 0004           ; #include <macros.h>
 0004           ; typedef unsigned char uint8;//可移植的8位无符号变量
 0004           ; typedef unsigned int uint16;//可移植的16位无符号变量
 0004           ; #pragma data:code
 0004           ; const uint8 seg7_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//0~F and "shut"
 0004           ; #pragma data:data
 0004           ; volatile uint8 seg7_led_buff[4];//禁止编译器优化,保护数组内容
 0004           ; 
 0004           ; #define seg7_bitselect_port PORTD
 0004           ; #define seg7_bitselect_ddr DDRD
 0004           ; #define seg7_bit0 4
 0004           ; #define seg7_bit1 5
 0004           ; #define seg7_bit2 6
 0004           ; #define seg7_bit3 7
 0004           ; #define seg7_bit0_en() {seg7_bitselect_ddr|=(1<<seg7_bit0);seg7_bitselect_port|=(1<<seg7_bit0);}
 0004           ; #define seg7_bit0_dis() {seg7_bitselect_ddr|=(1<<seg7_bit0);seg7_bitselect_port&=~(1<<seg7_bit0);}
 0004           ; #define seg7_bit1_en() {seg7_bitselect_ddr|=(1<<seg7_bit1);seg7_bitselect_port|=(1<<seg7_bit1);}
 0004           ; #define seg7_bit1_dis() {seg7_bitselect_ddr|=(1<<seg7_bit1);seg7_bitselect_port&=~(1<<seg7_bit1);}
 0004           ; #define seg7_bit2_en() {seg7_bitselect_ddr|=(1<<seg7_bit2);seg7_bitselect_port|=(1<<seg7_bit2);}
 0004           ; #define seg7_bit2_dis() {seg7_bitselect_ddr|=(1<<seg7_bit2);seg7_bitselect_port&=~(1<<seg7_bit2);}
 0004           ; #define seg7_bit3_en() {seg7_bitselect_ddr|=(1<<seg7_bit3);seg7_bitselect_port|=(1<<seg7_bit3);}
 0004           ; #define seg7_bit3_dis() {seg7_bitselect_ddr|=(1<<seg7_bit3);seg7_bitselect_port&=~(1<<seg7_bit3);}
 0004           ; #define seg7_data_port PORTA
 0004           ; #define seg7_data_ddr DDRA
 0004           ; 
 0004           ; void delay100us(uint8 n)
 0004           ; {
 0004                   .dbline 34
 0004           ; uint8 i;
 0004           ; for(i=100*n;i!=0;i--)
 0004 84E6              ldi R24,100
 0006 809F              mul R24,R16
 0008 402D              mov R20,R0
 000A 02C0              xjmp L5
 000C           L2:
 000C                   .dbline 35
 000C 0000              nop
 000E           L3:
 000E                   .dbline 34
 000E 4A95              dec R20
 0010           L5:
 0010                   .dbline 34
 0010 4423              tst R20
 0012 E1F7              brne L2
 0014                   .dbline -2
 0014           L1:
 0014 0E940000          xcall pop_gset1
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbsym r i 20 c
 001A                   .dbsym r n 16 c
 001A                   .dbend
 001A                   .dbfunc e seg7_led_update _seg7_led_update fV
                        .even
 001A           _seg7_led_update::
 001A                   .dbline -1
 001A                   .dbline 39
 001A           ; NOP();
 001A           ; }
 001A           ; 
 001A           ; void seg7_led_update(void)//数码管扫描
 001A           ; {
 001A                   .dbline 40
 001A           ; seg7_data_port=seg7_data[seg7_led_buff[0]];
 001A 80E0              ldi R24,<_seg7_data
 001C 90E0              ldi R25,>_seg7_data
 001E E0910000          lds R30,_seg7_led_buff
 0022 FF27              clr R31
 0024 E80F              add R30,R24
 0026 F91F              adc R31,R25
 0028 E491              lpm R30,Z
 002A EBBB              out 0x1b,R30
 002C                   .dbline 41
 002C           ; seg7_bit0_en();
 002C                   .dbline 41
 002C 8C9A              sbi 0x11,4
 002E                   .dbline 41
 002E 949A              sbi 0x12,4
 0030                   .dbline 41
 0030                   .dbline 41
 0030                   .dbline 42
 0030           ; delay100us(1);
 0030 01E0              ldi R16,1
 0032 E6DF              xcall _delay100us
 0034                   .dbline 43
 0034           ; seg7_bit0_dis();
 0034                   .dbline 43
 0034 8C9A              sbi 0x11,4
 0036                   .dbline 43
 0036 9498              cbi 0x12,4
 0038                   .dbline 43
 0038                   .dbline 43
 0038                   .dbline 44
 0038           ; seg7_data_port=seg7_data[seg7_led_buff[1]];
 0038 80E0              ldi R24,<_seg7_data
 003A 90E0              ldi R25,>_seg7_data
 003C E0910100          lds R30,_seg7_led_buff+1
 0040 FF27              clr R31
 0042 E80F              add R30,R24
 0044 F91F              adc R31,R25
 0046 E491              lpm R30,Z
 0048 EBBB              out 0x1b,R30
 004A                   .dbline 45
 004A           ; seg7_bit1_en();
 004A                   .dbline 45
 004A 8D9A              sbi 0x11,5
 004C                   .dbline 45
 004C 959A              sbi 0x12,5
 004E                   .dbline 45
 004E                   .dbline 45
 004E                   .dbline 46
 004E           ; delay100us(1);
 004E 01E0              ldi R16,1
 0050 D7DF              xcall _delay100us
 0052                   .dbline 47
 0052           ; seg7_bit1_dis();
 0052                   .dbline 47
 0052 8D9A              sbi 0x11,5
 0054                   .dbline 47
 0054 9598              cbi 0x12,5
 0056                   .dbline 47
 0056                   .dbline 47
 0056                   .dbline 48
 0056           ; seg7_data_port=seg7_data[seg7_led_buff[2]];
 0056 80E0              ldi R24,<_seg7_data
 0058 90E0              ldi R25,>_seg7_data
 005A E0910200          lds R30,_seg7_led_buff+2
 005E FF27              clr R31
 0060 E80F              add R30,R24
 0062 F91F              adc R31,R25
 0064 E491              lpm R30,Z
 0066 EBBB              out 0x1b,R30
 0068                   .dbline 49
 0068           ; seg7_bit2_en();
 0068                   .dbline 49
 0068 8E9A              sbi 0x11,6
 006A                   .dbline 49
 006A 969A              sbi 0x12,6
 006C                   .dbline 49
 006C                   .dbline 49
 006C                   .dbline 50
 006C           ; delay100us(1);
 006C 01E0              ldi R16,1
 006E C8DF              xcall _delay100us
 0070                   .dbline 51
 0070           ; seg7_bit2_dis();
 0070                   .dbline 51
 0070 8E9A              sbi 0x11,6
 0072                   .dbline 51
 0072 9698              cbi 0x12,6
 0074                   .dbline 51
 0074                   .dbline 51
 0074                   .dbline 52
 0074           ; seg7_data_port=seg7_data[seg7_led_buff[3]];
 0074 80E0              ldi R24,<_seg7_data
 0076 90E0              ldi R25,>_seg7_data
 0078 E0910300          lds R30,_seg7_led_buff+3
 007C FF27              clr R31
 007E E80F              add R30,R24
 0080 F91F              adc R31,R25
 0082 E491              lpm R30,Z
 0084 EBBB              out 0x1b,R30
 0086                   .dbline 53
 0086           ; seg7_bit3_en();
 0086                   .dbline 53
 0086 8F9A              sbi 0x11,7
 0088                   .dbline 53
 0088 979A              sbi 0x12,7
 008A                   .dbline 53
 008A                   .dbline 53
 008A                   .dbline 54
 008A           ; delay100us(1);
 008A 01E0              ldi R16,1
 008C B9DF              xcall _delay100us
 008E                   .dbline 55
 008E           ; seg7_bit3_dis();
 008E                   .dbline 55
 008E 8F9A              sbi 0x11,7
 0090                   .dbline 55
 0090 9798              cbi 0x12,7
 0092                   .dbline 55
 0092                   .dbline 55
 0092                   .dbline -2
 0092           L6:
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbend
 0094                   .dbfunc e seg7_led_init _seg7_led_init fV
                        .even
 0094           _seg7_led_init::
 0094                   .dbline -1
 0094                   .dbline 59
 0094           ; }
 0094           ; 
 0094           ; void seg7_led_init(void)//7段数码管显示初始化
 0094           ; {
 0094                   .dbline 60
 0094           ; seg7_data_ddr=0xff;
 0094 8FEF              ldi R24,255
 0096 8ABB              out 0x1a,R24
 0098                   .dbline 61
 0098           ; seg7_data_port=0x00;
 0098 2224              clr R2
 009A 2BBA              out 0x1b,R2
 009C                   .dbline 62
 009C           ; seg7_bitselect_ddr|=0xf0;
 009C 81B3              in R24,0x11
 009E 806F              ori R24,240
 00A0 81BB              out 0x11,R24
 00A2                   .dbline 63
 00A2           ; seg7_bitselect_port|=0xf0;
 00A2 82B3              in R24,0x12
 00A4 806F              ori R24,240
 00A6 82BB              out 0x12,R24
 00A8                   .dbline -2
 00A8           L10:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C945500          jmp _int0_isr
                        .area text(rom, con, rel)
 00AA                   .dbfile E:\avr\2.10.5\main.c
 00AA                   .dbfunc e int0_isr _int0_isr fV
 00AA           ;           tmpi -> R22
 00AA           ;        key_buf -> R20
 00AA           ;              i -> R10
                        .even
 00AA           _int0_isr::
 00AA 0E940000          xcall push_lset
 00AE 0E940000          xcall push_gset3
 00B2                   .dbline -1
 00B2                   .dbline 68
 00B2           ; }
 00B2           ; #pragma interrupt_handler int0_isr:iv_INT0
 00B2           ; 
 00B2           ; void int0_isr(void)
 00B2           ; {
 00B2                   .dbline 69
 00B2           ; uint8 key_buf=0,i=0,tmpi=0;
 00B2 4427              clr R20
 00B4                   .dbline 69
 00B4 AA24              clr R10
 00B6                   .dbline 69
 00B6 6627              clr R22
 00B8                   .dbline 70
 00B8           ; GICR=0x00;//关闭中断使能
 00B8 2224              clr R2
 00BA 2BBE              out 0x3b,R2
 00BC                   .dbline 71
 00BC           ; DDRB=0x0f;
 00BC 8FE0              ldi R24,15
 00BE 87BB              out 0x17,R24
 00C0                   .dbline 72
 00C0           ; PORTB&=0xf0;
 00C0 88B3              in R24,0x18
 00C2 807F              andi R24,240
 00C4 88BB              out 0x18,R24
 00C6                   .dbline 73
 00C6           ; _NOP();
 00C6 0000              nop
 00C8                   .dbline 74
 00C8           ; if((PINB&0x0F)!=0x0F)
 00C8 86B3              in R24,0x16
 00CA 8F70              andi R24,15
 00CC 8F30              cpi R24,15
 00CE 09F4              brne X0
 00D0 6EC0              xjmp L12
 00D2           X0:
 00D2                   .dbline 75
 00D2           ; {  //#1

⌨️ 快捷键说明

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