📄 smg.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 0087 CALL push_xgsetF000
FILE: E:\AVR自编程序\11实验板\5数码管静态显示\smg.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)
(0008) uchar LED_W[8] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
(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 008C JMP pop_xgsetF000
(0015) }
(0016) }
(0017)
(0018) void main()
(0019) {
(0020) uchar i=0,j=0;
_main:
j --> R20
i --> R10
0006B 24AA CLR R10
0006C 2744 CLR R20
(0021) DDRA=0xff;
0006D EF8F LDI R24,0xFF
0006E BB8A OUT 0x1A,R24
(0022) DDRB=0xff;
0006F BB87 OUT 0x17,R24
00070 C014 RJMP 0x0085
(0023)
(0024)
(0025) while(1)
(0026) {
(0027) PORTA = table[i]; // i 值的 个位数
00071 E680 LDI R24,0x60
00072 E090 LDI R25,0
00073 2DEA MOV R30,R10
00074 27FF CLR R31
00075 0FE8 ADD R30,R24
00076 1FF9 ADC R31,R25
00077 8020 LD R2,Z
00078 BA2B OUT 0x1B,R2
(0028) PORTB = LED_W[0]; //点亮第一位数码管
00079 9020 006A LDS R2,LED_W
0007B BA28 OUT 0x18,R2
(0029) //PORTB=0;
(0030) delay(200);
0007C EC08 LDI R16,0xC8
0007D E010 LDI R17,0
0007E DFD7 RCALL _delay
(0031)
(0032) j++;
0007F 9543 INC R20
(0033) i++;
00080 94A3 INC R10
(0034) if(j == 10) //利用 j 值的变化,来控制数码管数值变化间隔的时间
00081 304A CPI R20,0xA
00082 F411 BNE 0x0085
(0035) {
(0036) j = 0;
00083 2744 CLR R20
(0037) i = 0;
FILE: <library>
00084 24AA CLR R10
00085 CFEB RJMP 0x0071
00086 9508 RET
push_xgsetF000:
00087 937A ST -Y,R23
00088 936A ST -Y,R22
00089 935A ST -Y,R21
0008A 934A ST -Y,R20
0008B 9508 RET
pop_xgsetF000:
0008C 9149 LD R20,Y+
0008D 9159 LD R21,Y+
0008E 9169 LD R22,Y+
0008F 9179 LD R23,Y+
00090 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -