单片机p1做输入C语言,C51中P1具体要怎么置1,怎么实现把AD的值输入P1口呢?

博主在进行AD实验时遇到问题,尝试通过C语言将P1设置为输入,但未能成功从AD获取值。程序中P1被置1后,AD的值仍无法正常输入。代码显示已连接到8个LED并能显示不同亮度,但在P1作为输入方面遇到障碍。主要疑问在于如何正确设置P1以接收AD转换的输入值。
摘要由CSDN通过智能技术生成

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

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

该怎么修改?不胜感激。

#include

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);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值