標(biāo)題:
單片機定時器2作為串口,定時器1同時開啟,程序自動復(fù)位
[打印本頁]
作者:
Letu9811
時間:
2021-12-21 21:00
標(biāo)題:
單片機定時器2作為串口,定時器1同時開啟,程序自動復(fù)位
把定時器2作為串口波特率來接收藍(lán)牙數(shù)據(jù),定時器1用來PWM調(diào)速,藍(lán)牙發(fā)送指令之后接收到指令,定時器1進(jìn)入中斷之后就直接復(fù)位了
一開始是能夠接收之后正常執(zhí)行指令的,多發(fā)送幾次之后就會出現(xiàn)這種問題,手動復(fù)位之類的也試過,只要出現(xiàn)這個情況之后就會一直這樣子
單片機源程序如下:
void car_timer_isr() interrupt 3
{
TH1 = (T1_VAL) / 256;
TL1 = (T1_VAL) % 256;
if(car_pwm_left == 0)
{
car_motor_left_forward = 0;
car_motor_left_backward = 0;
}else if(car_tick < car_pwm_left)
{
if(car_dir_left) //前進(jìn)
{
car_motor_left_forward = 1;
car_motor_left_backward = 0;
}else{
car_motor_left_forward = 0;
car_motor_left_backward = 1;
}
}else{
car_motor_left_forward = 0;
car_motor_left_backward = 0;
}
if(car_pwm_right == 0)
{
car_motor_right_forward = 0;
car_motor_right_backward = 0;
}else if(car_tick < car_pwm_right)
{
if(car_dir_right)
{
car_motor_right_forward = 1;
car_motor_right_backward = 0;
}else{
car_motor_right_forward = 0;
car_motor_right_backward = 1;
}
}else{
car_motor_right_forward = 0;
car_motor_right_backward = 0;
}
car_tick++;
if(car_tick >= 10)car_tick = 0;
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1