最近学的真的很杂,没办法,毕竟要恰饭。keil和proteus从没用过,本篇博客用于记录两个软件的学习过程以及嵌入式编程学习过程。

本篇包括:

安装过程

新手村任务

keil的使用

proteus的使用

一、安装过程:

我之前的博客提到过keil怎么安装,并且附带了地址,可以破解。

proteus也很简单,直接下载然后破解即可

二、新手村任务

keil不方便的地方就在于他没有代码补全的功能。其他还好,支持C\C++编译,自带的内核也很多。

这里准备了两个新手项目入手,点亮led灯和跑马灯。

1. 点亮led灯

首先先来一个最简单的led点亮程序吧:

1. 新建项目,选择at89c52,空白项目,新建一个c语言文件。

2. 配置编译参数,魔术棒---output----creat hex file打钩。

3. 输入代码:

#include <reg52.h>
sbit led = P0^1;void main()
{led = 0;
}

led = 0 代表了低电平,低电平就亮了,这个原理也不知道。慢慢摸索。

完事以后编译会生成hex文件。

打开proteus软件,开始画图

在proteus软件内,也是生成一个空的图纸,选择工具栏鼠标下面的devices---p(pick)先搜索at89c52然后画进去,同理画一个LED-YELLOW进去,然后在下面几个图标中找到power。

然后用线点连起来就完事了。

选择芯片右键,编辑属性,把

hex文件放进program file 里面,然后确定,点击左下角的开始,灯就亮了。

小程序挺有意思的,还是再弄一个跑马灯的试一下吧,我这里有一个跑马灯的代码,现在就差proteus的图纸不会画。

另外,我还需要理解哪些代码代表什么,为什么会有一个p^1这种东西。

2. 跑马灯小程序

先开始做跑马灯吧。

代码如下

#include <reg52.h>sbit led1 = P1^0;
sbit led2 = P1^1;void delay(unsigned int n)
{unsigned char i;while(--n)for(i = 0; i<125;i++);}int main(void)
{while(1){led1=0;led2=1;delay(1000);led1=1;led2=0;delay(1000);}}

建立图纸,然后80c52芯片,添加一对元器件

那个两竖线的是电容,中间一个矩阵的是晶振其他都还好,r后画完以后就跑通了,非常稳。

既然实现已经实现了,接下来重要的问题在于理解代码。

我们先从点亮led灯开始理解代码:

#include <reg52.h>
sbit led = P0^1;void main()
{led = 0;
}

这个代码的疑问就在于那个:led = P0^1是什么东西,为什么P0这个参数能直接出来赋值?

我们还是到reg52.h里面一探究竟:

#ifndef __REG52_H__
#define __REG52_H__/*  BYTE Registers  */
sfr P0    = 0x80;
sfr P1    = 0x90;
sfr P2    = 0xA0;
sfr P3    = 0xB0;
sfr PSW   = 0xD0;
sfr ACC   = 0xE0;
sfr B     = 0xF0;
sfr SP    = 0x81;
sfr DPL   = 0x82;

我节选一点reg52.h里面的代码片段,可以看到,里面是吧P0初始赋值了的,用的是16进制。

我们知道16进制的东西大多数用于地址,那么也说得通,这个reg52.h就是初始化我们的80c52芯片的一个程序。

先理解两个概念:字节地址和位地址。

1B=8Bit,所以一个字节中会有8个二进制数。我们说的按字节寻址就是找到第X个字节的位置,而按位寻址就是不仅能找到在哪个自己,还能找到具体哪一个二进制数。这个在单片机的存储单元里面会经常接触。

接下来这个sfr是一个神奇的东西,他不是广义上的类型,是一种特殊功能寄存器。

首先这个单片机的所有地址是布好的,这个比如说0x90这个地址就是引脚P1的地址,当你输入 sfr P1 = 0x90这个代码,就意味着P1就是P1了,说白了就是代码变量P1就是板子上画的P1引脚了。

我们之后对代码变量P1的操作都会直接映射到芯片P1引脚,等价于直接映射到那个地址。这三个量就是同一个东西,0x90地址、代码P1变量、板子上的P1引脚三位一体。更细节的REG52.h的分析请参考另一篇博客https://blog.csdn.net/lirunqi3/article/details/97889851

keil与仿真电路的学习(一)相关推荐

  1. Simulink Simscape基础仿真电路

    在网上找了挺多关于MATLAB Simulink simscape仿真电路的资料都没有自己想要的,大都是Sympowersystem的教程,最后还是上了YouTube观看了一些教程,现在做下学习记录. ...

  2. Keil虚拟仿真逻辑仪及SaleaeLogic16抓取波形进行协议分析

    Keil虚拟仿真逻辑仪及SaleaeLogic16进行波形分析 一.Keil虚拟仿真 1.端口参数设置 2.观察结果并分析 二.SaleaeLogic16逻辑仪抓取与分析 1.Logic的安装 2.逻 ...

  3. Keil进入仿真,窗口不显示程序运行箭头

    Keil进入仿真后,程序窗口中不显示程序运行箭头.点"Run",程序也会运行,就是不显示程序运行指示箭头. 可能是"Debug Infomation"选项没有勾 ...

  4. KEIL MDK 仿真时程序”乱跑“问题

    最新有同学反应自已的程序在KEIL MDK仿真时按单步运行(F10),程序运行顺序不是按自已想要的顺序来操作的,其实这个原因多半是因为程序的编译优化等级设置较高导致: 优化等级高可以减小代码空间,很多 ...

  5. keil软件仿真时如何使用逻辑分析仪查看波形

    在调试程序时有时候手头没有示波器,这时候就需要用到软件仿真.在软件仿真时可以通过逻辑分析仪来查看IO口的波形.但是逻辑分析仪对于新手来说不知道怎么用,现在就来说说逻辑分析仪如何设置. 首先用LED灯来 ...

  6. 基于单片机的电子时钟设计(keil+protues仿真,含代码及原理图)

    本学期单片机课程要求做课程设计,我选取的课题如下: 基于单片机的电子时钟设计,要求: (1)实时显示当前时间: (2)能够对时间进行设置: (3)包括年月日,小时,分钟,秒. (4)整点提醒功能. 经 ...

  7. 电路原理计算机解法,电路原理学习指导与习题全解

    图书简介 本书是孙玉坤.陈晓平主编的<电路原理>配套的教学指导书,各章的排列次序.标题都与教材相同.每章均由四个部分组成:第一部分为基本知识点,概括性地说明本章的主要概念.基本理论和分析方 ...

  8. 【单片机】Proteus安装、MDK5安装、Proteus与Keil联合仿真教程

    1.需要的文件 2. 文件"Proteus软件"的安装 参考:proteus7.8的安装.破解.汉化教程https://jingyan.baidu.com/article/86f4 ...

  9. 基于Matlab的开环Buck降压斩波电路Simulink仿真电路模型搭建

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 BUCK电路工作原理 一.关于buck电路的开环仿真电路搭建 二.参数给定 1.脉冲信号给定 2.其他元器件参数给定 三.数 ...

最新文章

  1. [Objective-c基础教程] chapter one Before You Start chapter two Extensions to C
  2. 畅通工程 HDU - 1233 
  3. java学习(63):普通内部类
  4. 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
  5. 【SpringBoot 2】(十)数据库相关
  6. mysql 修改表 引擎,mysql如何修改表类型(表引擎)
  7. ffmpeg 硬解码
  8. 总结ubuntu 在命令界面login incorrect的问题
  9. html5液体效果,HTML5/CSS3/SVG实现的液体掉落(滑落)动画
  10. python批量图片自动编码
  11. java计算经纬度距离
  12. 暮然回首,发现自己已经老了
  13. Nlog日志记录组件使用
  14. proxmox ve 中文社区_Proxmox VE 部署维护
  15. 【题解】CF1181D Irrigation
  16. matlab中文帮助_MATLAB数据及图像处理与机器学习培训
  17. 二三四五4位高管 陈于冰董事长 代小虎财务总监 罗绘副总对外对公 邱俊祺董秘 实控人韩猛
  18. docsify 安装配置文档
  19. lc0406lc0409lc0410
  20. 大数据时代之痛,你“裸奔”了吗?如何防止信息泄露

热门文章

  1. Jenkis邮件通知:Email Extension Plugin
  2. 嵌入式没前途,做app更吃香
  3. 什么是星空房?它有哪些特色?
  4. 苹果iOS内购三步曲:App内退款、历史订单查询、绑定用户防掉单!--- WWDC21
  5. 【计算机网络】总结篇
  6. Javascript与其他语言的区别
  7. 现在工作所具备的计算机操作,信息科科长职位竞争上岗讲演稿(网友投稿)
  8. 第二部分 单机以及编队控制实验—初级教程(4)
  9. c++用递归计算二叉树的叶子节点的个数
  10. 13.3.11 ORDER BY语句