Visualarm studioo 2013怎么配置来写arm或51的单片机程序

51单片机实战:Proteus、Keil入门及点亮一个虚拟LED - 简书
51单片机实战:Proteus、Keil入门及点亮一个虚拟LED
相信你在看完后,对单片机开发的基础知识有了一定的了解。这一次我们来实战一番,在Proteus中模拟一个单片机界的"HelloWorld" --- 点亮一个LED。
在我们开始编码之前,要先把电路画好。我们要通过程序去控制一个LED的明灭,所以需要一个单片机和一个LED,当然,还有它们之间说不清道不明的关系。
Proteus软件是英国Lab Center Electronics公司出版的工具软件。它可以仿真单片机逻辑和元件之间的电路,我们这次写好的单片机程序就是交给它来模拟运行。
Proteus 8启动画面
我所用的是Proteus 8.4 SP0
Proteus 8.4 SP0 启动图标
如果你用的是早期版本,可能启动图标不一样。我之前用的7.8版的Proteus会有两个子程序,如果你的也是的话,点那个ISIS(阿拉胡阿克巴!)就是了。
现在要做的就是在Proteus中画个可以控制LED的电路出来。
打开Proteus
点击主界面中的新建工程
新建第一步:输入名称和设置路径
在名称那里输入项目名称,在路径处设置项目工程文件存储的路径,下一步。
新建第二步:选择原理图
这里我们选择默认DEFAULT,选下一步。
新建第三步:选择模板
选择不创建PCB布板设计,下一步。
新建第三步:选择固件
选择没有固件项目,下一步。
新建第四步:总结
点击完成后建项成功。
其实我也是第一次用Proteus 8,之前的版本建项步骤没这么繁琐,我这么说是因为我也不咋知道那些中间的设置项都能干嘛,还没试过(我好水,这样子自己揭露自己真的好嘛)。
开始画电路
创建好项目后如下图所示
主编辑界面
列个需要的元件清单
点击左侧的P添加元件
在元器件选择界面中,用关键字搜索我们需要的器件。
元器件选择界面
我们需要一个51单片机,这个项目就选择at89c52吧,输入"c52"搜索。
"c52"的搜索结果
中间那里会列出匹配的结果,你可以一个一个选择,然后观察右侧的预览图来确定是不是你要的菜。你还可以在右下角那里选择其封装。在本项目中,我们需要AT89C52这道菜的DIL40的封装。
点击确定后,你的鼠标会变成一根儿笔,再点击一下左键,刚才的器件就会出现,然后就可以摆放它的位置了。
然后重复刚才的操作,去找LED。
“LED”的搜索结果
可以看到,与LED相关的元件是比较多的。这里我们选择图示中的那款黄色发光二极管LED-YELLOW(模拟的时候,效果会比较明显)。
电源的话,就要去另一个地方找了,点一下左边栏的终端模式。
选择列表中的POWER,然后和前面一样,把它画出来。
画上LED和电源
途中的小雨伞就是电源。
然后连接它们,画线路。
用笔一样的鼠标点击那些触角就可以将他们连接起来。连好后如下图:
需要的电路
注意电源跟LED的哪个引脚连?
二极管是固定电流方向的,要按照图中的方式连接,具体为什么就要你自己查了。
到这里我们的第一大步就走完了。
Keil是我们写单片机代码要用到的IDE,它支持汇编、C和C++的编译,还是很不错的。不过,没有代码补全。
Keil μ5 的启动画面
选择下载时,要根据你所开发的单片机选择具体的IDE,它分为四种。你也可以装多个,然后它们会在同一个IDE下显示并使用。
根据我们刚才在电路板上画的是at89c52单片机,所以我们就选用版本的。
点击菜单栏的Project - New μVersion Project
选择工程存储路径
这里选择你的项目工程要存储的路径,他不会像或那样帮你为项目或解决方案自动生成文件夹,这个你要注意,你最好自己建一个项目文件夹,然后选择它去存储。
项目建立好后,左边栏会显示当前项目的文件结构。然后我们新建源文件,右击Source Group,选择Add New Item to Group 'Source Group 1'。添加源文件的前提必须是在一个Group下,这里选择用它默认的Source Group,你也可以自己新建一个Group。
选择C File (.c),输入文件名,然后点击Add
这样我们就添加了一个源代码文件。
添加了源文件
我们要实现功能的代码如下所示。
#include &reg52.h&
sbit led = P0^1;
void main()
一步一步来,首先,第一行所包含的reg52.h文件中定义了52单片机基础的特殊功能寄存器和特殊功能位。其内部的介绍是:
Header file for generic 80C52 and 80C32 microcontroller.
可以通过右键reg52.h - Open ducment &reg52.h&打开其文件。
打开后,可以看到其源码:
/*--------------------------------------------------------------------------
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c)
Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG52_H__
#define __REG52_H__
BYTE Registers
8052 Extensions
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
BIT Registers
= PSW^0; //8052 only
= IE^5; //8052 only
= P1^1; // 8052 only
= P1^0; // 8052 only
= T2CON^7;
= T2CON^6;
= T2CON^5;
= T2CON^4;
sbit EXEN2
= T2CON^3;
= T2CON^2;
= T2CON^1;
sbit CP_RL2 = T2CON^0;
可以看到,里面声明了所有基础的功能寄存器、I/O寄存器和各种功能位。
还有一点,建议大家在定义自己的头文件的时候也写上#ifndef - #define - #endif这样的结构来保持自己的头文件在全局中保持唯一而不被重复引入。
回头看源码的第二行。
sbit led = P0^1;
意思是声明一个位寻址变量,寻址到P0.1引脚。在上面P0的声明中,可以看到它的地址是0x80,这个地址是P0八个引脚起始(也就是P0.0)的地址,这个地址的高四位代表这组I/O引脚的片选地址,低四位表示其内部的位选地址。这里的led的位选地址根据亦或运算符^算出,也就是P0.1的引脚地址。
注意,位寻址变量必须在外部定义,不能在内部,sfr也一样。
void main()
在主函数中执行,使led所指向的特殊功能位置低电平。因为我们之前的电路中LED一端连着电源,也就是高电平,另一端连着单片机的P0.1引脚,所以需要将P0.1置低电平,从而使电路连通。
以上,我们就完成了代码编写工作。
生成HEX文件
单片机看不懂C,它只读二进制的机器码,所以我们需要Keil生成一个十六进制的HEX文件(十六进制可以说是服务于二进制的,它与二进制可以非常方便地相互转换,其主要用于存储大量的二进制。一位十六进制可以表示4位二进制)。
还是在Keil中,右击Target 1 - 选择Options for Target 1
选择Output选项卡 - 勾上Create Hex File - OK
目标设置页
设置好目标生成选项后,点击左上方的Build(如图按钮)。
下方会输出编译信息
编译输出信息
我们可以从中看到:内部数据data、外部数据xdata、代码量code、编译错误和警告0 Error(s), 0Warning(s)还有编译时间Build Time Elapsed: 00:00:01的信息。
总的来说,只要0 Error(s),就说明编译通过了。
导入Proteus中的单片机
生成好的Hex文件在Keil项目目录下的Objects文件夹中。
回到Proteus中,右击at89c52(或双击)唤出设置页。
元件编辑页
点击Program File右侧的浏览按钮,选择刚才编译出来的Hex文件,然后点击确定。
点击Proteus左下角的‘播放’按钮
可以看到,小黄灯被我们点亮了。
MISSION COMPLETE!
我们从一开始的Proteus建项、画电路,到Keil的建项、编码,再到最后的Keil编译、Proteus模拟。
这就是模拟电路的单片机开发的一个完整过程了。嗯,看完这篇文章后你也一定也按捺不住要干个痛了吧!那就赶紧去爽♂爽的实践一番吧。
埋头开荒,双商破冰,扬短避长,屎上醉男。
Github: https://github.com/jessehao
姓名:李浩然 学号: 转自:http://www.51hei.com/bbs/dpj-43893-1.html(有删改) 【嵌牛导读 】:相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不...
姓名:李涛 学号: 转载自http://mp.weixin.qq.com/s/MFx-lo_KM1GNGVzMubOVog有修改 【嵌牛导读】:在工程实践中我们会遇到很多问题,很好的总结问题会提高很快,在一次次错误中不断反思,梳理程序,这样的过程会学习...
文章框架 前言 扯单一周目BOSS出现!请速速讨伐!ESP8266是我第一个,也是唯一一个接触过的无线网络模块,我非常喜欢!大部分网上的教程都是ARM架构单片机配用ESP8266。我比较抠门,给大家上51版的。我记得当时和老板承诺可以做成无线通信的时候我也不是很确定,心里一...
一、前言 很多单片机初学者与我交流时总说的一句话是我现在是单片机初学者,我怎样才能更快的学好单片机,我该从哪方便入手。对于这个问题,现在就我自己如何学单片机,如何入门,如何熟练谈谈想法。 先说单片机,现在用的比较多的以51为内核的8位单片机(考虑到成本及引脚资源在实际开发中...
姓名:仝启龙
学号: 本文转自 http://www.elecfans.com/emb/danpianji/13_2.html 【嵌牛导读】 笔者在工作中实际使用过AT89C2051、AT89C51、AT89C52等51单片机...
哀伤苦痛已是昨日梦回
欢颜潇洒才是如今面对
人生苦短何不潇洒一回
年少轻狂岂能畏苦怕累
易水清寒犹有荆轲刺秦
大漠无垠尚且苏武挥鞭
筑梦途中当是百转千回
遍体鳞伤应为平常往事
少年黄发本应仗剑天涯
四海为家怎不勇往直前 ...
几米说: 每天都要扛着大象去上班, 再把大象扛回家。 有人问:“为什么不骑着大象去上班呢?” 我怕大象会逃走,我怕大象会受伤, 还怕大象不适应。 没关系, 我早以习惯背着她来来去去的过日子了, 我没有不快乐,她一点也不重。 我每天扛着大象去上班。 壹 「如果可以选,希望你选...
今天开始看洗脑术
有时候总感觉自己陷入一个死循环。就是不断地否认自己,但是又不知道未来的发展方向,开始迷茫。又认为自己应该脚踏实地,做好现在,做好手边的事情。可是现在的工作,又不能让自己看到未来。就这样开始了新一轮的死循环。 想做有技术的工作,但是又不能无师自通。因为信奉“实践出真知”,但是...据counterpoint发布的数据,2017年全球前六大手机芯片企……
2018年才刚过没多久,区块链概念股一片火热。沉寂已久的……
近日三星电子宣布开发出核心电池技术,其研究机构三星先……
近年来汽车电子的发展迅猛,各种LED大灯、辅助驾驶、主动……
前不久,罗德与施瓦茨公司(R&S)召开新品发布会,推出了一……
演讲人:徐济炜时间: 10:00:00
演讲人:沈剑安时间: 10:00:00
演讲人:孙彬时间: 10:00:00
预算:¥30000预算:¥250000
广东省广东省
基于51单片机的频率计程序
[导读]这个是电路原理图
***********************************************
**************入门级频率计设计******************
***************精度低,希望各位初学者在此基础上修改为精度更高的程序*************
本文引用地址:
这个是电路原理图
***********************************************
**************入门级频率计设计******************
***************精度低,希望各位初学者在此基础上修改为精度更高的程序*************
本程序使用了,动态扫描,中断定时/计数等资源,电路图如上设计者:liujy
日期:*******************************/
#include &reg52.h&
#define uchar unsigned char
sbit w1=P2^0;
sbit w2=P2^1;
sbit w3=P2^2;
sbit w4=P2^3;//位控
sbit w5=P2^4;
sbit w6=P2^5;
sbit s=P3^7;//启动键
uchar ss,sg,fs,fg,ms,mg, shu=1;//显示位变量,由数字钟变来
uchar t0,t1,t2,a;
unsigned long num,x,y;
unsigned char code table1[]={0xc0,0xf9,0xa4,0xb0,& //0-f
&&&&&&&&&&&&&&&&&&&&&&&&&&&& 0x99,0x92,0x82,0xf8,
&&&&&&&&&&&&&&&&&&&&&&&&&&&& 0x80,0x90,0x88,0x83,
&&&&&&&&&&&&&&&&&&&&&&&&&&&& 0xc6,0xa1,0x86,0x8e};
void delay(int z)//延时子程序
&&& int h,t;
&&& for(h=z;h&0;h--)
&&&&&& for(t=110;t&0;t--);
void iint()//初始化函数
&TMOD=0x15;//t1为定时器,t0为计数器模式
&TH1=()/256;//设初值
&TL1=()%256;
&TL0=0;&&&&&
&EA=1;&&&&&& //开总中断
&ET0=1;//开中断允许
&ET1=1;//开中断允许
&TR1=1;//开中断控制
&TR0=1;//开中断控制
&void main()
loop:& if(s==0)//按键启动
&&&&&&&& {
&&&&&&&&& while(s!=0);//等按键松手
&&&&&&&&& a++;//功能变量
&&&&&&&& }
& if(a==1)
&& iint();
& //while(1)
&& while(1)
&&&&&&& {&
&&&& if(t1==250)
&&&&&& t1=0;
&&&& EA=0;//关中断
&&&&& TR0=0;//开中断控制,可省
&& flag=1;//标签标志置位
&&&&&&&&&&&&
&&&&&&&&&&&& y=TH0*256+TL0;//赋值部分
&&&&&&&&&&&& x=t0*65536;
&&&&&&&&&&&& num=x+y;
&&&&&&&&&&&& ss=num/100000;
&&&&&&&&&&&& num=num%100000;//赋值部分
&&&&&&&&&&&& sg=num/10000;
&&&&&&&&&&&& num=num%10000;
&&&&&&&&&&&& fs=num/1000;
&&&&&&&&&&&& num=num%1000;
&&&&&&&&&&&& fg=num/100;//赋值部分
&&&&&&&&&&&& num=num%100;
&&&&&&&&&&&& ms=num/10;
&&&&&&&&&&&& num=num%10;
&&&&&&&&&&&& mg=num%10;&&&&&&&&&&&
&&&&&&&&&&& if(flag==1)//动态扫描显示
&&&&&&&&&&&& {
&&&&&&&&&&& P2=0;//数据口
&&&&&&&&&&&& w1=1;
&&&&&&&&&&&& P0=table1[ss];
&&&&&&&&&&&& delay(shu);
&&&&&&&&&&&& P2=0;
&&&&&&&&&&&& w2=1;
&&&&&&&&&&&& P0=table1[sg];
&&&&&&&&&&&& delay(shu);
&&&&&&&&&&&&
&&&&&&&&&&&& P2=0;
&&&&&&&&&&&& w3=1;
&&&&&&&&&&&& P0=table1[fs];
&&&&&&&&&&&& delay(shu);
&&&&&&&&&&&& P2=0;
&&&&&&&&&&&& w4=1;
&&&&&&&&&&&& P0=table1[fg];
&&&&&&&&&&&& delay(shu);
&&&&&&&&&&&& P2=0;
&&&&&&&&&&&& w5=1;
&&&&&&&&&&&& P0=table1[ms];
&&&&&&&&&&&& delay(shu);
&&&&&&&&&&&& P2=0;
&&&&&&&&&&&& w6=1;
&&&&&&&&&&&& P0=table1[mg];
&&&&&&&&&&&& delay(shu);
&&&&&&&&&&&& //num=0;
&&&&&&&&&&&& if(s==0){&& while(s!=0);a++;}
&&&&&&&&&&&& if(a==2)
&&&&&&&&&&&& {
&&&&&&&&&&&&&
&&&&&&&&&&&& }
&&&&&&&&& }
void timer0() interrupt 1
&void timer1() interrupt 3
&&& TH1=()/256;
&&& TL1=()%256;
FZ-MCU51单片机开发板集实验开发、编程、仿真和下载于一体,支持AT89S51、AT89S52、AT89S53的和STC系列单片机如STC89C53RC等全系列单片机的编程和实验,使用配套的仿真模......关键字:
在一线做了十年的开发,经历了网易、百度、腾讯研究院、MIG 等几个地方,陆续做过 3D 游戏、2D 页游、浏览器、移动端翻译 app 等。......关键字:
程序员本身就是一个高薪的职业,只要把你本职工作做到极致,那么你也能过上很好的生活。......关键字:
你对这些来自东方的程序员有没有一些总结性的看法和观点(比如:他们是否合作,是否能按时提交代码,写出的程序是否有质量?)。依据是什么?......关键字:
马上就到一年一度的2018年春节了,金三银四,而春节过后往往是跳槽的高峰期.作为一名程序员,应该如何准备自己的简历呢?我们程序员一般在什么时机需要更新简历呢?......关键字:
我 要 评 论
热门关键词今日: 4&|主题: 20740|排名: 15&
1 / 100 页
1 / 100 页
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:
阿莫电子论坛, 原"中国电子开发网"
, 原www.ourdev.cn, 原www.ouravr.comVisual studio 2013怎么配置来写arm或51的单片机程序_百度知道
Visual studio 2013怎么配置来写arm或51的单片机程序
我有更好的答案
图形处理,数据库处理等好些,但是效率上是没有汇编和C高的,所以底层的代码BIOS或驱动和固件这些用汇编和C代码来写51 不行,没有针对51的C++编译器,ARM有些的可以,就是要读懂芯片数据手册,封装特性的优势,其实C++一般用来写嵌入式的应用层,查看好芯片的头文件,因为它面向对像,GUI,要注意什么的话
采纳率:71%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。页面已拦截
无锡网警提示您:
该网址被大量用户举报,可能含有恶意信息。

我要回帖

更多关于 android studio arm64 的文章

 

随机推荐