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

📄 ps2test.lis

📁 ICCAVR下
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01AA                   .dbend
 01AA                   .dbfunc e init_USART _init_USART fV
                        .even
 01AA           _init_USART::
 01AA                   .dbline -1
 01AA                   .dbline 142
 01AA           ;               }       
 01AA           ; }
 01AA           ; 
 01AA           ; /*-------------------------------------------------------------------
 01AA           ; function: initialize uart
 01AA           ; --------------------------------------------------------------------*/
 01AA           ; void init_USART(void)//USART 初始化
 01AA           ; {
 01AA                   .dbline 145
 01AA           ; 
 01AA           ;     //USART 9600 8, n,1  PC上位机软件(超级终端等)也要设成同样的设置才能通讯
 01AA           ;     UCSRC = (1<<URSEL) | 0x06;
 01AA 86E8              ldi R24,134
 01AC 80BD              out 0x20,R24
 01AE                   .dbline 161
 01AE           ;     //异步,8位数据,无奇偶校验,一个停止位,无倍速
 01AE           ;     /*
 01AE           ;     UBRRH与UCSRC共用I/O 地址。因此访问该地址时需注意以下问题。
 01AE           ;     写访问
 01AE           ;     当在该地址执行写访问时, USART 寄存器选择位(URSEL)控制被写入的寄存器。
 01AE           ;     若URSEL为0,对UBRRH值更新;若URSEL为1,对UCSRC设置更新
 01AE           ;     
 01AE           ;     读访问
 01AE           ;     对UBRRH 或UCSRC 寄存器的读访问则较为复杂。但在大多数应用中,基本不需要读这些寄存器
 01AE           ;     
 01AE           ;     
 01AE           ;     没有UBRR这个16位寄存器,因为UBRRL(0x09)/UBRRH(0x20)的地址不连续,而且UBRRH跟UCSRC共用地址
 01AE           ;     */
 01AE           ;     
 01AE           ;     //U2X=0时的公式计算
 01AE           ;     UBRRL= (F_CPU/BAUDRATE/16-1)%256;
 01AE 83E3              ldi R24,51
 01B0 89B9              out 0x9,R24
 01B2                   .dbline 162
 01B2           ;     UBRRH= (F_CPU/BAUDRATE/16-1)/256;
 01B2 2224              clr R2
 01B4 20BC              out 0x20,R2
 01B6                   .dbline 169
 01B6           ;     //U2X=1时的公式计算
 01B6           ;     //UBRRL= (F_CPU/BAUDRATE/8-1)%256;
 01B6           ;     //UBRRH= (F_CPU/BAUDRATE/8-1)/256;
 01B6           ;     //也可根据数据手册的[波特率设置的例子]查得
 01B6           ;     //UBRRL = 0x2F; //set baud rate lo
 01B6           ;     //UBRRH = 0x00; //set baud rate hi
 01B6           ;     UCSRA = 0x00;                     //无倍速
 01B6 2BB8              out 0xb,R2
 01B8                   .dbline 170
 01B8           ;     UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
 01B8 88E9              ldi R24,152
 01BA 8AB9              out 0xa,R24
 01BC                   .dbline -2
 01BC           L69:
 01BC                   .dbline 0 ; func end
 01BC 0895              ret
 01BE                   .dbend
                        .area data(ram, con, rel)
 0001                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0001           L71:
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0002           L72:
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0003           L73:
 0003                   .blkb 1
                        .area idata
 0003 00                .byte 0
                        .area data(ram, con, rel)
 0004                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
                        .area text(rom, con, rel)
 01BE                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 01BE                   .dbfunc e decode _decode fc
 01BE                   .dbsym s shiftup L73 c
 01BE                   .dbsym s up L72 c
 01BE                   .dbsym s shift L71 c
 01BE           ;              i -> R20
 01BE           ;             sc -> R16
                        .even
 01BE           _decode::
 01BE 0E940000          xcall push_gset2
 01C2                   .dbline -1
 01C2                   .dbline 180
 01C2           ;     //使能接收中断,使能接收,使能发送
 01C2           ; }
 01C2           ; 
 01C2           ; /*--------------------------------------------------------------------------
 01C2           ; function: decode the ps2 code to ASCII
 01C2           ; para:     sr----ps2 code
 01C2           ; return    ASCII code
 01C2           ; --------------------------------------------------------------------------*/
 01C2           ; unsigned char decode(unsigned char sc)
 01C2           ;     {
 01C2                   .dbline 183
 01C2           ;       static unsigned char shift=0,up=0,shiftup=0;
 01C2           ;         unsigned char i;
 01C2           ;         if (sc==0xf0)
 01C2 003F              cpi R16,240
 01C4 29F4              brne L74
 01C6                   .dbline 184
 01C6           ;             {
 01C6                   .dbline 185
 01C6           ;                  up=1;
 01C6 81E0              ldi R24,1
 01C8 80930200          sts L72,R24
 01CC                   .dbline 186
 01CC           ;                  return 0;
 01CC 0027              clr R16
 01CE 86C0              xjmp L70
 01D0           L74:
 01D0                   .dbline 188
 01D0           ;                 }
 01D0           ;         if (up==1)
 01D0 80910200          lds R24,L72
 01D4 8130              cpi R24,1
 01D6 E9F4              brne L76
 01D8                   .dbline 189
 01D8           ;                 {
 01D8                   .dbline 190
 01D8           ;                  up=0;
 01D8 2224              clr R2
 01DA 20920200          sts L72,R2
 01DE                   .dbline 191
 01DE           ;                  if ((sc==0x12)|(sc==0x59)) shift=0;
 01DE 0231              cpi R16,18
 01E0 19F4              brne L80
 01E2 61E0              ldi R22,1
 01E4 70E0              ldi R23,0
 01E6 02C0              xjmp L81
 01E8           L80:
 01E8 6627              clr R22
 01EA 7727              clr R23
 01EC           L81:
 01EC 0935              cpi R16,89
 01EE 19F4              brne L82
 01F0 41E0              ldi R20,1
 01F2 50E0              ldi R21,0
 01F4 02C0              xjmp L83
 01F6           L82:
 01F6 4427              clr R20
 01F8 5527              clr R21
 01FA           L83:
 01FA 1B01              movw R2,R22
 01FC 242A              or R2,R20
 01FE 352A              or R3,R21
 0200 2220              tst R2
 0202 11F4              brne X2
 0204 3320              tst R3
 0206 19F0              breq L78
 0208           X2:
 0208                   .dbline 191
 0208 2224              clr R2
 020A 20920100          sts L71,R2
 020E           L78:
 020E                   .dbline 192
 020E           ;                  return 0;
 020E 0027              clr R16
 0210 65C0              xjmp L70
 0212           L76:
 0212                   .dbline 194
 0212           ;                 }      
 0212           ;         switch (sc)
 0212 402F              mov R20,R16
 0214 5527              clr R21
 0216 4231              cpi R20,18
 0218 E0E0              ldi R30,0
 021A 5E07              cpc R21,R30
 021C 49F0              breq L87
 021E 4231              cpi R20,18
 0220 E0E0              ldi R30,0
 0222 5E07              cpc R21,R30
 0224 7CF0              brlt L84
 0226           L107:
 0226 4935              cpi R20,89
 0228 E0E0              ldi R30,0
 022A 5E07              cpc R21,R30
 022C 31F0              breq L88
 022E 0AC0              xjmp L84
 0230           X3:
 0230                   .dbline 195
 0230           ;           {
 0230           L87:
 0230                   .dbline 196
 0230           ;                case 0x12:{
 0230                   .dbline 197
 0230           ;                                       shift=1;                
 0230 81E0              ldi R24,1
 0232 80930100          sts L71,R24
 0236                   .dbline 198
 0236           ;                                       shiftup=1;
 0236 80930300          sts L73,R24
 023A                   .dbline 199
 023A           ;                          }                       
 023A           L88:
 023A                   .dbline 200
 023A           ;                case 0x59:{
 023A                   .dbline 201
 023A           ;                                   shift=1;    
 023A 81E0              ldi R24,1
 023C 80930100          sts L71,R24
 0240                   .dbline 202
 0240           ;                                       shiftup=1;
 0240 80930300          sts L73,R24
 0244                   .dbline 203
 0244           ;                          }                       
 0244           L84:
 0244                   .dbline 204
 0244           ;                default:{
 0244                   .dbline 205
 0244           ;                         if (shift==0)
 0244 20900100          lds R2,L71
 0248 2220              tst R2
 024A 21F5              brne L89
 024C                   .dbline 206
 024C           ;                                        {
 024C                   .dbline 207
 024C 4427              clr R20
 024E 01C0              xjmp L94
 0250           L91:
 0250                   .dbline 207
 0250           L92:
 0250                   .dbline 207
 0250 4395              inc R20
 0252           L94:
 0252                   .dbline 207
 0252           ;                                        for(i = 0;unshifted[i][0]!=sc && unshifted[i][0]; i++);
 0252 82E0              ldi R24,2
 0254 849F              mul R24,R20
 0256 F001              movw R30,R0
 0258 80E0              ldi R24,<_unshifted
 025A 90E0              ldi R25,>_unshifted
 025C E80F              add R30,R24
 025E F91F              adc R31,R25
 0260 2490              lpm R2,Z
 0262 3324              clr R3
 0264 2016              cp R2,R16
 0266 11F0              breq L95
 0268 2220              tst R2
 026A 91F7              brne L91
 026C           L95:
 026C                   .dbline 208
 026C           ;                      if (unshifted[i][0] == sc)
 026C 82E0              ldi R24,2
 026E 849F              mul R24,R20
 0270 F001              movw R30,R0
 0272 80E0              ldi R24,<_unshifted
 0274 90E0              ldi R25,>_unshifted
 0276 E80F              add R30,R24
 0278 F91F              adc R31,R25
 027A E491              lpm R30,Z
 027C E017              cp R30,R16
 027E 09F0              breq X5
 0280 2CC0              xjmp L90
 0282           X5:
 0282                   .dbline 209
 0282           ;                                                 return  unshifted[i][1];
 0282 82E0              ldi R24,2
 0284 849F              mul R24,R20
 0286 F001              movw R30,R0
 0288 80E0              ldi R24,<_unshifted+1
 028A 90E0              ldi R25,>_unshifted+1
 028C E80F              add R30,R24
 028E F91F              adc R31,R25
 0290 0491              lpm R16,Z
 0292 24C0              xjmp L70
 0294           X4:
 0294                   .dbline 210
 0294           ;                                        }
 0294           L89:
 0294                   .dbline 212
 0294           ;                                 else
 0294           ;                                    {
 0294                   .dbline 213
 0294 4427              clr R20
 0296 01C0              xjmp L102
 0298           L99:
 0298                   .dbline 213
 0298           L100:
 0298                   .dbline 213
 0298 4395              inc R20
 029A           L102:
 029A                   .dbline 213
 029A           ;                                        for(i = 0;shifted[i][0]!=sc && shifted[i][0]; i++);
 029A 82E0              ldi R24,2
 029C 849F              mul R24,R20
 029E F001              movw R30,R0
 02A0 80E0              ldi R24,<_shifted
 02A2 90E0              ldi R25,>_shifted
 02A4 E80F              add R30,R24
 02A6 F91F              adc R31,R25
 02A8 2490              lpm R2,Z
 02AA 3324              clr R3
 02AC 2016              cp R2,R16
 02AE 11F0              breq L103
 02B0 2220              tst R2
 02B2 91F7              brne L99
 02B4           L103:
 02B4                   .dbline 214
 02B4           ;                      if (shifted[i][0] == sc)
 02B4 82E0              ldi R24,2
 02B6 849F              mul R24,R20
 02B8 F001              movw R30,R0
 02BA 80E0              ldi R24,<_shifted
 02BC 90E0              ldi R25,>_shifted
 02BE E80F              add R30,R24
 02C0 F91F              adc R31,R25
 02C2 E491              lpm R30,Z
 02C4 E017              cp R30,R16
 02C6 49F4              brne L104
 02C8                   .dbline 215
 02C8           ;                          {
 02C8                   .dbline 216
 02C8           ;                                                 return shifted[i][1];                                   
 02C8 82E0              ldi R24,2
 02CA 849F              mul R24,R20
 02CC F001              movw R30,R0
 02CE 80E0              ldi R24,<_shifted+1
 02D0 90E0              ldi R25,>_shifted+1
 02D2 E80F              add R30,R24
 02D4 F91F              adc R31,R25
 02D6 0491              lpm R16,Z
 02D8 01C0              xjmp L70
 02DA           L104:
 02DA                   .dbline 218
 02DA           ;                                                }                                                               
 02DA           ;                                        } 
 02DA           L90:
 02DA                   .dbline 219
 02DA           ;                        }      
 02DA                   .dbline 220
 02DA           ;                return 0;               
 02DA 0027              clr R16
 02DC                   .dbline -2
 02DC           L70:
 02DC 0E940000          xcall pop_gset2
 02E0                   .dbline 0 ; func end
 02E0 0895              ret
 02E2                   .dbsym r i 20 c
 02E2                   .dbsym r sc 16 c
 02E2                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0000           _bitcount::
 0000                   .blkb 1
 0001                   .dbsym e bitcount _bitcount c
                        .area data(ram, con, rel)
 0004                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0004           L32:
 0004                   .blkb 18
                        .area idata
 0004 64757368696269616F403132362E636F  .byte 'd,'u,'s,'h,'i,'b,'i,'a,'o,64,49,50,54,46,'c,'o
 0014 6D00              .byte 'm,0
                        .area data(ram, con, rel)
 0016                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0016           L31:
 0016                   .blkb 10
                        .area idata
 0016 64757368696269616F00      .byte 'd,'u,'s,'h,'i,'b,'i,'a,'o,0
                        .area data(ram, con, rel)
 0020                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0020           L30:
 0020                   .blkb 18
                        .area idata
 0020 5053322D2D4B45594F41524420746573  .byte 'P,'S,50,45,45,'K,'E,'Y,'O,'A,'R,'D,32,'t,'e,'s
 0030 7400              .byte 't,0
                        .area data(ram, con, rel)
 0032                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c

⌨️ 快捷键说明

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