1.C语言
基础数据类型
int:整型 123 -1 -2 -3 4字节 32bits 取值范围: -2^31~2^32-1
char: 字符型 abc 1字节 8bits
float:浮点型 3.1415926 4字节 32bits
int a = 10;
char i = 'a';
float b = 3.14;
2.语句
if() 0:假 非0:真
for(int i = 0;i < = 10;i++)
{
.......
}
while(1)
{
printf("250n");
}
do
i++
while()
switch(n)
case:1
.......
break;
3.编码流程
头文件:保存函数的定义
#include
printf();
函数定义:实现函数功能
(1):返回值 int char int*
(2):函数名 自定义且不冲突 printf() x My_print()
(3):参数列表 swap(int a,int b)
(4):函数体 函数具体实现
void swap()
{
}
int main()
{
return 0;
}
编码规范:
顶格
Tab:缩进
{}:成对出现,各占一行
任务:LED流水灯 D1~D8
单片机识别:
1.更换单片机
2.安装包里的驱动
3.驱动精灵(不推荐)、Intel Driver & Support Assistant(推荐)
4.百度本电脑型号的驱动
1.GPIO引脚
什么是GPIO引脚?
General Purpose Input Output 通用功能的输入输出引脚
引脚就是从芯片内部引出的功能可以复用的一根线。
GPIO的内部结构
Outout:
CPU -> 0 -> 外部引脚就会输出一个低电平
CPU -> 1 -> 外部引脚就会输出一个高电平
Input:
外部引脚输入信号(电压值)高电平 -> 1 -> CPU
外部引脚输入信号(电压值)低电平 -> 0 -> CPU
C51有四组GPIO,每组有8pins 4*8 = 32
P0组
寄存器(字节)地址0x80,位地址0x80~0x87
P0.0 0x80
P0.1 0x81
...
P0.7 0x87
例子:假如要给P0组8个引脚高电平
0xFF -> [0x80]
给P0.7一个低电平
0 -> [0x87]
P1组
寄存器地址 0x90
P2组
寄存器地址 0xA0
P3组
寄存器地址 0xB0
2.C代码如何实现的呢?
C51编译器新增了两个关键字
sfr:special Function register 特殊功能寄存器
声明一个“特殊功能寄存器变量”
语法:
sfr 寄存器变量名 = 寄存器地址
如:
sfr P0 = 0x80;
P0 = 0xFF;
sfr sb250 = 0x80;
sb250 = 0xFF;
sbit
sbit 用来声明“特殊功能寄存器变量的某一个bit位变量”
语法:
sbit 位变量名 = 特殊功能寄存器地址 ^ 第几位
or
sbit 位变量名 = 特殊功能寄存器变量名 ^ 第几位
如:
P1.0
sbit P1_0 = 0x90^0
P1.7
sfr P1 = 0x90;
sbit P1_7 = P1^7;
3.位操作
C语言位操作
把整数化为bit位序列,然后再进行操作
左移
x << n
把X整体左移 n bit位,原来最左边的 n bit 直接丢弃(discards)
最右边空出的n 位,直接补0
如:
5 << 3
00101000 0x28
右移
x >> n
把X整体右移 n bit位,原来最右边的 n bit 直接丢弃(discards)
最左边空出的n 位,直接补0
& 按位与
a b a&b
1 1 1
1 0 0
0 1 0
0 0 0
5&3 = ?
00000101
& 00000011
00000001
| 按位或
a b a|b
1 1 1
1 0 1
0 1 1
0 0 0
5|3 = ?
00000101
| 00000011
00000111
^按位异或:不同为1,相同为0
a b a^b
1 1 0
1 0 1
0 1 1
0 0 0
5^3 = ??
00000101
^ 00000011
00000110
~ 按位取反
0 -> 1
1 -> 0



