keil5找不到c51芯片(keil5没有芯片)

我的KEIL为什么没有AT89C51芯片

我是因为安装了个叫mdk的软件,建立工程时发现没有at89c51芯片。后来把它卸了,从新下载了个keil

c51的软件,装起来之后就可以找到

at89c51了。

keil5找不到51单片机

1,找不到的型号,需要安装相关的KEIL插件或者芯片的封装文件(MDK中的ARM芯片型号),单片机公司有提供。

2,个别公司的OEM型号,找个类似的,仿真时按照提供的型号仿真,

3,找个功能接近的型号,修改相关的.dev文件名,也可以仿真。

STC89C52在Keil C51中找不到芯片组啊

我来回答你的问题吧:

在KEIL中,选择芯片的时候,是不能选STC系列的。

不过,对于STC的任何一个系列,你都可以选择AT89S52系列。STC系列兼容51系列的单片机,也就是说,51系列的单片机有的功能STC一般都有。在书写程序的时候,编译器的检错,是不会具体针对你新建工作程时所选某一块芯片来检错的。虽STC系列兼容AT89S52的功能。但,有也不同之处,因为现在STC系列的大部分单片机都对其功能进行了增强。就连STC系列很普通的单片机都扩展了外部RAM使其数据存储器达到了1280byte 如果你要用到其增强的功能,那就是学会定义头文件。 万变不离其宗,学会了定义头文件,这个问题解决了。以下是我这一阵子,对头文件的学习及一些体会。可以让你少走很多弯路。:

二, reg51.头文件剖析

我们平时写单片机应用程序的时候,所使用的头文件大多都是用的的reg51.h或是用reg52.h。会写C51的人都会用,但对其头文件内部的定义有所了解的人确并不多。

下面对其内部做详细解释,方便读者作进一步的了解,并能运用各类型号的单片机。因为增强型号的单片机的增强功能都是通过特殊功能寄存器控制。

打开 reg52.h 头文件,会发现是由大量的 sfr ,sbit的声明组成,甚至于还有sfr16.其实这样的声明都是与单片机内部功能寄存器(特殊功能寄存器)联系起来的,下面对其做出详细解释

sfr: 声明变量

SFR 声明一个变量,它的声明与其它的C变量声明基本相同,唯一的区别,SFR在声明的同时为其指定特殊功能寄存器作为存储地址,而不同于C变量声明的整型,字符型等等由编译器自动分配存储空间。

如reg52.h头文件,第一条声明就是sfr P0 = 0x80;

此处声明一个变量P0,并指定其存储地址为特殊功能寄存器0x80;,在加入reg52.h头文件后。编写应用程序时P0就可以直接使用而无需定义,对P0的操作就是,对内部特殊功能寄存器(0x80对应用MCU的P0口)的操作,可进行读写操作。

如果将第一条声明改为sfr K0 = 0x80; 那么,如果要把单片机的P0口全部拉低,则不能写P0=0x00;而应保存后再在应用程序中写成K0=0x00;否则编译器会提示“P0为未定义标识符”

使用方法:

sfr [variable] = [address] //为变量分配一个特殊功能寄存器。

1 等号右边,只能是十进制,十六进制整型的数据常量,,不允许带操作符的表达式

经典的8051内核支持的SFR地址从0x80H~0xFF 飞利浦80C51MX系列0x180H~0x1FF

2 SFR不能声明于任何函数内部,包括main函数。只能声明于函数外。

3 用SFR声明一个变量后,不能用取地址运算符获取其地址, 编译无法通过,编译器会提示非法操作。

4 有一点须特别注意,51内核0x80~0xff,为特殊功能寄存器地址区间,但并不是所有的地址都有定义,如果说你所用的MCU芯片上对于某个地址没有定义,那么用sfr在定义变量的时候,不要把变量的地址分配到未定义的特殊功能寄存器上,虽然编译时能通过,用KEIL仿真时貌似是没有问题,但下载到芯片里运行时,是会出问题的。比如说,向一个未定义的特殊功能寄存器执行读操作,读出来的就是一个未知的数。(读者可自行测试,先把串口通信调通,然后做一个简单的人机交互。读出一个数后,再发给计算机,用串口调试助手或是串口监控查看。这用方法在仿真的时候很有用。)所以具体那些特殊功能寄存器能够用,就要查看你使用的芯片手册。

5 若遇到增强性的单片机,只要知道其扩展的特殊功能寄存器的地址,用SFR定

就可以很方便进行编程。

sbit: 声明变量

sbit 同样是声明一个变量,和SFR 使用方法类似,但是SBIT是用来声明一个位变量,因为,在51系列的应用中,非常有必要对SFR的单个位进行存取,而通过bit 数据类型,使其具备位寻址功能。

如,在reg52.h中有如下声明

sfr IE = 0xA8;

sbit EA = IE^7;

sbit ET2 = IE^5; //8052 only

sbit ES = IE^4;

sbit ET1 = IE^3;

sbit EX1 = IE^2;

sbit ET0 = IE^1;

sbit EX0 = IE^0;

所以,对EA的操作即是对IE最高位的操作。

但如果想让 SP DPL DPH PCON TMOC TL0 TL1 TH0 TH1 SBUF这些特殊功能寄存器具备位寻址,采用上述如IE类似的定义,是不行的,虽然修改后,在编译的时候不会出现错误,但只要用到你定义的位变量名时就会出错。原因是,只有特殊功能寄存器的地址是8的倍数(十六进制以0或8结尾)才能进行位寻址。

打开reg52.h头文件可以看到,所有用sbit声明了的特殊功能寄存器的地址均是以0或8结尾

如硬要达到上述要求,可用带参的宏定义来完成。此处不做详细说明(意义并不大)。

下面对sbit的使用做详细介绍:

随着8051的应用,非常有必要对特殊功能寄存器的单个bit位进行存取,C51编译器通过sbit 数据类型,提供了对特殊功能寄存器的位操作。

以下是sbit的三种应用形式:

一, sbit name = sfr-name^bit-position;

sfr PSW =0xD0;

sfr IE =0xA8;

sbit OV= PSW^2;

sbit CY=PSW^7;

sbit EA= IE^7;

二, sbit name= sft-address^bit-position;

sbit OV =0xD0^2;

sbit CY =0xD0^7;

sbit EA =0xA8^7;

三, sbit name= sbit-address;

sbit OV =0xD2;

sbit CY =0xD7;

sbit EA =0xAF;

现对上述三种形式的声明做必要的说明

第一种形式sbit name = sfr-name^bit-position;如sbit OV= PSW^2; 当中的这个特殊功能寄存器必须在此之前已经用sfr 定义,否则编译会出错。

bit-position范围从0~7;

第二种形式 sbit name= sft-address^bit-position如sbit OV =0xD0^2; 与第一种形式不同之外在于,此处直接使用PSW的地址.第一种形式须先定义PSW

第三种形式. sbit name= sbit-address 如sbit OV =0xD2 是直接用的OV的地址

OV的地址计算方式,是OV所在的寄存器地址加上OV的bit-position

注意:

不是所有的SFR都可位寻址。只有特殊功能寄存器的地址是8的倍数(十六进制以0或8结尾)才能进行位寻址,并且sbit声明的变量名,虽可以是任意取,但是最好不要以下划线开头,因为以下划线开头的都保留给了C51的头文件做保留字。

sfr16: 声明变量

许多8051的派生型单片机,用两个连续地址的特殊功能寄存器,来存储一个16bit的值。例如,8052就用了0xCC和0xCD来保存定时/计数寄存器2的高字节和低字节。编译器提供sfr16这种数据类型,来保存两个字节的数据。虚拟出一个16bit的寄存器。

如下:

sfr16 T2 = 0xCC

存储方面为小端存储方式,低字节在前,高字节在后。定义时,只写低字节地址,如上,则定义T2为一个16位的特殊功能寄存器。 T2L= 0CCh, T2H= 0CDh

使用方法:

sfr [variable] = [low_address]

1 等号右边,只写两个特殊功能寄存器的低地址,且只能是十进制,十六进制的整型数据常量,不允许带操作符的表达式

2 SFR不能声明于任何函数内部,包括main函数。只能声明于函数外。

3 用SFR声明一个变量后,不能用取地址运算符获取其地址, 编译无法通过,编译器会提示非法操作。

4 当你向一个sfr16写入数据的时候,KEIL CX51 编译器生成的代码,是先写高字节,后写低字节,(可通过返汇编窗口查看)在有些情况下,这并非我们所想要的操作顺序。使用时,须注意。

5 当你所要写入sfr16的数据,当是高字节先写还是低字节先写非常重要的时候,就只能用sfr 这个关键字来定义,并且任意时刻只保存一个字节,这样操作才能保证写入正确。

keil mdk安装了然后keil c51消失了怎么办?我两个都要用。

MDK和C51可以共存的,按照两个程序不要安装到同一个文件夹,分成两个文件夹,这个问题很早以前都有人问过了,可以参考这个:网页链接

keil5提示说找不到芯片型号怎么解决?

从keil的官网上就可以下到驱动包,进去官网在找到下载页面,直接搜索你的芯片系列。下载文件如下图:

双击下载文件就可以进行安装。

keil5如何加载51芯片

keil5mdk怎么添加c51芯片 - : MDK是针对ARM7、ARM9、Cortex-M系列32位内核的微控制器/微处理器的,并没有针对51单片机的支持.要在MDK中添加51单片机是无法实现、也没有意义的.你的需求应该是想在同一个μVision IDE下面同时装MDK和C51两种工具链.

你好,这是keilC51中的一个小程序,麻烦你看下啦,呵呵!问题 : 你是做嵌入式的?Keil C51不怎么懂,不过C程序函数的调用本质上是将标号地址(指令地址)加载到CPU中运行,如果已经全局范围内存在其他标号为Init_Timer0的变量/...

keil uvision5怎么打开c51 - : 如果已经安装了c51的keil 直接打开keil 会自动根据工程内容选择c51或arm的编译环境 不需要专门去打开c51

如何让Keil5可以打开Keil4的Project - :工具/原料 Keil5 MDK Core,MDK v4 Legacy Support 方法/步骤 首先是到Keil官网下载最新版本的MDK Core; 接着安装MDK Core,按照默认安装就可以;...

keil5编译过51后不能编译32了是怎么回事? - : 建一个工程慢慢加其它函数,先加.s文件,写一个空的main函数,编译一下,会报错,到.s文件中把 ;IMPORT SystemInit ;LDR R0, =SystemInit ;BLX R0 这三行注释掉,再编译应该就没有错了,再一步步添加头文件路径和.c文件,先添加一个正确了有感觉了就一次性添加,很简单.

keil4.74怎么打开keil5的工程问题 - : 其实,打开工程没有多大用处.最关键是要有C语言的源程序和有关的头文件.有了这些,在keil4.74新建工程,在加载这些C程序和头文件就行了.如果没有C程序文件和头文件,就是打开工程也没有用.

我在keil平台编译好的HEX文件如何导入proteus? - : 在proteus软件中双击51单片机芯片,然后就会出现导入界面.请参照以下步骤.1、首先在电脑上用proteus软件打开目标文件.2、然后用鼠标左键双击51单片机图标,如图所示.3、然后在出现的窗口中,点击下图中的文件夹图标.4、然后在电脑文件夹中找到编译好的HEX文件导入.5、完成以上设置后,即可将keil平台编译好的HEX文件导入到proteus软件中.

怎么用keil5编译51的程序 - : 下载一个keil软件包,并安装.打开keil,看到如图界面.首先新建一个工程,选择project-new project,弹出一个对话框,填写工程名,确定.然后选择你所使用的芯片,型号,确定.然后点击文件File—New,新建一个文件,确定.5 之后我们就可以在编辑区写程序了,按照51指令集yongc语言比较好写.

361知讯网

本文链接:http://pdidw.com/keil/34387.html

发表评论

评论列表

还没有评论,快来说点什么吧~