⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.lis

📁 用于单白色144颗LED8段追光
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -