keil与仿真电路的学习(一)
最近学的真的很杂,没办法,毕竟要恰饭。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与仿真电路的学习(一)相关推荐
- Simulink Simscape基础仿真电路
在网上找了挺多关于MATLAB Simulink simscape仿真电路的资料都没有自己想要的,大都是Sympowersystem的教程,最后还是上了YouTube观看了一些教程,现在做下学习记录. ...
- Keil虚拟仿真逻辑仪及SaleaeLogic16抓取波形进行协议分析
Keil虚拟仿真逻辑仪及SaleaeLogic16进行波形分析 一.Keil虚拟仿真 1.端口参数设置 2.观察结果并分析 二.SaleaeLogic16逻辑仪抓取与分析 1.Logic的安装 2.逻 ...
- Keil进入仿真,窗口不显示程序运行箭头
Keil进入仿真后,程序窗口中不显示程序运行箭头.点"Run",程序也会运行,就是不显示程序运行指示箭头. 可能是"Debug Infomation"选项没有勾 ...
- KEIL MDK 仿真时程序”乱跑“问题
最新有同学反应自已的程序在KEIL MDK仿真时按单步运行(F10),程序运行顺序不是按自已想要的顺序来操作的,其实这个原因多半是因为程序的编译优化等级设置较高导致: 优化等级高可以减小代码空间,很多 ...
- keil软件仿真时如何使用逻辑分析仪查看波形
在调试程序时有时候手头没有示波器,这时候就需要用到软件仿真.在软件仿真时可以通过逻辑分析仪来查看IO口的波形.但是逻辑分析仪对于新手来说不知道怎么用,现在就来说说逻辑分析仪如何设置. 首先用LED灯来 ...
- 基于单片机的电子时钟设计(keil+protues仿真,含代码及原理图)
本学期单片机课程要求做课程设计,我选取的课题如下: 基于单片机的电子时钟设计,要求: (1)实时显示当前时间: (2)能够对时间进行设置: (3)包括年月日,小时,分钟,秒. (4)整点提醒功能. 经 ...
- 电路原理计算机解法,电路原理学习指导与习题全解
图书简介 本书是孙玉坤.陈晓平主编的<电路原理>配套的教学指导书,各章的排列次序.标题都与教材相同.每章均由四个部分组成:第一部分为基本知识点,概括性地说明本章的主要概念.基本理论和分析方 ...
- 【单片机】Proteus安装、MDK5安装、Proteus与Keil联合仿真教程
1.需要的文件 2. 文件"Proteus软件"的安装 参考:proteus7.8的安装.破解.汉化教程https://jingyan.baidu.com/article/86f4 ...
- 基于Matlab的开环Buck降压斩波电路Simulink仿真电路模型搭建
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 BUCK电路工作原理 一.关于buck电路的开环仿真电路搭建 二.参数给定 1.脉冲信号给定 2.其他元器件参数给定 三.数 ...
最新文章
- [Objective-c基础教程] chapter one Before You Start chapter two Extensions to C
- 畅通工程 HDU - 1233
- java学习(63):普通内部类
- 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
- 【SpringBoot 2】(十)数据库相关
- mysql 修改表 引擎,mysql如何修改表类型(表引擎)
- ffmpeg 硬解码
- 总结ubuntu 在命令界面login incorrect的问题
- html5液体效果,HTML5/CSS3/SVG实现的液体掉落(滑落)动画
- python批量图片自动编码
- java计算经纬度距离
- 暮然回首,发现自己已经老了
- Nlog日志记录组件使用
- proxmox ve 中文社区_Proxmox VE 部署维护
- 【题解】CF1181D Irrigation
- matlab中文帮助_MATLAB数据及图像处理与机器学习培训
- 二三四五4位高管 陈于冰董事长 代小虎财务总监 罗绘副总对外对公 邱俊祺董秘 实控人韩猛
- docsify 安装配置文档
- lc0406lc0409lc0410
- 大数据时代之痛,你“裸奔”了吗?如何防止信息泄露