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

📄 ps2test.lis

📁 ICCAVR下
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00B4 E491              lpm R30,Z
 00B6 EBBB              out 0x1b,R30
 00B8                   .dbline 42
 00B8           ; para:    the char to be send
 00B8 05E0              ldi R16,5
 00BA 10E0              ldi R17,0
 00BC BCDF              xcall _delay_nms
 00BE                   .dbline 43
 00BE           ; -----------------------------------------------------------------*/
 00BE C09A              sbi 0x18,0
 00C0                   .dbline 45
 00C0           ; void put_c(unsigned char c) //发送采用查询方式
 00C0           ; {
 00C0 C198              cbi 0x18,1
 00C2                   .dbline 46
 00C2           ;       while( !(UCSRA & (1<<UDRE)) );        //wait until the uart is empty
 00C2 E0E0              ldi R30,<_discode+16
 00C4 F0E0              ldi R31,>_discode+16
 00C6 E491              lpm R30,Z
 00C8 EBBB              out 0x1b,R30
 00CA                   .dbline 47
 00CA           ;       UDR=c;                                  //write data to uart
 00CA 05E0              ldi R16,5
 00CC 10E0              ldi R17,0
 00CE B3DF              xcall _delay_nms
 00D0                   .dbline 48
 00D0           ; }
 00D0 C19A              sbi 0x18,1
 00D2                   .dbline -2
 00D2           L18:
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test/shumaguan.h
 0000           _origialcode::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test/shumaguan.h
 0001                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0001                   .dbsym e origialcode _origialcode c
                        .area text(rom, con, rel)
 00D4                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 00D4                   .dbfunc e put_c _put_c fV
 00D4           ;              c -> R16
                        .even
 00D4           _put_c::
 00D4                   .dbline -1
 00D4                   .dbline 45
 00D4           L22:
 00D4                   .dbline 46
 00D4           L23:
 00D4                   .dbline 46
 00D4 5D9B              sbis 0xb,5
 00D6 FECF              rjmp L22
 00D8                   .dbline 47
 00D8 0CB9              out 0xc,R16
 00DA                   .dbline -2
 00DA           L21:
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbsym r c 16 c
 00DC                   .dbend
 00DC                   .dbfunc e put_s _put_s fV
 00DC           ;            ptr -> R20,R21
                        .even
 00DC           _put_s::
 00DC 0E940000          xcall push_gset1
 00E0 A801              movw R20,R16
 00E2                   .dbline -1
 00E2                   .dbline 54
 00E2           ; /*-----------------------------------------------------------------
 00E2           ; function: send a string to the uart
 00E2           ; para:     ptr---the pointer point to the string
 00E2           ; ------------------------------------------------------------------*/
 00E2           ; void put_s(unsigned char *ptr)
 00E2           ; {
 00E2 04C0              xjmp L27
 00E4           L26:
 00E4                   .dbline 56
 00E4                   .dbline 57
 00E4 FA01              movw R30,R20
 00E6 0191              ld R16,Z+
 00E8 AF01              movw R20,R30
 00EA F4DF              xcall _put_c
 00EC                   .dbline 58
 00EC           L27:
 00EC                   .dbline 55
 00EC           ;       while (*ptr)
 00EC FA01              movw R30,R20
 00EE 2080              ldd R2,z+0
 00F0 2220              tst R2
 00F2 C1F7              brne L26
 00F4                   .dbline 59
 00F4           ;       {
 00F4           ;               put_c(*ptr++);
 00F4           ;       }
 00F4           ;       put_c(0x0D); 
 00F4 0DE0              ldi R16,13
 00F6 EEDF              xcall _put_c
 00F8                   .dbline 60
 00F8           ;       put_c(0x0A);  //结尾发送回车换行
 00F8 0AE0              ldi R16,10
 00FA ECDF              xcall _put_c
 00FC                   .dbline -2
 00FC           L25:
 00FC 0E940000          xcall pop_gset1
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbsym r ptr 20 pc
 0102                   .dbend
 0102                   .dbfunc e main _main fV
                        .even
 0102           _main::
 0102                   .dbline -1
 0102                   .dbline 64
 0102           ; }
 0102           ; 
 0102           ; void  main(void)
 0102           ; {
 0102                   .dbline 65
 0102           ;       portinitial();
 0102 16D0              xcall _portinitial
 0104                   .dbline 66
 0104           ;         intinitial();
 0104 1FD0              xcall _intinitial
 0106                   .dbline 67
 0106           ;         init_USART();
 0106 51D0              xcall _init_USART
 0108                   .dbline 70
 0108           ;         
 0108           ; 
 0108           ;       put_s("PS2--KEYOARD test");
 0108 00E0              ldi R16,<L30
 010A 10E0              ldi R17,>L30
 010C E7DF              xcall _put_s
 010E                   .dbline 71
 010E           ;       put_s("dushibiao");
 010E 00E0              ldi R16,<L31
 0110 10E0              ldi R17,>L31
 0112 E4DF              xcall _put_s
 0114                   .dbline 72
 0114           ;       put_s("dushibiao@126.com");
 0114 00E0              ldi R16,<L32
 0116 10E0              ldi R17,>L32
 0118 E1DF              xcall _put_s
 011A                   .dbline 73
 011A           ;       put_c(0x0a);
 011A 0AE0              ldi R16,10
 011C DBDF              xcall _put_c
 011E                   .dbline 74
 011E           ;       put_c(0x0d);//换行 
 011E 0DE0              ldi R16,13
 0120 D9DF              xcall _put_c
 0122                   .dbline 76
 0122           ; 
 0122           ;         SEI();            //enable interrupt ,this was predefined in MACROS.h
 0122 7894              sei
 0124 03C0              xjmp L34
 0126           L33:
 0126                   .dbline 79
 0126                   .dbline 80
 0126 00910000          lds R16,_origialcode
 012A 94DF              xcall _display
 012C                   .dbline 81
 012C           L34:
 012C                   .dbline 78
 012C FCCF              xjmp L33
 012E           X0:
 012E                   .dbline -2
 012E           L29:
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbend
 0130                   .dbfunc e portinitial _portinitial fV
                        .even
 0130           _portinitial::
 0130                   .dbline -1
 0130                   .dbline 88
 0130           ;        
 0130           ;       while(1)
 0130           ;     {
 0130           ;               display(origialcode);
 0130           ;       }
 0130           ;         
 0130           ; }
 0130           ; /*********************************************************************
 0130           ; fuction: ports initialize
 0130           ; **********************************************************************/
 0130           ; void portinitial(void)
 0130           ; {
 0130                   .dbline 89
 0130           ;        PORTA=0XFF;
 0130 8FEF              ldi R24,255
 0132 8BBB              out 0x1b,R24
 0134                   .dbline 90
 0134           ;      DDRA=0XFF;                  //OUT
 0134 8ABB              out 0x1a,R24
 0136                   .dbline 91
 0136           ;        PORTB=0XFF;
 0136 88BB              out 0x18,R24
 0138                   .dbline 92
 0138           ;        DDRB=0X0F;                  //high fout bit in , low four bits out
 0138 8FE0              ldi R24,15
 013A 87BB              out 0x17,R24
 013C                   .dbline 93
 013C           ;        PORTC=0XFF;                 //pull up
 013C 8FEF              ldi R24,255
 013E 85BB              out 0x15,R24
 0140                   .dbline 94
 0140           ;        PORTD=0XFF;                 //pull up
 0140 82BB              out 0x12,R24
 0142                   .dbline -2
 0142           L36:
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbend
 0144                   .dbfunc e intinitial _intinitial fV
                        .even
 0144           _intinitial::
 0144                   .dbline -1
 0144                   .dbline 101
 0144           ; }
 0144           ; 
 0144           ; /*********************************************************************
 0144           ; fuction: ext interrupt initialize
 0144           ; **********************************************************************/
 0144           ; void intinitial(void)      //int1 ,int0下降沿中断
 0144           ; {
 0144                   .dbline 102
 0144           ;        MCUCR=(1<<ISC10);            //falling edge interrup
 0144 84E0              ldi R24,4
 0146 85BF              out 0x35,R24
 0148                   .dbline 103
 0148           ;        GICR |=(1<<INT1);             //enable ext0,ext1 interrupt
 0148 8BB7              in R24,0x3b
 014A 8068              ori R24,128
 014C 8BBF              out 0x3b,R24
 014E                   .dbline 104
 014E           ;        bitcount = 11;
 014E 8BE0              ldi R24,11
 0150 80930000          sts _bitcount,R24
 0154                   .dbline -2
 0154           L37:
 0154                   .dbline 0 ; func end
 0154 0895              ret
 0156                   .dbend
                        .area vector(rom, abs)
                        .org 8
 0008 0C94AB00          jmp _int1pro
                        .area text(rom, con, rel)
 0156                   .dbfile D:\M16开发板实验教程\icc-avr\ps2test\ps2test.c
 0156                   .dbfunc e int1pro _int1pro fV
 0156           ;           code -> R20
 0156           ;              i -> R22
                        .even
 0156           _int1pro::
 0156 0E940000          xcall push_lset
 015A 0E940000          xcall push_gset2
 015E                   .dbline -1
 015E                   .dbline 112
 015E           ; }
 015E           ; 
 015E           ; /*********************************************************************
 015E           ; fuction: ext1 interrupt  service routine
 015E           ; **********************************************************************/
 015E           ; #pragma interrupt_handler int1pro: iv_INT1
 015E           ; void int1pro(void)
 015E           ; {
 015E                   .dbline 114
 015E           ;        unsigned char i,code;
 015E           ;       if ((PIN_KB&(1<<DATAPIN))==0)
 015E 8299              sbic 0x10,2
 0160 1FC0              rjmp L39
 0162                   .dbline 115
 0162           ;               {
 0162           L41:
 0162                   .dbline 116
 0162           L42:
 0162                   .dbline 116
 0162           ;                  while((PIN_KB&(1<<CLOCK))==0);
 0162 839B              sbis 0x10,3
 0164 FECF              rjmp L41
 0166                   .dbline 117
 0166           ;                  for(i=0;i<8;i++)
 0166 6627              clr R22
 0168 09C0              xjmp L47
 016A           X1:
 016A                   .dbline 118
 016A           ;                  {
 016A           L48:
 016A                   .dbline 119
 016A           L49:
 016A                   .dbline 119
 016A           ;                     while(PIN_KB&(1<<CLOCK));
 016A 8399              sbic 0x10,3
 016C FECF              rjmp L48
 016E                   .dbline 120
 016E           ;                     code>>=1;
 016E 4695              lsr R20
 0170                   .dbline 121
 0170           ;                         if ((PIN_KB&(1<<DATAPIN))!=0)
 0170 829B              sbis 0x10,2
 0172 01C0              rjmp L54
 0174                   .dbline 122
 0174           ;                             code|=0x80;
 0174 4068              ori R20,128
 0176           L53:
 0176                   .dbline 123
 0176           L54:
 0176                   .dbline 123
 0176 839B              sbis 0x10,3
 0178 FECF              rjmp L53
 017A                   .dbline 124
 017A           L45:
 017A                   .dbline 117
 017A 6395              inc R22
 017C           L47:
 017C                   .dbline 117
 017C 6830              cpi R22,8
 017E A8F3              brlo L49
 0180           L56:
 0180                   .dbline 125
 0180           L57:
 0180                   .dbline 125
 0180           ;                      while((PIN_KB&(1<<CLOCK))==0);
 0180           ;                  }
 0180           ;                  while(PIN_KB&(1<<CLOCK));
 0180 8399              sbic 0x10,3
 0182 FECF              rjmp L56
 0184           L59:
 0184                   .dbline 126
 0184           L60:
 0184                   .dbline 126
 0184           ;                  while((PIN_KB&(1<<CLOCK))==0);
 0184 839B              sbis 0x10,3
 0186 FECF              rjmp L59
 0188           L62:
 0188                   .dbline 127
 0188           L63:
 0188                   .dbline 127
 0188           ;                  while(PIN_KB&(1<<CLOCK));
 0188 8399              sbic 0x10,3
 018A FECF              rjmp L62
 018C                   .dbline 128
 018C           ;                  if ((PIN_KB&(1<<DATAPIN))!=0)
 018C 829B              sbis 0x10,2
 018E 08C0              rjmp L65
 0190                   .dbline 129
 0190           ;                  {
 0190                   .dbline 130
 0190           ;                          origialcode=code;
 0190 40930000          sts _origialcode,R20
 0194                   .dbline 131
 0194           ;                          code=decode(code);
 0194 042F              mov R16,R20
 0196 13D0              xcall _decode
 0198 402F              mov R20,R16
 019A                   .dbline 132
 019A           ;                          if(code!=0)
 019A 0023              tst R16
 019C 09F0              breq L67
 019E                   .dbline 133
 019E           ;                         put_c(code);
 019E 9ADF              xcall _put_c
 01A0           L67:
 01A0                   .dbline 134
 01A0           ;                  }
 01A0           L65:
 01A0                   .dbline 135
 01A0           L39:
 01A0                   .dbline -2
 01A0           L38:
 01A0 0E940000          xcall pop_gset2
 01A4 0E940000          xcall pop_lset
 01A8                   .dbline 0 ; func end
 01A8 1895              reti
 01AA                   .dbsym r code 20 c
 01AA                   .dbsym r i 22 c

⌨️ 快捷键说明

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