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;}
此帖出自小平头技术问答
只用一个定时器来初始化串口,然后用串口来发送AT指令和接收gsm短信,然后判断短信内容,相符的话就调用步进电机函数。
串口初始化的原理是什么啊
为什么会影响子函数的调用呢
一周热门 更多>