单片机流水灯的C原理

单片机中bit和sbit有什么区别

bit映射到IO口(P1^1这种IO口的“位”)
bit在RAM中的可位寻址空间中,一般用作程序判断的标志位。
你可以认为它们一个对外(sbit),一个对内(bit)。
#include <REG51.h> //51头文件
#define DY_PORT		P1 //设置LED连接的I/O组
#define DY_SPEED	100 //设置每一个明亮级的停留时间(值域:0~65535)
bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED
#define [代替名]	[原名]  //用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1
sbit  [自定义名] = [系统位名] ; //自定义系统位名。例:sbit Add_Key = P3 ^ 1;
unsigned char [自定义名] ; //定义一个0~255的整数变量.例:unsigned char a;
unsigned int [自定义名] ; //定义一个0~65535的整数变量
void delay (unsigned int a){ // 1ms延时程序
	unsigned int i;
	while( --a != 0){
		for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600  
	}   				   		 //AT89C51单片机在外部晶振为12MHz时i值上限为125
------------------------------------------------------------------------------------------------------------------
void main(void){
	unsigned int i;
	unsigned int temp;
	while(1){
    	temp=0x01;
    	for(i=0;i<8;i++){ //8个流水灯逐个闪动
     		DY_PORT=~temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp<<=1;
    	}
		temp=0x80;
		for(i=0;i<8;i++){ //8个流水灯反向逐个闪动
    		DY_PORT=~temp;
    		delay(DY_SPEED);   //调用延时函数
    		temp>>=1;
   		}
    	temp=0xFE;
		for(i=0;i<8;i++){ //8个流水灯依次全部点亮
     		DY_PORT=temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp<<=1;
    	}
   		temp=0x7F;
   		for(i=0;i<8;i++){ //8个流水灯依次反向全部点亮
     		DY_PORT=temp;
     		delay(DY_SPEED);   //调用延时函数
     		temp>>=1;
    	}
	}
}
/*********************************************************************************************/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值