资源简介
PROTEUS仿真
20路PWM控制舵机
VB上位机串口控制
学习机器人,工业控制的朋友可不要错过
代码片段和文件信息
/******************************************
创建时间 2005-5-13
芯片型号 : M8
采用内部RC: 8.0000Mhz
******************************************/
#include
#include
#include “me.h“ //自定义的通用io简化位操作
void timer0_init(void);
void port_init(void);
void init(void);
void UART_init(void); //串口初始化程序
void UART_rx(void); //串口接收中断函数
void send_text(unsigned char *s); //字符串发送函数
void sendchar(unsigned char c); //字符发送函数
void dog_init(void); //初始化看门狗
unsigned char RX_data[4]={0}; //串口接收的数据
unsigned char RX_counter=0; //串口接收到的字节数计数器
unsigned char pwm1pwm2pwm3pwm4pwm5pwm6pwm7pwm8pwm9pwm10pwm11pwm12pwm13pwm14pwm15pwm16pwm17pwm18pwm19pwm20; //分别为20个pwm的值
unsigned char count; //pwm定位变量
void main(void)
{
//OSCCAL=0xAA; //系统时钟校准,不同的芯片和不同的频率
init();
while(1)
{
WDR(); //拼命喂狗
if(RX_counter==4) //收到一个完整的命令信息
{
RX_counter=0; //清除串口接收到的字节数计数器
if((RX_data[0]==‘S‘)&&(RX_data[3]==‘E‘))//判断头尾是不是符合
{
CLI(); //关闭中断,开始判断数据
switch(RX_data[1])
{
case 0x01:
pwm1=RX_data[2];
break;
case 0x02:
pwm2=RX_data[2];
break;
case 0x03:
pwm3=RX_data[2];
break;
case 0x04:
pwm4=RX_data[2];
break;
case 0x05:
pwm5=RX_data[2];
break;
case 0x06:
pwm6=RX_data[2];
break;
case 0x07:
pwm7=RX_data[2];
break;
case 0x08:
pwm8=RX_data[2];
break;
case 0x09:
pwm9=RX_data[2];
break;
case 0x0a:
pwm10=RX_data[2];
break;
case 0x0b:
pwm11=RX_data[2];
break;
case 0x0c:
pwm12=RX_data[2];
break;
case 0x0d:
pwm13=RX_data[2];
break;
case 0x0e:
pwm14=RX_data[2];
break;
case 0x0f:
pwm15=RX_data[2];
break;
case 0x10:
pwm16=RX_data[2];
break;
case 0x11:
pwm17=RX_data[2];
break;
case 0x12:
pwm18=RX_data[2];
break;
case 0x13:
pwm19=RX_data[2];
break;
case 0x14:
pwm20=RX_data[2];
break;
default:
SEI(); //错误时打开中断,以便发送错误信息
send_text(“ER“); //范围超出20个pwm,就发出大写字母“ER“
break;
}
SEI(); //恢复中断允许
send_text(“OK“); //判断处理完毕返回ok;
}
}
}
}
void init(void)
{
CLI(); //disable all interrupts
port_init();
timer0_init();
TIMSK = 0x01; //定时器中断源
UART_init();
SEI(); //re-enable interrupts
}
void port_init(void)
{
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x7F;
PORTD = 0x00;
DDRD = 0xFF;
}
void send_char(unsigned char c) //发送单字符函数
{
while (!(UCSRA&(1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5506 2007-04-09 01:24 舵机\code\A.cof
文件 5274 2007-04-09 01:24 舵机\code\A.dbg
文件 2843 2007-04-09 01:24 舵机\code\A.hex
文件 11 2007-04-09 01:24 舵机\code\A.lk
文件 23141 2007-04-09 01:24 舵机\code\A.lst
文件 499 2007-04-09 01:24 舵机\code\A.mak
文件 3199 2007-04-09 01:24 舵机\code\A.mp
文件 1264 2007-04-09 01:24 舵机\code\a.prj
文件 49 2007-04-09 01:26 舵机\code\A.SRC
文件 7016 2005-05-13 23:59 舵机\code\BACKUP\m8_pwm.c.050513235956
文件 7037 2007-04-09 00:49 舵机\code\BACKUP\m8_pwm.c.070409004916
文件 7037 2007-04-09 00:50 舵机\code\BACKUP\m8_pwm.c.070409005054
文件 7057 2007-04-09 00:53 舵机\code\BACKUP\m8_pwm.c.070409005314
文件 7059 2007-04-09 01:06 舵机\code\BACKUP\m8_pwm._c
文件 1751 2007-04-09 10:36 舵机\code\DC.PWI
文件 86943 2007-04-09 01:15 舵机\code\Last Loaded DC.DBK
文件 7020 2007-04-09 01:08 舵机\code\m8_pwm.c
文件 167 2007-04-08 22:42 舵机\code\m8_pwm.c_cbf
文件 50690 2007-04-09 01:24 舵机\code\m8_pwm.lis
文件 13219 2007-04-09 01:24 舵机\code\m8_pwm.o
文件 4059 2005-04-22 01:15 舵机\code\me.h
文件 16364 2011-04-08 17:37 舵机\schemetic.pdf
文件 15044 2011-04-08 17:38 舵机\上位机.rar
文件 150743 2007-04-09 10:36 舵机\未命名.JPG
文件 85999 2007-04-09 10:33 舵机\舵机.DSN
目录 0 2011-04-09 14:25 舵机\code\BACKUP
目录 0 2011-04-09 14:25 舵机\code
目录 0 2011-04-09 14:25 舵机
----------- --------- ---------- ----- ----
508991 28
............此处省略1个文件信息
- 上一篇:vb 获取任意程序窗体句柄
- 下一篇:汉英文字图片识别vb编程
评论
共有 条评论