📄 xunhuan.lst
字号:
__text_start:
__start:
0018 E5CF LDI R28,0x5F
0019 E0D4 LDI R29,4
001A BFCD OUT 0x3D,R28
001B BFDE OUT 0x3E,R29
001C 51CE SUBI R28,0x1E
001D 40D0 SBCI R29,0
001E EA0A LDI R16,0xAA
001F 8308 STD Y+0,R16
0020 2400 CLR R0
0021 E6EA LDI R30,0x6A
0022 E0F0 LDI R31,0
0023 E010 LDI R17,0
0024 36EA CPI R30,0x6A
0025 07F1 CPC R31,R17
0026 F011 BEQ 0x0029
0027 9201 ST R0,Z+
0028 CFFB RJMP 0x0024
0029 8300 STD Z+0,R16
002A E2E6 LDI R30,0x26
002B E0F0 LDI R31,0
002C E6A0 LDI R26,0x60
002D E0B0 LDI R27,0
002E E010 LDI R17,0
002F 33E0 CPI R30,0x30
0030 07F1 CPC R31,R17
0031 F021 BEQ 0x0036
0032 95C8 LPM
0033 9631 ADIW R30,1
0034 920D ST R0,X+
0035 CFF9 RJMP 0x002F
0036 D035 RCALL _main
_exit:
0037 CFFF RJMP _exit
_Delay:
j --> R20
i --> R16
0038 D040 RCALL push_gset1
FILE: D:\icc\程序\循环移位\xunhuan.c
(0001) #include<iom8v.h>
(0002) #define uchar unsigned char
(0003) #define uint unsigned int
(0004) uchar Table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//共阴7段码
(0005)
(0006)
(0007) void Delay(uint i) // 延时程序
(0008) {uint j;
(0009) for(;i!=0;i--)
0039 C00A RJMP 0x0044
(0010) {for(j=500;j!=0;j--);}
003A EF44 LDI R20,0xF4
003B E051 LDI R21,1
003C C002 RJMP 0x003F
003D 5041 SUBI R20,1
003E 4050 SBCI R21,0
003F 3040 CPI R20,0
0040 0745 CPC R20,R21
0041 F7D9 BNE 0x003D
0042 5001 SUBI R16,1
0043 4010 SBCI R17,0
0044 3000 CPI R16,0
0045 0701 CPC R16,R17
0046 F799 BNE 0x003A
0047 D034 RCALL pop_gset1
0048 9508 RET
(0011) }
(0012)
(0013)
(0014) void Init_IO(void) //IO口设置 全部设为输出
(0015) {
(0016) DDRD=0xff;
_Init_IO:
0049 EF8F LDI R24,0xFF
004A BB81 OUT 0x11,R24
(0017) PORTD=0xff;
004B BB82 OUT 0x12,R24
(0018) DDRB=0xff;
004C BB87 OUT 0x17,R24
(0019) PORTB=0x00;
004D 2422 CLR R2
004E BA28 OUT 0x18,R2
004F 9508 RET
_Display:
i --> R20
0050 D028 RCALL push_gset1
(0020) }
(0021)
(0022) void Display(void)
(0023) {
(0024) uchar i;//uchar j; uchar n;
(0025) for(i=0;i<4;i++)
0051 2744 CLR R20
0052 C015 RJMP 0x0068
(0026) {
(0027) PORTD=(0xef<<i); //<<是左移.0是位选
0053 2F24 MOV R18,R20
0054 2733 CLR R19
0055 EE0F LDI R16,0xEF
0056 E010 LDI R17,0
0057 D038 RCALL lsl16
0058 BB02 OUT 0x12,R16
(0028) Delay(20);
0059 E104 LDI R16,0x14
005A E010 LDI R17,0
005B DFDC RCALL _Delay
(0029) //PORTD=(~(0x80>>i);) //>>右移,~是取反
(0030)
(0031) PORTB=Table[i];//0xfc;//
005C E680 LDI R24,0x60
005D E090 LDI R25,0
005E 2FE4 MOV R30,R20
005F 27FF CLR R31
0060 0FE8 ADD R30,R24
0061 1FF9 ADC R31,R25
0062 8020 LDD R2,Z+0
0063 BA28 OUT 0x18,R2
(0032) Delay(200);
0064 EC08 LDI R16,0xC8
0065 E010 LDI R17,0
0066 DFD1 RCALL _Delay
0067 9543 INC R20
0068 3044 CPI R20,4
0069 F348 BCS 0x0053
006A D011 RCALL pop_gset1
006B 9508 RET
(0033)
(0034)
(0035)
(0036) }
(0037) }
(0038)
(0039) void main (void)
(0040) {
(0041) Init_IO();
_main:
006C DFDC RCALL _Init_IO
006D C001 RJMP 0x006F
(0042) while(1)
(0043) { Display();
FILE: <library>
006E DFE1 RCALL _Display
006F CFFE RJMP 0x006E
0070 9508 RET
push_gset5:
0071 92FA ST R15,-Y
0072 92EA ST R14,-Y
push_gset4:
0073 92DA ST R13,-Y
0074 92CA ST R12,-Y
push_gset3:
0075 92BA ST R11,-Y
0076 92AA ST R10,-Y
push_gset2:
0077 937A ST R23,-Y
0078 936A ST R22,-Y
push_gset1:
0079 935A ST R21,-Y
007A 934A ST R20,-Y
007B 9508 RET
pop_gset1:
007C E0E1 LDI R30,1
pop:
007D 9149 LD R20,Y+
007E 9159 LD R21,Y+
007F FDE0 SBRC R30,0
0080 9508 RET
0081 9169 LD R22,Y+
0082 9179 LD R23,Y+
0083 FDE1 SBRC R30,1
0084 9508 RET
0085 90A9 LD R10,Y+
0086 90B9 LD R11,Y+
0087 FDE2 SBRC R30,2
0088 9508 RET
0089 90C9 LD R12,Y+
008A 90D9 LD R13,Y+
008B FDE3 SBRC R30,3
008C 9508 RET
008D 90E9 LD R14,Y+
008E 90F9 LD R15,Y+
008F 9508 RET
lsl16:
0090 2322 TST R18
0091 F021 BEQ 0x0096
0092 0F00 LSL R16
0093 1F11 ROL R17
0094 952A DEC R18
0095 CFFA RJMP lsl16
0096 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -