目录

一.首先安装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相关推荐

  1. 玩转springboot2.x之快速搭建(start.spring.io)

    之前已经通过2篇博客介绍如何使用 IntellJ IDEA  和 Spring Tool Suite(STS)快速启动springboot2.0项目,今天我们来介绍一下如何通过访问 https://s ...

  2. 快速搭建对话机器人,就用这一招!

    作者 | Milvus.io 责编 | 胡巍巍 问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用.其经典应用场景包括:智能语音交互.在线客服.知识获取 ...

  3. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

  4. Chapter 1 快速搭建-服务的注册与发现(Eureka)

    Chapter 1 快速搭建-服务的注册与发现(Eureka) 一.Spring Cloud简介 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代 ...

  5. 『中级篇』Minikube快速搭建K8S单节点环境(61)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』Minikube快速搭建K8S单节点环境(61) 去介绍k8s的集群安装,本地搭建一个k8s的集群. 不会科学上网的 ...

  6. Hugo快速搭建Blog

    2019独角兽企业重金招聘Python工程师标准>>> Hugo快速搭建Blog 2017-07-03 14:27 by 虫师, 2362 阅读, 0 评论, 收藏, 编辑 以往我们 ...

  7. 一步步学习SpringBoot(一) 快速搭建一个web

    适应读者 前端工程师(java系的公司) 前端架构师(java系的公司) java工程师 测试工程师(java系的公司) 什么是SpringBoot? Spring Boot便是一个社区反馈推动的项目 ...

  8. Mac下使用ABTestingGateway快速搭建灰度网关

    Mac下使用ABTestingGateway快速搭建灰度网关 ABTestingGateway简介 ABTestingGateway 是新浪开源的一个可以动态设置分流策略的灰度发布系统,工作在7层,基 ...

  9. 客服机器人源码_快速搭建对话机器人,就用这一招!

    问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用.其经典应用场景包括:智能语音交互.在线客服.知识获取.情感类聊天等.常见的分类有:生成型.检索型问答 ...

最新文章

  1. linux sshd启动失败 sshd re-exec requires execution with an absolute path
  2. linux安装数据库依赖包,Linux下安装DB2的包依赖
  3. 云计算产业迎利好 未来五年信息化发展蓝图公布
  4. 实木地板被机器人弄成坑_防腐木地板怎选择 防腐木地板怎样安装
  5. linux 命令行 文件管理器,CLEX - 集成命令提示符、“多才多艺”的命令行文件管理器...
  6. 面试准备——Java回顾:高级编程(多线程、常用类、集合、泛型、IO流、反射、动态代理、新特性)
  7. 小程序mpvue图片绘制水印_基于mpvue小程序使用echarts画折线图的方法示例
  8. 初识WEB:输入URL之后的故事
  9. python 获取请求链接下载文件的大小和文件特征
  10. 一分钟为网站添加统计功能
  11. oracle SO币种默认设置,Oracle EBS 11i 表结构——OE模块 so_headers_all;so_lines_all
  12. html 实时统计字数,记一次前端 input、textarea输入框实时 统计字数(真实字数)...
  13. Vue之路由--SPA模式
  14. android 仿微信表情雨下落!
  15. 嵌入式硬件电路设计的基本技巧
  16. 童年中的电视剧你还记得几个?
  17. 在x86_64架构+VMware16.2.3 Pro+openEuler20.3-LTS上快速部署(一键安装)openGauss 3.1.1企业版数据库指导手册
  18. 第五十二讲 DTS(设备树)
  19. 参加首届“全球程序员节”感想
  20. 2019篮球世界杯(北京五棵松场馆)之 万达体育 互动投篮机

热门文章

  1. 左耳听风 第三十八周
  2. 揭笔记本维修黑幕 浅谈我们该如何应对
  3. 数控计算机软件的确认表怎么做,数控仿真系统操作(广数GSK980T)
  4. android 类似按键精灵脚本_Android拓展 lua实现类似按键精灵效果
  5. 腾讯轻量云服务器安装FREEBSD
  6. 公司部署公网服务器方案
  7. Python--文件的读写
  8. 用java编写人机围棋游戏_JAVA写的围棋游戏的源代码.doc
  9. Access 数据库迁移到 SQL Server/无升迁向导的Access怎么升迁到SQL Server
  10. Centos安装ffmpeg视频处理工具(带安装h264编码格式插件)