📄 m.lst
字号:
.................... //左右轮占空比计数
.................... unsigned char Left_SoftPwmCount;
.................... unsigned char Right_SoftPwmCount;
.................... unsigned char Car_run_Drection_L;
.................... unsigned char Car_run_Drection_R;
....................
....................
.................... //左右轮占空比设置
.................... unsigned char Left_Pwm;
.................... unsigned char Right_Pwm;
....................
.................... //1mS微时间临时
.................... unsigned char TimeUsTmp;
....................
.................... /*
.................... 小车运行方向 1 前 2后
.................... #define Car_Stop 0
.................... #define Car_Goahead 1
.................... #define Car_GoBack 2
.................... */
....................
....................
.................... //小车控制初始化
.................... void init_CarCtrl()
.................... {
.................... LightUpdates=1;
*
02F2: BSF 1F.1
.................... SETUP_TIMER_2(T2_DIV_BY_1,100,1);
02F4: MOVLW 00
02F6: IORLW 04
02F8: MOVWF FCA
02FA: MOVLW 64
02FC: MOVWF FCB
.................... }
02FE: GOTO 030C (RETURN)
....................
.................... #INT_TIMER2
.................... void Soft_isr(void)
.................... {
.................... if (Left_SoftPwmCount==100)
*
013E: MOVF 2B,W
0140: SUBLW 64
0142: BNZ 0146
.................... {
.................... Left_SoftPwmCount=0;
0144: CLRF 2B
.................... }
.................... if (Right_SoftPwmCount==100)
0146: MOVF 2C,W
0148: SUBLW 64
014A: BNZ 014E
.................... {
.................... Right_SoftPwmCount=0;
014C: CLRF 2C
.................... }
....................
....................
....................
.................... //右轮控制
.................... if(Right_SoftPwmCount==0)
014E: MOVF 2C,F
0150: BNZ 0160
.................... {
.................... //前进
.................... if (Car_run_Drection_R==Car_Goahead)
0152: DECFSZ 2E,W
0154: BRA 0158
.................... {
.................... CC_Goahead_R();
0156: RCALL 00FE
.................... }
.................... if (Car_run_Drection_R==Car_GoBack)
0158: MOVF 2E,W
015A: SUBLW 02
015C: BNZ 0160
.................... {
.................... CC_GoBack_R();
015E: RCALL 0108
.................... }
....................
.................... }
....................
.................... if(Right_SoftPwmCount==Right_Pwm)
0160: MOVF 30,W
0162: SUBWF 2C,W
0164: BNZ 0168
.................... {
.................... CC_Stop_R();
0166: BRA 0112
.................... }
....................
....................
....................
.................... //左轮控制
.................... if(Left_SoftPwmCount==0)
0168: MOVF 2B,F
016A: BNZ 016E
.................... {
.................... CC_Stop_L();
016C: BRA 011E
.................... }
....................
.................... if(Left_SoftPwmCount==Left_Pwm)
016E: MOVF 2F,W
0170: SUBWF 2B,W
0172: BNZ 0182
.................... {
....................
.................... if (Car_run_Drection_L==Car_Goahead)
0174: DECFSZ 2D,W
0176: BRA 017A
.................... {
.................... //前进
.................... CC_Goahead_L();
0178: RCALL 012A
.................... }
.................... if (Car_run_Drection_L==Car_GoBack)
017A: MOVF 2D,W
017C: SUBLW 02
017E: BNZ 0182
.................... {
.................... CC_GoBack_L();
0180: RCALL 0134
.................... }
.................... }
....................
.................... Left_SoftPwmCount++;
0182: INCF 2B,F
.................... Right_SoftPwmCount++;
0184: INCF 2C,F
....................
.................... //1ms定时器
.................... TimeUsTmp++;
0186: INCF 31,F
.................... if(TimeUsTmp==10)
0188: MOVF 31,W
018A: SUBLW 0A
018C: BNZ 0196
.................... {
.................... TimeUsTmp=0;
018E: CLRF 31
.................... TimeUs++;
0190: INCF 1A,F
0192: BTFSC FD8.2
0194: INCF 1B,F
.................... };
....................
.................... }
....................
.................... //PWM有效比设置
0196: BCF F9E.1
0198: GOTO 0064
.................... void PWM_SetDuty(unsigned int16 Left_Pwm_Tmp,unsigned int16 Right_Pwm_Tmp)
.................... {
....................
.................... //成比例
.................... Left_Pwm_Tmp=(unsigned char)((StandedV*Left_Pwm_Tmp)/NowV);
*
087C: MOVLW 01
087E: MOVWF 47
0880: MOVLW 3B
0882: MOVWF 46
0884: MOVFF 3C,49
0888: MOVFF 3B,48
088C: RCALL 048C
088E: MOVFF 02,40
0892: MOVFF 01,3F
0896: MOVFF 02,47
089A: MOVFF 01,46
089E: MOVFF 1D,49
08A2: MOVFF 1C,48
08A6: RCALL 0570
08A8: MOVFF 02,3C
08AC: MOVFF 01,3B
.................... Right_Pwm=(unsigned char)((StandedV*Right_Pwm_Tmp)/NowV);
08B0: MOVLW 01
08B2: MOVWF 47
08B4: MOVLW 3B
08B6: MOVWF 46
08B8: MOVFF 3E,49
08BC: MOVFF 3D,48
08C0: RCALL 048C
08C2: MOVFF 02,40
08C6: MOVFF 01,3F
08CA: MOVFF 02,47
08CE: MOVFF 01,46
08D2: MOVFF 1D,49
08D6: MOVFF 1C,48
08DA: RCALL 0570
08DC: MOVFF 01,30
.................... //错开电流峰值
.................... Left_Pwm=100-Left_Pwm_Tmp;
08E0: MOVLW 64
08E2: BSF FD8.0
08E4: SUBFWB 3B,W
08E6: MOVWF 2F
....................
.................... //防止超出范围
.................... if (Left_Pwm>100)
08E8: MOVF 2F,W
08EA: SUBLW 64
08EC: BC 08F2
.................... {
.................... Left_Pwm=100;
08EE: MOVLW 64
08F0: MOVWF 2F
.................... }
.................... if (Right_Pwm>100)
08F2: MOVF 30,W
08F4: SUBLW 64
08F6: BC 08FC
.................... {
.................... Right_Pwm=100;
08F8: MOVLW 64
08FA: MOVWF 30
.................... }
....................
.................... }
08FC: RETLW 00
.................... //PWM启动
.................... void PWM_Start()
.................... {
.................... enable_interrupts(INT_TIMER2);
*
0004: BSF F9D.1
.................... }
0006: RETLW 00
....................
.................... //PWM停止
.................... void PWM_Stop()
.................... {
.................... disable_interrupts(INT_TIMER2);
*
0976: BCF F9D.1
.................... CC_CarStop();
0978: RCALL 0964
.................... }
097A: RETLW 00
.................... void PWM_SetDRC(unsigned char Left_Drection,unsigned char Right_Drection)
.................... {
.................... Car_run_Drection_L=Left_Drection;
*
0872: MOVFF 3B,2D
.................... Car_run_Drection_R=Right_Drection;
0876: MOVFF 3C,2E
.................... }
087A: RETLW 00
....................
....................
....................
....................
....................
.................... //PIC初始化=====================
.................... void init_PIC()
.................... {
.................... setup_psp(PSP_DISABLED);
*
019C: BCF F96.4
.................... setup_wdt(WDT_OFF);
019E: BCF FD1.0
.................... }
01A0: GOTO 0304 (RETURN)
....................
.................... //系统初始化====================
.................... void init_sys()
.................... {
.................... init_PIC();
*
0302: BRA 019C
.................... init_adc();
0304: BRA 01A4
.................... init_LCD();
0306: BRA 02A4
.................... init_rtclock();
0308: BRA 02E0
.................... init_CarCtrl();
030A: BRA 02F2
.................... enable_interrupts(GLOBAL);
030C: MOVLW C0
030E: IORWF FF2,F
.................... }
0310: GOTO 09E2 (RETURN)
.................... //获得传感状态
.................... void GetSenser()
.................... {
.................... LightUpdate=0;
*
0684: BCF 1F.0
.................... LightUpdateS=0;
0686: BCF 1F.1
.................... //================================
.................... if (HS!=input(SRed_Head))
0688: MOVLW 00
068A: BTFSC 1E.2
068C: MOVLW 01
068E: MOVWF 3B
0690: BSF F92.5
0692: MOVLW 00
0694: BTFSC F80.5
0696: MOVLW 01
0698: SUBWF 3B,W
069A: BZ 06BC
.................... {
.................... HS=input(SRed_Head);
069C: BSF F92.5
069E: BCF 1E.2
06A0: BTFSC F80.5
06A2: BSF 1E.2
.................... LightUpdate=1;
06A4: BSF 1F.0
.................... LCD_setpos(4,0);
06A6: MOVLW 04
06A8: MOVWF 42
06AA: CLRF 43
06AC: RCALL 0338
.................... LCD_disp_Putchar('0'+HS);
06AE: MOVLW 00
06B0: BTFSC 1E.2
06B2: MOVLW 01
06B4: ADDLW 30
06B6: MOVWF 3B
06B8: MOVWF 3C
06BA: RCALL 0678
.................... }
.................... if (LS!=input(SRed_Left_T))
06BC: MOVLW 00
06BE: BTFSC 1E.0
06C0: MOVLW 01
06C2: MOVWF 3B
06C4: BSF F92.2
06C6: MOVLW 00
06C8: BTFSC F80.2
06CA: MOVLW 01
06CC: SUBWF 3B,W
06CE: BZ 06F2
.................... {
.................... LS=input(SRed_Left_T);
06D0: BSF F92.2
06D2: BCF 1E.0
06D4: BTFSC F80.2
06D6: BSF 1E.0
.................... LightUpdate=1;
06D8: BSF 1F.0
.................... LCD_setpos(3,1);
06DA: MOVLW 03
06DC: MOVWF 42
06DE: MOVLW 01
06E0: MOVWF 43
06E2: RCALL 0338
.................... LCD_disp_Putchar('0'+LS);
06E4: MOVLW 00
06E6: BTFSC 1E.0
06E8: MOVLW 01
06EA: ADDLW 30
06EC: MOVWF 3B
06EE: MOVWF 3C
06F0: RCALL 0678
.................... }
....................
.................... if (RS!=input(SRed_Right_T))
06F2: MOVLW 00
06F4: BTFSC 1E.1
06F6: MOVLW 01
06F8: MOVWF 3B
06FA: BSF F92.1
06FC: MOVLW 00
06FE: BTFSC F80.1
0700: MOVLW 01
0702: SUBWF 3B,W
0704: BZ 0728
.................... {
.................... RS=input(SRed_Right_T);
0706: BSF F92.1
0708: BCF 1E.1
070A: BTFSC F80.1
070C: BSF 1E.1
.................... LightUpdate=1;
070E: BSF 1F.0
.................... LCD_setpos(5,1);
0710: MOVLW 05
0712: MOVWF 42
0714: MOVLW 01
0716: MOVWF 43
0718: RCALL 0338
.................... LCD_disp_Putchar('0'+RS);
071A: MOVLW 00
071C: BTFSC 1E.1
071E: MOVLW 01
0720: ADDLW 30
0722: MOVWF 3B
0724: MOVWF 3C
0726: RCALL 0678
.................... }
....................
....................
.................... if (ES!=input(SNear))
0728: MOVLW 00
072A: BTFSC 1E.3
072C: MOVLW 01
072E: MOVWF 3B
0730: BSF F92.3
0732: MOVLW 00
0734: BTFSC F80.3
0736: MOVLW 01
0738: SUBWF 3B,W
073A: BZ 0746
.................... {
.................... ES=input(SNear);
073C: BSF F92.3
073E: BCF 1E.3
0740: BTFSC F80.3
0742: BSF 1E.3
.................... LightUpdate=1;
0744: BSF 1F.0
....................
.................... }
.................... //底盘巡线禁止控制
.................... if (Butten_Detect==1)
0746: BTFSS 1F.2
0748: BRA 07B4
.................... {
.................... if (BL!=input(SRed_B_Left))
074A: MOVLW 00
074C: BTFSC 1E.4
074E: MOVLW 01
0750: MOVWF 3B
0752: BSF F94.7
0754: MOVLW 00
0756: BTFSC F82.7
0758: MOVLW 01
075A: SUBWF 3B,W
075C: BZ 077E
.................... {
.................... BL=input(SRed_B_Left);
075E: BSF F94.7
0760: BCF 1E.4
0762: BTFSC F82.7
0764: BSF 1E.4
............
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -