打印

新手,请教这个简单的c51程序,附上电路图。

[复制链接]
2091|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aliluya|  楼主 | 2007-1-23 18:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

问题:便已成功后烧入,但是不能实现功能,(晶体振荡器已经起振)请教问题出在哪里呢?
#include<reg51.h>
#include<absacc.h>

sbit pause=P1^7; 
sbit next=P1^6;  
sbit com1=P3^5;
sbit com2=P3^4;
void main(void)
{
P3=0xff;
if (com1==0)
    {
    next=0;
        while(com2==0)
        {
        pause=0;
        }
    }
while(1);
}

程序的目的:
mcu用at89c2051,P3.4,P3.5接电压检测芯片,当过压或欠压时HI(COM1)和LO(COM2)为低电位,
当HI为低电位时NEXT(P1.6)也为地电位点亮一下D2,
直到监测到LO(COM2)为低电位时Pause(P1.7)也为地电位点亮一下D3。

相关帖子

沙发
倚天剑| | 2007-1-23 19:14 | 只看该作者

while(1);

当com1 = 1时,不就到了死循环(while(1);)了?

使用特权

评论回复
板凳
aliluya|  楼主 | 2007-1-23 19:24 | 只看该作者

?

是的,只有=0时才会有后面的动作,

使用特权

评论回复
地板
aliluya|  楼主 | 2007-1-23 20:56 | 只看该作者

可能找到原因了#include<AT89x051.h>!
是不是也要初始化P1口?
在P3=0xff 之后加一条P1=0xff?
可否?
谢谢了!

使用特权

评论回复
5
chenlung| | 2007-1-24 08:55 | 只看该作者

你复位电容是不是反了?

就是C5?

使用特权

评论回复
6
aliluya|  楼主 | 2007-1-24 19:19 | 只看该作者

hehe

确实放反了,
大家别只围观啊,帮帮忙啊,
继续求教!谢谢啊,

使用特权

评论回复
7
awey| | 2007-1-24 19:59 | 只看该作者

不是3.3A 是3.3V


void main(void)
{
P3=0xff;
while(1){
if (com1==0) next=0;
else next=1;
if(com2==0) pause=0;
else pause=1;
}
}

使用特权

评论回复
8
aliluya|  楼主 | 2007-1-24 20:48 | 只看该作者

谢谢帮忙,

如果按照这个,当过压或欠压时,D2H和D3都会一直亮着
,(应该是这样吧?)
但是我需要的是当检测到过压或欠压时,D2H和D3都只亮一下哦。
void main(void)
{
P3=0xff;
while(1){
if (com1==0) next=0;
else next=1;
if(com2==0) pause=0;
else pause=1;
}
}

使用特权

评论回复
9
emailli| | 2007-1-25 08:26 | 只看该作者

这样的程序只能用来学习,不适用!

结构不好!

你要的亮一下,可是没有一个点亮时间段。

就算亮了。你也看不到啊!

是否?

另外,这样写程序只是用来学习!

千万不要用来做产品!

使用特权

评论回复
10
aliluya|  楼主 | 2007-1-25 19:26 | 只看该作者

谢谢emailli的指教。

还有什么地方需要改进的呢?
谢谢。

使用特权

评论回复
11
fushaobing| | 2007-1-26 11:09 | 只看该作者

re

怎么只有点亮的指令,没有熄灭的指令?
如果是亮一下,为什么没有延时子程序?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

23

帖子

0

粉丝