AD什么时候读取数据赋值给P1了,哪一句,
如果你用的是并行8位AD芯片转换的话 那么就需要8根数据线 而51单片机的IO作为GPIO口来使用的话 Px(P0弱上拉)都差不多,Px也是8位的而且支持字节操作,这样51单片机可以直接从Px寄存器中直接读到AD的值。并不一定非要是P1口。占用整个端口就是为了操作方便。
你这个程序是对的。但是有一点忽略了:
P1口作为输入口,应该先置为ff
完整程序:
while(1)
{
P1=0xff;//这个就是忽略的地方
i=P1;
P0=i;
}
另外,下面这个也可以,以经过软件仿真通过。
P1=P0;
AD芯片在adrd的“高-低-高”的变化之间,把数据送到了P1口
AD什么时候读取数据赋值给P1了,哪一句,
AD芯片在adrd的“高-低-高”的变化之间,把数据送到了P1口
c51单片机对p1口的操作是读还是写操作?
i = P1;这样,P1口的数据就被存储到了变量i中,也就完成了对P1口的读操作。若要向P1口输出数据,同样简单。你可以先定义一个变量,然后将其赋值给P1口,例如:unsigned char i;i = 0x01; \/\/ 输出一个特定的值 或直接:P1 = 0xFF; \/\/ 输出11111111 这样,P1口的数据就被改变了,即完成了...
如何从数据库里读出数据赋值给dataGridView各个相应位置 以下是源程序...
假如说你的数据读出来以后是“DataSet p1 = doa.select(se, "负荷点位置");”用一个DataTable table=new DataTable();table=p1.Tables[0];\/\/用Table来接收 第一种方法,直接绑定数据源 dataGridView1.DataSource=table; 一句代码就搞定 第二种方法,一行一行的赋值 for(int i=0;i...
如何对单片机P1口整体赋值,有几种方法
sbit P1.6=P1^6;sbit P1.7=P1^7;sbit P1.0=P1^0;P1.0=1;P1.1=1;P1.2=1;P1.3=1;P1.4=0;P1.5=1;P1.6=1;P1.7=0;着同样也达到了P1=0xf7;的效果。综合起来,给P1赋值有两种方法:1.总线法、2.位赋值法
为什么程序第5行已经给指针变量p1和p2赋值了,而在第9行还要给p1和...
因为你在循环里面有p1++和p2++,p1和p2的值发生了变化,所以在第9行重新赋值
请懂51单片机的朋友帮帮忙,谢谢了。
直接设置一个变量char dat读取数据:dat = P1^0,有时候可能要先向P1^0赋值0xff,然后才执行dat = P1^0;具体原因要看51单片机内部的IO引脚原理。如果您的IO管脚的数据是不断变化的,建议用二维数组去读取IO管脚的数据,然后在程序中对数组进行处理即可。
...但是当写入多个数据时,读出数据就不正确,求指教?
\/\/读数据的代码是这样的()void read_add(uchar address){ start();write_byte(0xa0);ack();write_byte(address);ack();\/\/dummy write start();write_byte(0xa1);ack();P1=read_byte();ack2(0);\/\/这个应答才正确 \/\/ack();这个应答不正确 P1=read_byte();ack2(1);delay();stop(...
指针变量a=10的赋值语句是?
故赋值有误 A)p1是一个指针变量,在使用时,指针变量前面加上星号*,代表该指针变量所指向的内容。故此选项是将p1和p2所指的内容相加,再赋给a,即a=10 C)指针可以赋值给指针,即执行完p2=p,之后,p2不再指向a,而是指向p所指的内容 D)同选项A,加法运算换成乘法运算,相当于a=25 ...
请高手帮忙修改一个VHDL 程序,急!!
报错的原因是因为你在两个不同的process(P1和P2)中都对同一个信号量D_OUT赋值了,而且还是在两个不同的时钟信号控制下,VHDL的语法检测当然不通了。你可以分别定义两个不同的信号量,在对应的process中赋值,然后在将值赋给D_OUT。
单片机程序中“P1DIR |=0x08 ”是什么意思?
P1DIR 为P1端口的方向寄存器,相互独立的8位定义了8条引脚的输入\/输出方向,0:I\/O引脚切换成输入模式;1:I\/O引脚切换成输出模式。通过设置它可以设置P1-7任意一个I\/O为输入输出模式。0x08=00001000,即设置P1.3口为输出模式,其余的口设置为输入模式。希望对你有用 ...