1. 课程概述(156.1)
- 课程要求:C语言至少学到函数(C语言课程_(上)),指针尽量!
2. 开发软件keil的安装(157.2)
-
双击“c51v952.exe”
-
点击“Next”
-
同意…
-
修改为"D:\Program Files (x86)\Keil"
-
填写:
-
取消勾选
-
双击打开
-
工程列表:新建的工程文件
-
代码区:写代码
-
工具栏:各种工具功能
-
编译结果、错误提示、编译信息
3. 手把手创建一个Keil代码工程(158.3)
- 新建main.c文件
- 新建工程:进入keil主页面,工具栏project->new uVision project…
- 保存至刚刚创建的Template文件夹下,命名为muban
- 选择芯片类型AT89c52->会提示是否拷贝STARTUPA51选择是
- 生成了工程目录>在工程目录Source Group1上右键鼠标->addExiting file to Source Group1…->选择代码文件main.c->close关闭
- 双击main.c,即可在右栏编写代码
#include "reg52.h"
sbit led1 = P3^7;//¸ù¾ÝÔÀíͼ£¨µç·ͼ£©£¬É豸±äÁ¿led1Ö¸ÏòP3×éIO¿ÚµÄµÚ7¿Ú
sbit led2 = P3^6;//¸ù¾ÝÔÀíͼ£¨µç·ͼ£©£¬É豸±äÁ¿led2Ö¸ÏòP3×éIO¿ÚµÄµÚ6¿Ú
void main()
{
led1 = 0;//¸ù¾Ýµç·ͼ£¬µÍµçƽµçÁÁled
led2 = 0;
while(1);
}
7. ctrl+滚轮:字体大小调整
8. 由于c1单片机不认识c语言,只认识01序列化的二进制,做配置:Target Options->Output
9. 勾选创建HEX文件:输出单片机可认识的二进制文件
- rebuild编译
- .c是主要的代码文件,.hex是写入单片机中的 单片机可运行的执行程序,.uvproj是工程文件 正常双击Keil会自动打开 并加载整个工程
4. Hex程序烧写到单片机
- 安装驱动
- c口连接单片机,usb至电脑端口
- 打开设备管理器,检查是否识别成功
- 安装STC-ISP软件
- 选择单片机型号STC89C52RC、核对串口号
- 选择生成的执行程序文件muban.hex
- 点击“下载/编程”按钮
- 单片机开关拨动重新上电
- 自动检测并下载了程序,看到灯亮。如果失败,仔细对照 以上每一步内容
5. 单片机基本认知(160.5)
- 什么是单片机(类似电脑的主板)
- 集成电路芯片
- 中央处理器CPU、随机存储器RAM、只读存储器ROM
- 多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多
路转换器、A/D转换器等电路) - 集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
- 单片机开发板
- 基于单片机设计一些外接电路、模块,以满足学习、日常调研等工作需求
- STC89系列单片机-芯片手册
- 命名规则(*面试会问到),封装LQFP44, 特性,定时器,计数器,串口,看门狗,IO
6. 单片机那点事的思维发散(161.6)
- 单片机编程是?:人类要求单片机干具体的活,有点像提前写个小纸条贴冰箱上,告诉你执行者煮鸡蛋不加水
- 单片机执行程序怎么理解?: 执行者看到纸条后,照做
- 单片机能做什么事情?: IO口供电,串口数据传输等
- 肉眼可见的引脚是?:方便人类对单片机IO口、串口接东西
- 单片机CPU怎么找到IO口?:通过寻址,有一些地址数据 在头文件里做很多了
- 怎么写编程找到IO口呢:ANSI C
sfr“指令”: 用来直接描述硬件地址,小白先理解成“一组IO口”的起始地址中数据 sfr P0 = 0x80; P0
= 0; - 怎么找到IO口的具体一个引脚呢:
sbit“指令”:对应可寻址空间的一个位,小白先理解成“一个IO口/针脚”的地址中数据 sbit led2 =
P3^6
c语言的一个字节,char型就是8位
7. SFR及SBIT描述IO口和具体引脚(162.7)
- 找IO口:sfr“指令”
- 找具体引脚:sbit“指令”
8. IO口输入输出(163.8)
- STC89C52比较简单粗暴,关于引脚是输入还是输出的功能不需要配置,比如:
sbit IFfire = P1^0;
int main()
{
int io_data;
//什么情况叫做输入
io_data = IFfire; // 给变量赋值就是输入 -- 或者理解为,这个针脚有数据了,拿个变量来保存
if(io_data == 0){
}
//什么情况叫做输出
IFfire = 1; // 给予一个数值,引起IO口电压变化(一般1输出高电平,0输出低电平),此时为输出,来影响外接的电路
return 0;
}