📄 app.lis
字号:
001E 280E add R2,R24
0020 391E adc R3,R25
0022 80E0 ldi R24,<_redata-1
0024 90E0 ldi R25,>_redata-1
0026 E62F mov R30,R22
0028 F72F mov R31,R23
002A E80F add R30,R24
002C F91F adc R31,R25
002E 8081 ldd R24,z+0
0030 8295 swap R24
0032 8F70 andi R24,#0x0F
0034 E22D mov R30,R2
0036 F32D mov R31,R3
0038 9081 ldd R25,z+0
003A 9F70 andi R25,#0x0F
003C 9295 swap R25
003E 982B or R25,R24
0040 9083 std z+0,R25
0042 L10:
0042 .dbline 101
0042 6150 subi R22,1
0044 7040 sbci R23,0
0046 .dbline 101
0046 2224 clr R2
0048 3324 clr R3
004A 2616 cp R2,R22
004C 3706 cpc R3,R23
004E 1CF3 brlt L9
0050 .dbline 103
0050 80E0 ldi R24,<_redata
0052 90E0 ldi R25,>_redata
0054 262E mov R2,R22
0056 372E mov R3,R23
0058 280E add R2,R24
005A 391E adc R3,R25
005C E22D mov R30,R2
005E F32D mov R31,R3
0060 8081 ldd R24,z+0
0062 8F70 andi R24,#0x0F
0064 8295 swap R24
0066 8083 std z+0,R24
0068 .dbline 104
0068 80E0 ldi R24,<_table
006A 90E0 ldi R25,>_table
006C 242E mov R2,R20
006E 3324 clr R3
0070 280E add R2,R24
0072 391E adc R3,R25
0074 E22D mov R30,R2
0076 F32D mov R31,R3
0078 C895 lpm
007A 802D mov R24,R0
007C 8F70 andi R24,15
007E 20900000 lds R2,_redata
0082 282A or R2,R24
0084 20920000 sts _redata,R2
0088 .dbline 106
0088 72D0 rcall _send
008A .dbline 107
008A 02E0 ldi R16,2
008C 5CD0 rcall _delay
008E .dbline 108
008E L6:
008E .dbline 99
008E 4395 inc R20
0090 L8:
0090 .dbline 99
0090 4031 cpi R20,16
0092 08F4 brsh X1
0094 BECF rjmp L5
0096 X1:
0096 .dbline 111
0096 L3:
0096 .dbline 96
0096 BBCF rjmp L2
0098 X0:
0098 .dbline -2
0098 .dbline 116
0098 ; redata[n]=(redata[n]<<4)|(redata[n-1]>>4);
0098 ; redata[n]<<=4;
0098 ; redata[0]|=table[i]&0x0f;
0098 ; //*******************************transmit data
0098 ; send();
0098 ; delay(2);
0098 ; }
0098 ; //while(1)
0098 ; //WDR();
0098 ; }
0098 ; //**************************Three Color Test
0098 ; //*********************
0098 ;
0098 ; //******************************
0098 ; }//MAIN PROGRAM
0098 L1:
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbsym l paddr 1 pkc
009A .dbsym l redata_addr 1 pc
009A .dbsym l temp 1 c
009A .dbsym l word 1 c
009A .dbsym l j 1 c
009A .dbsym r i 20 c
009A .dbsym r n 22 I
009A .dbend
.area vector(rom, abs)
.org 14
000E 4DC0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
009A .dbfile D:\单片机程序\AVR\LSAVR~1\LBT-FC8B暴光管TEST\APP.c
009A .dbfunc e uart0_rx_isr _uart0_rx_isr fV
009A ; addr -> R18
009A ; temp -> R16
009A ; i -> R16
.even
009A _uart0_rx_isr::
009A 2A92 st -y,R2
009C 3A92 st -y,R3
009E 0A93 st -y,R16
00A0 2A93 st -y,R18
00A2 8A93 st -y,R24
00A4 9A93 st -y,R25
00A6 EA93 st -y,R30
00A8 FA93 st -y,R31
00AA 2FB6 in R2,0x3f
00AC 2A92 st -y,R2
00AE .dbline -1
00AE .dbline 122
00AE ; /*********************************
00AE ; **接收数据
00AE ; **********************************/
00AE ; #pragma interrupt_handler uart0_rx_isr:8
00AE ; void uart0_rx_isr(void)
00AE ; {
00AE .dbline 124
00AE ; uchar i,temp;
00AE ; uchar addr=40;
00AE 28E2 ldi R18,40
00B0 .dbline 125
00B0 ; temp=UDR;
00B0 0CB1 in R16,0xc
00B2 .dbline 126
00B2 ; if(temp==addr||temp==100||temp==255)//地址判断
00B2 0217 cp R16,R18
00B4 21F0 breq L18
00B6 0436 cpi R16,100
00B8 11F0 breq L18
00BA 0F3F cpi R16,255
00BC C9F4 brne L15
00BE L18:
00BE .dbline 127
00BE ; {
00BE .dbline 128
00BE ; UCSRA&=~BIT(MPCM);//取消地址接收
00BE 5898 cbi 0xb,0
00C0 .dbline 129
00C0 ; for(i=0;i<8;i++)
00C0 0027 clr R16
00C2 10C0 rjmp L22
00C4 X2:
00C4 .dbline 130
00C4 ; {
00C4 L23:
00C4 .dbline 131
00C4 A895 wdr
00C6 L24:
00C6 .dbline 131
00C6 5F9B sbis 0xb,7
00C8 FDCF rjmp L23
00CA .dbline 131
00CA .dbline 132
00CA 202E mov R2,R16
00CC 3324 clr R3
00CE E7E0 ldi R30,7
00D0 F0E0 ldi R31,0
00D2 E219 sub R30,R2
00D4 F309 sbc R31,R3
00D6 80E0 ldi R24,<_redata
00D8 90E0 ldi R25,>_redata
00DA E80F add R30,R24
00DC F91F adc R31,R25
00DE 2CB0 in R2,0xc
00E0 2082 std z+0,R2
00E2 .dbline 133
00E2 L20:
00E2 .dbline 129
00E2 0395 inc R16
00E4 L22:
00E4 .dbline 129
00E4 0830 cpi R16,8
00E6 78F3 brlo L24
00E8 .dbline 134
00E8 589A sbi 0xb,0
00EA .dbline 135
00EA 81E0 ldi R24,1
00EC 80930000 sts _fg_rin,R24
00F0 .dbline 136
00F0 L15:
00F0 .dbline -2
00F0 .dbline 137
00F0 ; while(!(UCSRA&0x80))WDR(); ;
00F0 ; redata[7-i]=UDR;//读UDR时RXC将自动清除
00F0 ; }
00F0 ; UCSRA|=BIT(MPCM);//允许地址接收
00F0 ; fg_rin=0x01;//设置接收数据标志
00F0 ; }
00F0 ; }
00F0 L14:
00F0 2990 ld R2,y+
00F2 2FBE out 0x3f,R2
00F4 F991 ld R31,y+
00F6 E991 ld R30,y+
00F8 9991 ld R25,y+
00FA 8991 ld R24,y+
00FC 2991 ld R18,y+
00FE 0991 ld R16,y+
0100 3990 ld R3,y+
0102 2990 ld R2,y+
0104 .dbline 0 ; func end
0104 1895 reti
0106 .dbsym r addr 18 c
0106 .dbsym r temp 16 c
0106 .dbsym r i 16 c
0106 .dbend
0106 .dbfunc e port_init _port_init fV
.even
0106 _port_init::
0106 .dbline -1
0106 .dbline 139
0106 ; void port_init(void)
0106 ; {
0106 .dbline 140
0106 ; PORTB = 0xff;
0106 8FEF ldi R24,255
0108 88BB out 0x18,R24
010A .dbline 141
010A ; DDRB = 0x00;
010A 2224 clr R2
010C 27BA out 0x17,R2
010E .dbline 142
010E ; PORTD = 0x00;
010E 22BA out 0x12,R2
0110 .dbline 143
0110 ; DDRD = 0xff;
0110 81BB out 0x11,R24
0112 .dbline -2
0112 .dbline 144
0112 ; }
0112 L26:
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbend
0114 .dbfunc e watchdog_init _watchdog_init fV
.even
0114 _watchdog_init::
0114 .dbline -1
0114 .dbline 147
0114 ;
0114 ; void watchdog_init(void)
0114 ; {
0114 .dbline 148
0114 ; WDR(); //this prevents a timout on enabling
0114 A895 wdr
0116 .dbline 149
0116 ; WDTCR|=(1<<WDCE)|(1<<WDE);
0116 81B5 in R24,0x21
0118 8861 ori R24,24
011A 81BD out 0x21,R24
011C .dbline 150
011C ; WDTCR = (1<<WDE)|(1<<WDP2)|(1<<WDP0); //WATCHDOG ENABLED - dont forget WDR
011C 8DE0 ldi R24,13
011E 81BD out 0x21,R24
0120 .dbline -2
0120 .dbline 151
0120 ; }
0120 L27:
0120 .dbline 0 ; func end
0120 0895 ret
0122 .dbend
0122 .dbfunc e uart0_init _uart0_init fV
.even
0122 _uart0_init::
0122 .dbline -1
0122 .dbline 153
0122 ; void uart0_init(void)
0122 ; {
0122 .dbline 154
0122 ; UBRRH = 0x00; //set baud rate
0122 2224 clr R2
0124 22B8 out 0x2,R2
0126 .dbline 155
0126 ; UBRRL = 0x01; //set baud rate
0126 81E0 ldi R24,1
0128 89B9 out 0x9,R24
012A .dbline 156
012A ; UCSRA|=BIT(MPCM);
012A 589A sbi 0xb,0
012C .dbline 157
012C ; UCSRB = 0X94;
012C 84E9 ldi R24,148
012E 8AB9 out 0xa,R24
0130 .dbline 158
0130 ; UCSRC = 0x06; //enable
0130 86E0 ldi R24,6
0132 83B9 out 0x3,R24
0134 .dbline -2
0134 .dbline 159
0134 ; }
0134 L28:
0134 .dbline 0 ; func end
0134 0895 ret
0136 .dbend
0136 .dbfunc e init_devices _init_devices fV
.even
0136 _init_devices::
0136 .dbline -1
0136 .dbline 161
0136 ; void init_devices(void)
0136 ; {
0136 .dbline 162
0136 ; CLI(); //disable all interrupts
0136 F894 cli
0138 .dbline 163
0138 ; port_init();
0138 E6DF rcall _port_init
013A .dbline 164
013A ; watchdog_init();
013A ECDF rcall _watchdog_init
013C .dbline 165
013C ; MCUCR = 0x00;//禁止休眠(disable sleep)//
013C 2224 clr R2
013E 25BE out 0x35,R2
0140 .dbline 166
0140 ; GIMSK = 0x00;//屏蔽两个外部中断disable exit interrupts//
0140 2BBE out 0x3b,R2
0142 .dbline 167
0142 ; TIMSK = 0x00;//屏蔽定时器中断 disable timer interrupts//
0142 29BE out 0x39,R2
0144 .dbline -2
0144 .dbline 168
0144 ; }
0144 L29:
0144 .dbline 0 ; func end
0144 0895 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -