|
100黑幣
本帖最后由 Elilala 于 2021-3-25 10:00 編輯
使用PWM控制電機轉(zhuǎn)速,同時實時使用串口采集溫度。同時TR0=1,TR1=1時溫度采集出錯。將TR0=1注釋掉后正確,但是無法控制電機轉(zhuǎn)速,只能啟動。部分代碼如下:- #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")
- }
- }
復制代碼
|
-
-
-
DS18B20.rar
2021-3-25 09:27 上傳
點擊文件名下載附件
117.12 KB, 下載次數(shù): 3
|