标题: 请求高手指点一下,51单片机程序 [打印本页]

作者: dianye8717944    时间: 2010-2-18 21:32
标题: 请求高手指点一下,51单片机程序

 

1.例题:用8个发光管演示出8位二进制数累加过程。

 

程序如下:
#include<reg52.h>  //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{     //delay(500);大约延时500ms.
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--); 
}
void main()      //主函数
{
 uchar a;
 while(1)        //大循环
 {
  a++ ;
  P1=~a;
  delay(200); 
 }
}

 

前面那个delay是延时,但主函数这部分我看不懂,请高手指点,谢谢啦


作者: ngyg12    时间: 2010-3-6 10:41

它这个程序的电路图可能是当p1口低电平是  LED 等被点亮.   8位2进制数累加既是:00000000— 00000001— 00000010— 000000011.....  11111111 .

 

  开始的a=0 , 进入循环后,a=1,  既是00000001, 取反后 p1=~a;则P1=FFFFFFF0, 因为是低电平有效  这个时候 P1口的8个LED灯的  最后一个被点亮。。然后

 以此类推。  呃,我个人认为是这样的哈, 呵呵 ,希望能帮到你.


作者: dianye8717944    时间: 2010-4-17 03:01
好久没上这个论坛,现在才看到,太谢谢你了
作者: li334505330    时间: 2010-5-31 21:06
很好,慢慢来,我也是新手




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