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

📄 jianpan.lis

📁 实现3*3 键盘的控制。从而实现用键盘来对单片机进行控制。
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0082 0027              clr R16
 0084 0BC0              xjmp L12
 0086           L11:
 0086                   .dbline 117
 0086           ;       else if(!(PINC & 0x40))
 0086 9E99              sbic 0x13,6
 0088 02C0              rjmp L13
 008A                   .dbline 118
 008A           ;        index = 1;
 008A 01E0              ldi R16,1
 008C 07C0              xjmp L14
 008E           L13:
 008E                   .dbline 119
 008E           ;       else if(!(PINC & 0x20))
 008E 9D99              sbic 0x13,5
 0090 02C0              rjmp L15
 0092                   .dbline 120
 0092           ;        index = 2;
 0092 02E0              ldi R16,2
 0094 03C0              xjmp L16
 0096           L15:
 0096                   .dbline 121
 0096           ;       else if(!(PINC & 0x10))
 0096 9C99              sbic 0x13,4
 0098 01C0              rjmp L17
 009A                   .dbline 122
 009A           ;        index = 3;
 009A 03E0              ldi R16,3
 009C           L17:
 009C           L16:
 009C           L14:
 009C           L12:
 009C                   .dbline 123
 009C           ;       PORTC = 0x0F;      //切换
 009C 8FE0              ldi R24,15
 009E 85BB              out 0x15,R24
 00A0                   .dbline 124
 00A0           ;       DDRC = 0xF0;
 00A0 80EF              ldi R24,240
 00A2 84BB              out 0x14,R24
 00A4                   .dbline 125
 00A4           ;       if( !(PINC & 0x08) )
 00A4 9B99              sbic 0x13,3
 00A6 01C0              rjmp L19
 00A8                   .dbline 126
 00A8           ;        index += 0;
 00A8 0BC0              xjmp L20
 00AA           L19:
 00AA                   .dbline 127
 00AA           ;       else if( !(PINC & 0x04) )
 00AA 9A99              sbic 0x13,2
 00AC 02C0              rjmp L21
 00AE                   .dbline 128
 00AE           ;        index += 4;
 00AE 0C5F              subi R16,252    ; addi 4
 00B0 07C0              xjmp L22
 00B2           L21:
 00B2                   .dbline 129
 00B2           ;       else if( !(PINC & 0x02) )
 00B2 9999              sbic 0x13,1
 00B4 02C0              rjmp L23
 00B6                   .dbline 130
 00B6           ;        index += 8;
 00B6 085F              subi R16,248    ; addi 8
 00B8 03C0              xjmp L24
 00BA           L23:
 00BA                   .dbline 131
 00BA           ;       else if( !(PINC & 0x01) )
 00BA 9899              sbic 0x13,0
 00BC 01C0              rjmp L25
 00BE                   .dbline 132
 00BE           ;        index += 12;
 00BE 045F              subi R16,244    ; addi 12
 00C0           L25:
 00C0           L24:
 00C0           L22:
 00C0           L20:
 00C0                   .dbline 133
 00C0           ;        PORTC = 0xF0;     //切换
 00C0 80EF              ldi R24,240
 00C2 85BB              out 0x15,R24
 00C4                   .dbline 134
 00C4           ;       DDRC = 0x0F;
 00C4 8FE0              ldi R24,15
 00C6 84BB              out 0x14,R24
 00C8                   .dbline 135
 00C8           ;       return index;
 00C8                   .dbline -2
 00C8           L10:
 00C8                   .dbline 0 ; func end
 00C8 0895              ret
 00CA                   .dbsym r index 16 c
 00CA                   .dbend
 00CA                   .dbfunc e transmit _transmit fV
 00CA           ;            tmp -> <dead>
 00CA           ;              i -> R20
                        .even
 00CA           _transmit::
 00CA 0E940000          xcall push_gset1
 00CE                   .dbline -1
 00CE                   .dbline 139
 00CE           ; }
 00CE           ; //串口传送数据
 00CE           ; void transmit(void)
 00CE           ; { 
 00CE                   .dbline 142
 00CE           ;       uchar i;
 00CE           ;       uchar tmp;
 00CE           ;       for(i=0;i<10;i++)
 00CE 4427              clr R20
 00D0 07C0              xjmp L31
 00D2           L28:
 00D2                   .dbline 143
 00D2                   .dbline 144
 00D2 27E0              ldi R18,7
 00D4 07E0              ldi R16,7
 00D6 A4DF              xcall _send
 00D8                   .dbline 145
 00D8 02E0              ldi R16,2
 00DA 10E0              ldi R17,0
 00DC 91DF              xcall _delay
 00DE                   .dbline 146
 00DE           L29:
 00DE                   .dbline 142
 00DE 4395              inc R20
 00E0           L31:
 00E0                   .dbline 142
 00E0 4A30              cpi R20,10
 00E2 B8F3              brlo L28
 00E4                   .dbline 147
 00E4           ;       {
 00E4           ;       send(7,7);
 00E4           ;       delay(2);
 00E4           ;       }
 00E4           ;       for(i=0;i<20;i++)
 00E4 4427              clr R20
 00E6 0EC0              xjmp L35
 00E8           X0:
 00E8                   .dbline 148
 00E8           ;       {
 00E8           L36:
 00E8                   .dbline 149
 00E8           L37:
 00E8                   .dbline 149
 00E8 5D9B              sbis 0xb,5
 00EA FECF              rjmp L36
 00EC                   .dbline 150
 00EC 80E0              ldi R24,<_trans_buf
 00EE 90E0              ldi R25,>_trans_buf
 00F0 E42F              mov R30,R20
 00F2 FF27              clr R31
 00F4 E80F              add R30,R24
 00F6 F91F              adc R31,R25
 00F8 2080              ldd R2,z+0
 00FA 2CB8              out 0xc,R2
 00FC                   .dbline 151
 00FC 01E0              ldi R16,1
 00FE 10E0              ldi R17,0
 0100 7FDF              xcall _delay
 0102                   .dbline 152
 0102           L33:
 0102                   .dbline 147
 0102 4395              inc R20
 0104           L35:
 0104                   .dbline 147
 0104 4431              cpi R20,20
 0106 80F3              brlo L37
 0108                   .dbline -2
 0108                   .dbline 153
 0108           ;               while(!(UCSRA&BIT(UDRE)));     
 0108           ;               UDR=trans_buf[i];
 0108           ;               delay(1);
 0108           ;       }        
 0108           ; }
 0108           L27:
 0108 0E940000          xcall pop_gset1
 010C                   .dbline 0 ; func end
 010C 0895              ret
 010E                   .dbsym l tmp 1 c
 010E                   .dbsym r i 20 c
 010E                   .dbend
 010E                   .dbfunc e port_init _port_init fV
                        .even
 010E           _port_init::
 010E                   .dbline -1
 010E                   .dbline 155
 010E           ;  void port_init(void)
 010E           ; {
 010E                   .dbline 156
 010E           ;  PORTA = 0x00;
 010E 2224              clr R2
 0110 2BBA              out 0x1b,R2
 0112                   .dbline 157
 0112           ;  DDRA  = 0xFF;
 0112 8FEF              ldi R24,255
 0114 8ABB              out 0x1a,R24
 0116                   .dbline 158
 0116           ;  PORTB = 0xFF;
 0116 88BB              out 0x18,R24
 0118                   .dbline 159
 0118           ;  DDRB  = 0xFF;
 0118 87BB              out 0x17,R24
 011A                   .dbline 160
 011A           ;  PORTC = 0xf0; //m103 output only
 011A 80EF              ldi R24,240
 011C 85BB              out 0x15,R24
 011E                   .dbline 161
 011E           ;  DDRC  = 0x0f;
 011E 8FE0              ldi R24,15
 0120 84BB              out 0x14,R24
 0122                   .dbline 162
 0122           ;  PORTD = 0xFF;
 0122 8FEF              ldi R24,255
 0124 82BB              out 0x12,R24
 0126                   .dbline 163
 0126           ;  DDRD  = 0xF0;
 0126 80EF              ldi R24,240
 0128 81BB              out 0x11,R24
 012A                   .dbline -2
 012A                   .dbline 164
 012A           ; }
 012A           L39:
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbend
 012C                   .dbfunc e timer0_init _timer0_init fV
                        .even
 012C           _timer0_init::
 012C                   .dbline -1
 012C                   .dbline 171
 012C           ; 
 012C           ; //TIMER0 initialisation - prescale:64
 012C           ; // WGM: Normal
 012C           ; // desired value: 1mSec
 012C           ; // actual value:  1.000mSec (0.0%)
 012C           ; void timer0_init(void)
 012C           ; {
 012C                   .dbline 172
 012C           ;  TCCR0 = 0x00; //stop
 012C 2224              clr R2
 012E 23BE              out 0x33,R2
 0130                   .dbline 173
 0130           ;  TCNT0 = 0x83; //set count
 0130 83E8              ldi R24,131
 0132 82BF              out 0x32,R24
 0134                   .dbline 174
 0134           ;  OCR0  = 0x7D;  //set compare
 0134 8DE7              ldi R24,125
 0136 8CBF              out 0x3c,R24
 0138                   .dbline 175
 0138           ;  TCCR0 = 0x03; //start timer
 0138 83E0              ldi R24,3
 013A 83BF              out 0x33,R24
 013C                   .dbline -2
 013C                   .dbline 176
 013C           ; }
 013C           L40:
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C949F00          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 013E                   .dbfile E:\李斐机器人\周卓\键盘_3\键盘_3yuan\jianpan.c
 013E                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 013E           _timer0_ovf_isr::
 013E 8A93              st -y,R24
 0140 9A93              st -y,R25
 0142 8FB7              in R24,0x3f
 0144 8A93              st -y,R24
 0146                   .dbline -1
 0146                   .dbline 180
 0146           ; 
 0146           ; #pragma interrupt_handler timer0_ovf_isr:10
 0146           ; void timer0_ovf_isr(void)
 0146           ; {
 0146                   .dbline 181
 0146           ;       TCNT0 = 0x83; //reload counter value
 0146 83E8              ldi R24,131
 0148 82BF              out 0x32,R24
 014A                   .dbline 182
 014A           ;       DelayCounter ++;
 014A                   .dbline 183
 014A           ;       SysCounter ++;
 014A 80910100          lds R24,_DelayCounter
 014E 90910200          lds R25,_DelayCounter+1
 0152 0196              adiw R24,1
 0154 90930200          sts _DelayCounter+1,R25
 0158 80930100          sts _DelayCounter,R24
 015C 80910300          lds R24,_SysCounter
 0160 90910400          lds R25,_SysCounter+1
 0164 0196              adiw R24,1
 0166 90930400          sts _SysCounter+1,R25
 016A 80930300          sts _SysCounter,R24
 016E                   .dbline -2
 016E                   .dbline 184
 016E           ; }
 016E           L41:
 016E 8991              ld R24,y+
 0170 8FBF              out 0x3f,R24
 0172 9991              ld R25,y+
 0174 8991              ld R24,y+
 0176                   .dbline 0 ; func end
 0176 1895              reti
 0178                   .dbend
 0178                   .dbfunc e uart0_init _uart0_init fV
                        .even
 0178           _uart0_init::
 0178                   .dbline -1
 0178                   .dbline 194
 0178           ; //
 0178           ; 
 0178           ; 
 0178           ; //UART0 initialisation
 0178           ; // desired baud rate: 9600
 0178           ; // actual: baud rate:9615 (0.2%)
 0178           ; // char size: 8 bit
 0178           ; // parity: Disabled
 0178           ; void uart0_init(void)
 0178           ; {
 0178                   .dbline 195
 0178           ;  UCSRB = 0x00; //disable while setting baud rate
 0178 2224              clr R2
 017A 2AB8              out 0xa,R2
 017C                   .dbline 196
 017C           ;  UCSRA = 0x00;
 017C 2BB8              out 0xb,R2
 017E                   .dbline 197
 017E           ;  UCSRC = 0x86;
 017E 86E8              ldi R24,134
 0180 80BD              out 0x20,R24
 0182                   .dbline 198
 0182           ;  UBRRL = 51; //set baud rate lo
 0182 83E3              ldi R24,51
 0184 89B9              out 0x9,R24
 0186                   .dbline 199
 0186           ;  UBRRH = 0x00; //set baud rate hi
 0186 20BC              out 0x20,R2

⌨️ 快捷键说明

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