STC89C52:快速搭建与IO
目录
一.首先安装keil,教程在这里
二.烧程序
1.上电
2.烧写软件
三.第一次点灯:
四.按键和闪烁点灯
1.按钮点灯关灯
2.延迟与闪烁
一.首先安装keil,教程在这里
建议安装keil4,5没有c51包,要自己打进去
Keil5英文版软件下载和安装教程 (qq.com)
Keil4中文版软件下载和安装教程 (qq.com)
注册Keil软件时出现“ TOOLS.INI: TOOLCHAIN NOT INSTALLED ”的解决办法_帥氣的胖紙鍋的博客-CSDN博客
(28条消息) keil注释打不出中文?_keil无法显示汉字_朵啦~A梦的博客-CSDN博客
二.烧程序
1.上电
2.烧写软件
暂不提供安装包了,网上下一个
LQFP:我们用的52单片机的封装类型,看起来是方形的
打开keil开始写第一个程序:点灯
1. 创建项目工程文件夹,可以当作模板Template
2. 创建文件,取名main.c (要打开拓展名,在文件夹窗口上找 “查看”,勾选“文件拓展名”)
3. 进入keil主页面,工具栏project->new uVision project->选择第一步的工程文件夹位置->输入
工程名字->选择芯片类型AT89c52->会提示是否拷贝STARTUP.A51,选择是->生成了工程目录-
>在工程目录Source Group1上右键鼠标->add Exiting file to Source Group1...->选择代码文
件main.c
1. 编程,新手如果看不懂以下代码,可以忽略,这次实验只是强调开发流程
2. 编译,选择输出文件有hex
keil:ctrl + 滚轮可以调整字体大小
#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);
}
要烧录的程序,keil打开程序和原程序:
打开hex文件,然后点击“下载/编程”
单片机重新上电后,成功点亮:蓝黄红
三.第一次点灯:
为什么灯会亮:
简单的串联电路,D4,D5,D6板子上有标记,D5一端通过电阻接5v,另外一端接着"LED1标志的线",我
们发现在89C52RC的电路图中也有LED1的标志,是在P3的IO口组中,在P3.7引脚,所以编程让P3.7出
低电平(0)就让D5灯完成一个串联电路,所以亮
怎么写程序找到IO口呢:ANSI C
sfr“指令”: 用来直接描述硬件地址,小白先理解成“一组IO口”的起始地址中数据
sfr P0 = 0x80;
P0= 0;
怎么找到IO口的具体一个引脚呢:
sbit“指令”:对应可位寻址空间的一个位,小白先理解成“一个IO口/针脚”的地址中数据
sbit led2 = P3^6
c语言的一个字节,char型就是8位
IO 组 |
0针 脚 |
1针 脚 |
2针 脚 |
3针 脚 |
4针 脚 |
5针 脚 |
6针 脚 |
7针 脚 |
数 值 |
输 入/ 输出 |
P0 | P0^0 | P0^1 | P0^2 | P0^3 | P0^4 | P0^5 | P0^6 | P0^7 |
0- 低 电 平 1- 高 电 平 |
给变 量赋 值, 就是 输出 被赋 值, 就是 输入 |
P1 | P1^0 | P1^1 | P1^2 | P1^3 | P1^4 | P1^5 | P1^6 | P1^7 |
同 上 |
同上 |
P2 | P2^0 | P2^1 | P2^2 | P2^3 | P2^4 | P2^5 | P2^6 | P2^7 |
同 上 |
同上 |
P3 | P3^0 | P3^1 | P3^2 | P3^3 | P3^4 | P3^5 | P3^6 | P3^7 |
同 上 |
同上 |
P4 | P4^0 | P4^1 | P4^2 | P4^3 | P4^4 | P4^5 | P4^6 | 无 |
同 上 |
同上 |
本开发板原理图
找到对应
点亮一个led
#include "reg52.h"sbit ledOne = P3^7;void main()
{//灯亮,给一个P3.7低电平ledOne = 0;
}
蓝红
四.按键和闪烁点灯
1.按钮点灯关灯
先对照原理图
发现是
key1 = p2^1;
key2 = p2^2;
低电平接地说明按钮按下
所以写下代码:while(1)循环检测
#include "reg52.h"sbit ledOne = P3^7;
sbit key1 = P2^1;
sbit key2 = P2^0;void main()
{while(1){if(key1 == 0){//灯亮,给一个P3.7低电平ledOne = 0;}if(key2 == 0){//灯灭,给一个P3.7高电平ledOne = 1; }}
}
2.延迟与闪烁
借助烧写工具
并且引入库
#include <intrins.h>
不引入也行,删掉nop那一行就行,但是会不准
ledOne = !ledOne; //反转亮灭
软件消除抖动,延迟10ms再判断一次,就知道时抖动导致还是人为按按钮,
即 if() 嵌套 delay()+if(); 这里就不写出来了
代码
#include "reg52.h"
#include <intrins.h>sbit ledOne = P3^7;
sbit key1 = P2^1;void Delay200ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 2;j = 103;k = 147;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){if(key1 == 0){int i;for(i=0;i<10;i++){//灯亮,给一个P3.7低电平ledOne = 0;//延迟产生闪烁效果Delay200ms();ledOne = 1;Delay200ms();}i = 0;}if(key2 == 0){//灯亮,给一个P3.7低电平//灯灭,给一个P3.7高电平ledOne = !ledOne; }//消除按按钮时时长的影响Delay200ms();}
}
在业务场景比较复杂的情况下,不希望在判断里改变外设,这时使用标志位/状态位:
#include "reg52.h"
#include <intrins.h>#define ON_STATUS 1
#define OFF_STATUS 0sbit ledOne = P3^7;
sbit key1 = P2^1;
sbit key2 = P2^0;void main()
{int ledMark = OFF_STATUS;while(1){if(key1 == 0){ledMark = 1;}if(key2 == 0){ledMark = 0;}if(ledMark ==1){//灯亮,给一个P3.7低电平ledOne = 0; }else{//灯灭,给一个P3.7高电平ledOne = 1; }}
}
STC89C52:快速搭建与IO相关推荐
- 玩转springboot2.x之快速搭建(start.spring.io)
之前已经通过2篇博客介绍如何使用 IntellJ IDEA 和 Spring Tool Suite(STS)快速启动springboot2.0项目,今天我们来介绍一下如何通过访问 https://s ...
- 快速搭建对话机器人,就用这一招!
作者 | Milvus.io 责编 | 胡巍巍 问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用.其经典应用场景包括:智能语音交互.在线客服.知识获取 ...
- Spring-Boot快速搭建web项目详细总结
最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...
- Chapter 1 快速搭建-服务的注册与发现(Eureka)
Chapter 1 快速搭建-服务的注册与发现(Eureka) 一.Spring Cloud简介 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代 ...
- 『中级篇』Minikube快速搭建K8S单节点环境(61)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』Minikube快速搭建K8S单节点环境(61) 去介绍k8s的集群安装,本地搭建一个k8s的集群. 不会科学上网的 ...
- Hugo快速搭建Blog
2019独角兽企业重金招聘Python工程师标准>>> Hugo快速搭建Blog 2017-07-03 14:27 by 虫师, 2362 阅读, 0 评论, 收藏, 编辑 以往我们 ...
- 一步步学习SpringBoot(一) 快速搭建一个web
适应读者 前端工程师(java系的公司) 前端架构师(java系的公司) java工程师 测试工程师(java系的公司) 什么是SpringBoot? Spring Boot便是一个社区反馈推动的项目 ...
- Mac下使用ABTestingGateway快速搭建灰度网关
Mac下使用ABTestingGateway快速搭建灰度网关 ABTestingGateway简介 ABTestingGateway 是新浪开源的一个可以动态设置分流策略的灰度发布系统,工作在7层,基 ...
- 客服机器人源码_快速搭建对话机器人,就用这一招!
问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用.其经典应用场景包括:智能语音交互.在线客服.知识获取.情感类聊天等.常见的分类有:生成型.检索型问答 ...
最新文章
- linux sshd启动失败 sshd re-exec requires execution with an absolute path
- linux安装数据库依赖包,Linux下安装DB2的包依赖
- 云计算产业迎利好 未来五年信息化发展蓝图公布
- 实木地板被机器人弄成坑_防腐木地板怎选择 防腐木地板怎样安装
- linux 命令行 文件管理器,CLEX - 集成命令提示符、“多才多艺”的命令行文件管理器...
- 面试准备——Java回顾:高级编程(多线程、常用类、集合、泛型、IO流、反射、动态代理、新特性)
- 小程序mpvue图片绘制水印_基于mpvue小程序使用echarts画折线图的方法示例
- 初识WEB:输入URL之后的故事
- python 获取请求链接下载文件的大小和文件特征
- 一分钟为网站添加统计功能
- oracle SO币种默认设置,Oracle EBS 11i 表结构——OE模块 so_headers_all;so_lines_all
- html 实时统计字数,记一次前端 input、textarea输入框实时 统计字数(真实字数)...
- Vue之路由--SPA模式
- android 仿微信表情雨下落!
- 嵌入式硬件电路设计的基本技巧
- 童年中的电视剧你还记得几个?
- 在x86_64架构+VMware16.2.3 Pro+openEuler20.3-LTS上快速部署(一键安装)openGauss 3.1.1企业版数据库指导手册
- 第五十二讲 DTS(设备树)
- 参加首届“全球程序员节”感想
- 2019篮球世界杯(北京五棵松场馆)之 万达体育 互动投篮机
热门文章
- 左耳听风 第三十八周
- 揭笔记本维修黑幕 浅谈我们该如何应对
- 数控计算机软件的确认表怎么做,数控仿真系统操作(广数GSK980T)
- android 类似按键精灵脚本_Android拓展 lua实现类似按键精灵效果
- 腾讯轻量云服务器安装FREEBSD
- 公司部署公网服务器方案
- Python--文件的读写
- 用java编写人机围棋游戏_JAVA写的围棋游戏的源代码.doc
- Access 数据库迁移到 SQL Server/无升迁向导的Access怎么升迁到SQL Server
- Centos安装ffmpeg视频处理工具(带安装h264编码格式插件)