关于单片机C语言编程的一个小问题 20

我在编写一个程序,遇到一个小麻烦请问大家一下e=P2;if(e==0x00){a=667;}else{a=1500;}意思是如果P2口的值为零,则a=667,否则a=15... 我在编写一个程序,遇到一个小麻烦请问大家一下
e=P2;
if(e==0x00){a=667;}
else{a=1500;}
意思是如果P2口的值为零,则a=667,否则a=1500,但是程序经过测试发现这个地方不成功,请高手指点下啊 新注册的号也就这点分。。。
# include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint a,b,c,d,e,f;
sbit p02=P0^2;
sbit p03=P0^3;
sbit p37=P3^7;
void delay(uchar i)
{
uchar j,l;
for(;i>0;i--)
for(j=202;j>0;j--)
for(l=81;l>0;l--);
}
void timer0(void) interrupt 1 using 1
{p02=!p02;
c=20000-c;
TH0=-(c/256); TL0=-(c%256);
if(c>=500&&c<=2500)c=a;
else c=20000-a;
}
void timer1(void) interrupt 3 using 1
{p03=!p03;
d=20000-d;
TH1=-(d/256); TL1=-(d%256);
if(d>=500&&d<=2500)d=b;
else d=20000-b;
}
void main(void)
{TMOD=0x11;
p02=1;
p03=1;
a=2500;
b=1000;
c=a;d=b;
TH0=-(a/256); TL0=-(a%256);
TH1=-(b/256); TL1=-(b%256);
EA=1;
ET0=1; TR0=1;EX0=1;EX1=1;
ET1=1; TR1=1;
PX0=0;PX1=0;PT1=1;PT0=1;
for(;;)
{
e=P1;
if(e==0x00){a=1500;}
else {a=1000;}
delay(15);
}
}
这个就是代码了 是通过调节PWM波的占空比来改变舵机角度的,经过多方面的测试,就是最后那个地方a的值返回不过去。也就是最后一个FOR循环里面有问题
展开
 我来答
junqimiao
2011-10-14 · 超过12用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:31.9万
展开全部
变量虽然定义的不规范,但是不会影响到程序的正常运行。e最好定义为uchar型,因为P1口就8位,最大0xff,255,不会让uchar溢出。但是你这里并不影响。
个人觉得是你e=P1这里,可能你根本就没读出P1口的值,所以e始终是一个值,a也就只有一个值了。
你循环前面那些定时器的初始化之类的,自己保证能进中断,因为之后你是要用到a的。

不成功的意思是我用单片机测试时 P2口变化时a的值是不变的???
你测试P2干嘛,你用的不是P1嘛。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友462af17
2011-10-13 · TA获得超过1279个赞
知道大有可为答主
回答量:1379
采纳率:100%
帮助的人:1214万
展开全部
最好给出完整的代码给大家看看,另外,你能通过点灯、串口打印等方式将e的值显示出来吗?这样就有助于调试了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wldason
2011-10-13 · TA获得超过116个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:90.1万
展开全部
你定义了a为什么变量?因为a的数值超过了255,所以你一定要定义:unsigned int a;如果你定义:unsigned char a;肯定是不成功的。char是字节,int是双字节。
更多追问追答
追问
#define uchar unsigned char
#define uint unsigned int
uint a,b,c,d,e,f;
这是我的定义呢
追答
定义好象没有问题。你说不成功什么意思。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大厂京
2011-10-13 · 超过26用户采纳过TA的回答
知道答主
回答量:365
采纳率:0%
帮助的人:134万
展开全部
打酱油。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式