📄 lesson7.lst
字号:
__text_start:
__start:
0041 E5CF LDI R28,0x5F
0042 E0D4 LDI R29,4
0043 BFCD OUT P3D,R28
0044 BFDE OUT P3E,R29
0045 51C0 SUBI R28,0x10
0046 40D0 SBCI R29,0
0047 EA0A LDI R16,0xAA
0048 8308 STD R16,0+Y
0049 2400 CLR R0
004A E6E1 LDI R30,0x61
004B E0F0 LDI R31,0
004C E010 LDI R17,0
004D 36E1 CPI R30,0x61
004E 07F1 CPC R31,R17
004F F011 BEQ 0x0052
0050 9201 ST R0,Z+
0051 CFFB RJMP 0x004D
0052 8300 STD R16,0+Z
0053 E8E0 LDI R30,0x80
0054 E0F0 LDI R31,0
0055 E6A0 LDI R26,0x60
0056 E0B0 LDI R27,0
0057 E010 LDI R17,0
0058 38E1 CPI R30,0x81
0059 07F1 CPC R31,R17
005A F021 BEQ 0x005F
005B 95C8 LPM
005C 9631 ADIW R30,1
005D 920D ST R0,X+
005E CFF9 RJMP 0x0058
005F 940E00B7 CALL _main
_exit:
0061 CFFF RJMP _exit
_delay:
i --> R20
j --> R22
ms --> R16
0062 940E0102 CALL push_gset2
FILE: I:\AVR视频教程\视频教程\lesson7\lesson7.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) uchar num=0;
(0006) #pragma interrupt_handler miao:9
(0007) #pragma data:code
(0008) const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
(0009) 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
(0010)
(0011) void delay(uint ms)
(0012) {
(0013) uint i,j;
(0014) for(i=0;i<ms;i++)
0064 2744 CLR R20
0065 2755 CLR R21
0066 C00B RJMP 0x0072
(0015) {
(0016) for(j=0;j<1141;j++);
0067 2766 CLR R22
0068 2777 CLR R23
0069 C002 RJMP 0x006C
006A 5F6F SUBI R22,0xFF
006B 4F7F SBCI R23,0xFF
006C 3765 CPI R22,0x75
006D E0E4 LDI R30,4
006E 077E CPC R23,R30
006F F3D0 BCS 0x006A
0070 5F4F SUBI R20,0xFF
0071 4F5F SBCI R21,0xFF
0072 1740 CP R20,R16
0073 0751 CPC R21,R17
0074 F390 BCS 0x0067
(0017) }
(0018) }
0075 940E0106 CALL pop_gset2
0077 9508 RET
_show:
k --> R20
j --> R22
0078 940E0102 CALL push_gset2
007A 2F42 MOV R20,R18
007B 2F60 MOV R22,R16
(0019) void show(uchar j,uchar k)
(0020) {
(0021) PORTA|=BIT(3);
007C 9ADB SBI P1B,3
(0022) PORTB=table[j];
007D E082 LDI R24,2
007E 9F86 MUL R24,R22
007F 01F0 MOVW R30,R0
0080 E680 LDI R24,0x60
0081 E090 LDI R25,0
0082 0FE8 ADD R30,R24
0083 1FF9 ADC R31,R25
0084 9005 LD R0,R0
0085 9014 LD R1,R1
0086 01F0 MOVW R30,R0
0087 BBE8 OUT P18,R30
(0023) PORTA&=~BIT(3);
0088 98DB CBI P1B,3
(0024)
(0025) PORTB=0XFF;
0089 EF8F LDI R24,0xFF
008A BB88 OUT P18,R24
(0026) PORTB&=~BIT(k);
008B E001 LDI R16,1
008C 2F14 MOV R17,R20
008D 940E0109 CALL lsl8
008F 2E20 MOV R2,R16
0090 9420 COM R2
0091 B238 IN R3,P18
0092 2032 AND R3,R2
0093 BA38 OUT P18,R3
(0027) PORTA|=BIT(4);
0094 9ADC SBI P1B,4
(0028) PORTA&=~BIT(4);
0095 98DC CBI P1B,4
(0029) delay(1);
0096 E001 LDI R16,1
0097 E010 LDI R17,0
0098 DFC9 RCALL _delay
(0030) }
0099 940E0106 CALL pop_gset2
009B 9508 RET
_miao:
009C 922A ST R2,-Y
009D 938A ST R24,-Y
009E 939A ST R25,-Y
009F B62F IN R2,P3F
00A0 922A ST R2,-Y
(0031) void miao()
(0032) {
(0033) if(num==60)
00A1 91800060 LDS R24,0x60
00A3 338C CPI R24,0x3C
00A4 F419 BNE 0x00A8
(0034) num=0;
00A5 2422 CLR R2
00A6 92200060 STS R2,0x60
(0035) num++;
00A8 91800060 LDS R24,0x60
00AA 5F8F SUBI R24,0xFF
00AB 93800060 STS R24,0x60
(0036) TCNT1H=0X85;
00AD E885 LDI R24,0x85
00AE BD8D OUT P2D,R24
(0037) TCNT1L=0XED;
00AF EE8D LDI R24,0xED
00B0 BD8C OUT P2C,R24
(0038) }
00B1 9029 LD R2,Y+
00B2 BE2F OUT P3F,R2
00B3 9199 LD R25,Y+
00B4 9189 LD R24,Y+
00B5 9029 LD R2,Y+
00B6 9518 RETI
(0039) void main()
(0040) {
(0041) DDRB=0XFF;
_main:
00B7 EF8F LDI R24,0xFF
00B8 BB87 OUT P17,R24
(0042) DDRA|=0X18;
00B9 B38A IN R24,P1A
00BA 6188 ORI R24,0x18
00BB BB8A OUT P1A,R24
(0043)
(0044) TCCR1B=0X04;
00BC E084 LDI R24,4
00BD BD8E OUT P2E,R24
(0045) TCNT1H=0X85;
00BE E885 LDI R24,0x85
00BF BD8D OUT P2D,R24
(0046) TCNT1L=0XED;
00C0 EE8D LDI R24,0xED
00C1 BD8C OUT P2C,R24
(0047) TIMSK|=BIT(2);
00C2 B789 IN R24,P39
00C3 6084 ORI R24,4
00C4 BF89 OUT P39,R24
(0048) SREG|=BIT(7);
00C5 9478 BSET 7
00C6 C00E RJMP 0x00D5
(0049)
(0050) while(1)
(0051) {
(0052) show(num/10,0);
00C7 2722 CLR R18
00C8 E01A LDI R17,0xA
00C9 91000060 LDS R16,0x60
00CB 940E00D9 CALL div8u
00CD DFAA RCALL _show
(0053) show(num%10,1);
00CE E021 LDI R18,1
00CF E01A LDI R17,0xA
00D0 91000060 LDS R16,0x60
00D2 940E00D7 CALL mod8u
00D4 DFA3 RCALL _show
00D5 CFF1 RJMP 0x00C7
(0054) }
(0055) }FILE: <library>
00D6 9508 RET
mod8u:
00D7 9468 BSET 6
00D8 C001 RJMP xdiv8u
div8u:
00D9 94E8 BCLR 6
xdiv8u:
00DA 932A ST R18,-Y
00DB 92FA ST R15,-Y
00DC 24FF CLR R15
00DD E028 LDI R18,0x8
00DE 0F00 LSL R16
00DF 1CFF ROL R15
00E0 16F1 CP R15,R17
00E1 F010 BCS 0x00E4
00E2 1AF1 SUB R15,R17
00E3 9503 INC R16
00E4 952A DEC R18
00E5 F7C1 BNE 0x00DE
00E6 F40E BRTC 0x00E8
00E7 2D0F MOV R16,R15
00E8 90F9 LD R15,Y+
00E9 9129 LD R18,Y+
00EA 9508 RET
push_gset1:
00EB 935A ST R21,-Y
00EC 934A ST R20,-Y
00ED 9508 RET
pop_gset1:
00EE E0E1 LDI R30,1
pop:
00EF 9149 LD R20,Y+
00F0 9159 LD R21,Y+
00F1 FDE0 SBRC R30,0
00F2 9508 RET
00F3 9169 LD R22,Y+
00F4 9179 LD R23,Y+
00F5 FDE1 SBRC R30,1
00F6 9508 RET
00F7 90A9 LD R10,Y+
00F8 90B9 LD R11,Y+
00F9 FDE2 SBRC R30,2
00FA 9508 RET
00FB 90C9 LD R12,Y+
00FC 90D9 LD R13,Y+
00FD FDE3 SBRC R30,3
00FE 9508 RET
00FF 90E9 LD R14,Y+
0100 90F9 LD R15,Y+
0101 9508 RET
push_gset2:
0102 937A ST R23,-Y
0103 936A ST R22,-Y
0104 940C00EB JMP push_gset1
pop_gset2:
0106 E0E2 LDI R30,2
0107 940C00EF JMP pop
lsl8:
0109 2311 TST R17
010A F019 BEQ 0x010E
010B 0F00 LSL R16
010C 951A DEC R17
010D CFFB RJMP lsl8
010E 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -