问答1 问答5 问答50 问答500 问答1000

跪求六足机器人程序 紧急求助越快越好

提问网友 发布时间:2024-04-05 15:59
声明声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2024-04-11 03:50
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

/*
变量定义
*/
uchar key_stime_counter,hight_votage=15,timeT_counter;
bit key_stime_ok;

/*
引脚定义
*/
sbit control_signal=P0^0;
sbit turn_left=P3^4;
sbit turn_right=P3^5;

/*****************************************************************
名称:定时器0初始化
功能:20ms定时,11.0592M晶振
初值=65536-11059200*0.02/12=65536-18432=47104=0xB800 20ms
初值=65536-11059200*0.0001/12=65536-92.16=64430=0xFFA3 0.1ms
*****************************************************************/
void TimerInit()
{
control_signal=0;
TMOD=0x01; //设置定时器0为工作方式1
EA=1; //开总中断
ET0=1; //定时器0中断允许
TH0 = 0xFF; //定时器装初值
TL0 = 0xA3;
TR0=1; //启动定时器0
}

/**********************************************
定时器0中断服务函数
***********************************************/
void timer0(void) interrupt 1 using 0
{
TH0=0xFF;
TL0=0xA3; //定时器0重新装入数值

if (++key_stime_counter>=200)
{
key_stime_counter=0;
control_signal=1;
key_stime_ok = 1; // 20ms到
timeT_counter=0;
}

if (key_stime_ok&&(++timeT_counter>=hight_votage))
{
key_stime_ok=0;
timeT_counter=0;
control_signal=0; // hight_votage*0.1ms到
}
}

/*********************************************
名称:键盘扫描
功能:在按键稳定期内判断键值,并返回键值
**********************************************/
uchar keyscan(void)
{
static char key_state = 0;
static char key_value = 0;
uchar key_press, key_return = 0;
key_press=turn_left&turn_right; //读按键I/O电平

switch (key_state)
{
case 0 : // 按键初始态
if (key_press==0) key_state = 1; // 键被按下,但需要确认是否是干扰
break;
case 1 : // 按键确认态
if (key_press==0)//如有键按下则不是干扰,判断键值
{
if(turn_left==0) //判断是哪一个按键被按下
key_value=1; //按键较多时可采用switch选择结构
else if(turn_right==0)
key_value=2;
else
key_value=0;

key_state = 2; // 状态转换到键释放态
}
else
key_state = 0; // 按键已抬起,属于干扰,转换到按键初始态
break;
case 2 :
if (key_press==1)
{
key_return=key_value;//按键释放后再输出键值,如果按下键就输出则可省略key_value
key_value=0;
key_state = 0; //如果按键释放,转换到按键初始态
}
break;
}

return key_return; //返回键值
}

/*********************************************
名称:按键处理
功能:
**********************************************/
void key_operation(void)
{
switch (keyscan()) //根据键值不同,执行不同的内容
{
case 1:
hight_votage-=1;
if(hight_votage<5)
hight_votage=5;
break;
case 2:
hight_votage+=1;
if(hight_votage>25)
hight_votage=25;
break;
default :
break;
}
}

//LED显示函数
void diplay()
{
if(hight_votage>=5&&hight_votage<=7) P1=0xFD; //1灯亮,舵机接近或到达右转极限位置
if(hight_votage>7&&hight_votage<=10) P1=0xFB; //2灯亮
if(hight_votage>10&&hight_votage<=13) P1=0xF7; //3灯亮
if(hight_votage>13&&hight_votage<=16) P1=0xEF; //4灯亮,舵机到达中间位置
if(hight_votage>16&&hight_votage<=19) P1=0xDF; //5灯亮
if(hight_votage>19&&hight_votage<=22) P1=0xBF; //6灯亮
if(hight_votage>22&&hight_votage<=25) P1=0x7F; //7灯亮,舵机接近或到达左转极限位置
}

/*主程序*/
void main(void)
{
TimerInit();
while(1)
{
key_operation();
diplay();
}

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

孟佳个人资料孟佳都有什么作品 刘炳森的印章是真的吗? 这个印章是谁的呀!哪个时代的人,谢谢啦! 刘炳森印章有几个 济南一名幼童冲入车流被路过的群众合力救回,群众们身上有哪些可贵品质... 常州328 312路末班车是几点 从常州出发的 带有陈字的句子篇一 ...classroom,对不对啊?还有“多媒体教室”,“多功能厅”怎么翻译啊... 电脑桌面消失了? 85加10等于几 0.85加10个点是多少 85元加10个点的税是多少 爱宝时EPOS3433.228.20.16.55手表档次如何、怎么样? 爱宝时EPOS4430.120.22.55.15手表档次如何、怎么样? 爱宝时EPOS4390.152.20.16.15手表档次如何、怎么样? 爱宝时EPOS4391.832.20.25.30手表好不好、多少钱? 爱宝时EPOS3390.152.20.10.30手表好不好、多少钱? ...章丘市、平阴县、济阳县、商河县哪个地方中小学最多最集中?_百度知 ... 从十八局到天津市河西区环湖中路滨湖大厦怎么走 从环湖中路去河北区寿安街怎么坐车 1.6排量大众车后箱盖合页多少钱? 车门合页边凹陷两巴掌大修复多少钱!而且车门打不开 央视综艺盛典20130501期中和宋英杰比赛剪窗花的女主持人名字叫什么... 中央电视台海外记者部高丽萍中央电视台海外中心新闻部副主任简介_百度... 商丘高铁到曲阜东多少公里 蔡家坡去凤翔县灵山骑车怎么去 作文 假如我是一只候鸟 髋关节置换术后多久能下床行走 姓刘的和姓什么的结婚最好 现代人学习太极拳的原因有哪些呢? 为什么太极拳越来越受欢迎? 译码显示功能的测试和计数译码和显示功能测试的区别 zippo打 是什么 一摇控玩具车突然从旁边撞到一行驶的小车后轮上压坏了,对方要索赔_百 ... 山东中煤能源机械有限责任公司怎么样 微信红包没人领多长时间会过期? 限时被封了,又用该手机号重新注册一个,能找回以前的... 王丽正忙着打扫她的房间,用英文真么说 my mother is busy cleaning the room 为什么用cleaning 有什么语法... 限时被封了,又用该手机号重新注册一个,能找回以前的...