51——流水灯

51——流水灯

概念定义

1. 宏定义

#define uchar unsigned char (不加分号,预处理语句)
typedef uchar unsigned char (加分号)

2. 延时函数

void delay(unsigned int z)
{
	unsigned int x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--); 		
} 

给形参z赋值,如延时100ms,delay(100);

3. 循环移位函数

#include <intrins.h>
void test_crol (void) {
  unsigned char a;
  unsigned char b;
  a = 0xFE;      //1111 1110
  b = _crol_(a,1); // b now is 0xFD  1111 1101
}

字符型循环左移:_ crol_
字符型循环右移:_ cror_

  a = 0xFE;  //1111 1110
  b = a<<1; // 1111 1100

循环移位函数和左移/右移运算符区别:
循环左移是把最高位移到最低位上,左移运算符是把最高位移除最低位补0

4. 注意

函数先声明,再使用

代码

1. 流水灯代码

#include <reg52.h>
#include <intrins.h>//crol函数需要

#define uint unsigned int
#define uchar unsigned char

uchar temp;//LED灯相关变量

void delay(uint z) 	
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--); 		
}

void main()	//main函数自身会循环
{
  temp = 0xfe;
  P1 = temp;//1111 1110
  delay(100);
  while(1)
  {
   temp = _crol_(temp,1);
   P1 = temp;
   delay(100);
  }
}

2. debug

在这里插入图片描述机器汇编语言,不要也罢,直接叉掉!

在这里插入图片描述
修改晶振(先点那个锤子
在这里插入图片描述
选择io口
在这里插入图片描述
看debug的作用

硬件仿真

问题

神特么单片机小精灵???
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值