📄 数码管的显示.lst
字号:
__text_start:
__start:
0026 EFCF LDI R28,0xFF
0027 E0D2 LDI R29,2
0028 BFCD OUT 0x3D,R28
0029 BFDE OUT 0x3E,R29
002A 51C0 SUBI R28,0x10
002B 40D0 SBCI R29,0
002C EA0A LDI R16,0xAA
002D 8308 STD Y+0,R16
002E 2400 CLR R0
002F E0E0 LDI R30,0
0030 E0F1 LDI R31,1
0031 E011 LDI R17,1
0032 30E0 CPI R30,0
0033 07F1 CPC R31,R17
0034 F011 BEQ 0x0037
0035 9201 ST R0,Z+
0036 CFFB RJMP 0x0032
0037 8300 STD Z+0,R16
0038 E4EB LDI R30,0x4B
0039 E0F0 LDI R31,0
003A E0A0 LDI R26,0
003B E0B1 LDI R27,1
003C E010 LDI R17,0
003D 34EB CPI R30,0x4B
003E 07F1 CPC R31,R17
003F F021 BEQ 0x0044
0040 95C8 LPM
0041 9631 ADIW R30,1
0042 920D ST R0,X+
0043 CFF9 RJMP 0x003D
0044 D010 RCALL _main
_exit:
0045 CFFF RJMP _exit
_Delay_ms:
n --> R20
Time --> R16
0046 D031 RCALL push_gset1
FILE: D:\实例5~1\delay.h
(0001) /***********************************************************
(0002) 以头文件的形式保存的延时函数,这种方法避免了重复拷贝函数之苦
(0003) ***********************************************************/
(0004)
(0005) void Delay_ms(unsigned int Time)
(0006) {
0047 C008 RJMP 0x0050
(0007) unsigned char n;
(0008) while(Time>0)
(0009) {
(0010) for (n=1;n<187;n++)
0048 E041 LDI R20,1
0049 C002 RJMP 0x004C
(0011) {
(0012) NOP();
004A 0000 NOP
004B 9543 INC R20
004C 3B4B CPI R20,0xBB
004D F3E0 BCS 0x004A
(0013) }
(0014) Time--;
004E 5001 SUBI R16,1
004F 4010 SBCI R17,0
0050 3000 CPI R16,0
0051 0701 CPC R16,R17
0052 F7A9 BNE 0x0048
0053 D027 RCALL pop_gset1
0054 9508 RET
FILE: D:\实例5~1\digital_dispaly.c
(0001) #include <iom48v.h>
(0002) #include <macros.h>
(0003) #include "delay.h"
(0004)
(0005) const unsigned char DisTab[]=
(0006) {
(0007) 0xFC,0x60,0xDA,0xF2,0x66, //0,1,2,3,4
(0008) 0xB6,0xBE,0xE0,0xFE,0xF6, //5,6,7,8,9
(0009) 0xEE,0x3E,0x9C,0x7A,0x9E, //A,b,C,d,E
(0010) 0x8E,0xCE,0x1C,0x6E,0x7C, //F,P,L,H,U
(0011) 0x0A,0x10,0x02 //r,_,-
(0012) };
(0013)
(0014) void main (void)
(0015) {
(0016) unsigned char Counter=0;
_main:
Counter --> R20
0055 2744 CLR R20
(0017)
(0018) DDRC=0xFF;
0056 EF8F LDI R24,0xFF
0057 B987 OUT 0x07,R24
(0019) DDRB=0xFF;
0058 B984 OUT 0x04,R24
(0020) DDRD=0xFF;
0059 B98A OUT 0x0A,R24
(0021) PORTC=0xFF;
005A B988 OUT 0x08,R24
(0022) PORTB=0xFF;
005B B985 OUT 0x05,R24
(0023) PORTD=0xFF;
005C B98B OUT 0x0B,R24
005D C010 RJMP 0x006E
(0024)
(0025) while(1)
(0026) {
(0027) PORTD=DisTab[Counter];
005E E384 LDI R24,0x34
005F E090 LDI R25,0
0060 2FE4 MOV R30,R20
0061 27FF CLR R31
0062 0FE8 ADD R30,R24
0063 1FF9 ADC R31,R25
0064 91E4 LPM R30,0(Z)
0065 B9EB OUT 0x0B,R30
(0028) Counter++;
0066 9543 INC R20
(0029) if (Counter>22)
0067 E186 LDI R24,0x16
0068 1784 CP R24,R20
0069 F408 BCC 0x006B
(0030) Counter=0;
006A 2744 CLR R20
(0031) Delay_ms(500);
FILE: <library>
006B EF04 LDI R16,0xF4
006C E011 LDI R17,1
006D DFD8 RCALL _Delay_ms
006E CFEF RJMP 0x005E
006F 9508 RET
push_gset5:
0070 92FA ST R15,-Y
0071 92EA ST R14,-Y
push_gset4:
0072 92DA ST R13,-Y
0073 92CA ST R12,-Y
push_gset3:
0074 92BA ST R11,-Y
0075 92AA ST R10,-Y
push_gset2:
0076 937A ST R23,-Y
0077 936A ST R22,-Y
push_gset1:
0078 935A ST R21,-Y
0079 934A ST R20,-Y
007A 9508 RET
pop_gset1:
007B E0E1 LDI R30,1
pop:
007C 9149 LD R20,Y+
007D 9159 LD R21,Y+
007E FDE0 SBRC R30,0
007F 9508 RET
0080 9169 LD R22,Y+
0081 9179 LD R23,Y+
0082 FDE1 SBRC R30,1
0083 9508 RET
0084 90A9 LD R10,Y+
0085 90B9 LD R11,Y+
0086 FDE2 SBRC R30,2
0087 9508 RET
0088 90C9 LD R12,Y+
0089 90D9 LD R13,Y+
008A FDE3 SBRC R30,3
008B 9508 RET
008C 90E9 LD R14,Y+
008D 90F9 LD R15,Y+
008E 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -