标题: [求助]C51里怎么实现P1口输入啊? [打印本页]

作者: lsfxyz    时间: 2012-2-1 20:47
标题: [求助]C51里怎么实现P1口输入啊?

我在做AD实验时,用C语言的程序里,把P1置1了,发现还是不能当做输入,具体该怎么做呢?下面是我写的程序:

硬件:AD输出接到P1,同时也接到8个LED。led可以显示不同的灯亮。我想把这些值从P1输入,然后从P0输出,从P0口输出后面的也解决了。只是P1=1后,还是没有 能 把AD的值从P1输入(这就是问题)。请问程序里有什么问题?

该怎么修改?不胜感激!
  

#include<reg52.h>
sbit wr=P3^6;
sbit rd=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
#define uchar unsigned char
#define uint unsigned int
uchar disnum,count,bai,shi,ge;
uint m,n;
display(uchar,uchar,uchar);
delay(uchar);
uchar code tabledu[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void init();
void start();
void main()
{
 P1=0xFF; //P1 gao?
 delay(500);
 while(1)
  { 
   init();
   start();
   delay(2);
   rd=0;
   delay(2);
   rd=1;  
      delay(2);
 //P0=P1;
  disnum=P1;//?????P1??
   bai=disnum/100;
   shi=disnum%100/10;
   ge=disnum%100%10;
   display(bai,shi,ge); 
  }
}
void init()//
{ 
 P0=0x7f;
 dula=0;//
 wela=0; 
}
void start()
{ 
 wr=1;
 wr=0;
 wr=1;
}
delay(uchar x)
{
 for(m=10;m>0;m--)
  for(n=x;n>0;n--);
}
display(uchar bai,uchar shi,uchar ge)
{
  P0=0x7f;//0111 1111,make ADC's CS low.
  wela=1;
  wela=0;
 P0=tabledu[bai];
 dula=1;
 dula=0;
 P0=0x7e;//0111 1111,make ADC's CS low.
 wela=1;
 wela=0;
 delay(1);
  P0=0x7f;
  wela=1;
  wela=0;//
 P0=tabledu[shi];//
 dula=1;
 dula=0;
 P0=0x7d;
 wela=1;
 wela=0;
 delay(1);//lesson4_5
 
  P0=0x7f;
  wela=1;
  wela=0;//
 P0=tabledu[ge];//
 dula=1;
 dula=0;
 P0=0x7b;
 wela=1;
 wela=0;
 //delay(1);
}


作者: lsfxyz    时间: 2012-2-1 20:58
没人帮忙吗?
作者: admin    时间: 2012-2-2 11:00
8个LED 不能同时接到p1的,这样会发生错误
作者: lsfxyz    时间: 2012-2-4 13:38

怎么实现输入呢?


作者: 阮天宇    时间: 2012-2-10 15:17
以下是引用lsfxyz在2012-2-4 13:38:46的发言:

怎么实现输入呢?

我是菜鸟。轻拍砖!

硬件电路已经定了。接口都定了。怎么输入输出只能用接好的口。

光盘自带的电路图,要按照电路图来写程序吧。

假如想自由发挥,得自己焊板子了。

多研究研究电路图。电路是基础,软件可以改,但是开发板是已经定了,不能越过开发板去随意写程序。

我也是刚学,不过有一定的数电模电基础。有机会砸门多交流交流啊。

嘿嘿。

qq757084734






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1