找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4807|回复: 3
打印 上一主题 下一主题
收起左侧

请求高手指点一下,51单片机程序

[复制链接]
跳转到指定楼层
楼主
ID:21151 发表于 2010-2-18 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 

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是延时,但主函数这部分我看不懂,请高手指点,谢谢啦

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:17233 发表于 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灯的  最后一个被点亮。。然后

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

回复

使用道具 举报

板凳
ID:21151 发表于 2010-4-17 03:01 | 只看该作者
好久没上这个论坛,现在才看到,太谢谢你了
回复

使用道具 举报

地板
ID:24218 发表于 2010-5-31 21:06 | 只看该作者
很好,慢慢来,我也是新手
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表