📄 main.lis
字号:
.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 + -