|
100黑币
本帖最后由 Elilala 于 2021-3-25 10:00 编辑
使用PWM控制电机转速,同时实时使用串口采集温度。同时TR0=1,TR1=1时温度采集出错。将TR0=1注释掉后正确,但是无法控制电机转速,只能启动。部分代码如下:- #include <reg52.h>
- #include <intrins.h>
- #include "Delay.h"
- #include <ds18b20mul.h>
- #include <uart.h>
- #include "motor.h"
- #define uchar unsigned char
- #define uint unsigned int
- void delay(uint j)
- {
- uint x;
- for(x=0;x<j;x++);
- }
- void uart(void) interrupt 4
- {
- unsigned char recv_data
- if(RI)
- {
- RI=0;
- // revbuf[revlen]=SBUF
- recv_data = SBUF;
- revbuf[revlen]=SBUF;
- if(revbuf[0]=='*'
- {
- if((revlen<16)&&(revbuf[revlen]!='\r'))
- revlen++;
- else revover=1;
- }
- // else clearrevbuf();
- if(recv_data == '0'
- {
- if(speedA>0)speedA-=2;
- if(speedB>0)speedB-=2;
- }
- else if(recv_data == '1')
- {
- if(speedA<=20)speedA+=2;
- if(speedB<=20)speedB+=2;
- }
- else if(recv_data == '2')
- {
- motorA_forward();
- motorB_forward();
- }
- else if(recv_data == '3')
- {
- motorA_reversal();
- motorB_reversal();
- }
- else if(recv_data == '4')
- {
- speedA=20;
- speedB=20;
- }
- else if(recv_data == '5')
- {
- speedA=10;
- speedB=10;
- }
- }
- // else
- // {
- // TI=0;
- // //sending=0;
- // }
- if(TI)
- {
- TI=0;
- }
- }
- void main()
- {
- UARTinit()
- // motor_Init();
- while(1
- {
- delay(500000)
- GetData(1)
- sendstring("*1:");
- sendstring(dispBuf);sendstring("\r\n")
- GetData(2); //
- sendstring("*2:");
- sendstring(dispBuf);sendstring("\r\n")
- }
- }
复制代码
|
|