📄 car.lis
字号:
00DA ;
00DA ; PORTB=0X01;
00DA 81E0 ldi R24,1
00DC 88BB out 0x18,R24
00DE .dbline 140
00DE ; delay(cc);
00DE 8501 movw R16,R10
00E0 9ADF xcall _delay
00E2 .dbline 141
00E2 ; PORTB=0X00;
00E2 2224 clr R2
00E4 28BA out 0x18,R2
00E6 .dbline 142
00E6 ; delay(T-cc);
00E6 00910000 lds R16,_T
00EA 10910100 lds R17,_T+1
00EE 0A19 sub R16,R10
00F0 1B09 sbc R17,R11
00F2 91DF xcall _delay
00F4 .dbline -2
00F4 L12:
00F4 .dbline 0 ; func end
00F4 B990 ld R11,y+
00F6 A990 ld R10,y+
00F8 0895 ret
00FA .dbsym r cc 10 i
00FA .dbend
00FA .dbfunc e BTOL _BTOL fV
00FA ; dd -> R10,R11
.even
00FA _BTOL::
00FA AA92 st -y,R10
00FC BA92 st -y,R11
00FE 5801 movw R10,R16
0100 .dbline -1
0100 .dbline 146
0100 ; }
0100 ;
0100 ; void BTOL(unsigned int dd) //后右转
0100 ; {
0100 .dbline 148
0100 ;
0100 ; PORTB=0X08;
0100 88E0 ldi R24,8
0102 88BB out 0x18,R24
0104 .dbline 149
0104 ; delay(dd);
0104 8501 movw R16,R10
0106 87DF xcall _delay
0108 .dbline 150
0108 ; PORTB=0X00;
0108 2224 clr R2
010A 28BA out 0x18,R2
010C .dbline 151
010C ; delay(T-dd);
010C 00910000 lds R16,_T
0110 10910100 lds R17,_T+1
0114 0A19 sub R16,R10
0116 1B09 sbc R17,R11
0118 7EDF xcall _delay
011A .dbline -2
011A L13:
011A .dbline 0 ; func end
011A B990 ld R11,y+
011C A990 ld R10,y+
011E 0895 ret
0120 .dbsym r dd 10 i
0120 .dbend
0120 .dbfunc e Linecheck_GO _Linecheck_GO fV
0120 ; temp -> R10
.even
0120 _Linecheck_GO::
0120 0E940000 xcall push_xgset300C
0124 .dbline -1
0124 .dbline 161
0124 ; }
0124 ; //============================================================================================
0124 ; //函数: void line_check_GO(void)
0124 ; //语法:void line_check_GO(void)
0124 ; //描述: 前进黑白寻迹检测
0124 ; //参数:无
0124 ; //返回:无
0124 ; //============================================================================================
0124 ; void Linecheck_GO(void)
0124 ; {
0124 .dbline 163
0124 ; unsigned char temp;
0124 ; PORTA = 0XFF;
0124 8FEF ldi R24,255
0126 8BBB out 0x1b,R24
0128 .dbline 164
0128 ; DDRA = 0x00;//PA 为输入口
0128 2224 clr R2
012A 2ABA out 0x1a,R2
012C .dbline 165
012C ; NOP();
012C 0000 nop
012E .dbline 166
012E ; temp=PINA;
012E A9B2 in R10,0x19
0130 .dbline 167
0130 ; switch(temp)
0130 4A2D mov R20,R10
0132 5527 clr R21
0134 403F cpi R20,240
0136 E0E0 ldi R30,0
0138 5E07 cpc R21,R30
013A D9F0 breq L18
013C X1:
013C 80EF ldi R24,240
013E 90E0 ldi R25,0
0140 8417 cp R24,R20
0142 9507 cpc R25,R21
0144 2CF0 brlt L24
0146 X2:
0146 L23:
0146 413E cpi R20,225
0148 E0E0 ldi R30,0
014A 5E07 cpc R21,R30
014C 11F1 breq L22
014E X3:
014E 25C0 xjmp L15
0150 L24:
0150 473F cpi R20,247
0152 E0E0 ldi R30,0
0154 5E07 cpc R21,R30
0156 89F0 breq L19
0158 X4:
0158 473F cpi R20,247
015A E0E0 ldi R30,0
015C 5E07 cpc R21,R30
015E ECF0 brlt L15
0160 X5:
0160 L25:
0160 4B3F cpi R20,251
0162 E0E0 ldi R30,0
0164 5E07 cpc R21,R30
0166 69F0 breq L20
0168 X6:
0168 4D3F cpi R20,253
016A E0E0 ldi R30,0
016C 5E07 cpc R21,R30
016E 69F0 breq L21
0170 X7:
0170 14C0 xjmp L15
0172 L18:
0172 .dbline 169
0172 ; {
0172 ; case 0xf0: GTOL(600); break;
0172 08E5 ldi R16,600
0174 12E0 ldi R17,2
0176 88DF xcall _GTOL
0178 .dbline 169
0178 13C0 xjmp L16
017A L19:
017A .dbline 170
017A ; case 0xF7: GTOL(600); break;
017A 08E5 ldi R16,600
017C 12E0 ldi R17,2
017E 84DF xcall _GTOL
0180 .dbline 170
0180 0FC0 xjmp L16
0182 L20:
0182 .dbline 171
0182 ; case 0xFB: GO(700); break;
0182 0CEB ldi R16,700
0184 12E0 ldi R17,2
0186 5ADF xcall _GO
0188 .dbline 171
0188 0BC0 xjmp L16
018A L21:
018A .dbline 172
018A ; case 0XFD: GTOR(600); break;
018A 08E5 ldi R16,600
018C 12E0 ldi R17,2
018E 8FDF xcall _GTOR
0190 .dbline 172
0190 07C0 xjmp L16
0192 L22:
0192 .dbline 173
0192 ; case 0xe1: GTOR(600); break;
0192 08E5 ldi R16,600
0194 12E0 ldi R17,2
0196 8BDF xcall _GTOR
0198 .dbline 173
0198 03C0 xjmp L16
019A L15:
019A .dbline 174
019A ; default : GO(700);
019A 0CEB ldi R16,700
019C 12E0 ldi R17,2
019E 4EDF xcall _GO
01A0 .dbline 175
01A0 ; }
01A0 L16:
01A0 .dbline -2
01A0 L14:
01A0 .dbline 0 ; func end
01A0 0C940000 xjmp pop_xgset300C
01A4 .dbsym r temp 10 c
01A4 .dbend
01A4 .dbfunc e Linecheck_BACK _Linecheck_BACK fV
01A4 ; temp -> R10
.even
01A4 _Linecheck_BACK::
01A4 0E940000 xcall push_xgset300C
01A8 .dbline -1
01A8 .dbline 185
01A8 ; }
01A8 ; //============================================================================================
01A8 ; //函数: void line_check_BACK(void)
01A8 ; //语法:void line_check_BACK(void)
01A8 ; //描述: 前进黑白寻迹检测
01A8 ; //参数:无
01A8 ; //返回:无
01A8 ; //============================================================================================
01A8 ; void Linecheck_BACK(void)
01A8 ; {
01A8 .dbline 187
01A8 ; unsigned char temp;
01A8 ; PORTA = 0XFF;
01A8 8FEF ldi R24,255
01AA 8BBB out 0x1b,R24
01AC .dbline 188
01AC ; DDRA = 0x00;//PA 为输入口
01AC 2224 clr R2
01AE 2ABA out 0x1a,R2
01B0 .dbline 189
01B0 ; _NOP();
01B0 0000 nop
01B2 .dbline 190
01B2 ; temp=PINA;
01B2 A9B2 in R10,0x19
01B4 .dbline 191
01B4 ; switch(temp)
01B4 4A2D mov R20,R10
01B6 5527 clr R21
01B8 413E cpi R20,225
01BA E0E0 ldi R30,0
01BC 5E07 cpc R21,R30
01BE 29F1 breq L34
01C0 X8:
01C0 423E cpi R20,226
01C2 E0E0 ldi R30,0
01C4 5E07 cpc R21,R30
01C6 E9F0 breq L33
01C8 X9:
01C8 443E cpi R20,228
01CA E0E0 ldi R30,0
01CC 5E07 cpc R21,R30
01CE A9F0 breq L32
01D0 X10:
01D0 483E cpi R20,232
01D2 E0E0 ldi R30,0
01D4 5E07 cpc R21,R30
01D6 69F0 breq L31
01D8 X11:
01D8 413E cpi R20,225
01DA E0E0 ldi R30,0
01DC 5E07 cpc R21,R30
01DE CCF0 brlt L27
01E0 X12:
01E0 L35:
01E0 403F cpi R20,240
01E2 E0E0 ldi R30,0
01E4 5E07 cpc R21,R30
01E6 09F0 breq L30
01E8 X13:
01E8 14C0 xjmp L27
01EA L30:
01EA .dbline 193
01EA ; {
01EA ; case 0xf0: BTOR(600); break;
01EA 08E5 ldi R16,600
01EC 12E0 ldi R17,2
01EE 72DF xcall _BTOR
01F0 .dbline 193
01F0 13C0 xjmp L28
01F2 L31:
01F2 .dbline 194
01F2 ; case 0xe8: BTOR(600); break;
01F2 08E5 ldi R16,600
01F4 12E0 ldi R17,2
01F6 6EDF xcall _BTOR
01F8 .dbline 194
01F8 0FC0 xjmp L28
01FA L32:
01FA .dbline 195
01FA ; case 0xe4: BACK(700); break;
01FA 0CEB ldi R16,700
01FC 12E0 ldi R17,2
01FE 31DF xcall _BACK
0200 .dbline 195
0200 0BC0 xjmp L28
0202 L33:
0202 .dbline 196
0202 ; case 0Xe2: BTOL(600); break;
0202 08E5 ldi R16,600
0204 12E0 ldi R17,2
0206 79DF xcall _BTOL
0208 .dbline 196
0208 07C0 xjmp L28
020A L34:
020A .dbline 197
020A ; case 0xe1: BTOL(600); break;
020A 08E5 ldi R16,600
020C 12E0 ldi R17,2
020E 75DF xcall _BTOL
0210 .dbline 197
0210 03C0 xjmp L28
0212 L27:
0212 .dbline 198
0212 ; default : BACK(700);
0212 0CEB ldi R16,700
0214 12E0 ldi R17,2
0216 25DF xcall _BACK
0218 .dbline 199
0218 ; }
0218 L28:
0218 .dbline -2
0218 L26:
0218 .dbline 0 ; func end
0218 0C940000 xjmp pop_xgset300C
021C .dbsym r temp 10 c
021C .dbend
021C .dbfunc e main _main fV
.even
021C _main::
021C .dbline -1
021C .dbline 209
021C ; }
021C ; //============================================================================================
021C ; //函数: void main()
021C ; //语法:void main()
021C ; //描述:主函数
021C ; //参数 无
021C ; //返回:无
021C ; //============================================================================================
021C ; void main()
021C ; {
021C .dbline 210
021C ; port_init();
021C F1DE xcall _port_init
021E 01C0 xjmp L38
0220 L37:
0220 .dbline 212
0220 ; while(1)
0220 ; {
0220 .dbline 213
0220 ; Linecheck_GO();
0220 7FDF xcall _Linecheck_GO
0222 .dbline 219
0222 ; //Linecheck_BACK();
0222 ; //GO(800);
0222 ; // BACK(700);
0222 ; // TOR(700);
0222 ; //TOL(500);
0222 ; }
0222 L38:
0222 .dbline 211
0222 FECF xjmp L37
0224 X14:
0224 .dbline -2
0224 L36:
0224 .dbline 0 ; func end
0224 0895 ret
0226 .dbend
0226 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -