📄 1.lst
字号:
Interrupt Vectors
00000 940C 002F JMP __text_start|__start
Program Code (text area)
__text_start|__start:
0002F E5CF LDI R28,0x5F
00030 E0D4 LDI R29,4
00031 BFCD OUT 0x3D,R28
00032 BFDE OUT 0x3E,R29
00033 51CE SUBI R28,0x1E
00034 40D0 SBCI R29,0
00035 EA0A LDI R16,0xAA
00036 8308 ST Y,R16
00037 2400 CLR R0
00038 E6EA LDI R30,0x6A
00039 E0F0 LDI R31,0
0003A E010 LDI R17,0
0003B 36EA CPI R30,0x6A
0003C 07F1 CPC R31,R17
0003D F011 BEQ 0x0040
0003E 9201 ST Z+,R0
0003F CFFB RJMP 0x003B
00040 8300 ST Z,R16
00041 E5E4 LDI R30,0x54
00042 E0F0 LDI R31,0
00043 E6A0 LDI R26,0x60
00044 E0B0 LDI R27,0
00045 E010 LDI R17,0
00046 E000 LDI R16,0
00047 BF0B OUT 0x3B,R16
00048 35EE CPI R30,0x5E
00049 07F1 CPC R31,R17
0004A F021 BEQ 0x004F
0004B 95C8 LPM
0004C 9631 ADIW R30,1
0004D 920D ST X+,R0
0004E CFF9 RJMP 0x0048
0004F 940E 0061 CALL _main
_exit:
00051 CFFF RJMP _exit
_delay:
i --> R20
j --> R10
x --> R16
00052 92AA ST -Y,R10
00053 934A ST -Y,R20
FILE: G:\暑假AVR单片机练习程序代码\作业\1\1.c
(0001) #include <iom16v.h>
(0002) unsigned char LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0003) int delay(unsigned char x)
(0004) {
(0005) unsigned char i,j;
(0006) for(i=0;i<10;i++)
00054 2744 CLR R20
00055 C006 RJMP 0x005C
(0007) for(j=0;j<x;j++);
00056 24AA CLR R10
00057 C001 RJMP 0x0059
00058 94A3 INC R10
00059 16A0 CP R10,R16
0005A F3E8 BCS 0x0058
0005B 9543 INC R20
0005C 304A CPI R20,0xA
0005D F3C0 BCS 0x0056
0005E 9149 LD R20,Y+
0005F 90A9 LD R10,Y+
00060 9508 RET
(0008) }
(0009) int main(void)
(0010) {
(0011) signed char key,q,shi,ge;
(0012) q=0;
_main:
ge --> R12
shi --> R10
q --> R20
key --> R22
00061 2744 CLR R20
(0013) DDRA=0xff;
00062 EF8F LDI R24,0xFF
00063 BB8A OUT 0x1A,R24
(0014) DDRB=0xff;
00064 BB87 OUT 0x17,R24
(0015) DDRC=0xfc;
00065 EF8C LDI R24,0xFC
00066 BB84 OUT 0x14,R24
(0016) SFIOR&=0xfb;
00067 B780 IN R24,0x30
00068 7F8B ANDI R24,0xFB
00069 BF80 OUT 0x30,R24
(0017) PORTC=0X03;
0006A E083 LDI R24,3
0006B BB85 OUT 0x15,R24
0006C C046 RJMP 0x00B3
(0018) while(1)
(0019) {
(0020) key=PINC&0x03;
0006D B363 IN R22,0x13
0006E 7063 ANDI R22,3
(0021) if(key!=0x03)
0006F 3063 CPI R22,3
00070 F011 BEQ 0x0073
(0022) {
(0023) delay(5);
00071 E005 LDI R16,5
00072 DFDF RCALL _delay
(0024) }
(0025) if(key!=0x03)
00073 3063 CPI R22,3
00074 F0A1 BEQ 0x0089
(0026) {
(0027) if(key==0x02)
00075 3062 CPI R22,2
00076 F441 BNE 0x007F
(0028) {
(0029) do
(0030) key=PINC&0x03;
00077 B363 IN R22,0x13
00078 7063 ANDI R22,3
(0031) while(key==0x02);
00079 3062 CPI R22,2
0007A F3E1 BEQ 0x0077
(0032) q+=1;
0007B 9543 INC R20
(0033) if(q==60)q=0;
0007C 334C CPI R20,0x3C
0007D F409 BNE 0x007F
0007E 2744 CLR R20
(0034) }
(0035) if(key==0x01)
0007F 3061 CPI R22,1
00080 F441 BNE 0x0089
(0036) {
(0037) do
(0038) key=PINC&0x03;
00081 B363 IN R22,0x13
00082 7063 ANDI R22,3
(0039) while(key==0x01);
00083 3061 CPI R22,1
00084 F3E1 BEQ 0x0081
(0040) q-=1;
00085 954A DEC R20
(0041) if(q==-1)q=59;
00086 3F4F CPI R20,0xFF
00087 F409 BNE 0x0089
00088 E34B LDI R20,0x3B
(0042) }
(0043) }
(0044) shi=q/10;
00089 E01A LDI R17,0xA
0008A 2F04 MOV R16,R20
0008B 940E 00B9 CALL div8s
0008D 2EA0 MOV R10,R16
(0045) ge=q%10;
0008E E01A LDI R17,0xA
0008F 2F04 MOV R16,R20
00090 940E 00B5 CALL mod8s
00092 2EC0 MOV R12,R16
(0046)
(0047)
(0048) PORTA=LED[ge];
00093 E680 LDI R24,0x60
00094 E090 LDI R25,0
00095 2DEC MOV R30,R12
00096 27FF CLR R31
00097 FDE7 SBRC R30,7
00098 95F0 COM R31
00099 0FE8 ADD R30,R24
0009A 1FF9 ADC R31,R25
0009B 8020 LD R2,Z
0009C BA2B OUT 0x1B,R2
(0049) PORTB=0xfd;
0009D EF8D LDI R24,0xFD
0009E BB88 OUT 0x18,R24
(0050) delay(10);
0009F E00A LDI R16,0xA
000A0 DFB1 RCALL _delay
(0051) PORTB=0xff;
000A1 EF8F LDI R24,0xFF
000A2 BB88 OUT 0x18,R24
(0052)
(0053) PORTA=LED[shi];
000A3 E680 LDI R24,0x60
000A4 E090 LDI R25,0
000A5 2DEA MOV R30,R10
000A6 27FF CLR R31
000A7 FDE7 SBRC R30,7
000A8 95F0 COM R31
000A9 0FE8 ADD R30,R24
000AA 1FF9 ADC R31,R25
000AB 8020 LD R2,Z
000AC BA2B OUT 0x1B,R2
(0054) PORTB=0xfe;
000AD EF8E LDI R24,0xFE
000AE BB88 OUT 0x18,R24
(0055) delay(10);
000AF E00A LDI R16,0xA
000B0 DFA1 RCALL _delay
(0056) PORTB=0xff;
FILE: <library>
000B1 EF8F LDI R24,0xFF
000B2 BB88 OUT 0x18,R24
000B3 CFB9 RJMP 0x006D
000B4 9508 RET
mod8s:
000B5 92EA ST -Y,R14
000B6 9468 BSET 6
000B7 2EE0 MOV R14,R16
000B8 C004 RJMP 0x00BD
div8s:
000B9 92EA ST -Y,R14
000BA 94E8 BCLR 6
000BB 2EE0 MOV R14,R16
000BC 26E1 EOR R14,R17
000BD FD07 SBRC R16,7
000BE 9501 NEG R16
000BF FD17 SBRC R17,7
000C0 9511 NEG R17
000C1 940E 00CA CALL xdiv8u
000C3 FCE7 SBRC R14,7
000C4 9501 NEG R16
000C5 90E9 LD R14,Y+
000C6 9508 RET
mod8u:
000C7 9468 BSET 6
000C8 C001 RJMP xdiv8u
div8u:
000C9 94E8 BCLR 6
xdiv8u:
000CA 932A ST -Y,R18
000CB 92FA ST -Y,R15
000CC 92EA ST -Y,R14
000CD 24FF CLR R15
000CE 24EE CLR R14
000CF E120 LDI R18,0x10
000D0 0F00 LSL R16
000D1 1CFF ROL R15
000D2 1CEE ROL R14
000D3 16E1 CP R14,R17
000D4 F010 BCS 0x00D7
000D5 1AE1 SUB R14,R17
000D6 9503 INC R16
000D7 952A DEC R18
000D8 F7B9 BNE 0x00D0
000D9 F40E BRTC 0x00DB
000DA 2D0E MOV R16,R14
000DB 90E9 LD R14,Y+
000DC 90F9 LD R15,Y+
000DD 9129 LD R18,Y+
000DE 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -