📄 mega128.lst
字号:
__text_start:
__start:
0051 EFCF LDI R28,0xFF
0052 E1D0 LDI R29,0x10
0053 BFCD OUT P3D,R28
0054 BFDE OUT P3E,R29
0055 51C0 SUBI R28,0x10
0056 40D0 SBCI R29,0
0057 EA0A LDI R16,0xAA
0058 8308 STD R16,0+Y
0059 2400 CLR R0
005A E0E4 LDI R30,4
005B E0F1 LDI R31,1
005C E011 LDI R17,1
005D 30E4 CPI R30,4
005E 07F1 CPC R31,R17
005F F011 BEQ 0x0062
0060 9201 ST R0,Z+
0061 CFFB RJMP 0x005D
0062 8300 STD R16,0+Z
0063 E9EC LDI R30,0x9C
0064 E0F0 LDI R31,0
0065 E0A0 LDI R26,0
0066 E0B1 LDI R27,1
0067 E010 LDI R17,0
0068 3AE0 CPI R30,0xA0
0069 07F1 CPC R31,R17
006A F021 BEQ 0x006F
006B 95C8 LPM
006C 9631 ADIW R30,1
006D 920D ST R0,X+
006E CFF9 RJMP 0x0068
0070 940E00C0 CALL _main
_exit:
0071 CFFF RJMP _delay_1ms
FILE: D:\jtag_test\led_128.c
(0001) #include <iom128.h>
(0002) #define xtal 16
(0003) const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
(0004) 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
(0005) unsigned char led_buff[4]={0,0,0,0};
(0006) void delay_1ms(void)
(0007) {
(0008) unsigned int i;
(0009) for(i=1;i<(unsigned int)(xtal*143-2);i++)
0072 E001 LDI R16,1
0073 E010 LDI R17,0
0074 C002 RJMP 0x0077
(0010) ;
0075 5F0F SUBI R16,0xFF
0076 4F1F SBCI R17,0xFF
0077 3E0E CPI R16,0xEE
0078 E0E8 LDI R30,0x8
0079 071E CPC R17,R30
007A F3D0 BCS 0x0075
(0011) }
007B 9508 RET
_led_display:
i --> R20
007D 940E00D2 CALL push_gset1
(0012) /*void delay_ms(unsigned int n)
(0013) {
(0014) unsigned int i=0;
(0015) while(i<n)
(0016) {
(0017) delay_1ms();
(0018) i++;
(0019) }
(0020) }*/
(0021) void led_display(void)
(0022) {
(0023) unsigned char i;
(0024) DDRA=0xff;
007E EF8F LDI R24,0xFF
007F BB8A OUT P1A,R24
(0025) PORTA=0xff;
0080 BB8B OUT P1B,R24
(0026) DDRC|=0xf0;
0081 B384 IN R24,P14
0082 6F80 ORI R24,0xF0
0083 BB84 OUT P14,R24
(0027) PORTC|=0xf0;
0084 B385 IN R24,P15
0085 6F80 ORI R24,0xF0
0086 BB85 OUT P15,R24
(0028) for(i=0;i<4;i++)
0087 2744 CLR R20
0088 C017 RJMP 0x00A0
(0029) {
(0030) PORTA=led_buff[i];
0089 E080 LDI R24,0
008A E091 LDI R25,1
008B 2FE4 MOV R30,R20
008C 27FF CLR R31
008D 0FE8 ADD R30,R24
008E 1FF9 ADC R31,R25
008F 8020 LDD R2,0+Z
0090 BA2B OUT P1B,R2
(0031) PORTC&=~(1<<(i+4));
0091 2F14 MOV R17,R20
0092 5F1C SUBI R17,0xFC
0093 E001 LDI R16,1
0095 940E00E9 CALL lsl8
0096 2E20 MOV R2,R16
0097 9420 COM R2
0098 B235 IN R3,P15
0099 2032 AND R3,R2
009A BA35 OUT P15,R3
(0032) delay_1ms();
009B DFD6 RCALL 0x0072
(0033) PORTC|=0xf0;
009C B385 IN R24,P15
009D 6F80 ORI R24,0xF0
009E BB85 OUT P15,R24
(0034) }
009F 9543 INC R20
00A0 3044 CPI R20,4
00A1 F338 BCS 0x0089
(0035) }
00A3 940E00D5 CALL pop_gset1
00A4 9508 RET
_led_fill:
i --> R20
index --> R16
00A6 940E00D2 CALL push_gset1
(0036) void led_fill(unsigned char index)
(0037) {
(0038) unsigned char i;
(0039) for(i=0;i<4;i++)
00A7 2744 CLR R20
00A8 C013 RJMP 0x00BC
(0040) {
(0041) led_buff[i]=seg_table[index+i];
00A9 2E24 MOV R2,R20
00AA 2433 CLR R3
00AB 2FE0 MOV R30,R16
00AC 27FF CLR R31
00AD 0DE2 ADD R30,R2
00AE 1DF3 ADC R31,R3
00AF E88C LDI R24,0x8C
00B0 E090 LDI R25,0
00B1 0FE8 ADD R30,R24
00B2 1FF9 ADC R31,R25
00B3 91E4 LD R30,R30
00B4 E080 LDI R24,0
00B5 E091 LDI R25,1
00B6 2FA4 MOV R26,R20
00B7 27BB CLR R27
00B8 0FA8 ADD R26,R24
00B9 1FB9 ADC R27,R25
00BA 93EC ST R30,0(X)
(0042) }
00BB 9543 INC R20
00BC 3044 CPI R20,4
00BD F358 BCS 0x00A9
(0043) }
00BF 940E00D5 CALL pop_gset1
00C0 9508 RET
(0044) void main(void)
(0045) {
_main:
j --> R20
i --> R22
00C1 C00F RJMP 0x00D1
(0046) unsigned char i,j;
(0047) while(1)
(0048) {
(0049) for(j=0;j<4;j++)
00C2 2744 CLR R20
00C3 C00B RJMP 0x00CF
(0050) {
(0051) led_fill(4*j);
00C4 E084 LDI R24,4
00C5 9F84 MUL R24,R20
00C6 0180 MOVW R16,R0
00C7 DFDD RCALL 0x00A5
(0052) for(i=0;i<200;i++)
00C8 2766 CLR R22
00C9 C002 RJMP 0x00CC
(0053) led_display();
00CA DFB1 RCALL 0x007C
00CB 9563 INC R22
00CC 3C68 CPI R22,0xC8
00CD F3E0 BCS 0x00CA
(0054) }
00CE 9543 INC R20
00CF 3044 CPI R20,4
00D0 F398 BCS 0x00C4
(0055) }
00D1 CFF0 RJMP 0x00C2
(0056) }
FILE: <library>
00D2 9508 RET
push_gset1:
00D3 935A ST R21,-Y
00D4 934A ST R20,-Y
00D5 9508 RET
pop_gset1:
00D6 E0E1 LDI R30,1
pop:
00D7 9149 LD R20,Y+
00D8 9159 LD R21,Y+
00D9 FDE0 SBRC R30,0
00DA 9508 RET
00DB 9169 LD R22,Y+
00DC 9179 LD R23,Y+
00DD FDE1 SBRC R30,1
00DE 9508 RET
00DF 90A9 LD R10,Y+
00E0 90B9 LD R11,Y+
00E1 FDE2 SBRC R30,2
00E2 9508 RET
00E3 90C9 LD R12,Y+
00E4 90D9 LD R13,Y+
00E5 FDE3 SBRC R30,3
00E6 9508 RET
00E7 90E9 LD R14,Y+
00E8 90F9 LD R15,Y+
00E9 9508 RET
lsl8:
00EA 2311 TST R17
00EB F019 BEQ 0x00EF
00EC 0F00 LSL R16
00ED 951A DEC R17
00EE CFFB RJMP 0x00EA
00EF 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -