📄 40+
字号:
__start:
__text_start:
0030 E5CF LDI R28,0x5F
0031 E0D4 LDI R29,4
0032 BFCD OUT 0x3D,R28
0033 BFDE OUT 0x3E,R29
0034 51C0 SUBI R28,0x10
0035 40D0 SBCI R29,0
0036 EA0A LDI R16,0xAA
0037 8308 STD Y+0,R16
0038 2400 CLR R0
0039 E6EC LDI R30,0x6C
003A E0F0 LDI R31,0
003B E010 LDI R17,0
003C 36EE CPI R30,0x6E
003D 07F1 CPC R31,R17
003E F011 BEQ 0x0041
003F 9201 ST R0,Z+
0040 CFFB RJMP 0x003C
0041 8300 STD Z+0,R16
0042 E5E4 LDI R30,0x54
0043 E0F0 LDI R31,0
0044 E6A0 LDI R26,0x60
0045 E0B0 LDI R27,0
0046 E010 LDI R17,0
0047 36E0 CPI R30,0x60
0048 07F1 CPC R31,R17
0049 F021 BEQ 0x004E
004A 95C8 LPM
004B 9631 ADIW R30,1
004C 920D ST R0,X+
004D CFF9 RJMP 0x0047
004E 940E0060 CALL _main
_exit:
0050 CFFF RJMP _exit
_delay:
i --> R20
j --> R22
x --> R16
0051 940E00F7 CALL push_gset2
FILE: E:\暑假AVR培训\暑假AVR培训\djs.c
(0001) #include<iom16.h>
(0002) unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0003) unsigned int CNT;
(0004) signed int FOR=500;
(0005) void delay(unsigned char x)
(0006) {
(0007) unsigned char i,j;
(0008) for(i=0;i<100;i++)
0053 2744 CLR R20
0054 C006 RJMP 0x005B
(0009) for(j=0;j<x;j++);
0055 2766 CLR R22
0056 C001 RJMP 0x0058
0057 9563 INC R22
0058 1760 CP R22,R16
0059 F3E8 BCS 0x0057
005A 9543 INC R20
005B 3644 CPI R20,0x64
005C F3C0 BCS 0x0055
005D 940E00EE CALL pop_gset2
005F 9508 RET
(0010) }
(0011) void main(void)
(0012) {
(0013) unsigned char g,s;
(0014) CNT=39;
_main:
s --> R20
g --> R22
0060 E287 LDI R24,0x27
0061 E090 LDI R25,0
0062 9390006D STS CNT+1,R25
0064 9380006C STS CNT,R24
(0015) DDRA=0XFF;
0066 EF8F LDI R24,0xFF
0067 BB8A OUT 0x1A,R24
(0016) DDRB=0XFF;
0068 BB87 OUT 0x17,R24
(0017) TCCR0=1<<CS01;
0069 E082 LDI R24,2
006A BF83 OUT 0x33,R24
(0018) OCR0=248;
006B EF88 LDI R24,0xF8
006C BF8C OUT 0x3C,R24
(0019) TIMSK=1<<OCIE0;
006D E082 LDI R24,2
006E BF89 OUT 0x39,R24
(0020) SREG|=0x80;
006F 9478 BSET 7
0070 C02E RJMP 0x009F
(0021) while(1)
(0022) {
(0023) s=CNT/10;
0071 E02A LDI R18,0xA
0072 E030 LDI R19,0
0073 9100006C LDS R16,CNT
0075 9110006D LDS R17,CNT+1
0077 940E00D4 CALL div16u
0079 2F40 MOV R20,R16
(0024) g=CNT%10;
007A E02A LDI R18,0xA
007B E030 LDI R19,0
007C 9100006C LDS R16,CNT
007E 9110006D LDS R17,CNT+1
0080 940E00D2 CALL mod16u
0082 2F60 MOV R22,R16
(0025) PORTA=led[s];
0083 E680 LDI R24,0x60
0084 E090 LDI R25,0
0085 2FE4 MOV R30,R20
0086 27FF CLR R31
0087 0FE8 ADD R30,R24
0088 1FF9 ADC R31,R25
0089 8020 LDD R2,Z+0
008A BA2B OUT 0x1B,R2
(0026) PORTB=0xfe;
008B EF8E LDI R24,0xFE
008C BB88 OUT 0x18,R24
(0027) delay(10);
008D E00A LDI R16,0xA
008E DFC2 RCALL _delay
(0028) PORTB=0xff;
008F EF8F LDI R24,0xFF
0090 BB88 OUT 0x18,R24
(0029) PORTA=led[g];
0091 E680 LDI R24,0x60
0092 E090 LDI R25,0
0093 2FE6 MOV R30,R22
0094 27FF CLR R31
0095 0FE8 ADD R30,R24
0096 1FF9 ADC R31,R25
0097 8020 LDD R2,Z+0
0098 BA2B OUT 0x1B,R2
(0030) PORTB=0xfd;
0099 EF8D LDI R24,0xFD
009A BB88 OUT 0x18,R24
(0031) delay(10);
009B E00A LDI R16,0xA
009C DFB4 RCALL _delay
(0032) PORTB=0xff;
009D EF8F LDI R24,0xFF
009E BB88 OUT 0x18,R24
009F CFD1 RJMP 0x0071
00A0 9508 RET
_int_djs:
00A1 922A ST R2,-Y
00A2 938A ST R24,-Y
00A3 939A ST R25,-Y
00A4 B62F IN R2,0x3F
00A5 922A ST R2,-Y
(0033) }
(0034) }
(0035) #pragma interrupt_handler int_djs:20
(0036) void int_djs(void)
(0037) {
(0038) FOR--;
00A6 9180006A LDS R24,FOR
00A8 9190006B LDS R25,FOR+1
00AA 9701 SBIW R24,1
00AB 9390006B STS FOR+1,R25
00AD 9380006A STS FOR,R24
(0039) if(FOR==0)
00AF 3080 CPI R24,0
00B0 0789 CPC R24,R25
00B1 F4C1 BNE 0x00CA
(0040) {FOR=500;
00B2 EF84 LDI R24,0xF4
00B3 E091 LDI R25,1
00B4 9390006B STS FOR+1,R25
00B6 9380006A STS FOR,R24
(0041) CNT--;
00B8 9180006C LDS R24,CNT
00BA 9190006D LDS R25,CNT+1
00BC 9701 SBIW R24,1
00BD 9390006D STS CNT+1,R25
00BF 9380006C STS CNT,R24
(0042) if(CNT<=0)
00C1 3080 CPI R24,0
00C2 0789 CPC R24,R25
00C3 F431 BNE 0x00CA
(0043) CNT=39;}
00C4 E287 LDI R24,0x27
00C5 E090 LDI R25,0
00C6 9390006D STS CNT+1,R25
00C8 9380006C STS CNT,R24
(0044) TCNT0=0;
FILE: <library>
00CA 2422 CLR R2
00CB BE22 OUT 0x32,R2
00CC 9029 LD R2,Y+
00CD BE2F OUT 0x3F,R2
00CE 9199 LD R25,Y+
00CF 9189 LD R24,Y+
00D0 9029 LD R2,Y+
00D1 9518 RETI
mod16u:
00D2 9468 BSET 6
00D3 C001 RJMP xdiv16u
div16u:
00D4 94E8 BCLR 6
xdiv16u:
00D5 92EA ST R14,-Y
00D6 92FA ST R15,-Y
00D7 938A ST R24,-Y
00D8 24EE CLR R14
00D9 24FF CLR R15
00DA E180 LDI R24,0x10
00DB 0F00 LSL R16
00DC 1F11 ROL R17
00DD 1CEE ROL R14
00DE 1CFF ROL R15
00DF 16E2 CP R14,R18
00E0 06F3 CPC R15,R19
00E1 F018 BCS 0x00E5
00E2 1AE2 SUB R14,R18
00E3 0AF3 SBC R15,R19
00E4 9503 INC R16
00E5 958A DEC R24
00E6 F7A1 BNE 0x00DB
00E7 F416 BRTC 0x00EA
00E8 2D0E MOV R16,R14
00E9 2D1F MOV R17,R15
00EA 9189 LD R24,Y+
00EB 90F9 LD R15,Y+
00EC 90E9 LD R14,Y+
00ED 9508 RET
pop_gset2:
00EE E0E2 LDI R30,2
00EF 940C00FD JMP pop
push_gset5:
00F1 92FA ST R15,-Y
00F2 92EA ST R14,-Y
push_gset4:
00F3 92DA ST R13,-Y
00F4 92CA ST R12,-Y
push_gset3:
00F5 92BA ST R11,-Y
00F6 92AA ST R10,-Y
push_gset2:
00F7 937A ST R23,-Y
00F8 936A ST R22,-Y
push_gset1:
00F9 935A ST R21,-Y
00FA 934A ST R20,-Y
00FB 9508 RET
pop_gset1:
00FC E0E1 LDI R30,1
pop:
00FD 9149 LD R20,Y+
00FE 9159 LD R21,Y+
00FF FDE0 SBRC R30,0
0100 9508 RET
0101 9169 LD R22,Y+
0102 9179 LD R23,Y+
0103 FDE1 SBRC R30,1
0104 9508 RET
0105 90A9 LD R10,Y+
0106 90B9 LD R11,Y+
0107 FDE2 SBRC R30,2
0108 9508 RET
0109 90C9 LD R12,Y+
010A 90D9 LD R13,Y+
010B FDE3 SBRC R30,3
010C 9508 RET
010D 90E9 LD R14,Y+
010E 90F9 LD R15,Y+
010F 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -