📄 led.lst
字号:
__start:
__text_start:
0013 E5CF LDI R28,0x5F
0014 E0D4 LDI R29,4
0015 BFCD OUT 0x3D,R28
0016 BFDE OUT 0x3E,R29
0017 51C0 SUBI R28,0x10
0018 40D0 SBCI R29,0
0019 EA0A LDI R16,0xAA
001A 8308 STD Y+0,R16
001B 2400 CLR R0
001C E6E0 LDI R30,0x60
001D E0F0 LDI R31,0
001E E010 LDI R17,0
001F 36E0 CPI R30,0x60
0020 07F1 CPC R31,R17
0021 F011 BEQ 0x0024
0022 9201 ST R0,Z+
0023 CFFB RJMP 0x001F
0024 8300 STD Z+0,R16
0025 E2E6 LDI R30,0x26
0026 E0F0 LDI R31,0
0027 E6A0 LDI R26,0x60
0028 E0B0 LDI R27,0
0029 E010 LDI R17,0
002A 32E6 CPI R30,0x26
002B 07F1 CPC R31,R17
002C F021 BEQ 0x0031
002D 95C8 LPM
002E 9631 ADIW R30,1
002F 920D ST R0,X+
0030 CFF9 RJMP 0x002A
0031 D04F RCALL _main
_exit:
0032 CFFF RJMP _exit
FILE: F:\辛涛\实验板\实验板程序\数码管显示\LED.C
(0001) /*********************************************
(0002) ************PC0==>DATA
(0003) ************PC1==>SCLK
(0004) ************PC2==>C0
(0005) ************PC3==>C1
(0006) ************PC4==>C2
(0007) ************PC5==>C3
(0008) ************PC6==>C4
(0009) **********************************************/
(0010) //ICC-AVR application builder : 2007-4-4 15:05:58
(0011) // Target : M8
(0012) // Crystal: 11.059Mhz
(0013)
(0014) #include <iom8v.h>
(0015) #include <macros.h>
(0016)
(0017) void port_init(void)
(0018) {
(0019) PORTB = 0xFF;
_port_init:
0033 EF8F LDI R24,0xFF
0034 BB88 OUT 0x18,R24
(0020) DDRB = 0x00;
0035 2422 CLR R2
0036 BA27 OUT 0x17,R2
(0021) PORTC = 0x7F; //m103 output only
0037 E78F LDI R24,0x7F
0038 BB85 OUT 0x15,R24
(0022) DDRC = 0x7F;
0039 BB84 OUT 0x14,R24
(0023) PORTD = 0xFF;
003A EF8F LDI R24,0xFF
003B BB82 OUT 0x12,R24
(0024) DDRD = 0x00;
003C BA21 OUT 0x11,R2
(0025) }
003D 9508 RET
(0026) /*****************************延时函数**************************************/
(0027) void delay_1ms(void)//1ms延时函数
(0028) {
(0029) unsigned int i;
(0030) for (i=1;i<1571;i++)
_delay_1ms:
i --> R16
003E E001 LDI R16,1
003F E010 LDI R17,0
0040 C002 RJMP 0x0043
0041 5F0F SUBI R16,0xFF
0042 4F1F SBCI R17,0xFF
0043 3203 CPI R16,0x23
0044 E0E6 LDI R30,6
0045 071E CPC R17,R30
0046 F3D0 BCS 0x0041
(0031) ;
(0032) }
0047 9508 RET
_delay_ms:
i --> R20
n --> R22
0048 D056 RCALL push_gset2
0049 01B8 MOVW R22,R16
(0033) void delay_ms (unsigned int n)
(0034) {
(0035) unsigned int i=0;
004A 2744 CLR R20
004B 2755 CLR R21
(0036) for (i=0;i<n;i++)
004C C003 RJMP 0x0050
(0037) delay_1ms();
004D DFF0 RCALL _delay_1ms
004E 5F4F SUBI R20,0xFF
004F 4F5F SBCI R21,0xFF
0050 1746 CP R20,R22
0051 0757 CPC R21,R23
0052 F3D0 BCS 0x004D
(0038) }
0053 D030 RCALL pop_gset2
0054 9508 RET
_VUART0:
count1 --> Y+1
VBUF --> R20
count2 --> R22
bit_ctr --> R10
Display --> R22
0055 D04C RCALL push_gset3
0056 2F60 MOV R22,R16
(0039) /************************虚拟串行显示通道0***************************/
(0040) unsigned char VUART0 (unsigned char Display)
(0041) {
(0042) unsigned char VBUF,bit_ctr,count1,count2;
(0043) VBUF=Display;
(0044) bit_ctr=0x01;
(0045) for (count2=0;count2<8;count2++)
0057 2F46 MOV R20,R22
0058 24AA CLR R10
0059 94A3 INC R10
005A 2766 CLR R22
005B C019 RJMP 0x0075
(0046) {
(0047) if ((VBUF&bit_ctr)==0x00)
005C 2E24 MOV R2,R20
005D 202A AND R2,R10
005E F469 BNE 0x006C
(0048) {//数据为0
(0049) PORTC=0b00111100;//PC0=RXD数据
005F E38C LDI R24,0x3C
0060 BB85 OUT 0x15,R24
(0050) delay_ms (2);
0061 E002 LDI R16,2
0062 E010 LDI R17,0
0063 DFE4 RCALL _delay_ms
(0051) PORTC=0b00111110;//PC1=TXD时钟
0064 E38E LDI R24,0x3E
0065 BB85 OUT 0x15,R24
(0052) delay_ms (2);
0066 E002 LDI R16,2
0067 E010 LDI R17,0
0068 DFDF RCALL _delay_ms
(0053) PORTC=0b00111111;//PC1=TXD时钟
0069 E38F LDI R24,0x3F
006A BB85 OUT 0x15,R24
(0054) }
006B C007 RJMP 0x0073
(0055) else
(0056) {//数据为1
(0057) PORTC=0b00111101;//PC0=RXD数据
006C E38D LDI R24,0x3D
006D BB85 OUT 0x15,R24
(0058) delay_ms (2);
006E E002 LDI R16,2
006F E010 LDI R17,0
0070 DFD7 RCALL _delay_ms
(0059) PORTC=0b00111111;//PC1=TXD时钟
0071 E38F LDI R24,0x3F
0072 BB85 OUT 0x15,R24
(0060) }
(0061) bit_ctr<<=1;
0073 0CAA LSL R10
0074 9563 INC R22
0075 3068 CPI R22,0x8
0076 F328 BCS 0x005C
(0062) }
(0063)
(0064) }
0077 D00E RCALL pop_gset3
0078 9508 RET
(0065) //call this routine to initialise all peripherals
(0066) void init_devices(void)
(0067) {
(0068) //stop errant interrupts until set up
(0069) CLI(); //disable all interrupts
_init_devices:
0079 94F8 BCLR 7
(0070) port_init();
007A DFB8 RCALL _port_init
(0071)
(0072) MCUCR = 0x00;
007B 2422 CLR R2
007C BE25 OUT 0x35,R2
(0073) GICR = 0x00;
007D BE2B OUT 0x3B,R2
(0074) TIMSK = 0x00; //timer interrupt sources
007E BE29 OUT 0x39,R2
(0075) SEI(); //re-enable interrupts
007F 9478 BSET 7
(0076) //all peripherals are now initialised
(0077) }
0080 9508 RET
(0078) void main()
(0079) {
(0080) init_devices();
_main:
0081 DFF7 RCALL _init_devices
(0081)
(0082) //while(1)
(0083) // {
(0084) VUART0 (0xff);
0082 EF0F LDI R16,0xFF
(0085) //}
(0086) }
FILE: <library>
0083 CFD1 RJMP _VUART0
pop_gset2:
0084 E0E2 LDI R30,2
0085 C006 RJMP pop
pop_gset3:
0086 E0E4 LDI R30,4
0087 C004 RJMP pop
push_gset1:
0088 935A ST R21,-Y
0089 934A ST R20,-Y
008A 9508 RET
pop_gset1:
008B E0E1 LDI R30,1
pop:
008C 9149 LD R20,Y+
008D 9159 LD R21,Y+
008E FDE0 SBRC R30,0
008F 9508 RET
0090 9169 LD R22,Y+
0091 9179 LD R23,Y+
0092 FDE1 SBRC R30,1
0093 9508 RET
0094 90A9 LD R10,Y+
0095 90B9 LD R11,Y+
0096 FDE2 SBRC R30,2
0097 9508 RET
0098 90C9 LD R12,Y+
0099 90D9 LD R13,Y+
009A FDE3 SBRC R30,3
009B 9508 RET
009C 90E9 LD R14,Y+
009D 90F9 LD R15,Y+
009E 9508 RET
push_gset2:
009F 937A ST R23,-Y
00A0 936A ST R22,-Y
00A1 CFE6 RJMP push_gset1
push_gset3:
00A2 92BA ST R11,-Y
00A3 92AA ST R10,-Y
00A4 CFFA RJMP push_gset2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -