📄 7segled.lis
字号:
.module _7segled.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 D:\avrvi\democode\key_4\source\lib\7segled.c
0011 .dbsym e Seg7_Data _Seg7_Data A[17:17]kc
.area data(ram, con, rel)
0000 .dbfile D:\avrvi\democode\key_4\source\lib\7segled.c
.area text(rom, con, rel)
0000 .dbfile D:\avrvi\democode\key_4\source\lib\7segled.c
0000 .dbfunc e Seg7_Led_Init _Seg7_Led_Init fV
.even
0000 _Seg7_Led_Init::
0000 .dbline -1
0000 .dbline 17
0000 ; /************************************************
0000 ; 文件:7segled.c
0000 ; 用途:七段数码管驱动程序
0000 ; 注意:外部7.3728M晶振
0000 ; 创建:2008.1.26
0000 ; 修改:2008.1.26
0000 ; Copy Right (c) www.avrvi.com AVR与虚拟仪器
0000 ; ************************************************/
0000 ; #include "..\config.h"
0000 ; #pragma data:code
0000 ; const unsigned char Seg7_Data[]={0x3F,0x06,0x5B,0x4F,0x66, //0,1,2,3,4
0000 ; 0x6D,0x7D,0x07,0x7F,0x6F, //5,6,7,8,9
0000 ; 0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; //a,b,c,d,e,f
0000 ; #pragma data:data
0000 ; volatile unsigned char Seg7_Led_Buf[4];
0000 ; void Seg7_Led_Init(void)
0000 ; {
0000 .dbline 18
0000 ; Seg7_Data_Ddr=0xff;
0000 8FEF ldi R24,255
0002 87BB out 0x17,R24
0004 .dbline 19
0004 ; Seg7_Data_Port=0x00;
0004 2224 clr R2
0006 28BA out 0x18,R2
0008 .dbline 20
0008 ; Seg7_Bitselect_Port&=~((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
0008 85B3 in R24,0x15
000A 8C73 andi R24,60
000C 85BB out 0x15,R24
000E .dbline 21
000E ; Seg7_Bitselect_Ddr|=((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
000E 84B3 in R24,0x14
0010 836C ori R24,195
0012 84BB out 0x14,R24
0014 .dbline 22
0014 ; Seg7_Led_Buf[0]=16;
0014 80E1 ldi R24,16
0016 80930000 sts _Seg7_Led_Buf,R24
001A .dbline 23
001A ; Seg7_Led_Buf[1]=16;
001A 80930100 sts _Seg7_Led_Buf+1,R24
001E .dbline 24
001E ; Seg7_Led_Buf[2]=16;
001E 80930200 sts _Seg7_Led_Buf+2,R24
0022 .dbline 25
0022 ; Seg7_Led_Buf[3]=16;
0022 80930300 sts _Seg7_Led_Buf+3,R24
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e Seg7_Led_Update _Seg7_Led_Update fV
.even
0028 _Seg7_Led_Update::
0028 .dbline -1
0028 .dbline 29
0028 ; }
0028 ;
0028 ; void Seg7_Led_Update(void)
0028 ; {
0028 .dbline 30
0028 ; Seg7_Data_Port=Seg7_Data[Seg7_Led_Buf[0]];
0028 80E0 ldi R24,<_Seg7_Data
002A 90E0 ldi R25,>_Seg7_Data
002C E0910000 lds R30,_Seg7_Led_Buf
0030 FF27 clr R31
0032 E80F add R30,R24
0034 F91F adc R31,R25
0036 E491 lpm R30,Z
0038 E8BB out 0x18,R30
003A .dbline 31
003A ; Seg7_Bit0_En();
003A .dbline 31
003A A79A sbi 0x14,7
003C .dbline 31
003C AF9A sbi 0x15,7
003E .dbline 31
003E .dbline 31
003E .dbline 32
003E ; Delay100us(60);
003E 0CE3 ldi R16,60
0040 0E940000 xcall _Delay100us
0044 .dbline 33
0044 ; Seg7_Bit0_Dis();
0044 .dbline 33
0044 A79A sbi 0x14,7
0046 .dbline 33
0046 AF98 cbi 0x15,7
0048 .dbline 33
0048 .dbline 33
0048 .dbline 34
0048 ; Seg7_Data_Port=Seg7_Data[Seg7_Led_Buf[1]];
0048 80E0 ldi R24,<_Seg7_Data
004A 90E0 ldi R25,>_Seg7_Data
004C E0910100 lds R30,_Seg7_Led_Buf+1
0050 FF27 clr R31
0052 E80F add R30,R24
0054 F91F adc R31,R25
0056 E491 lpm R30,Z
0058 E8BB out 0x18,R30
005A .dbline 35
005A ; Seg7_Bit1_En();
005A .dbline 35
005A A69A sbi 0x14,6
005C .dbline 35
005C AE9A sbi 0x15,6
005E .dbline 35
005E .dbline 35
005E .dbline 36
005E ; Delay100us(60);
005E 0CE3 ldi R16,60
0060 0E940000 xcall _Delay100us
0064 .dbline 37
0064 ; Seg7_Bit1_Dis();
0064 .dbline 37
0064 A69A sbi 0x14,6
0066 .dbline 37
0066 AE98 cbi 0x15,6
0068 .dbline 37
0068 .dbline 37
0068 .dbline 38
0068 ; Seg7_Data_Port=Seg7_Data[Seg7_Led_Buf[2]];
0068 80E0 ldi R24,<_Seg7_Data
006A 90E0 ldi R25,>_Seg7_Data
006C E0910200 lds R30,_Seg7_Led_Buf+2
0070 FF27 clr R31
0072 E80F add R30,R24
0074 F91F adc R31,R25
0076 E491 lpm R30,Z
0078 E8BB out 0x18,R30
007A .dbline 39
007A ; Seg7_Bit2_En();
007A .dbline 39
007A A19A sbi 0x14,1
007C .dbline 39
007C A99A sbi 0x15,1
007E .dbline 39
007E .dbline 39
007E .dbline 40
007E ; Delay100us(60);
007E 0CE3 ldi R16,60
0080 0E940000 xcall _Delay100us
0084 .dbline 41
0084 ; Seg7_Bit2_Dis();
0084 .dbline 41
0084 A19A sbi 0x14,1
0086 .dbline 41
0086 A998 cbi 0x15,1
0088 .dbline 41
0088 .dbline 41
0088 .dbline 42
0088 ; Seg7_Data_Port=Seg7_Data[Seg7_Led_Buf[3]];
0088 80E0 ldi R24,<_Seg7_Data
008A 90E0 ldi R25,>_Seg7_Data
008C E0910300 lds R30,_Seg7_Led_Buf+3
0090 FF27 clr R31
0092 E80F add R30,R24
0094 F91F adc R31,R25
0096 E491 lpm R30,Z
0098 E8BB out 0x18,R30
009A .dbline 43
009A ; Seg7_Bit3_En();
009A .dbline 43
009A A09A sbi 0x14,0
009C .dbline 43
009C A89A sbi 0x15,0
009E .dbline 43
009E .dbline 43
009E .dbline 44
009E ; Delay100us(60);
009E 0CE3 ldi R16,60
00A0 0E940000 xcall _Delay100us
00A4 .dbline 45
00A4 ; Seg7_Bit3_Dis();
00A4 .dbline 45
00A4 A09A sbi 0x14,0
00A6 .dbline 45
00A6 A898 cbi 0x15,0
00A8 .dbline 45
00A8 .dbline 45
00A8 .dbline -2
00A8 L5:
00A8 .dbline 0 ; func end
00A8 0895 ret
00AA .dbend
00AA .dbfunc e Seg7_Led_display _Seg7_Led_display fV
00AA ; data -> R20,R21
.even
00AA _Seg7_Led_display::
00AA 0E940000 xcall push_gset1
00AE A801 movw R20,R16
00B0 .dbline -1
00B0 .dbline 49
00B0 ; }
00B0 ;
00B0 ; void Seg7_Led_display(unsigned int data)
00B0 ; {
00B0 .dbline 50
00B0 ; Seg7_Led_Buf[3]=data/1000;
00B0 28EE ldi R18,1000
00B2 33E0 ldi R19,3
00B4 8A01 movw R16,R20
00B6 0E940000 xcall div16u
00BA 00930300 sts _Seg7_Led_Buf+3,R16
00BE .dbline 51
00BE ; Seg7_Led_Buf[2]=(data%1000)/100;
00BE 28EE ldi R18,1000
00C0 33E0 ldi R19,3
00C2 8A01 movw R16,R20
00C4 0E940000 xcall mod16u
00C8 24E6 ldi R18,100
00CA 30E0 ldi R19,0
00CC 0E940000 xcall div16u
00D0 00930200 sts _Seg7_Led_Buf+2,R16
00D4 .dbline 52
00D4 ; Seg7_Led_Buf[1]=(data%100)/10;
00D4 24E6 ldi R18,100
00D6 30E0 ldi R19,0
00D8 8A01 movw R16,R20
00DA 0E940000 xcall mod16u
00DE 2AE0 ldi R18,10
00E0 30E0 ldi R19,0
00E2 0E940000 xcall div16u
00E6 00930100 sts _Seg7_Led_Buf+1,R16
00EA .dbline 53
00EA ; Seg7_Led_Buf[0]=data%10;
00EA 2AE0 ldi R18,10
00EC 30E0 ldi R19,0
00EE 8A01 movw R16,R20
00F0 0E940000 xcall mod16u
00F4 00930000 sts _Seg7_Led_Buf,R16
00F8 .dbline 54
00F8 ; Seg7_Led_Update();
00F8 97DF xcall _Seg7_Led_Update
00FA .dbline -2
00FA L9:
00FA 0E940000 xcall pop_gset1
00FE .dbline 0 ; func end
00FE 0895 ret
0100 .dbsym r data 20 i
0100 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\avrvi\democode\key_4\source\lib\7segled.c
0000 _Seg7_Led_Buf::
0000 .blkb 4
0004 .dbsym e Seg7_Led_Buf _Seg7_Led_Buf A[4:4]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -