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

📄 demob-16sm.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .even
 00B0           _transmit::
 00B0                   .dbline -1
 00B0                   .dbline 134
 00B0           ; } 
 00B0           ; 
 00B0           ; /*
 00B0           ; void delay2(int count)
 00B0           ; {
 00B0           ;  int i, j;
 00B0           ;  for(i=count; i>0; i--)
 00B0           ;     for(j=10; j>0; j--)
 00B0           ;          ;
 00B0           ; }*/
 00B0           ; 
 00B0           ; void transmit(unsigned char abyte)
 00B0           ; {
 00B0                   .dbline 135
 00B0           ;  UDR=abyte;
 00B0 0CB9              out 0xc,R16
 00B2           L7:
 00B2                   .dbline 137
 00B2           ;  while(!(UCSRA&0b01000000))   //b6=1 TXE
 00B2           ;         ;
 00B2           L8:
 00B2                   .dbline 136
 00B2 5E9B              sbis 0xb,6
 00B4 FECF              rjmp L7
 00B6           X1:
 00B6                   .dbline -2
 00B6           L6:
 00B6                   .dbline 0 ; func end
 00B6 0895              ret
 00B8                   .dbsym r abyte 16 c
 00B8                   .dbend
 00B8                   .dbfunc e main _main fV
 00B8           ;           outd -> R10
 00B8           ;           outc -> R10
 00B8           ;           outb -> R20
 00B8           ;           outa -> R20
 00B8           ;          dswin -> R10,R11
                        .even
 00B8           _main::
 00B8                   .dbline -1
 00B8                   .dbline 142
 00B8           ; }
 00B8           ; 
 00B8           ; //*****************************************************************
 00B8           ; void main(void)
 00B8           ; {
 00B8                   .dbline 143
 00B8           ;  unsigned char outa=0b01010101, outb=0b10101010, outc=0x00, outd=0x00;
 00B8                   .dbline 143
 00B8 4AEA              ldi R20,170
 00BA                   .dbline 143
 00BA AA24              clr R10
 00BC                   .dbline 143
 00BC                   .dbline 145
 00BC           ;  int dswin;
 00BC           ;  port_init();
 00BC CFDF              xcall _port_init
 00BE                   .dbline 146
 00BE           ;  USART_init();
 00BE D7DF              xcall _USART_init
 00C0                   .dbline 147
 00C0           ;  SEI();
 00C0 7894              sei
 00C2                   .dbline 148
 00C2           ;  WDT_off();
 00C2 0E940000          xcall _WDT_off
 00C6                   .dbline 149
 00C6           ;  ldelay(50);
 00C6 02E3              ldi R16,50
 00C8 10E0              ldi R17,0
 00CA 0E940000          xcall _ldelay
 00CE                   .dbline 150
 00CE           ;  lcd_on();
 00CE 0E940000          xcall _lcd_on
 00D2                   .dbline 151
 00D2           ;  PORTD=0x50;
 00D2 80E5              ldi R24,80
 00D4 82BB              out 0x12,R24
 00D6                   .dbline 152
 00D6           ;  ldelay(50);
 00D6 02E3              ldi R16,50
 00D8 10E0              ldi R17,0
 00DA 0E940000          xcall _ldelay
 00DE                   .dbline 153
 00DE           ;  PORTD=0x05;
 00DE 85E0              ldi R24,5
 00E0 82BB              out 0x12,R24
 00E2                   .dbline 154
 00E2           ;  ldelay(50);
 00E2 02E3              ldi R16,50
 00E4 10E0              ldi R17,0
 00E6 0E940000          xcall _ldelay
 00EA                   .dbline 155
 00EA           ;  out_string(message1);
 00EA 00E0              ldi R16,<_message1
 00EC 10E0              ldi R17,>_message1
 00EE 0E940000          xcall _out_string
 00F2                   .dbline 156
 00F2           ;  cursor_line2();
 00F2 0E940000          xcall _cursor_line2
 00F6                   .dbline 157
 00F6           ;  out_string(message2);
 00F6 00E0              ldi R16,<_message2
 00F8 10E0              ldi R17,>_message2
 00FA 0E940000          xcall _out_string
 00FE                   .dbline 158
 00FE           ;  ldelay(500);
 00FE 04EF              ldi R16,500
 0100 11E0              ldi R17,1
 0102 0E940000          xcall _ldelay
 0106                   .dbline 159
 0106           ;  clear_line2();
 0106 0E940000          xcall _clear_line2
 010A                   .dbline 160
 010A           ;  clear_line1();
 010A 0E940000          xcall _clear_line1
 010E 55C0              xjmp L12
 0110           L11:
 0110                   .dbline 162
 0110           ;  while(1)
 0110           ;    {
 0110                   .dbline 163
 0110           ;     WDR();                                    //Watchdog reset
 0110 A895              wdr
 0112                   .dbline 164
 0112           ;       if(rec_head!=rec_tail)
 0112 20900200          lds R2,_rec_tail
 0116 30900300          lds R3,_rec_tail+1
 011A 40900000          lds R4,_rec_head
 011E 50900100          lds R5,_rec_head+1
 0122 4214              cp R4,R2
 0124 5304              cpc R5,R3
 0126 09F4              brne X7
 0128 48C0              xjmp L14
 012A           X7:
 012A           X2:
 012A                   .dbline 165
 012A           ;          {
 012A                   .dbline 166
 012A           ;           rec_data=RecBuf[rec_tail];
 012A 80E0              ldi R24,<_RecBuf
 012C 90E0              ldi R25,>_RecBuf
 012E F101              movw R30,R2
 0130 E80F              add R30,R24
 0132 F91F              adc R31,R25
 0134 2080              ldd R2,z+0
 0136 3324              clr R3
 0138 30920100          sts _rec_data+1,R3
 013C 20920000          sts _rec_data,R2
 0140                   .dbline 167
 0140           ;               rec_tail++;
 0140 80910200          lds R24,_rec_tail
 0144 90910300          lds R25,_rec_tail+1
 0148 0196              adiw R24,1
 014A 90930300          sts _rec_tail+1,R25
 014E 80930200          sts _rec_tail,R24
 0152                   .dbline 168
 0152           ;               if(rec_tail>=40)
 0152 8832              cpi R24,40
 0154 E0E0              ldi R30,0
 0156 9E07              cpc R25,R30
 0158 2CF0              brlt L16
 015A           X3:
 015A                   .dbline 169
 015A           ;                  rec_tail=0;
 015A 2224              clr R2
 015C 30920300          sts _rec_tail+1,R3
 0160 20920200          sts _rec_tail,R2
 0164           L16:
 0164                   .dbline 171
 0164           ;                  
 0164           ;               dswin=rec_head<<2;
 0164 A0900000          lds R10,_rec_head
 0168 B0900100          lds R11,_rec_head+1
 016C AA0C              lsl R10
 016E BB1C              rol R11
 0170 AA0C              lsl R10
 0172 BB1C              rol R11
 0174                   .dbline 172
 0174           ;           PORTD=dswin;
 0174 A2BA              out 0x12,R10
 0176                   .dbline 174
 0176           ;               
 0176           ;               if(rec_data==13)
 0176 80910000          lds R24,_rec_data
 017A 90910100          lds R25,_rec_data+1
 017E 8D30              cpi R24,13
 0180 E0E0              ldi R30,0
 0182 9E07              cpc R25,R30
 0184 99F4              brne L18
 0186           X4:
 0186                   .dbline 175
 0186           ;                 {
 0186                   .dbline 176
 0186           ;                  transmit(13);
 0186 0DE0              ldi R16,13
 0188 93DF              xcall _transmit
 018A                   .dbline 177
 018A           ;                  transmit(10);
 018A 0AE0              ldi R16,10
 018C 91DF              xcall _transmit
 018E                   .dbline 178
 018E           ;                  if(cursor_index<=15)
 018E 8FE0              ldi R24,15
 0190 90E0              ldi R25,0
 0192 20900000          lds R2,_cursor_index
 0196 30900100          lds R3,_cursor_index+1
 019A 8215              cp R24,R2
 019C 9305              cpc R25,R3
 019E 1CF0              brlt L20
 01A0           X5:
 01A0                   .dbline 179
 01A0           ;                     clear_line2();
 01A0 0E940000          xcall _clear_line2
 01A4 0AC0              xjmp L19
 01A6           L20:
 01A6                   .dbline 181
 01A6           ;                  else
 01A6           ;                     clear_line1();      
 01A6 0E940000          xcall _clear_line1
 01AA                   .dbline 182
 01AA           ;                 }                     
 01AA 07C0              xjmp L19
 01AC           L18:
 01AC                   .dbline 184
 01AC           ;               else
 01AC           ;                 {
 01AC                   .dbline 185
 01AC           ;                 transmit(rec_data);
 01AC 00910000          lds R16,_rec_data
 01B0 7FDF              xcall _transmit
 01B2                   .dbline 186
 01B2           ;                 wr_data2(rec_data);
 01B2 00910000          lds R16,_rec_data
 01B6 0E940000          xcall _wr_data2
 01BA                   .dbline 187
 01BA           ;                 }
 01BA           L19:
 01BA                   .dbline 188
 01BA           ;          } 
 01BA           L14:
 01BA                   .dbline 189
 01BA           ;    }
 01BA           L12:
 01BA                   .dbline 161
 01BA AACF              xjmp L11
 01BC           X6:
 01BC                   .dbline -2
 01BC           L10:
 01BC                   .dbline 0 ; func end
 01BC 0895              ret
 01BE                   .dbsym r outd 10 c
 01BE                   .dbsym r outc 10 c
 01BE                   .dbsym r outb 20 c
 01BE                   .dbsym r outa 20 c
 01BE                   .dbsym r dswin 10 I
 01BE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\+samples-16small\DEMOB-16sm\DEMOB-16sm.c
 0000           _rec_data::
 0000                   .blkb 2
 0002                   .dbsym e rec_data _rec_data i
 0002           _RecBuf::
 0002                   .blkb 40
 002A                   .dbsym e RecBuf _RecBuf A[40:40]c
 002A           ; }

⌨️ 快捷键说明

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