串口初始化影响步进电机工作?

2019-03-24 19:18发布

void main(){      init_serialcom();   //步进电机不能有这个函数,这是一个初始化串口的函数,  ATE0();    //步进电机也不能有这个函数,这是个向串口发送AT指令的函数。    为什么去掉这前两个函数,步进电机就能转,加了它就不能转了?
        while(1) setmotor();  //启动步进电机函数 }}

下面是两个函数的定义:
void init_serialcom( void ) {  SCON = 0x50 ;  //SCON: serail mode 1, 8-bit UART, enable ucvr                //UART为模式1,8位数据,允许接收 TMOD |= 0x21 ; //TMOD: timer 1, mode 2, 8-bit reload                          //定时器1为模式2,8位自动重装 PCON |= 0x00 ; //SMOD=1;  TH1 = 0xFD ;   //Baud:9600 fosc="11".0592MHz  IE |= 0x90 ;     //Enable Serial Interrupt  TR1 = 1 ;       // timer 1 run  TI=1;  
void ATE0(){ uchar i; for(i=0;i<sizeof(TC_ATE0)-1;i++) {send_uart(TC_ATE0);}  send_uart(0X0D);  send_uart(0X0A); TC35_CON=RST;} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
Li_Lei
1楼-- · 2019-03-24 22:08
是不是共用了定时器呀
impaler
2楼-- · 2019-03-25 01:37
步进电机,不需要定时器的
只用一个定时器来初始化串口,然后用串口来发送AT指令和接收gsm短信,然后判断短信内容,相符的话就调用步进电机函数。

串口初始化的原理是什么啊
为什么会影响子函数的调用呢
jishuaihu
3楼-- · 2019-03-25 04:51
很显然,你接收的指令不对,所以电机不转。检查一下收短信的函数。

一周热门 更多>