📄 jianpan.lis
字号:
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 + -