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

📄 main.lis

📁 AVR试验板程序,有LED,键盘和串口的程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00B8 80E4              ldi R24,64
 00BA 89B9              out 0x9,R24
 00BC                   .dbline 107
 00BC           ;  UBRRH = 0x00;                               //set baud rate hi
 00BC 20BC              out 0x20,R2
 00BE                   .dbline 108
 00BE           ;  UCSRB = 0x98;
 00BE 88E9              ldi R24,152
 00C0 8AB9              out 0xa,R24
 00C2                   .dbline -2
 00C2           L12:
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbend
 00C4                   .dbfunc e USART_Transmit _USART_Transmit fV
 00C4           ;           data -> R16
                        .even
 00C4           _USART_Transmit::
 00C4                   .dbline -1
 00C4                   .dbline 112
 00C4           ; }
 00C4           ; 
 00C4           ; void USART_Transmit( unsigned char data )
 00C4           ; {
 00C4           L14:
 00C4                   .dbline 115
 00C4           L15:
 00C4                   .dbline 114
 00C4           ; 
 00C4           ; while ( !( UCSRA & (1<<UDRE)) )              // 等待发送缓冲器为空
 00C4 5D9B              sbis 0xb,5
 00C6 FECF              rjmp L14
 00C8                   .dbline 116
 00C8           ; ; 
 00C8           ; UDR = data;                                  //将数据放入缓冲器,发送数据
 00C8 0CB9              out 0xc,R16
 00CA                   .dbline -2
 00CA           L13:
 00CA                   .dbline 0 ; func end
 00CA 0895              ret
 00CC                   .dbsym r data 16 c
 00CC                   .dbend
 00CC                   .dbfunc e USART_Receive _USART_Receive fc
                        .even
 00CC           _USART_Receive::
 00CC                   .dbline -1
 00CC                   .dbline 120
 00CC           ; }
 00CC           ; 
 00CC           ; unsigned char USART_Receive(void)            //使用中断接受时不用此函数
 00CC           ; {
 00CC           L18:
 00CC                   .dbline 122
 00CC           L19:
 00CC                   .dbline 121
 00CC           ; while ( !(UCSRA & (1<<RXC)) )                // 等待接收数据
 00CC 5F9B              sbis 0xb,7
 00CE FECF              rjmp L18
 00D0                   .dbline 123
 00D0           ; ;
 00D0           ; return UDR;                                  // 从缓冲器中获取并返回数据
 00D0 0CB1              in R16,0xc
 00D2                   .dbline -2
 00D2           L17:
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbend
                        .area vector(rom, abs)
                        .org 44
 002C 0C946A00          jmp _uart0_rx_isr
                        .area text(rom, con, rel)
 00D4                   .dbfile E:\work\百步梯攀登计划\AVR程序\new\main.c
 00D4                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
                        .even
 00D4           _uart0_rx_isr::
 00D4 0E940000          xcall push_lset
 00D8                   .dbline -1
 00D8                   .dbline 128
 00D8           ; }
 00D8           ; 
 00D8           ; #pragma interrupt_handler uart0_rx_isr:12    
 00D8           ; void uart0_rx_isr(void)                      //串口0的中断服务程序
 00D8           ; {
 00D8                   .dbline 129
 00D8           ;  USART_Transmit(UDR);                        //把接收到的数据重新发回给PC机 
 00D8 0CB1              in R16,0xc
 00DA F4DF              xcall _USART_Transmit
 00DC                   .dbline -2
 00DC           L21:
 00DC 0E940000          xcall pop_lset
 00E0                   .dbline 0 ; func end
 00E0 1895              reti
 00E2                   .dbend
 00E2                   .dbfunc e init_devices _init_devices fV
                        .even
 00E2           _init_devices::
 00E2                   .dbline -1
 00E2                   .dbline 135
 00E2           ; }
 00E2           ; 
 00E2           ; 
 00E2           ; //call this routine to initialize all peripherals
 00E2           ; void init_devices(void)
 00E2           ; {
 00E2                   .dbline 137
 00E2           ;  //stop errant interrupts until set up
 00E2           ;  CLI(); //disable all interrupts
 00E2 F894              cli
 00E4                   .dbline 138
 00E4           ;  port_init();
 00E4 8DDF              xcall _port_init
 00E6                   .dbline 139
 00E6           ;  timer0_init();
 00E6 97DF              xcall _timer0_init
 00E8                   .dbline 140
 00E8           ;  uart0_init();
 00E8 E2DF              xcall _uart0_init
 00EA                   .dbline 141
 00EA           ;  spi_init();
 00EA CEDF              xcall _spi_init
 00EC                   .dbline 142
 00EC           ;  adc_init();
 00EC 9DDF              xcall _adc_init
 00EE                   .dbline 143
 00EE           ;  MCUCR = 0x00;
 00EE 2224              clr R2
 00F0 25BE              out 0x35,R2
 00F2                   .dbline 144
 00F2           ;  GICR  = 0x00;
 00F2 2BBE              out 0x3b,R2
 00F4                   .dbline 145
 00F4           ;  ASSR &= ~(0X08);
 00F4 82B5              in R24,0x22
 00F6 877F              andi R24,247
 00F8 82BD              out 0x22,R24
 00FA                   .dbline 146
 00FA           ;  TIMSK = 0x01; //timer interrupt sources
 00FA 81E0              ldi R24,1
 00FC 89BF              out 0x39,R24
 00FE                   .dbline 147
 00FE           ;  SEI(); //re-enable interrupts
 00FE 7894              sei
 0100                   .dbline -2
 0100           L22:
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbend
 0102                   .dbfunc e flash_led_type1 _flash_led_type1 fV
                        .even
 0102           _flash_led_type1::
 0102                   .dbline -1
 0102                   .dbline 153
 0102           ;  //all peripherals are now initialized
 0102           ; }
 0102           ; 
 0102           ; 
 0102           ; void flash_led_type1(void)                    //PD口的跑马灯显示  从右到左
 0102           ; {
 0102                   .dbline 154
 0102           ; if (led_ch==0x02) led_ch=0x80;
 0102 80910000          lds R24,_led_ch
 0106 8230              cpi R24,2
 0108 19F4              brne L24
 010A                   .dbline 154
 010A 80E8              ldi R24,128
 010C 80930000          sts _led_ch,R24
 0110           L24:
 0110                   .dbline 155
 0110           ; PORTD=~(led_ch);      
 0110 20900000          lds R2,_led_ch
 0114 2094              com R2
 0116 22BA              out 0x12,R2
 0118                   .dbline 156
 0118           ; led_ch=led_ch>>1;
 0118 20900000          lds R2,_led_ch
 011C 2694              lsr R2
 011E 20920000          sts _led_ch,R2
 0122                   .dbline -2
 0122           L23:
 0122                   .dbline 0 ; func end
 0122 0895              ret
 0124                   .dbend
 0124                   .dbfunc e flash_led_type2 _flash_led_type2 fV
                        .even
 0124           _flash_led_type2::
 0124                   .dbline -1
 0124                   .dbline 160
 0124           ; }
 0124           ; 
 0124           ; void flash_led_type2(void)                    //PD口的跑马灯显示  从左到右
 0124           ; {
 0124                   .dbline 161
 0124           ; if (led_ch==0x00) led_ch=0x02;
 0124 20900000          lds R2,_led_ch
 0128 2220              tst R2
 012A 19F4              brne L27
 012C                   .dbline 161
 012C 82E0              ldi R24,2
 012E 80930000          sts _led_ch,R24
 0132           L27:
 0132                   .dbline 162
 0132           ; PORTD=~(led_ch);      
 0132 20900000          lds R2,_led_ch
 0136 2094              com R2
 0138 22BA              out 0x12,R2
 013A                   .dbline 163
 013A           ; led_ch=led_ch<<1;
 013A 20900000          lds R2,_led_ch
 013E 220C              lsl R2
 0140 20920000          sts _led_ch,R2
 0144                   .dbline -2
 0144           L26:
 0144                   .dbline 0 ; func end
 0144 0895              ret
 0146                   .dbend
 0146                   .dbfunc e flash_led_type3 _flash_led_type3 fV
                        .even
 0146           _flash_led_type3::
 0146                   .dbline -1
 0146                   .dbline 167
 0146           ; }
 0146           ; 
 0146           ; void flash_led_type3(void)                    //PD口的跑马灯显示  反相
 0146           ; {
 0146                   .dbline 168
 0146           ; PORTD^=0XFC;                    
 0146 8CEF              ldi R24,252
 0148 90E0              ldi R25,0
 014A 22B2              in R2,0x12
 014C 3324              clr R3
 014E 2826              eor R2,R24
 0150 3926              eor R3,R25
 0152 22BA              out 0x12,R2
 0154                   .dbline -2
 0154           L29:
 0154                   .dbline 0 ; func end
 0154 0895              ret
 0156                   .dbend
 0156                   .dbfunc e flash_led_type4 _flash_led_type4 fV
 0156           ;         tmp_PD -> R16
                        .even
 0156           _flash_led_type4::
 0156                   .dbline -1
 0156                   .dbline 172
 0156           ; }
 0156           ; 
 0156           ; void flash_led_type4(void)                    //PD口的跑马灯显示  流水
 0156           ; {
 0156                   .dbline 174
 0156           ; unsigned char tmp_PD;
 0156           ; tmp_PD=PIND;
 0156 00B3              in R16,0x10
 0158                   .dbline 175
 0158           ; tmp_PD|=0XFC;
 0158 0C6F              ori R16,252
 015A                   .dbline 176
 015A           ; led_ch++;
 015A 80910000          lds R24,_led_ch
 015E 8F5F              subi R24,255    ; addi 1
 0160 80930000          sts _led_ch,R24
 0164                   .dbline 177
 0164           ; if (led_ch==0X87) led_ch=0X80;
 0164 8738              cpi R24,135
 0166 19F4              brne L31
 0168                   .dbline 177
 0168 80E8              ldi R24,128
 016A 80930000          sts _led_ch,R24
 016E           L31:
 016E                   .dbline 178
 016E           ; switch (led_ch)
 016E 00910000          lds R16,_led_ch
 0172 1127              clr R17
 0174 0138              cpi R16,129
 0176 E0E0              ldi R30,0
 0178 1E07              cpc R17,R30
 017A A9F0              breq L36
 017C 0238              cpi R16,130
 017E E0E0              ldi R30,0
 0180 1E07              cpc R17,R30
 0182 A1F0              breq L37
 0184 0338              cpi R16,131
 0186 E0E0              ldi R30,0
 0188 1E07              cpc R17,R30
 018A A1F0              breq L38
 018C 0438              cpi R16,132
 018E E0E0              ldi R30,0
 0190 1E07              cpc R17,R30
 0192 A1F0              breq L39
 0194 0538              cpi R16,133
 0196 E0E0              ldi R30,0
 0198 1E07              cpc R17,R30
 019A A1F0              breq L40
 019C 0638              cpi R16,134
 019E E0E0              ldi R30,0
 01A0 1E07              cpc R17,R30
 01A2 A1F0              breq L41
 01A4 15C0              xjmp L33
 01A6           X0:
 01A6                   .dbline 179
 01A6           ; {
 01A6           L36:
 01A6                   .dbline 181
 01A6           ; 
 01A6           ; case 0X81: PORTD=~(0X78); break;     //0111 10  00 代码
 01A6 87E8              ldi R24,135
 01A8 82BB              out 0x12,R24
 01AA                   .dbline 181
 01AA 12C0              xjmp L34
 01AC           L37:
 01AC                   .dbline 182
 01AC           ; case 0X82: PORTD=~(0XD4); break;     //1011 01  00 代码
 01AC 8BE2              ldi R24,-213
 01AE 9FEF              ldi R25,-1
 01B0 82BB              out 0x12,R24
 01B2                   .dbline 182
 01B2 0EC0              xjmp L34
 01B4           L38:
 01B4                   .dbline 183
 01B4           ; case 0X83: PORTD=~(0XCC); break;     //1100 11  00 代码
 01B4 83E3              ldi R24,-205
 01B6 9FEF              ldi R25,-1
 01B8 82BB              out 0x12,R24
 01BA                   .dbline 183
 01BA 0AC0              xjmp L34
 01BC           L39:
 01BC                   .dbline 184
 01BC           ; case 0X84: PORTD=~(0XCC); break;     //1100 11  00 代码
 01BC 83E3              ldi R24,-205
 01BE 9FEF              ldi R25,-1
 01C0 82BB              out 0x12,R24
 01C2                   .dbline 184
 01C2 06C0              xjmp L34
 01C4           L40:
 01C4                   .dbline 185
 01C4           ; case 0X85: PORTD=~(0XD4); break;     //1011 01  00 代码
 01C4 8BE2              ldi R24,-213
 01C6 9FEF              ldi R25,-1
 01C8 82BB              out 0x12,R24
 01CA                   .dbline 185
 01CA 02C0              xjmp L34
 01CC           L41:
 01CC                   .dbline 186
 01CC           ; case 0X86: PORTD=~(0X78); break;     //0111 10  00 代码
 01CC 87E8              ldi R24,135
 01CE 82BB              out 0x12,R24
 01D0                   .dbline 186
 01D0           L33:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -