最近学习的单片机出现了一点点的小问题不懂,在此亮出来。

有些单片机程序我看不懂在这里一并写出来请教一下:

1,单片机控制流水灯按照二进制数相加,采用p1端口,while(1){
D++;P1=~P1;delay(500);}这里边的D++,是什么意思。网上说这个是采用的ascii码,可是根据这个算出来也不是等于00000001啊,那还为什么按照这个相加,还有一个是即便转换成这个数,为什么单片机就会按照这个自己完成相加的任务(他是按照什么规定来划分这个八位数怎么给这八个端口)。
while(1) {
a=00000001;
a=a++; P1=a; delay(500);}
这一个也实现了上边的功能
下边这一个同样也实现了上边所说的演示二进制相加的过程
for(num=0;num<16;num++)
{
P1=num;
} 在这里边p1端口直接赋予的值是个十进制的啊,在内部怎么转换成的二进制然后又是怎么把这几个数赋给他的八个端口呢,这些都有一个共同的规则吗?
这三种都能实现同样的功能,我却搞不明白是为什么,一直就这样用着,今天有点时间一并问一下,免得以后不懂闹笑话。呵呵

第1个回答  2011-12-30
把一个数给到一个端口,不管这个数的类型是二进制,十进制,还是十六进制,数值的大小都会在端口以二进制的方式表示出来。内部怎么转换成不用管它,主要是编译器编译,由内部硬件电路实现的。
如 P0=21,则P0口的输出脚从P0^7 -- P0^0 分别就是 00010101 (也就是21的二进制数)追问

这也就是说编译器会实现十进制转换为二进制。

第2个回答  2011-12-30
这里的第二种和第三种按我的理解应该是一样的,只是范围不同。对P1口直接赋值十进制没有什么不妥啊,这些都只是进制问题,最终都是二进制,并且P1口是可以位寻址的,你写P1=8,就是P1口8位为00001000,这个和P1.3=1是一样的。至于第一种,我不明白你的D是什么?追问

其实最原先我也不知道,但是这个程序的确可行,这个是采用的ASCII码,现在我也不明白!

追答

你就直接这样就能运行???前面没有任何的关于D的说明???

追问

#include
void delay(int z);
void main()
{
int D;
while(1)
{
D++;
P1=~D;
delay(500);
}
}
void delay(int z)
{ int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

追答

我晕呢,你最开始的贴出来错了,P1=~P1,我说看不懂。这个跟你什么ascii没有关系吧,事实上这个跟下面那两种是一样的,只是看你的二极管接的是共阴还是共阳,如果是共阳的话就要用第一种,是共阴的话就要下面两种。

追问

啊,明白了

本回答被提问者采纳
第3个回答  2011-12-30
第一个的D不明白是个什么。
第二个和第三个程序表现形式不同,但是在计算机内部都是用二进制表示的,硬件应该是P1端口的8根口线和8个灯是一一对应的。
不知道理解的对不对,你对照硬件原理图一看就明白了。
第4个回答  2011-12-30
加一减一

学期末了老师让写一篇单片机学习心得,哪位大神可以帮帮我?
学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编指令系统或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。 一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中 ,连连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却...

关于单片机UART通信的小问题
2.你把中断标志位清零不会将缓冲区的数据清零,但是如果你不把标志位清零,就算缓冲区接收完一个完整的数据,也不会将数据保存到sbuf寄存器中,也不会产生中断请求。3.单片机的波特率和外设的波特率一致的话,就不会存在接收速度小于外设数据传送速度而导致数据丢失的情况,波特率在一定的偏差内可以自动对...

单片机原理怎么能够学好?
首先:你对必须有电脑,我想你能上网电脑不是大问题,况且学单片机也是离不开电脑的,没电脑你还是别动那个脑筋了!视频教程应该听说过吧!对了,就是视频教程,这样我们就不必看那摧眠的书了,就象看电视一样的看教程,好的教师讲的课程比较通俗易懂,容易理解,也就不象书那样容易摧眠了.一旦你听得下去了,你的兴趣就更...

想问一下,大一学生学做单片机开发的需要准备哪些知识?关键是有好多东西...
学习单片机主要的就业是去做硬件工程师,这样如果你的水准一定要有足够的水准才能进入大企业,这对一般的大学生来说不简单,光是你能做到盖大楼的地基打好,在毕业之前就要脱掉一层皮啊,努力是必须的,但是人际和社会关系的处理也得努力学,所以时间总是不够用滴……其实去参加通信基站的建设的更好就业...

单片机 学习资料
说的好多···那就一点点解决~单片机与步进驱动间纯数字传输,可以直连;单片机与超声波模块间纯数字传输,可以直连;具体的电容三极管等其他原件,通常都是在模块内部,比如单片机电源滤波,继电器扩流等;在数字系统中,通常要在板子上对电源加电容滤波,如果不计成本每个芯片的电源引脚都应该加小电容如...

数码管动态显示的时候不该亮的地方也亮了,比该亮的地方暗一点,是...
解释:当你显示第一个数码管,这时段码和位码都是开启的,当显示完第一个数码管,由于段码连在一起,没有关闭段码,这时开启第二位位码,在交替的瞬间第二个数码管上就显示第一个的数字,于是就出现第一位的暗影,假如第一位是2,第二位是1,这样显示1的数字不该亮的部分出现了2的暗亮,如果多个数码管扫描的快,...

蓝桥杯的单片机比赛难不难啊,我大一的,被拉去参加了,好担心
最近论坛上发了一个连载帖子——吴鉴鹰单片机实战项目精讲,因此受到不少网友的关注,在这里吴鉴谢谢各位网友的支持、关心和信任。在帖子中留了几个群号,有两千多读者加了群,通过QQ向我询问了很多问题,如果在工作不是太忙的时候我看到了就会回答,但是有时候做项目太忙就没时间解答。为此,在这里应群...

...照着网上视频学习 但是学习板不一样 我的916u 一点点学习_百度...
看了下面的才注意到图中P2.0是流水灯的总开关,三极管应该起到开关作用。P2.0应置低电平 想点亮那个灯只要给那个I\/O引脚低电平即可,如想让P0.0 P0.2 P0.4 P0.6点亮,程序如下:include reg52.h void main(){ P2.0=0;P0^0=0;P0^2=0;P0^4=0;P0^6=0;while(1){ } } ...

我是一个电工(大专毕业)现在工作已经3年了,由于专业知识有限现在工作遇 ...
对于这样的控制问题,最重要的数学工具和描述语言就是微积分和线性代数。而且这两门课是几乎任何近代科学技术的基础工具,其重要性再怎么强调也是不为过的(就是说,如果你在低年级的时候把这两门武功练得纯属了,到了以后学起很多课程都会觉得巨爽)。还有一门重要的武功,对于我们练"自控派"的控制原理以及"信号与系统...

单片机的仿真问题
初学51的话,硬件仿真成本太大,可以多用用软件仿真,但是肯定不能完全只用软件仿真,还是要实际运行一下看效果的;不用仿真器,用串口帮助调试也是很不错的选择,在感觉有问题的地方用串口发点数据,证明前面没有卡死或者直接就发单片机的状态,调试起来也很快 参考资料:http:\/\/baike.baidu.com\/view\/...

相似回答
大家正在搜