目录
1宏定义
2函数的定义
3延时函数
4标准库函数中的循环移位函数
5循环移位函数与左移和右移运算符的区别
6实例
7keil中DeBug的用法
1宏定义
是预处理语句不需要分号
#define uchar unsigned char//此时uchar代替unsigned char
typedef是关键字
后面是接分号
typedef 已有数据类型 新的定义 ;
2函数的定义
c语言里面学过,跳过
3延时函数
通过软件延时,耗费cpu时间
void Delay(unsigned int x) //@12.000MHz
{while(x--)//循环里面是延迟1毫秒的时间
{
unsigned char i, j;i = 12;j = 169;do{while (--j);} while (--i);
}
}
4标准库函数中的循环移位函数
标准库函数intrins.h
字符型循环左移:_crol_
字符型循环右移:_cror_
#include<intrins.h>
void test_crol (void){
unsigned char a;
unsigned char b;
a=0xfe;//1111 1110
b=_crol_(a,1);//b=0xfd 1111 1101 最高位的1来到最低位
5循环移位函数与左移和右移运算符的区别
a=0xfe;//1111 1110
b=a<<1;//0xfc 1111 1100
区别是移位函数是最高位补到最低位,而位移运算符是补零
6实例
为了串口通信更精准,晶振使用11.0592
#include<reg51.h>
#include<intrins.h>#define unint unsigned int
#define unchar unsigned charunchar temp;void Delay(unint x) //@12.000MHz
{unchar i, j;while(x--)//循环里面是延迟1毫秒的时间
{i = 2;j = 239;do{while (--j);} while (--i);
}
}void main()
{temp=0xfe;P1=temp;while(1){temp=_crol_(temp,1);P1=temp;Delay(100);}
}
7keil中DeBug的用法
视频7讲了硬件仿真