精华内容
下载资源
问答
  • 1如何建立多个C文件首先,我们需要一个新文档,这个文档建立有两种方法(以delay1s函数为例)。第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h。因为都是同编码的所以不会出现乱码,然后在工程...

    1如何建立多个C文件

    首先,我们需要一个新文档,这个文档的建立有两种方法(以delay1s函数为例)。第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h。因为都是同编码的所以不会出现乱

    码,然后在工程中将其打开。第二种方法是直接在工程中新建一个文档,然后保存的时候将名字保存为delay1s.h即可。如果是需要添加很多文件的话建议使用第一种方法,这是个人建议。其

    次,我们需要编写delay1s.h这个文件的内容,其内容如下:

    #ifndef _DELAY1S_H_

    #define _DELAY1S_H_

    void delay1s();//延时函数

    #endif

    这个是头文件的定义,作用是声明了delay1s()函数,因为如果在别的函数中如果我们需要用到delay1s()函数的话,若不事先声明则在编译的时候会出错。对于#ifndef……#define……

    #endif;这个结构大概的意思就是说如果没有定义(宏定义)一个字符串,那么我们就定义它,然后执行后面的语句,如果定义过了那么就跳过不执行任何语句。

    关于为什么要使用这么一个定义方法,比如在led_on()函数中我们调用了delay1s()函数,然后在main()函数中我们也调用了delay()函数,那么,在led_on()函数中我就就要包含头文件

    delay1s.h,然后在main()函数中也要包含delay1s.h,若主函数中我们调用过led_on(),那么在编译的时候,遇到delay1s()和led_on()的时候就会对delay1s.h进行两次解释,那么就会出现

    错误。若有以上预处理命令的话,那么在第二次的时候这个_DELAY1S_H_已经被定义过了,那么就不会出现重复定义的问题。这就是它的作用。但是注意,在编译器进行编译的时候头文件不参

    与编译。

    再次,我们建立一个led_on.h,起代码内容如下:

    #ifndef _LED_ON_H_

    #define _LED_ON_H_

    void led_on();//灯闪烁

    #endif

    作用同delay1s.h,不理解的话可以再看一下上面的解释。

    最后,将我们上次说的三个函数补充完整。

    在led_on()函数中,我们用到了51单片机的一些寄存器的定义,所以我们要包含reg52.h,而且我们用到了delay1s()函数,所以我们要包含delay1s.h,故led_on()函数的代码如下:

    #include #include “delay1s.h” //注意这里没有分号

    void led_on()

    {

    P0=0x00;

    delay1s();

    P0=0xff;

    delay1s();

    }

    Main函数的代码如下:

    #include #include “delay1s.h”

    void main()

    {

    led_on();

    delay1s();//在这里其实只有第一句就可以了,这句是不必要的

    led_on();//这也是不必要的

    }

    在这个函数中,为了再次说明一下#ifndef……#define……#endif这个结构的定义,大家可以把所有的.h文件中的这个结构去掉,然后编译一下看一下效果。

    到这里相信大家对于这种模块化的写法就有大概的了解了,如果我们想添加新功能的时候,比如我们要添加一个流水灯的功能,那么,我们只需要增加一个led_circle.c和led_circle.h,然

    后按照上述步骤添加进工程即可,程序的其他部分不需要任何改动。显然这是很方便的。其实函数的声明可以使用extern关键字,C语言中默认都是这个类型的,所以可以不用写。

    2注意事项

    当你在一个C文件(取名为A)定义了一个变量,但是要在另一个C文件(取名为B)里调用它,这是你要在B文件进行申明,表示你已经定义了

    例如:

    A中定义: unsigned char flag;    B中申明:extern unsigned char flag;

    注意B中要加上变量的类型,不然有时会出问题

    h文件里只能放函数申明和全局变量,其他的都不要放

    本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

    展开全文
  • STARTUP.A51//启动文件.清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 /... //定义了一些外部函数,在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便./*---------...

    STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数

     //特殊寄存器的字节地址和位地址,sfr定义字节变量、sbit定义位变量,用通俗名作为变量名,并赋地址值,从而用名称来使用这些特殊寄存器。

    //定义了一些外部函数,在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便.

    /*--------------------------------------------------------------------------

    REG51.H

    Header file for generic 80C51 and 80C31 microcontroller.

    Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

    All rights reserved.

    --------------------------------------------------------------------------*/

    #ifndef __REG51_H__

    #define __REG51_H__

    /* BYTE Register */

    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;

    sfr DPH = 0x83;

    sfr PCON = 0x87;

    sfr TCON = 0x88;

    sfr TMOD = 0x89;

    sfr TL0 = 0x8A;

    sfr TL1 = 0x8B;

    sfr TH0 = 0x8C;

    sfr TH1 = 0x8D;

    sfr IE = 0xA8;

    sfr IP = 0xB8;

    sfr SCON = 0x98;

    sfr SBUF = 0x99;

    /* BIT Register */

    /* PSW */

    sbit CY = 0xD7;

    sbit AC = 0xD6;

    sbit F0 = 0xD5;

    sbit RS1 = 0xD4;

    sbit RS0 = 0xD3;

    sbit OV = 0xD2;

    sbit P = 0xD0;

    /* TCON */

    sbit TF1 = 0x8F;

    sbit TR1 = 0x8E;

    sbit TF0 = 0x8D;

    sbit TR0 = 0x8C;

    sbit IE1 = 0x8B;

    sbit IT1 = 0x8A;

    sbit IE0 = 0x89;

    sbit IT0 = 0x88;

    /* IE */

    sbit EA = 0xAF;

    sbit ES = 0xAC;

    sbit ET1 = 0xAB;

    sbit EX1 = 0xAA;

    sbit ET0 = 0xA9;

    sbit EX0 = 0xA8;

    /* IP */

    sbit PS = 0xBC;

    sbit PT1 = 0xBB;

    sbit PX1 = 0xBA;

    sbit PT0 = 0xB9;

    sbit PX0 = 0xB8;

    /* P3 */

    sbit RD = 0xB7;

    sbit WR = 0xB6;

    sbit T1 = 0xB5;

    sbit T0 = 0xB4;

    sbit INT1 = 0xB3;

    sbit INT0 = 0xB2;

    sbit TXD = 0xB1;

    sbit RXD = 0xB0;

    /* SCON */

    sbit SM0 = 0x9F;

    sbit SM1 = 0x9E;

    sbit SM2 = 0x9D;

    sbit REN = 0x9C;

    sbit TB8 = 0x9B;

    sbit RB8 = 0x9A;

    sbit TI = 0x99;

    sbit RI = 0x98;

    #endif

    /*--------------------------------------------------------------------------

    INTRINS.H

    Intrinsic functions for C51.

    Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

    All rights reserved.

    --------------------------------------------------------------------------*/

    #ifndef __INTRINS_H__

    #define __INTRINS_H__

    extern void _nop_ (void);

    extern bit _testbit_ (bit);

    extern unsigned char _cror_ (unsigned char, unsigned char);

    extern unsigned int _iror_ (unsigned int, unsigned char);

    extern unsigned long _lror_ (unsigned long, unsigned char);

    extern unsigned char _crol_ (unsigned char, unsigned char);

    extern unsigned int _irol_ (unsigned int, unsigned char);

    extern unsigned long _lrol_ (unsigned long, unsigned char);

    extern unsigned char _chkfloat_(float);

    #endif

    关于sfr、sbit://如同int、char...

    sfr 似乎不是标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新的关键词,其用法是:sfrt 变量名=地址值。

    例:sfr P1 = 0x90;

    这样的一行即定义P1 与地址0x90 对应,P1 口的地址就是0x90.

    SFR的定义在头文件reg51.h或reg52.h中。

    在C51里,利用sbit可访问RAM中可寻址位或SFR中可寻址位。

    如果直接写P1.0,C 编译器并不能识别,而且P1.0 也不是一个合法的C语言变量名,所以得给它另起一个名字,比如P1_0,可是P1_0 是不是就是P1.0呢?C 编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C的关键字sbit 来定义,sbit 的用法有三种:

    第一种方法:sbit 位变量名=地址值

    第二种方法:sbit 位变量名=SFR 名称^变量位地址值

    第三种方法:sbit 位变量名=SFR 地址值^变量位地址值

    例如,定义P1 中的P1.1脚可以用以下三种方法:

    sbit P1_1=0x92 (1)说明:0x92是P1.1 的位地址值

    sbit P1_1=P1^1 (2)说明:其中P1必须先用sfr 定义好

    sbit P1_1=0x90^2 (3)说明:0x90 就是P1的地址值

    因此这里用sfr P1_0=P1^0;就是定义用符号P1_0 来表示P1.0 引

    sfr 是定义8 位(范围0~255)的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器, 如8052 的T2 定时器,可以定义为:

    sfr16 T2 = 0xCC; //这里定义8052 定时器2,地址为T2L=CCH,T2H=CDH

    在KEIL中,汇编是从ORG 000H开始启动,那么它在C51中是如何启动MAIN()函数的呢?实际上是C51中有一个启启动程序STARTUP.A51,它总是和C程序一起编译和链接的.

    启动文件STARTUP.A51中包含目标板启动代码,可在每个project中加入这个文件,只要复位,则该文件立即执行,其功能包括:

    z 定义内部RAM大小、外部RAM大小、可重入堆栈位置

    z 清除内部、外部或者以此页为单元的外部存储器

    z 按存储模式初使化重入堆栈及堆栈指针

    z 初始化8051硬件堆栈指针

    z 向main( )函数交权

    开发人员可修改以下数据从而对系统初始化

    常数名 意义

    IDATALEN                  待清内部RAM长度

    XDATA START           指定待清外部RAM起始地址

    XDATALEN                 待清外部RAM长度

    IBPSTACK                  是否小模式重入堆栈指针需初始化标志,1为需要。缺省为0

    IBPSTACKTOP           指定小模式重入堆栈顶部地址

    XBPSTACK                是否大模式重入堆栈指针需初始化标志,缺省为0

    XBPSTACKTOP         指定大模式重入堆栈顶部地址

    PBPSTACK                是否Compact重入堆栈指针,需初始化标志,缺省为0

    PBPSTACKTOP         指定Compact模式重入堆栈顶部地址

    PPAGEENABLE         P2初始化允许开关

    PPAGE                      指定P2值

    PDATASTART          待清外部RAM页首址

    经常可能需要修改的地方:(红色)

    XDATASTART EQU 0H ;                     the absolute start-address of XDATA memory

    XDATALEN EQU 0H ;                          the length of XDATA memory in bytes.

    XBPSTACK EQU 0 ;                            set to 1 if large reentrant is used.

    XBPSTACKTOP EQU 0FFFFH+1;      set top of stack to highest location+1.

    PPAGEENABLE EQU 0 ;                     set to 1 if pdata object are used.

    PPAGE EQU 0 ;                                  define PPAGE number.

    当在kiel C中新建项目时,会问:

    Copy standard 8051 Starup Code to Project Forder and add file to Project?

    翻译为:复制8051启动代码到项目并和添加文件到项目?

    其实无论您选是还是否,您的代码中都将包含该文件。

    该文件的作用是 初始化 内外部 RAM使其清零,另外还初始化SP等。

    如果上述提示框您选否,对哪些RAM清零将采用默认的方式。

    如果您想改变RAM清零区域(假如希望复位时某些RAM不被清零时会很有用。),您可以选是,这样该文件的一个副本将添加到您的项目,您可以根据需要改写此文件。

    其他SP,SAMLL/COMPACT、LARGE模式的重入函数的堆栈和指针的初始化等和RAM的道理是一样的。

    展开全文
  • 写在开头这是我单片机入门教程系列的第一篇文章,在往下读之前,你需要做一些必要的准备工作。本人也是刚开始入坑单片机,望大家多多指教。准备工作① 首先需要准备一块单片机开发板,我使用的是清翔电子单片机小车...

    写在开头

    这是我单片机入门教程系列的第一篇文章,在往下读之前,你需要做一些必要的准备工作。本人也是刚开始入坑单片机,望大家多多指教。

    准备工作

    ① 首先需要准备一块单片机开发板,我使用的是清翔电子单片机小车附带的单片机开发板。(不同的单片机开发板实现同一功能的代码会有差别,这里提出说明不是打广告)

    ② 一定的C语言基础。

    ③ 需要先下载以下两个软件,网上有详细的下载教程,这里不做赘述。

    266d98c72552

    stc-isp 和 Keil4

    一、打开Keil4,建立工程文件

    点击该选项,创建新的project

    266d98c72552

    每一个project,最好保存在一个新的文件夹里,因为一个project的创建会出现多个文件,在文件夹中方便管理

    266d98c72552

    进入文件夹中,输入你的文件名,点击保存

    266d98c72552

    点击Atmel中的AT89C52,再点击ok

    266d98c72552

    266d98c72552

    点击“否”

    266d98c72552

    二、建立一个.c文件

    点击菜单栏中的file→new,新建一个空文件

    266d98c72552

    点击保存图标

    266d98c72552

    文件名自定义,但是注意后缀名一定是 .c

    然后点击保存

    266d98c72552

    三、添加新建的c文件到工程中

    右键你project栏中的Source,选择“Add Files to Group...”

    266d98c72552

    选择你刚刚创建好的c文件,点击add,再点击close

    266d98c72552

    如果你的project栏中看到刚刚选择的c文件,证明c文件成功添加到工程中

    266d98c72552

    现在可以开始写C文件,在这之前,我们要学会看懂单片机开发板的原理图(买回来都会有配套的)

    茫茫人海中找到“流水灯模块”

    266d98c72552

    266d98c72552

    266d98c72552

    左边P10、P11这些,就代表了与单片机上对应的引脚连在一起

    266d98c72552

    很简单的道理,要想LED1亮,既然LED左边连接了5V(高电平),那么只需让LED左边是0V(低电平)

    266d98c72552

    如何编程控制引脚的高低电平

    266d98c72552

    #include

    sbit LED1 = P1^0;

    void main()

    {

    LED1 = 0;

    }

    写好程序后,需要生成hex文件

    点击红色圈出的图标

    266d98c72552

    选择output,勾选create HEX File

    266d98c72552

    点击圈出的图标,rebuild

    266d98c72552

    没有报错,没有警告

    这时候看看你的文件夹,就会发现出现一个.hex文件,这是烧录到单片机中运行的文件

    266d98c72552

    开始烧录

    开始烧录前,请将单片机开发板用数据线与电脑连起来,并打开单片机开发板开关。

    打开stc-isp。不同的电脑选择的串口号会不同

    266d98c72552

    是COM3

    网上有详细的stc-isp使用教程,这里不作详细叙述

    266d98c72552

    点击“打开程序文件”

    选中我们刚刚创建的hex文件,点击打开

    266d98c72552

    选择正确串口,点击下载/编程

    266d98c72552

    可以看到开发板上第一颗LED被点亮了

    266d98c72552

    写在最后

    之所以在简书上自己写单片机教程,是因为之前玩过单片机但是没碰一段时间一些基本的操作又忘记了,很多次都这样。现在决心玩下去,在简书写自己的教程,一方面方便别人,因为也有和我一样自学的人,一方面方便自己,以后忘记单片机一些操作,我直接看回我自己写的教程就能马上回忆。

    接下来的单片机教程将不会这么详细,后面的教程更多是帮助我自己回忆的。

    展开全文
  • gt //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main(void){uint i;uchar temp;while(1){temp=0x01;fo.....

    #include&ltreg51.h&gt //51系列单片机定义文件

    #define uchar unsigned char //定义无符号字符

    #define uint unsigned int //定义无符号整数

    void delay(uint); //声明延时函数

    void main(void)

    {

    uint i;

    uchar temp;

    while(1)

    {

    temp=0x01;

    for(i=0;i&lt8;i++) //8个流水灯逐个闪动

    {

    P2=~temp;

    delay(100); //调用延时函数

    temp&lt&lt=1;

    }

    temp=0x80;

    for(i=0;i&lt8;i++) //8个流水灯反向逐个闪动

    {

    P2=~temp;

    delay(100); //调用延时函数

    temp&gt&gt=1;

    }

    temp=0xFE;

    for(i=0;i&lt8;i++) //8个流水灯依次全部点亮

    {

    P2=temp;

    delay(100); //调用延时函数

    temp&lt&lt=1;

    }

    temp=0x7F;

    for(i=0;i&lt8;i++) //8个流水灯依次反向全部点亮

    {

    P2=temp;

    delay(100); //调用延时函数

    temp&gt&gt=1;

    }

    }

    }

    void delay(uint t) //定义延时函数

    {

    register uint bt;

    for(;t;t--)

    for(bt=0;bt&lt255;bt++);

    }

    展开全文
  • C文件,是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部...
  • 这个是我自己编写的51单片机的库函数对应的头文件,在网上本人还分享了很多热门模块的库函数,都是现成的,欢迎下载!!!!#ifndef__CONFIG_H#define__CONFIG_H#include<myreg51.h>#include<intrins.h>...
  • 我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。(当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个...
  • 课件1单片机C51语言文件实验2 LED指示灯循环控制 先画出Proteus仿真电路原理图。 8个发光二极管上下循环,闪烁间隔为0.5s Exercises-4.1 LED-7小题 。 Exercises-4.2 LED-7小题。 Exercises-4.1 用位操作和总线操作...
  • 本文介绍了以单片机AT89C51为核心的直流电机测速系统。系统以L298作为直流电机驱动芯片,通过改变引脚的电压的输出PWM波,来实现直流电机的驱动及其速度的调节,通过键盘来给定的直流电机转速和方向的信息,并由霍尔...
  • 51单片机初次使用

    2019-03-20 19:45:24
    51单片机的开发环境是Keil 软件。Keil 软件虽然是一个收费软件,但从uVision2到目前的uVison4版本都有破解版,在网上都可以找到下载。笔者推荐大家使用uVisong4破解版本,好处不用多说。Keil uVision4软件的压缩包里...
  • 基于51单片机简易智能家居

    千次阅读 2020-11-23 22:18:39
    读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • 单片机C51编程规范

    2021-05-20 12:11:27
    1单片机C51编程规范- 前言为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。2 单片机C51编程规范-范围本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对C51编程...
  • 工程建立、点亮1个LED灯、点亮任意几个LED灯、烧录,端口选择、串口驱动
  • 在网上找到这份单片机C51编程规范,觉得很有用,决定在以后自己编C51程序的时候用上。1单片机C51编程规范-前言为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。2单片机C51编程规范-...
  • Proteus入门教程及仿真Proteus基本介绍Proteus功能Proteus特点Proteus界面Proteus元件库对应中文名称Proteus 8的安装Proteus 51单片机的仿真生成.h文件Proteus模拟仿真 Proteus基本介绍 Proteus软件是英国Lab Center...
  • Proteus 8仿真以及C51单片机广告灯的设计(C语言)实例 一、 广告灯程序编译 二、 Proteus8 仿真 三、 开发板调试 四、 注意事项 一、 广告灯程序编译 打开Keil uVision 5新建工程 搜索AT89C52芯片并点击OK ...
  • LY-51S单片机实验指导书(广西大学单片机实验)实验一 单片机开发板与Keil C51的使用实验用的单片机开发板如图1-1所示,它采用独立模块结构,只有电源是连接到各个模块的,而信号接口则是默认悬空。当使用到某一模块时...
  • C51单片机学习笔记(一)——搭建开发环境及烧写工具 文章目录C51单片机学习笔记(一)——搭建开发环境及烧写工具1.搭建软件开发环境及使用(Keil uVision)2.将程序下载到单片机(烧写)在sublime Text3中配置单片机的...
  • 51单片机能直接运行的文件格式是

    千次阅读 2020-12-20 11:14:47
    【单选题】51单片机能直接运行的文件格式是 ______ 。 【判断题】科学管理的目标是提高生产效率和改善劳资关系。 【判断题】链表是一种动态存储技术,尤其适用于数据个数可变的数据存储,以下是一个链表示意图。 (2.0...
  • 51单片机教程 第一个51程序 :点亮一个发光二极管

    千次阅读 多人点赞 2020-01-21 16:39:48
    教你如何不花一分钱学会51单片机 第一个51程序 :点亮一个发光二极管 相信很多朋友在初学51单片机的时候不知道如何入手,今天我来带领大家入门STC89C52单片机。(与AT89C51差不多,代码兼容)只需要安装两个软件,...
  • 熟悉使用Proteus 8.9电路仿真软件以及使用51单片机完成时钟打铃仿真电路的实现一、在keil创建hex文件二、在Proteus电路仿真软件上绘制电路图三、仿真电路的实现四、总结 一、在keil创建hex文件 1、创建一个新工程并...
  • 本系列文章讲述了基于proteus仿真的51单片机学习,内容全面,不仅讲解电路原理,还讲解了单片机c语言,实例丰富,内容全面。
  • 基于Keil5的51单片机环境配置(附带2032、VSCODE编辑环境配置与卸载教程) 最近捡起闲置已久的单片机学习板开始捣鼓,首先是配置开发环境,好久没操作了,配了老半天终于折腾好了,这里把我的历程分享一下,希望对...
  • 【网络收录】基于51单片机开发音乐播放器 本文作者:天析 作者邮箱:2200475850@qq.com 发布时间:Thu, 22 May 2014 18:14:00 +0800 特别声明:本资料来源于网络,北极边界安全团队不享有本作品的相应...
  • C51单片机

    2018-09-12 13:04:14
    保存(弹窗否)并选择cpu为atm89c51(弹窗否) 创建新文本 //(FILE下方空白图标-&amp;amp;gt; 保存并命名为main.c) 将c文件添加到工程 //(右击souce文件夹 -&amp;amp;gt; add file to…) 生成hex文件 /...
  • 软件篇: ...提取码:8888) ...提取码:8888) 软件使用简单教程: ...点击project--newproject--保存位置(建立51SCMCode)--弹出窗口以供我选择单片机型(Atmel-AT89C52)--点击“否”--点击Target1-...
  • 51单片机的指令和sfr汇总51 单片机编程备忘录一、指令51 系列的指令说复杂也不复杂,说简单吧,也比较繁琐讨厌。总体上,可以分为7 个大类,如下表。序号 大类 子类 说明1 辅助 伪指令 这类指令都是为了方便程序汇编...
  • 刚开始学STC51单片机的开发,用Keil uVision4进行编辑和编译。Keil的IDE是使用工程方式组织,对于小弟初学并不是很方便。每次做个试验都要建立一个工程,而且会出现一堆文件。虽然电脑还可以,感觉启动IED比较慢Keil...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 819
精华内容 327
关键字:

51单片机建立文本文件