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

📄 validatebaudrate.lis

📁 Validate Baud rate s accuracy this program will show from FF to 00.
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 009A           ; void delay(int count)
 009A           ; {
 009A                   .dbline 94
 009A           ;  int i, j;
 009A           ;  for(i=count; i>0; i--)
 009A A801              movw R20,R16
 009C 0BC0              xjmp L10
 009E           L7:
 009E                   .dbline 95
 009E           ;     for(j=10; j>0; j--)
 009E 6AE0              ldi R22,10
 00A0 70E0              ldi R23,0
 00A2           L11:
 00A2                   .dbline 96
 00A2           ;          ;
 00A2           L12:
 00A2                   .dbline 95
 00A2 6150              subi R22,1
 00A4 7040              sbci R23,0
 00A6                   .dbline 95
 00A6 2224              clr R2
 00A8 3324              clr R3
 00AA 2616              cp R2,R22
 00AC 3706              cpc R3,R23
 00AE CCF3              brlt L11
 00B0           X1:
 00B0           L8:
 00B0                   .dbline 94
 00B0 4150              subi R20,1
 00B2 5040              sbci R21,0
 00B4           L10:
 00B4                   .dbline 94
 00B4 2224              clr R2
 00B6 3324              clr R3
 00B8 2416              cp R2,R20
 00BA 3506              cpc R3,R21
 00BC 84F3              brlt L7
 00BE           X2:
 00BE                   .dbline -2
 00BE           L6:
 00BE                   .dbline 0 ; func end
 00BE 0C940000          xjmp pop_xgsetF000
 00C2                   .dbsym r i 20 I
 00C2                   .dbsym r j 22 I
 00C2                   .dbsym r count 16 I
 00C2                   .dbend
 00C2                   .dbfunc e transmit _transmit fV
 00C2           ;          abyte -> R16
                        .even
 00C2           _transmit::
 00C2                   .dbline -1
 00C2                   .dbline 100
 00C2           ; }
 00C2           ; 
 00C2           ; void transmit(unsigned char abyte)
 00C2           ; {
 00C2                   .dbline 101
 00C2           ;  UDR=abyte;
 00C2 0CB9              out 0xc,R16
 00C4           L16:
 00C4                   .dbline 103
 00C4           ;  while(!(UCSRA&0b01000000))   //b6=1 TXE      ,it quit when transmission finish.
 00C4           ;         ;
 00C4           L17:
 00C4                   .dbline 102
 00C4 5E9B              sbis 0xb,6
 00C6 FECF              rjmp L16
 00C8           X3:
 00C8                   .dbline -2
 00C8           L15:
 00C8                   .dbline 0 ; func end
 00C8 0895              ret
 00CA                   .dbsym r abyte 16 c
 00CA                   .dbend
 00CA                   .dbfunc e main _main fV
 00CA           ;          dswin -> R10,R11
 00CA           ;       SendData -> R20
                        .even
 00CA           _main::
 00CA                   .dbline -1
 00CA                   .dbline 108
 00CA           ; }
 00CA           ; 
 00CA           ; //*****************************************************************
 00CA           ; void main(void)
 00CA           ; {
 00CA                   .dbline 111
 00CA           ; // unsigned char outa=0b01010101, outb=0b10101010, outc=0x00, outd=0x00;
 00CA           ;  int dswin;
 00CA           ;  unsigned char SendData=0xFF;
 00CA 4FEF              ldi R20,255
 00CC                   .dbline 112
 00CC           ;  port_init();
 00CC C7DF              xcall _port_init
 00CE                   .dbline 113
 00CE           ;  USART_init();
 00CE CFDF              xcall _USART_init
 00D0                   .dbline 114
 00D0           ;  SEI();
 00D0 7894              sei
 00D2                   .dbline 116
 00D2           ;  do
 00D2           ;  {
 00D2           L23:
 00D2                   .dbline 117
 00D2           ;      while(!(UCSRA&(1<<UDRE)));
 00D2           L24:
 00D2                   .dbline 117
 00D2 5D9B              sbis 0xb,5
 00D4 FECF              rjmp L23
 00D6           X4:
 00D6                   .dbline 118
 00D6           ;      UDR=SendData;
 00D6 4CB9              out 0xc,R20
 00D8                   .dbline 119
 00D8           ;      SendData--;
 00D8 4A95              dec R20
 00DA                   .dbline 120
 00DA           ;  }
 00DA           L21:
 00DA                   .dbline 121
 00DA           ;  while(SendData!=0xFF);
 00DA 4F3F              cpi R20,255
 00DC D1F7              brne L24
 00DE           X5:
 00DE 3BC0              xjmp L27
 00E0           L26:
 00E0                   .dbline 123
 00E0           ;  while(1)
 00E0           ;    {
 00E0                   .dbline 124
 00E0           ;     WDR();                                    //Watchdog reset
 00E0 A895              wdr
 00E2                   .dbline 125
 00E2           ;       if(rec_head!=rec_tail)
 00E2 20900200          lds R2,_rec_tail
 00E6 30900300          lds R3,_rec_tail+1
 00EA 40900000          lds R4,_rec_head
 00EE 50900100          lds R5,_rec_head+1
 00F2 4214              cp R4,R2
 00F4 5304              cpc R5,R3
 00F6 79F1              breq L29
 00F8           X6:
 00F8                   .dbline 126
 00F8           ;          {
 00F8                   .dbline 127
 00F8           ;           rec_data=RecBuf[rec_tail];  //read data from head and write data at tail
 00F8 80E0              ldi R24,<_RecBuf
 00FA 90E0              ldi R25,>_RecBuf
 00FC F101              movw R30,R2
 00FE E80F              add R30,R24
 0100 F91F              adc R31,R25
 0102 2080              ldd R2,z+0
 0104 20920000          sts _rec_data,R2
 0108                   .dbline 128
 0108           ;               rec_tail++;
 0108 80910200          lds R24,_rec_tail
 010C 90910300          lds R25,_rec_tail+1
 0110 0196              adiw R24,1
 0112 90930300          sts _rec_tail+1,R25
 0116 80930200          sts _rec_tail,R24
 011A                   .dbline 131
 011A           ;               //rec_data=RecBuf[rec_tail++]; //you can amend the sentences above two like that
 011A           ;               //i++; show that first use it,then add it.
 011A           ;               if(rec_tail>=40)        //make up circular queue
 011A 8832              cpi R24,40
 011C E0E0              ldi R30,0
 011E 9E07              cpc R25,R30
 0120 34F0              brlt L31
 0122           X7:
 0122                   .dbline 132
 0122           ;                  rec_tail=0;
 0122 2224              clr R2
 0124 3324              clr R3
 0126 30920300          sts _rec_tail+1,R3
 012A 20920200          sts _rec_tail,R2
 012E           L31:
 012E                   .dbline 134
 012E           ;                  
 012E           ;               dswin=rec_head<<2;      //the lowest 2 bit of PORTD are RXD and TXD.
 012E A0900000          lds R10,_rec_head
 0132 B0900100          lds R11,_rec_head+1
 0136 AA0C              lsl R10
 0138 BB1C              rol R11
 013A AA0C              lsl R10
 013C BB1C              rol R11
 013E                   .dbline 135
 013E           ;           PORTD=dswin;        //The two ports are occupied,so it need "<<2".
 013E A2BA              out 0x12,R10
 0140                   .dbline 136
 0140           ;               PORTA=rec_data;     //rec_head++,so it can stand for the number of received data.
 0140 20900000          lds R2,_rec_data
 0144 2BBA              out 0x1b,R2
 0146                   .dbline 137
 0146           ;               transmit(rec_data);
 0146 022D              mov R16,R2
 0148 BCDF              xcall _transmit
 014A                   .dbline 138
 014A           ;               if(rec_data==13)        //★??
 014A 80910000          lds R24,_rec_data
 014E 8D30              cpi R24,13
 0150 11F4              brne L33
 0152           X8:
 0152                   .dbline 139
 0152           ;                       transmit(10);
 0152 0AE0              ldi R16,10
 0154 B6DF              xcall _transmit
 0156           L33:
 0156                   .dbline 140
 0156           ;          } 
 0156           L29:
 0156                   .dbline 141
 0156           ;    }
 0156           L27:
 0156                   .dbline 122
 0156 C4CF              xjmp L26
 0158           X9:
 0158                   .dbline -2
 0158           L19:
 0158                   .dbline 0 ; func end
 0158 0895              ret
 015A                   .dbsym r dswin 10 I
 015A                   .dbsym r SendData 20 c
 015A                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\MYDOCU~1\EXPRIMENT\ICC\UART\ValidateBaudRate\ValidateBaudRate.c
 0000           _rec_data::
 0000                   .blkb 1
 0001                   .dbsym e rec_data _rec_data c
 0001           _RecBuf::
 0001                   .blkb 40
 0029                   .dbsym e RecBuf _RecBuf A[40:40]c
 0029           ; }

⌨️ 快捷键说明

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