学习笔记(一)"/>
粤嵌学习笔记(一)
问题的引入:
什么是单片机?
单片机又称之为单片机微型控制器,它不是完成某一个逻辑功能的芯片 ,
而是把一个计算机系统集成到一块芯片中去,
概括为一句话:
“微型计算机”
在一片集成电路芯片上,集成了中央处理器、和存储器以及I/O接口电路,
从而构成了单芯片微型计算机 , 简称单片机
任何一款单片机:
1、不管是复杂还是简单,微控制器的基本结构 : 内核 + 外设
2、内核通过寄存器控制外设 , 外设通过中断系统通知内核,内核
与外设之间通过总线传输数据 、 地址及控制信息。
3、基本程序设计:
读写寄存器 , 处理中断源 , 访问内部总线
=========================================================================
C语言复习:
C语言中什么为真 , 什么为假?
1 真 0 假
顺序结构:
代码安装从上到下的顺序执行
分支结构:
if(表达式为真)
{
执行表达式1
·····
······
·······
}
else
{
执行表达式2
}
循环结构:
while()
{
}
for( i = 0 ; i < ?····2 ; i++ ···· 3)
{
}
do
{
}while();
===========================================================================
单片机芯片
GPIO引脚
简单来说 , 51单片机有32个重要的引脚
分为 4 组 , 每组 8 个
4 组我们怎么命名?
P0:
寄存器的地址是 0x80 字节地址
位地址: 0x80 ~ 0x87
P0.0 0x80
P0.1 0x81
P0.2
p0.3 ····
····
P0.7 0x87
假设我要给P0这个寄存器一个高电平 ,怎么操作?
1111 1111 ---》 0x80 字节地址
假设我要给P0.5寄存器引脚一个低电平 怎么操作?
1111 0111 --》 0x80 字节地址
P1:
位地址:
0x90 ~ 0x97
P2:
位地址:
0xA0 ~ 0xA7
P3:
位地址:
0xB0 ~ 0xB7
我们要去判断某一个引脚他的电平为 1 还是 0?
unsigned char a = P0.1
if(a == 1)
{
}
else
{
}
=================================================================
/ ---------------- LED ---------------------/
那么我们学习51单片机 , 从LED开始
LED 灯:
我们的51开发板 , 一共配置了8个LED灯,
那么我们如何去知道8个LED灯对应的引脚?
那么如何点亮LED灯?
只需要把对应的引脚置为低电平 即可
如何设计程序?
引入对应的芯片头文件
#include <reg52.h>
如何定义一个引脚?
sbit LED_0 = P1^0;
sbit 是什么?
这是C51扩展的变量类型 , 是定义特殊功能寄存器的位变量, 是一种
类型定义
简单来说分三种:
1、sbit 位变量名 = 地址值
2、sbit 位变量名 = SFR 名称^变量地址值
3、sbit 位变量名 = SFR 地址值^变量位地址
特别注意:
sbit 只能在外部定义全局变量;
延时程序:
void delay_ms( unsigned int time)
{
while(time --)
{
for(int i = 0 ; i < 1000 ; i++);
}
}
练习:
编写一个流水灯程序
#include <reg52.h>sbit LED_0 = P1^0;int main()
{while(1){LED_0 = 0;}
}
作业:
1、写出另一种流水代码
#include <reg52.h>sbit LED_0=P1^0;
sbit LED_1=P1^1;
sbit LED_2=P1^2;
sbit LED_3=P1^3;
sbit LED_4=P1^4;
sbit LED_5=P1^5;
sbit LED_6=P1^6;
sbit LED_7=P1^7;void delay(unsigned int t)
{unsigned int i,j;for(i=t;i>0;i--)for(j=100;j>0;j--);
}main()
{
unsigned char w,i;while(1){w=0xfe;for (i=0;i<8;i++){P1=w; w<<=1;w=w|0x01; delay(100);}}
}
2、试着用按键写一个功能函数,实现按键控制某个LED灯的亮灭
#include <reg52.h>sbit LED_0 = P1^0;
sbit LED_1 = P1^1;
sbit LED_2 = P1^2;
sbit LED_3 = P1^3;
sbit LED_4 = P1^4;
sbit LED_5 = P1^5;
sbit LED_6 = P1^6;
sbit LED_7 = P1^7;sbit KEY_1 = P3^3;
sbit KEY_2 = P3^4;
sbit KEY_3 = P3^6;
sbit KEY_4 = P3^7;int main()
{if(KEY_1==1){LED_0=0;LED_2=0;LED_4=0;LED_6=0;while(KEY_1==1);LED_0=~LED_0;LED_2=~LED_2;LED_4=~LED_4; LED_6=~LED_6; }if(KEY_2==1){LED_0=1;LED_2=1;LED_4=1;LED_6=1;while(KEY_2==1);LED_1=~LED_1;LED_3=~LED_3;LED_5=~LED_5; LED_7=~LED_7; }
}
更多推荐
粤嵌学习笔记(一)
发布评论