📄 smgdt.lst
字号:
Interrupt Vectors
00000 940C 0033 JMP __text_start|__start
Program Code (text area)
__text_start|__start:
00033 E5CF LDI R28,0x5F
00034 E0D4 LDI R29,4
00035 BFCD OUT 0x3D,R28
00036 BFDE OUT 0x3E,R29
00037 51CE SUBI R28,0x1E
00038 40D0 SBCI R29,0
00039 EA0A LDI R16,0xAA
0003A 8308 ST Y,R16
0003B 2400 CLR R0
0003C E7E2 LDI R30,0x72
0003D E0F0 LDI R31,0
0003E E010 LDI R17,0
0003F 37E2 CPI R30,0x72
00040 07F1 CPC R31,R17
00041 F011 BEQ 0x0044
00042 9201 ST Z+,R0
00043 CFFB RJMP 0x003F
00044 8300 ST Z,R16
00045 E5E4 LDI R30,0x54
00046 E0F0 LDI R31,0
00047 E6A0 LDI R26,0x60
00048 E0B0 LDI R27,0
00049 E010 LDI R17,0
0004A E000 LDI R16,0
0004B BF0B OUT 0x3B,R16
0004C 36E6 CPI R30,0x66
0004D 07F1 CPC R31,R17
0004E F021 BEQ 0x0053
0004F 95C8 LPM
00050 9631 ADIW R30,1
00051 920D ST X+,R0
00052 CFF9 RJMP 0x004C
00053 940E 006B CALL _main
_exit:
00055 CFFF RJMP _exit
_delay:
i --> R20
j --> R22
ms --> R16
00056 940E 008E CALL push_xgsetF000
FILE: E:\AVR自编程序\11实验板\6数码管动态显示\动态显示.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) //#pragma data:code
(0006) uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0007) //#pragma data:code
(0008) uchar LED_W[8] = {0,1,2,3,4,5,6,7};
(0009) void delay(uint ms)
(0010) {
(0011) uint i,j;
(0012) for(i=0;i<ms;i++)
00058 2744 CLR R20
00059 2755 CLR R21
0005A C00B RJMP 0x0066
(0013) {
(0014) for(j=0;j<1141;j++);
0005B 2766 CLR R22
0005C 2777 CLR R23
0005D C002 RJMP 0x0060
0005E 5F6F SUBI R22,0xFF
0005F 4F7F SBCI R23,0xFF
00060 3765 CPI R22,0x75
00061 E0E4 LDI R30,4
00062 077E CPC R23,R30
00063 F3D0 BCS 0x005E
00064 5F4F SUBI R20,0xFF
00065 4F5F SBCI R21,0xFF
00066 1740 CP R20,R16
00067 0751 CPC R21,R17
00068 F390 BCS 0x005B
00069 940C 0093 JMP pop_xgsetF000
(0015) }
(0016) }
(0017)
(0018) void main()
(0019) {
(0020) uchar i=0,j=0;
_main:
i --> R10
j --> R20
0006B 24AA CLR R10
0006C 2744 CLR R20
(0021) DDRA=0xff;
0006D EF8F LDI R24,0xFF
0006E BB8A OUT 0x1A,R24
(0022) DDRC=0XFF;
0006F BB84 OUT 0x14,R24
(0023) //PORTB&=~BIT(6);
(0024) PORTC=0X00;
00070 2422 CLR R2
00071 BA25 OUT 0x15,R2
00072 C019 RJMP 0x008C
(0025) while(1)
(0026) {
(0027) PORTA = table[i]; // i 值的 个位数
00073 E680 LDI R24,0x60
00074 E090 LDI R25,0
00075 2DEA MOV R30,R10
00076 27FF CLR R31
00077 0FE8 ADD R30,R24
00078 1FF9 ADC R31,R25
00079 8020 LD R2,Z
0007A BA2B OUT 0x1B,R2
(0028) PORTC = LED_W[j]; //点亮第一位数码管
0007B E68A LDI R24,0x6A
0007C E090 LDI R25,0
0007D 2FE4 MOV R30,R20
0007E 27FF CLR R31
0007F 0FE8 ADD R30,R24
00080 1FF9 ADC R31,R25
00081 8020 LD R2,Z
00082 BA25 OUT 0x15,R2
(0029)
(0030) delay(1);
00083 E001 LDI R16,1
00084 E010 LDI R17,0
00085 DFD0 RCALL _delay
(0031)
(0032) j++;
00086 9543 INC R20
(0033) i++;
00087 94A3 INC R10
(0034) if(j == 8) //利用 j 值的变化,来控制数码管数值变化间隔的时间
00088 3048 CPI R20,0x8
00089 F411 BNE 0x008C
(0035) {
(0036) j = 0;
0008A 2744 CLR R20
(0037) i = 0;
FILE: <library>
0008B 24AA CLR R10
0008C CFE6 RJMP 0x0073
0008D 9508 RET
push_xgsetF000:
0008E 937A ST -Y,R23
0008F 936A ST -Y,R22
00090 935A ST -Y,R21
00091 934A ST -Y,R20
00092 9508 RET
pop_xgsetF000:
00093 9149 LD R20,Y+
00094 9159 LD R21,Y+
00095 9169 LD R22,Y+
00096 9179 LD R23,Y+
00097 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -