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

📄 m.lst

📁 08山东电子电子竞赛智能小车程序基于PIC+红外+电子罗盘ourdev551262 包含源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
.................... //左右轮占空比计数 
.................... 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 + -