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

📄 uart-lednum.lis

📁 这是关于AVR单片机学习的初步开发
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00AA           ;  UCSRB = 0x00; //disable while setting baud rate
 00AA 2224              clr R2
 00AC 2AB8              out 0xa,R2
 00AE                   .dbline 80
 00AE           ;  UCSRA = 0x00;
 00AE 2BB8              out 0xb,R2
 00B0                   .dbline 81
 00B0           ;  UCSRC = 0x86;
 00B0 86E8              ldi R24,134
 00B2 80BD              out 0x20,R24
 00B4                   .dbline 82
 00B4           ;  UBRRL = 0x47; //set baud rate lo
 00B4 87E4              ldi R24,71
 00B6 89B9              out 0x9,R24
 00B8                   .dbline 83
 00B8           ;  UBRRH = 0x00; //set baud rate hi
 00B8 20BC              out 0x20,R2
 00BA                   .dbline 84
 00BA           ;  UCSRB = 0x98;
 00BA 88E9              ldi R24,152
 00BC 8AB9              out 0xa,R24
 00BE                   .dbline -2
 00BE                   .dbline 85
 00BE           ; }
 00BE           L13:
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbend
                        .area vector(rom, abs)
                        .org 22
 0016 60C0              rjmp _uart0_rx_isr
                        .area text(rom, con, rel)
 00C0                   .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\uart\uart-lednum.c
 00C0                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
 00C0           ;           temp -> R16
                        .even
 00C0           _uart0_rx_isr::
 00C0 2A92              st -y,R2
 00C2 0A93              st -y,R16
 00C4 8A93              st -y,R24
 00C6 9A93              st -y,R25
 00C8 2FB6              in R2,0x3f
 00CA 2A92              st -y,R2
 00CC                   .dbline -1
 00CC                   .dbline 89
 00CC           ; 
 00CC           ; #pragma interrupt_handler uart0_rx_isr:12
 00CC           ; void uart0_rx_isr(void)
 00CC           ; {
 00CC                   .dbline 92
 00CC           ;  //uart has received a character in UDR
 00CC           ;  char temp;
 00CC           ;  temp = UDR;
 00CC 0CB1              in R16,0xc
 00CE                   .dbline 93
 00CE           ;  if(uart_count == 0)
 00CE 20900F00          lds R2,_uart_count
 00D2 2220              tst R2
 00D4 41F4              brne L15
 00D6                   .dbline 94
 00D6           ;  {    led_sel = temp;
 00D6                   .dbline 94
 00D6 00931000          sts _led_sel,R16
 00DA                   .dbline 95
 00DA           ;       UDR = temp;
 00DA 0CB9              out 0xc,R16
 00DC                   .dbline 96
 00DC           ;       uart_count ++;
 00DC 822D              mov R24,R2
 00DE 8F5F              subi R24,255    ; addi 1
 00E0 80930F00          sts _uart_count,R24
 00E4                   .dbline 97
 00E4           ;  }
 00E4 1BC0              rjmp L16
 00E6           L15:
 00E6                   .dbline 99
 00E6           ;  else
 00E6           ;  {     uart_count = 0;
 00E6                   .dbline 99
 00E6 2224              clr R2
 00E8 20920F00          sts _uart_count,R2
 00EC                   .dbline 100
 00EC           ;        if(led_sel == 1)
 00EC 80911000          lds R24,_led_sel
 00F0 8130              cpi R24,1
 00F2 19F4              brne L17
 00F4                   .dbline 101
 00F4           ;               lednum1=temp;
 00F4 00930100          sts _lednum1,R16
 00F8 10C0              rjmp L18
 00FA           L17:
 00FA                   .dbline 102
 00FA           ;        else if(led_sel == 2)
 00FA 80911000          lds R24,_led_sel
 00FE 8230              cpi R24,2
 0100 19F4              brne L19
 0102                   .dbline 103
 0102           ;               lednum2 = temp;
 0102 00930200          sts _lednum2,R16
 0106 09C0              rjmp L20
 0108           L19:
 0108                   .dbline 104
 0108           ;        else if(led_sel == 3)
 0108 80911000          lds R24,_led_sel
 010C 8330              cpi R24,3
 010E 19F4              brne L21
 0110                   .dbline 105
 0110           ;               lednum3 = temp;
 0110 00930300          sts _lednum3,R16
 0114 02C0              rjmp L22
 0116           L21:
 0116                   .dbline 107
 0116           ;        else
 0116           ;               lednum4 =temp;
 0116 00930400          sts _lednum4,R16
 011A           L22:
 011A           L20:
 011A           L18:
 011A                   .dbline 108
 011A 0CB9              out 0xc,R16
 011C                   .dbline 109
 011C           L16:
 011C                   .dbline -2
 011C                   .dbline 110
 011C           ;       UDR = temp;
 011C           ;  }
 011C           ; }
 011C           L14:
 011C 2990              ld R2,y+
 011E 2FBE              out 0x3f,R2
 0120 9991              ld R25,y+
 0122 8991              ld R24,y+
 0124 0991              ld R16,y+
 0126 2990              ld R2,y+
 0128                   .dbline 0 ; func end
 0128 1895              reti
 012A                   .dbsym r temp 16 c
 012A                   .dbend
 012A                   .dbfunc e init_devices _init_devices fV
                        .even
 012A           _init_devices::
 012A                   .dbline -1
 012A                   .dbline 115
 012A           ; 
 012A           ; 
 012A           ; //call this routine to initialise all peripherals
 012A           ; void init_devices(void)
 012A           ; {
 012A                   .dbline 117
 012A           ;  //stop errant interrupts until set up
 012A           ;  CLI(); //disable all interrupts
 012A F894              cli
 012C                   .dbline 118
 012C           ;  port_init();
 012C 69DF              rcall _port_init
 012E                   .dbline 119
 012E           ;  timer0_init();
 012E 73DF              rcall _timer0_init
 0130                   .dbline 120
 0130           ;  uart0_init();
 0130 BCDF              rcall _uart0_init
 0132                   .dbline 122
 0132           ;  
 0132           ;  MCUCR = 0x00;
 0132 2224              clr R2
 0134 25BE              out 0x35,R2
 0136                   .dbline 123
 0136           ;  GICR  = 0x00;
 0136 2BBE              out 0x3b,R2
 0138                   .dbline 124
 0138           ;  TIMSK = 0x01; //timer interrupt sources
 0138 81E0              ldi R24,1
 013A 89BF              out 0x39,R24
 013C                   .dbline 125
 013C           ;  SEI(); //re-enable interrupts
 013C 7894              sei
 013E                   .dbline -2
 013E                   .dbline 127
 013E           ;  //all peripherals are now initialised
 013E           ; }
 013E           L23:
 013E                   .dbline 0 ; func end
 013E 0895              ret
 0140                   .dbend
 0140                   .dbfunc e delay _delay fV
 0140           ;              j -> R16,R17
 0140           ;              i -> R18,R19
 0140           ;              z -> R20,R21
                        .even
 0140           _delay::
 0140 00D0              rcall push_gset1
 0142                   .dbline -1
 0142                   .dbline 134
 0142           ; 
 0142           ; 
 0142           ; 
 0142           ; 
 0142           ; //自定义函数
 0142           ; void delay(void)
 0142           ; {
 0142                   .dbline 136
 0142 2227              clr R18
 0144 3327              clr R19
 0146 02C0              rjmp L28
 0148           L25:
 0148                   .dbline 136
 0148           L26:
 0148                   .dbline 136
 0148 2F5F              subi R18,255  ; offset = 1
 014A 3F4F              sbci R19,255
 014C           L28:
 014C                   .dbline 136
 014C           ;  unsigned int i,j,z;
 014C           ;  for(i=0;i<10000;i++);
 014C 2031              cpi R18,16
 014E E7E2              ldi R30,39
 0150 3E07              cpc R19,R30
 0152 D0F3              brlo L25
 0154                   .dbline 137
 0154           ;  {    for(j=0;j<10000;j++)
 0154                   .dbline 137
 0154 0027              clr R16
 0156 1127              clr R17
 0158 0BC0              rjmp L32
 015A           L29:
 015A                   .dbline 138
 015A                   .dbline 138
 015A 4427              clr R20
 015C 5527              clr R21
 015E 02C0              rjmp L36
 0160           L33:
 0160                   .dbline 138
 0160           L34:
 0160                   .dbline 138
 0160 4F5F              subi R20,255  ; offset = 1
 0162 5F4F              sbci R21,255
 0164           L36:
 0164                   .dbline 138
 0164 4436              cpi R20,100
 0166 E0E0              ldi R30,0
 0168 5E07              cpc R21,R30
 016A D0F3              brlo L33
 016C                   .dbline 138
 016C           L30:
 016C                   .dbline 137
 016C 0F5F              subi R16,255  ; offset = 1
 016E 1F4F              sbci R17,255
 0170           L32:
 0170                   .dbline 137
 0170 0031              cpi R16,16
 0172 E7E2              ldi R30,39
 0174 1E07              cpc R17,R30
 0176 88F3              brlo L29
 0178                   .dbline 139
 0178           ;       {       for(z=0;z<100;z++);}
 0178           ;  }
 0178                   .dbline -2
 0178                   .dbline 140
 0178           ; }
 0178           L24:
 0178 00D0              rcall pop_gset1
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbsym r j 16 i
 017C                   .dbsym r i 18 i
 017C                   .dbsym r z 20 i
 017C                   .dbend
 017C                   .dbfunc e main _main fV
                        .even
 017C           _main::
 017C                   .dbline -1
 017C                   .dbline 143
 017C           ; 
 017C           ; void main(void)
 017C           ; {
 017C                   .dbline 145
 017C           ;   
 017C           ;  init_devices();
 017C D6DF              rcall _init_devices
 017E                   .dbline 147
 017E           ;  
 017E           ;  lednum1 = num[0];
 017E 20900500          lds R2,_num
 0182 20920100          sts _lednum1,R2
 0186                   .dbline 148
 0186           ;  lednum2 =num[1];
 0186 20900600          lds R2,_num+1
 018A 20920200          sts _lednum2,R2
 018E                   .dbline 149
 018E           ;  lednum3 = num[2];
 018E 20900700          lds R2,_num+2
 0192 20920300          sts _lednum3,R2
 0196                   .dbline 150
 0196           ;  lednum4 = num[3]; 
 0196 20900800          lds R2,_num+3
 019A 20920400          sts _lednum4,R2
 019E           L41:
 019E                   .dbline 152
 019E                   .dbline 152
 019E                   .dbline 153
 019E           L42:
 019E                   .dbline 151
 019E FFCF              rjmp L41
 01A0           X0:
 01A0                   .dbline -2
 01A0                   .dbline 154
 01A0           ;  while(1)
 01A0           ;  {;  
 01A0           ;  } 
 01A0           ; }
 01A0           L37:
 01A0                   .dbline 0 ; func end
 01A0 0895              ret
 01A2                   .dbend

⌨️ 快捷键说明

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