首页 > 编程知识 正文

单片机需要c语言基础吗(单片机c语言程序设计)

时间:2023-05-04 16:45:26 阅读:74019 作者:4132

驱动6路电机的开关和行走,因为驱动6个电机,所以不能控制一个电机直接关闭ET0,所以想把flag用作中断开关

#包含

类型无符号字符字节;

类型无符号在word中;

字节标志1;

字节缓存,计数;

sbit DIR=P0^5;

//sbit SLP=P1^0;

sbitflag=P2^7;

sbit STEP=P0^4;

sbit EN=P0^0;

sbit M1=P0^1;

sbit M2=P0^2;

sbit M3=P0^3;

//sbit EN=P1^3;

语音时间r0 init (语音)//100微秒@11.0592MHz

{

AUXR |=0x80; //计时器时钟1T模式

TMOD=0xF0; //设定计时器模式

TL0=0xAE; //设定计时器初始值

TH0=0xFB; //设定计时器初始值

TF0=0; 清除//TF0标志

TR0=1; //计时器0开始计数

EA=1;

//ET0=1;

}

语音识别(void )//9600bps@11.0592MHz

{

PCON=0x7F; //波特率不会加倍

SCON=0x50; //8位数据、可变波特率

AUXR |=0x40; //计时器1个时钟为Fosc,即1T

AUXR=0xFE; //串行端口1选择计时器1作为波特率发生器

TMOD=0x0F; //清除计时器1模式位

TMOD |=0x20; //将计时器1设置为8位自动重装方式

TL1=0xDC; //设定定时初始值

TH1=0xDC; //设定计时器重载值

ET1=0; //计时器1禁止中断

TR1=1; //开始计时器1

ES=1;

}

void init () )

{

EN=0;

M1=1;

M2=0;

M3=0;

}

欢跃延迟(wordn )。

{

WORD x;

wile(n---- ) )。

{

x=5000;

while(x----;

}

}

void D1 () ) )

{

if(cache==0xa5 ) ) ) )。

{

TR0=0;

ET0=0;

cache=0;

}

if(cache==0x50 ) ) ) )。

{

TR0=1;

ET0=1;

DIR=1;

cache=0;

flag1=0;

}

if (! 标志)

{

DIR=0; //向电动机方向移动

}

}

是语音发送(字节日期)

{

SBUF=dat; //发送当前数据

while (! 钛; //等待上一个数据的发送完成

TI=0; //清除发送标志

}

Void主() )

{

Timer0Init (;

init (;

UartInit (;

while(1)。

{

D1 ();

//DIR=1;

//flag1=1;

//if (标志1 ) ) )。

{

if (! 标志)

{

dlay(1;

if (! 标志)

{

DIR=1;

dlay(500;

}

}

() /

}

}

void timer0(中断1 )

{

//count;

/*if(flag1==1) ) () ) ) ) ) ) ) ) )。

{

步骤=0;

}

if(flag1==2) )

{

STEP=~STEP;

() /

STEP=~STEP;

//if (计数=100 ) )

//{

//count=0;

//send(0x52;

//}

/*if(flag==1) () () ) ) ) ) ) ) ) ) ) ) )

{

t1;

if(t1=35000 ) ) ) )。

{

t1=0;

flag=2; //计时完成=2

}

() /

}

voidio(interrupt4)

{

是if (射频)

{

RI=0;

cache=SBUF;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。