精华内容
下载资源
问答
  • 在编写玩一个代码后,我们通常会将程序编译一下,会出现如上所示。充这些中我们就可以看出自己编写代码的大小拉~ PS:HEX文件并不是编码的大小哦。 ProgramSize:data=9.0xdata=0code=29 data+xdata是RAM的值code...

     

    在编写玩一个代码后,我们通常会将程序编译一下,会出现如上所示。充这些中我们就可以看出自己编写代码的大小拉~

    PS:HEX文件并不是编码的大小哦。

     

    Program Size: data=9.0 xdata=0 code=29

     data+xdata  是RAM的值    code:字节 

     

     

    展开全文
  • keil程序问题,大佬们看一眼,小白一个。图一找的是数字中值滤波函数。 想把图一的函数加到主函数里面,实现对收集数据的取中值计算。怎么加到主函数里面啊。 如果太麻烦,就不劳烦大家了 [img=...
  • 内含:Keil2安装文件(免安装,绿色版),Keil2汉化文件(复制到X:\Keil\UV2替换uv2文件),程序下载软件
  • 1、KEIL C51编译环境 2、编译成功的工程文件 3、MC96F6332D 开发板 4、USB-OCD II仿真器 二、工程配置 1、对工程进行配置操作:使用KEIL C51编译器打开工程文件并将仿真工具OCD II连接到电脑端的USB口,点击...

    一、准备工作

    1、KEIL C51编译环境

    2、编译成功的工程文件

    3、MC96F6332D 开发板

    4、USB-OCD II仿真器

    二、工程配置

    环境准备:KEIL C51的简单配置,在安装好KEIL C51之后需要修改keil安装路径下的TOOLS.INI 配置文件,已达到支持ABOV芯片的目的;具体的修改方法可以参考文档《OCD 2 简易安装使用说明.pdf》;此文档可以在我的下载频道免费获取;最重要的步骤见下图:

    1、对工程的配置操作:使用KEIL C51编译器打开工程文件并将仿真工具OCD II连接到电脑端的USB口,点击编译器中的魔术棒,在Debug选项卡中选择ABOV OCD-1/2 dongle,如下图所示:

     

    2、在Utilities选项卡的 Configure Flash Menu Command选项中同样选择ABOV OCD-1/2 dongle;

    最后点击OK。

    三、工程编译

    重新编译打开的工程,可以看到编译的结果无错误、无警告;如下图所示:

    四、工程下载

    1、点击编译器的下载按钮,在弹出的选项卡中选择MCU的系列和硬件电源选项(我这里使用的MC96F6332D属于MC96系列,目标板电源为+5V供电),然后点击OK;

     

    2、此时系统会提示关闭target的电源,如下图所示:注意:先关闭Target的电源再点击编译器上的 按钮,这个顺序不能错

    注意:下载前需要确认手上的现代单片机是否支持在线仿真,如果出现下图的提示,有可能不能仿真或者连接线出现不良,请自寻查询:

    3、等待约1-2秒,系统会提示给Target上电,如下图所示;注意:此时应该先上电再点击 确定 按钮,这个顺序也不能错。

    可以看到编译器左下角出现程序下载的进度条,等到100%即表示下载完成;

    备注:步骤2和3仅仅是在PC端首次进行OCD-II的连接上电时候才出现,调试过程中如果OCD-II不断开与PC端的连接,首次之后的程序下载将不再出现。

    4、程序下载完成后便会弹出下面的选项配置对话框,此内容后面的章节会进行详细解释,暂时保持目前的默认配置即可;点击WriteClose退出此对话框。

    5、此时编译好的程序已经下载到了单片机内部。

    五、工程仿真

    1、点击编译器的仿真按钮进入仿真界面,如下图所示。需要注意:ABOV的MCU仿真之前必须先进行程序的下载!

    2、进入仿真后,OCD-II的指示灯会亮,在程序全速运行时,仿真器的指示灯会常亮,正常情况下是绿的,如下图所示;

    如果亮红色即表明仿真器出现错误;

    3、退出仿真:同样是点击仿真的按钮。

    六、总结:

    1、程序的下载阶段,系统提示给Target掉电和上电时的物理掉电/上电操作和编译器操作顺序不能变,否则会出现程序不能下载的错误,需要退出当前操作,再次点击下载按钮重新开始;

    2、ABOV的仿真需要先下载程序再仿真;

    3、本实验的工程文件可以访问链接:https://share.weiyun.com/5UCkVLa;进行免费获取。

     

    因为小编自己能力水平有限,文中难免有错误或表达不到的信息,还望广大阅读者留言批评指正,谢谢。

     

     

     

     

     

     

    展开全文
  • 51单片机KEILC51的安装

    千次阅读 2020-08-05 17:12:01
    Keil C51是美国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。 与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、...

    在这里插入图片描述

    Keil C51是美国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。
    与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

    一、 KEIL C51 软件的获取

    1、百度网盘:https://pan.baidu.com/s/1tbbvITz1k0Yd-aAmCDfGIg 提取码:ubjr
    2、万能的百度:百度直接搜索 " KEIL C51 下载 " 关键词
    3、官网下载: https://www.keil.com/download/product/

    二、 KEIL C51 软件安装

    1、软件包下载完成之后,我们双击 C51V901.exe 这个应用程序,弹出如下所示对话框。
    在这里插入图片描述
    点击 Next 按钮。 弹出如下对话框。
    在这里插入图片描述
    打勾,然后点击 Next 按钮,弹出如下对话框
    在这里插入图片描述

    点击红框 1 选择软件安装的路径,我们这里在 D 盘内新建一个文件夹,命名为 KEILC51,将其安装到该文件夹内,方便软件的管理。
    特别要注意:
    (1)软件安装保存路径不能出现中文或者特殊字符,否则会出现很多奇怪的错误,到时候很难找问题。
    (2)不要将 KEIL5 软件和 KEIL4 或者 51 的 KEIL 安装在一个文件夹内。
    然后点击 Next ,弹出如下的对话框。
    在这里插入图片描述

    在红色框 1 和 2 中我们随便输入一些东西, 我们这里输入数字 666, 当然也可以输入空格, 但是一定要输入, 否则红色框 3 就一直是灰色状态, 输入完成后点击 Next, 弹出如下对话框。
    在这里插入图片描述
    说明 KEIL C51 软件正在安装,只要等一段时间即可,安装完成以后会出现如下界面。
    在这里插入图片描述
    点击 Finish 完成安装。KEIL C51 安装完成后在电脑桌面上一般会有一个快捷方式,如下所示:
    在这里插入图片描述

    三、软件破解

    上面我们已经安装好了 KEIL C51 编程软件,可以直接使用它来编译一些 51 单片机代码量小于 2K 的小工程。但是 有时候我们开发的项目可能比较大,如果程序代码超过了 2K ,这时候就需要来破解 KEIL C51,因此 KEIL C51 软件的破解非常必要。下面就来介绍下如何破解。
    (1)首先打开 KEIL C51 软件,点击 File/License Management…,复制红色框 3 中的 CID。 操作步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    然后我们打开之前下载的 KEIL C51 软件包, 里面还有一个 keygen.exe文件,如下所示:

    在这里插入图片描述
    此文件用于破解,直接双击它,将刚才从 KEIL C51 中复制的 CID 码粘贴到下面红色框 1 中,并且在红色框 2 选择 C51,然后点击红色框 3, 生成破解码, 将此破解码即红色框 4 内容复制到 KEIL C51 软件内 LIC 框中, 点击Add LIC 即可破解, 如果破解成功则会显示。 操作步骤如下:
    在这里插入图片描述
    如下图所示,红框1就是上面所生成的破解码,点击红框2就会在右下角显示 LIC Added Successfully提示破解成功,同时红框3会显示破解成功后的注册条目信息,该条目最后给出了使用期限(哇偶,我的到2032年才到期,已经够够的了👏🤔😜)。
    在这里插入图片描述

    展开全文
  • 51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)  一. 500ms延时子程序   void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=
     
    

        . 500ms延时子程序

     

    复制代码
    void delay500ms(void)
    {
        unsigned char i,j,k;
        for(i=15;i>0;i--)
        for(j=202;j>0;j--)
        for(k=81;k>0;k--);
    }
    复制代码

     

    产生的汇编:

          C:0x0800      7F0F       MOV        R7,#0x0F

          C:0x0802      7ECA       MOV        R6,#0xCA

          C:0x0804      7D51       MOV        R5,#0x51

          C:0x0806      DDFE       DJNZ       R5,C:0806

          C:0x0808      DEFA       DJNZ       R6,C:0804

          C:0x080A      DFF6       DJNZ       R7,C:0802

          C:0x080C      22          RET      

    计算分析:

      程序共有三层循环

      一层循环n:R5*2 = 81*2 = 162us                    DJNZ    2us

      二层循环m:R6*(n+3) = 202*165 = 33330us            DJNZ    2us + R5赋值 1us = 3us

      三层循环: R7*(m+3) = 15*33333 = 499995us          DJNZ    2us + R6赋值 1us = 3us

      循环外:     5us            子程序调用 2us + 子程序返回 2us + R7赋值 1us    = 5us

      延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms

    计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5

     

    . 200ms延时子程序

     

    复制代码
    void delay200ms(void)
    {
        unsigned char i,j,k;
        for(i=5;i>0;i--)
        for(j=132;j>0;j--)
        for(k=150;k>0;k--);
    }
    复制代码

     

    产生的汇编

    C:0x0800      7F05       MOV        R7,#0x05

    C:0x0802      7E84       MOV        R6,#0x84

    C:0x0804      7D96       MOV        R5,#0x96

    C:0x0806      DDFE       DJNZ       R5,C:0806

    C:0x0808      DEFA       DJNZ       R6,C:0804

    C:0x080A      DFF6       DJNZ       R7,C:0802

    C:0x080C      22           RET

     

    . 10ms延时子程序

     

    复制代码
    void delay10ms(void)
    {
        unsigned char i,j,k;
        for(i=5;i>0;i--)
        for(j=4;j>0;j--)
        for(k=248;k>0;k--);
    }
    复制代码

     

    产生的汇编

    C:0x0800      7F05       MOV        R7,#0x05

    C:0x0802      7E04       MOV        R6,#0x04

    C:0x0804      7DF8       MOV        R5,#0xF8

    C:0x0806      DDFE       DJNZ       R5,C:0806

    C:0x0808      DEFA       DJNZ       R6,C:0804

    C:0x080A      DFF6       DJNZ       R7,C:0802

    C:0x080C      22         RET      

     

    . 1s延时子程序

     

     

    复制代码
    void delay1s(void)
    {
        unsigned char h,i,j,k;
        for(h=5;h>0;h--)
        for(i=4;i>0;i--)
        for(j=116;j>0;j--)
        for(k=214;k>0;k--);
    }
    复制代码

     

    1s延时的验证:

    1.      设置仿真的晶振为12MHz

     

     

    点击看大图

    2.   在延时函数设置断点

     

    3. 单步运行程序,到达延时函数的入口

    4.   先记下进入延时函数的时间

     

     

     5.   step out 跳出函数,记下此时时间,两个时间相减即为延时函数运行时间

    函数运行时间=1.00041400-0.000416001s

    产生的汇编

    C:0x0800      7F05       MOV        R7,#0x05

    C:0x0802      7E04       MOV        R6,#0x04

    C:0x0804      7D74       MOV        R5,#0x74

    C:0x0806      7CD6       MOV        R4,#0xD6

    C:0x0808      DCFE       DJNZ       R4,C:0808

    C:0x080A      DDFA       DJNZ       R5,C:0806

    C:0x080C      DEF6       DJNZ       R6,C:0804

    C:0x080E      DFF2       DJNZ       R7,C:0802

    C:0x0810      22         RET

    在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.

     

    复制代码
    void mDelay(unsigned int Delay) //Delay = 1000 时间为1S 
    { 
        unsigned int i; 
        for(;Delay>0;Delay--) 
        { 
            for(i=0;i<124;i ) 
            {;} 
      
        } 
    }
    
    void waitms(int i) 
    { 
        char m; 
    
        for( ; i ;i--) 
       { 
          for(m = 203; m ; m--) 
          { 
            _nop_(); 
            _nop_(); 
            _nop_(); 
            _nop_(); 
            _nop_(); 
            _nop_(); 
            _nop_(); 
          } 
       } 
    } 
    复制代码

     

    延时1ms的函数 
    时钟频率12MHz

     

    复制代码
    unsigned int sleepTime; 
    unsinged char inSleep = 0; 
    
    void sleepService(void) 
    { 
        if (inSleep) sleepTime--; 
        if (sleepTime == 0) inSleep = 0; 
    } 
    
    void isr_timer(void) //假定定时器中断1ms 中断一次。 
    { 
        ... 
        sleepService(); 
        ... 
    } 
    
    void sleep(unsigned int ms) //延时子程序 
    { 
        sleepTime = ms; 
        inSleep = 1; 
        while(inSleep); 
    } 
    
    void main(void) 
    { 
        .... 
        sleep(1000); //延时 1秒 
        ... 
    } 
    复制代码

     

    如果要求是秒级的这么长的延时,单片机中一般采取不占CPU时间的延时,利用定时器来实现延时,如果非得用循环延时,在C中也通常嵌入汇编实现,这样误差比较小。

    转载自:http://www.cnblogs.com/heiyue/p/3246988.html

     ==========================================================================

    如下程序能实现ms毫秒级的比较精确的延时

    void Delayms(unsigned int n)
    {
        unsigned int i,j;
        for(j=n;j>0;j--)
        for(i=112;i>0;i--);
    }

    用keil可以看出这个延时的时间,我们先延时1ms(Delayms(1))。

    进入Delayms前,sec=0.00042209s

     

    延时后,sec=0.00142253s

    可以知道Delayms(1)实际延时0.00142253s—0.00042209s=0.00100044s≈1ms

    同样如果想延时15ms的话,用Delayms(15),实际延时0.01480903s≈15ms,延时还是挺精确的。

    =======================================================


    展开全文
  • 1、 通常情况下我们的代码量不大的话,没必要去关注RAM的空间,一旦全局变量多,以及代码量大,这种情况下...我们的51系列单片机,使用keil编译器编译时,会发现下方会有三个参数大小,分别是Data,Xdata,Code, ...
  • 选择的时候我这里比较推荐选keil自带的使用at89系列,因为为了方便我们的代码移植,例如,我们其他人只装了keil没加载stc的仿真驱动就没有该系列的头文件,这样他就拿我代码过去使用时编译就有可能报错。 添加新的c...
  • STM32系列单片机如果库函数开发的话,那么不同型号单片机的工程是可以直接移植的。这样的话如果项目中更换了芯片,工程就可以直接移植过去,不用重新编写。这样就节约了很多时间。 下面说一下如何将 在STM32F103...
  • (2)去keil界面,文件->许可与管理查看注册码有没过期 如果过期的话,你的代码大小超过2K,也就是2048字节的话,进入不了main函数,详细说明请看这个文章:https://editor.csdn.net/md/?articleId=111414486
  • 【调试工具】单片机keil常见问题

    千次阅读 2015-05-27 12:16:36
    一、混合编程  1、模块内接口: ... 注意:如果在c51程序中使用了汇编语言,注意在keil编译器中需要激活Properties中的“Generate Assembler SRC File” 和“Assembler SRC File ”两个选项  来个实例
  • keil程序 用来编写单片机c语言程序的,用的人都知道,小巧实用,入门级的软件
  • 单片机keil C中的data、bdata、idata、xdata、hdata、pdata、code解释
  • 实验 报 告 实验名称 使用集成开发环境Keil进行程序开发 指导教师 倪晓军 实验类型 ...1. 了解汇编语言程序的设计方法,熟悉单片机汇编语言程序设计过程; 2.
  • 快速傅里叶变换FFT结果的物理意义,单片机keil C51/avr/dsp程序(已验证) #include //AT89C52 //#include //atmeg128 #include /********************************************************...
  • 在MDK的开发中编译的... 此颜色显示的内容为用户程序中的内容具体的实际情况中会有不同。 error: #18: expected a ")"如果是出现在c文件中, 多半是因为少了一个")",或者错误行有编译器不识别的字符;如果出现在头...
  • 1. 认真听讲,掌握语法规则,例如:C语言的语句规则如下: (1)每个变量必须先说明后引用,变量名的大写是有差别的。 (2)C语言程序一行可以书写多个语句,但每个语句必须以“;”结尾,一个语句也可以多行书写...
  • 51单片机常用小程序

    2010-05-19 09:43:54
    定时器计算器.exe 发光二极管七段码生成工具.exe 单片机51波特率计算工具.exe 串口调试程序.exe 电阻色环的识别.exe 液晶字模生成程序2.0 等等,总共20多个常用小程序,给编程带来很大方便
  • 单片机keil C中的data、bdata、code解释

    千次阅读 2017-10-25 10:17:38
    从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的...
  • 先说一个概念:调试,在企业程序设计里(我把企业商务类型的软件开发叫企业程序设计,把单片机与驱动程序这样接触底层汇编与硬件相关的程序设计叫底层程序设计),调试一般都用来跟踪变量的赋值过程,以及查看内存...
  • Keil C51程序设计

    2017-06-02 13:20:00
    KeilC51是一种专为8051系列单片机设计的C编译器,支持符合ANSI标准的C语言进行程序设计,同时针对8051系列单片机自身特点做了一些特殊扩展。 1. KeilC51程序设计基本语法: 1)KeilC51程序的一般结构: C51程序.....
  • 51 单片机小程序 延时计算 LCD图形生成 液晶字模等 特别适合学生学习单片机使用
  • 在刚一开始接触到51单片机的时候我们是不是该怎么写程序,也不知道如何去写,怎么下手,今天针对这一问题专门总结了一下用keil建立一个单片机的最小工程程序,可谓初学者的福利,只要记着这一点再进行程序扩展就行了...
  • 如何使用Keil uVision2软件调试单片机程序
  • 关于51单片机的data, idata ,xdata, pdata的详细描述
  • KeilC单片机C语言与研究.docKeilC单片机C语言应用研究系 别 计算机系专 业 计算机科学与技术姓 名 刘志远指导教师 张连生Keil C单片机C语言应用研究刘志远 (太原师范学院计算机系200202班 山西·太原 030012)指导...
  • 有关keil c的一些小程序!有兴趣的朋友可以看看!
  • KEIL·单片机·扫盲贴】关于ARM单片机程序内存使用情况的细致讨论。 接触了两年多时间的单片机编程本人对关于单片机程序内存如何耗费的问题一直懵懵懂懂,直到在近日看到某篇有关于MDKMAP文件介绍的帖子后才有种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,732
精华内容 2,692
关键字:

单片机keil小程序