|
這是我根據(jù)論壇內(nèi)一位大神的程序序修改得到的一個(gè)程序,但是我有三個(gè)問(wèn)題,如上所示。當(dāng)我去掉這個(gè)for循環(huán)后,L298N直接就帶不起來(lái)直流電機(jī)了,在這里我想問(wèn)一下各位大佬這個(gè)for循環(huán)和這兩個(gè)delay函數(shù)的作用是什么?
單片機(jī)源程序如下:
- #include <reg51.h>
- sbit IN1=P0^0;
- sbit IN2=P0^1;
- sbit IN3=P0^2;
- sbit IN4=P0^3;
- sbit L_PWM=P0^4;
- sbit R_PWM=P0^5;
- sbit hongwai_l=P1^0;
- sbit hongwai_r=P1^1;
- #define L_go IN1=1;IN2=0
- #define L_back IN1=0;IN2=1
- #define L_stop IN1=0;IN2=0
- #define R_go IN3=1;IN4=0
- #define R_back IN3=0;IN4=1
- #define R_stop IN3=0;IN4=0
- #define car_go L_go;R_go;
- #define car_back L_back;R_back
- #define car_left R_go;L_stop
- #define car_right L_go;R_stop
- #define car_stop L_stop;R_stop
- #define car_left_360 R_go;L_back
- #define car_right_360 L_go;R_back
- unsigned char l_tt=0;
- unsigned char l_Lpwm=3;
- unsigned char l_Rpwm=3;
- void timer0()interrupt 1 using 2
- {
- TH0=0XFC;
- TL0=0X17;
- l_tt++;
- if(l_tt>9)l_tt=0;
-
- if(l_tt<=l_Lpwm){
- L_PWM=1;
- }
- else{
- L_PWM=0;
- }
- if(l_tt<=l_Rpwm){
- R_PWM=1;
- }
- else{
- R_PWM=0;
- }
- }
- void Delay(unsigned int t)
- {
- unsigned int c;
- while(t--){
- c=10000;
- while(c--);
- }
- }
- void time1init()
- {
- EA=1;
- TMOD|=0X11;
- TH0= 0XFC;
- TL0= 0X14;
- TR0= 1;
- ET0= 1;
- }
- void main(void)
- {
- unsigned char i;
-
- if(hongwai_r==0&&hongwai_l==0)
- {
- while(1)
- {
- l_Lpwm=3;
- l_Rpwm=3;
- car_go;
- for(i=0;i<10;i++) //問(wèn)題一:這里的這個(gè)for循環(huán)的作用是什么??
- {
- l_Lpwm++;
- Delay(20000); //問(wèn)題二:這里的這個(gè)Delay函數(shù)的作用是什么??
- }
- Delay(5); //問(wèn)題三:這里的這個(gè)Delay函數(shù)的作用是什么??
- }
- }
復(fù)制代碼
|
|