C51程序在Keil C51下的调试步骤

合集下载

Keil C51后的编辑界面

Keil C51后的编辑界面

进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。

下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。

1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名4)完成上一步骤后,屏幕如下图所示字为C51如下图所示,然后点击保存.3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。

5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。

注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。

然后,单击“保存”按钮。

6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单然后单击“Add File to Group ‘Source Group 1’”屏幕如下图所示选中Test.c,然后单击“Add ”屏幕好下图所示注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同7)现在,请输入如下的C语言源程序:#include <reg52.h> //包含文件#include <stdio.h>void main(void) //主函数{SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; //此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. \n”); //打印程序执行的信息printf(“I will be your friend.\n”);while(1);}在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

实验一 Keil C51软件使用

实验一  Keil C51软件使用

实验一Keil软件使用
一、实验目的
1、熟悉Keil软件的工作界面及其基本使用方法;
2、初步掌握程序的调试方法,能够查询指令的执行效果;
3、熟悉汇编语言程序和C语言程序的编译方法,能够生成目标代码HEX文档。

二、实验仪器
1、PC机;
2、Keil软件。

三、实验内容
1、熟悉Keil C51软件界面及使用。

2、简单程序及汇编指令调试,编译。

(1) 传送指令
设置内部RAM的值,(30H)=40H, (40H)=10H,单步执行下列程序,检查结果。

MOV R0,#30H
MOV A,@R0
MOV R1, A
MOV B, @R1
执行后:(R0)= ,(R1)= ,(A)= ,(B)= ,(30H)= ,(40H)= 。

(2) 运算指令
3、编译LED灯闪烁程序,生成HEX文档。

(1) PROTEUS电路图
(2) 汇编程序
ORG 0000H
CLR P1.0 ; LED点亮
SJMP $
END
(3) C语言程序
#include <reg51.h>
sbit LED = P1^0;
void main()
{
while(1)
{
LED =0;
}
}
四、预习要求
1、读懂各程序;
2、预先给出运算结果,以便和实验结果比较;
3、能够读懂,并能编写点亮LED灯程序。

五、思考题
1、如何才能使上述电路图的LED灯闪烁?
2、何为汇编语言伪指令?程序中“ORG 0000H”和“END”分别具有什么作用?。

Keil C51详细设置

Keil C51详细设置

Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。

二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX @Ri,A 或MOVX A,@Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX @DPTR,A 来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATINGNONE:不适用操作系统RTX51-TINY:使用TINY操作系统RTX-FULL:使用FULL操作系统Keil C51 提供了Tiny多任务操作系统,使用定时器0来做任务切换,效率很低,无实用价值。

Keil C51软件的使用方法

Keil C51软件的使用方法

Keil C51软件的使用方法进入Keil C51 后,屏幕如下图所示。

几秒钟后出现编辑界1 新建工程1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输入工程文件的名字,点保存。

3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示2 编写程序1)单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件因为实现保存后,在此后输入程序过程中,软件会自动帮助差错。

单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。

注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。

然后,单击“保存”按钮。

2)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单然后单击“Add File to Group …Source Group 1‟” 屏幕如下图所示选中此前建立的程序文件,然后单击“Add ”屏幕好下图所示3)输入的C语言源程序:#include <reg52.h> //包含文件#include <stdio.h>void main(void) //主函数{SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; //此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. \n”); //打印程序执行的信息printf(“I will be your friend.\n”);while(1);}在输入上述程序时,我们看到了事先保存待编辑的文件的好处,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

单片机开发与仿真软件keilc51的使用

单片机开发与仿真软件keilc51的使用

单片机开发与仿真软件Keil C51的使用一、Keil C51 操作入门Keil C51 简介Keil C51 是德国知名软件公司Keil(现已并入ARM 公司)开发的基于8051 内核的微控制器软件开发平台,是目前开发8051 内核单片机的主流工具。

Keil 51支持汇编语言、C语言等各种开发语言。

其中,uVision2集成开发环境包含项目管理、源代码编辑和强大的程序调试环境。

uVision2调试器是一个强大的全特性调试器,允许用户在PC机上完全模拟目标程序、指令集和片内外围功能。

实验所用的是Keil C51 评估版。

Keil C51 的启动双击桌面上的“Keil uVision2”图标,启动Keil C51程序,启动界面如图1所示。

图1 Keil C51的启动界面建立第1 个Keil C51 程序Keil C51 是一个功能很强大的软件,但是使用起来并不复杂。

现在就通过建立一个简单的LED(发光二极管)闪烁发光的实例来初步掌握Keil C51的基本用法。

硬件电路参见图2,单片机I/O 输出低电平可点亮LED。

图2 LED 闪烁发光电路●新建工程。

执行Keil C51 软件的菜单“Project | N ew Project…”,弹出一个名为“Create New Project”的对话框。

先选择一个合适的文件夹准备来存放工程文件,比如“E:\Project\LedFlash”,其中“LedFlash”是新建的文件夹。

建议:今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。

最后,为工程取名为“LedFlash”,并保存。

参见图3。

图3 新建Keil C51 工程●选择CPU。

紧接着,Keil C51 提示选择CPU 器件。

8051 内核单片机最早是由鼎鼎大名的Intel 公司发明的,后来其他厂商如Philips 、Atmel 、Winbond 等先后推出其兼容产品,并在8051 的基础上扩展了许多增强功能。

单片机仿真软件Keil C51软件的使用教程(中文版)

单片机仿真软件Keil C51软件的使用教程(中文版)

单片机仿真软件Keil C51软件的使用教程(中文版)keil uvision2 C51软件是目前功能最强大的单片机c语言集成开发环境,本软件及视频教程可以本站下载。

下面我们通过图解的方式来Keil C51软件的使用教程,学习最简单的,如何输入源程序→ 新建工程→ 工程详细设置→ 源程序编译得到目标代码文件。

第一步:双击Keil uVision2的桌面快捷方式(图1),启动Keil集成开发开发软件。

软件启动后的界面如图2所示。

图1:启动Keil uVision2单片机集成开发环境图2:软件启动后的界面第二步:新建文本编辑窗。

点击工具栏上的新建文件快捷按键,即可在项目窗口的右侧打开一个新的文本编辑窗,见图3所示。

图3:新建文本编辑窗第三步:输入源程序。

在新的文本编辑窗中输入源程序,可以输入C语言程序,也可以输入汇编语言程序,见图4。

图4:输入源程序第四步:保存源程序。

保存文件时必须加上文件的扩展名,如果你使用汇编语言编程,那么保存时文件的扩展名为“.asm”,如果是C语言程序,文件的扩展名使用“*.C ”。

图5:保存源程序注:第3步和第4步之间的顺序可以互换,即可以先输入源程序后保存,也可以先保存后输入源程序。

第五步:新建立Keil工程。

如图6所示,点击 "工程" → "新建工程" 命令,将出现保存对话框(图7)。

图6:新建工程图7:保存工程对话框在保存工程对话框中输入你的工程的文件名,Keil工程默认扩展名为".uv2",工程名称不用输入扩展名(见图7),一般情况下使工程文件名称和源文件名称相同即可,输入名称后保存,将出现"选择设备"对话框(图8),在对话框中选择CPU的型号。

第六步:选择CPU型号。

如图8所示,为工程选择CPU型号,本新建工程选择了ATMEL公司的AT89C51单片机。

图8:选择CPU型号对话框第七步:加入源程序到工程中。

Keil C51 基本使用方法

Keil C51 基本使用方法

附录:一、Keil C51工程建立与仿真1、建立一个工程项目,选择芯片并确定选项双击Keil uVision2快捷图标后进入Keil C51开发环境,单击“工程”菜单,在弹出的下拉菜单选中“新工程”选项,屏幕显示为图1。

图1 建立一个工程项目在文件名中输入一个项目名“my-test”,选择保存路径(可在“我的文档”中先建立一个同名的文件夹),单击保存。

在随后弹出的“为目标target选择设备”(Select Device for Target “Target1”)对话框中用鼠标单击Atmel前的“+”号,选择“89C51”单片机后按确定,如图2所示。

图2 选择单片机后按确定选择主菜单栏中的“工程”,选中下拉菜单中“Options for Target ‘Target1’”,出现图3所示的界面。

单击“target”页面,在晶体Xtal(MHz)栏中选择试验板的晶振频率,默认为24MHz,我们讲座试验板的晶振频率为11.0592MHz,因此要将24.0改为11.0592。

然后单击输出“Output”页面,在“建立hex格式文件”前打勾选中,如图3-4。

其它采用默认设置,然后点确定。

图3 选择Target页面图4 选择Output页面2、建立源程序文件单击“文件”菜单,在下拉菜单中选择“新建”,随后在编辑窗口中输入以下的源程序(如图5)。

ORG 0000HLJMP MAINORG 030HMAIN: MOV P0,#00HMOV P1 ,#00HMOV P2 ,#00HMOV P3 ,#00HACALL DELMOV P0 ,#0FFHMOV P1 ,#0FFHMOV P2 ,#0FFHMOV P3 ,#0FFHACALL DELAJMP MAINORG 0200HDEL: MOV R5,#04HF3: MOV R6,#0FFHF2: MOV R7,#0FFHF1: DJNZ R7,F1DJNZ R6,F2DJNZ R5,F3RETEND图5 建立源程序文件程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(如my-test.asm)保存在刚才所建立的一个文件夹中(my-test)。

(完整word版)KeilC51程序调试过程

(完整word版)KeilC51程序调试过程

如何使用Keil C软件调试单片机程序调试一般都是在发生错误与意外的情况下使用的。

如果程序能正常执行,调试很多时候都是用不上的.所以,最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。

单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试.使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。

但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。

软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。

硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到仿真器,然后与单片机一样执行。

仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出)。

仿真器会将单片机内部内存与时序等情况返回给计算机,这样就可以在计算机里看到单片机程序真实的执行情况。

不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。

仿真器可以接入实际的电路中。

图1:仿真器下面将具体介绍如何使用Keil uVision 软件来调试单片机程序。

首先:打开一个已经编译通过的单片机项目。

选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试。

接下来看到的窗口就是调试窗口了:下面具体说说相关子窗口的功能:1、左侧的ProjectWorkspaceRegs是片内内存的相关情况值;Sys是系统一些累加器、计数器等。

Regs很简单就不多说。

具体介绍一下Sys:a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

b 寄存器B,主要用于乘法和除法操作。

spsp_maxdptr 数据指针DPTR。

PC $states 执行指令的数量。

KeilC51使用教程

KeilC51使用教程

Keil C语言程序设计示例教程(开发C8051F310)使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。

KEIL uVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。

在这里以51单片机并结合C程序为例(汇编操作方法类似,唯一不同的是汇编源程序文件名后缀为“.ASM ”),图文描述工程项目的创建和使用方法。

1.首先我们要养成一个习惯:最好先建立一个空文件夹,把您的工程文件放到里面,以避免和其他文件混合,如下图, 创建了一个名为“PRJ_C8051”文件夹2.点击桌面上的Keil uVision4图标,出现启动画面:3.点击“project --- New uVision Project”新建一个工程:4.在对话框,选择放在刚才建立的“PRJ_C8051”文件夹下,给这个工程取个名为Test_C8051F310, 然后保存,工程的后缀为uvporj。

5.弹出一个框,在CPU类型下我们找到并选中“Silicon Laboratories. Inc.”下的C8051F3106.加入C8051起动码7.建立一个源程序文本8.在下面空白区别写入或复制一个完整的C程序:9.输入源程序文件名名称,示例输入“Test_C8051F310.c”,然后保存:10.把刚创建的源程序文件加入到工程项目文件中。

11.设置---目标(第1步~ 第4步)15.工程项目创建和设置全部完成!点击保持并编译16.在C8051F310中的C语言程序示例//-----------------------------------------------------------------------------// Includes// 在c8051f310.h在头文件中定义了C8051F310的寄存器、输入/输出的端口//-----------------------------------------------------------------------------#include <c8051f310.h> // SFR declarations//-----------------------------------------------------------------------------// 16-bit SFR Definitions for 'F30x//-----------------------------------------------------------------------------sfr16 TMR2RL = 0xca; // Timer2 reload valuesfr16 TMR2 = 0xcc; // Timer2 counter//-----------------------------------------------------------------------------// Global CONSTANTS//-----------------------------------------------------------------------------#define SYSCLK 24500000 / 8 // SYSCLK frequency in Hzsbit LED = P0^0; // LED='1' means ON//-----------------------------------------------------------------------------// Function PROTOTYPES//-----------------------------------------------------------------------------void SYSCLK_Init (void);void PORT_Init (void);void Timer2_Init (int counts);void Timer2_ISR (void);//-----------------------------------------------------------------------------// MAIN Routine//-----------------------------------------------------------------------------void main (void){// disable watchdog timerPCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer// enable)SYSCLK_Init (); // Initialize system clock to// 24.5MHzPORT_Init (); // Initialize crossbar and GPIOTimer2_Init (SYSCLK / 12 / 10); // Init Timer2 to generate// interrupts at a 10Hz rate.EA = 1; // enable global interruptswhile (1) // spin forever{}}//-----------------------------------------------------------------------------// SYSCLK_Init//-----------------------------------------------------------------------------//// This routine initializes the system clock to use the internal 24.5MHz / 8// oscillator as its clock source. Also enables missing clock detector reset.//void SYSCLK_Init (void){OSCICN = 0x80; // configure internal oscillator for// its lowest frequency RSTSRC = 0x04; // enable missing clock detector }//-----------------------------------------------------------------------------// PORT_Init//-----------------------------------------------------------------------------//// Configure the Crossbar and GPIO ports.// P3.3 - LED (push-pull)//void PORT_Init (void){// assignmentsXBR0 = 0x00; // no digital peripherals selectedXBR1 = 0x40; // Enable crossbar and weak pull-ups//P3MDOUT |= 0x08;P0MDOUT |= 0x03; // enable LED as a push-pull output}//-----------------------------------------------------------------------------// Timer2_Init//-----------------------------------------------------------------------------//// Configure Timer2 to 16-bit auto-reload and generate an interrupt at// interval specified by <counts> using SYSCLK/48 as its time base.//void Timer2_Init (int counts){TMR2CN = 0x00; // Stop Timer2; Clear TF2;// use SYSCLK/12 as timebase CKCON &= ~0x60; // Timer2 clocked based on T2XCLK;TMR2RL = -counts; // Init reload valuesTMR2 = 0xffff; // set to reload immediatelyET2 = 1; // enable Timer2 interruptsTR2 = 1; // start Timer2}//-----------------------------------------------------------------------------// Interrupt Service Routines//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// Timer2_ISR//-----------------------------------------------------------------------------// This routine changes the state of the LED whenever Timer2 overflows.//void Timer2_ISR (void) interrupt 5{TF2H = 0; // clear Timer2 interrupt flagLED = ~LED; // change state of LED}17.KEIL C语言与汇编语言的混合编程方法C语言中加入汇编语言模块的方法:例子:void func(){C语言代码……#pragma asmMOV R6,#23DELAY2: MOV R7,#191DELAY1: DJNZ R7,DELAY1DJNZ R6,DELAY2RET#pragma endasmC语言代码……}汇编部分需要用#pragma asm和#pragma endasm包起来18.KEIL C混合编程中的错误与解决方法1)Keil提示“asm/endasm”出错的解决方法如果只是像1中那样直接加入汇编代码的话,编译将会报错,错误如下:compiling sendata.c...sendata.c(81): error C272: 'asm/endasm' requires src-control to be active sendata.c(87): error C272: 'asm/endasm' requires src-control to be active Target not created解决方法如下:首先project workspace窗口右键单击包含有汇编部分的c语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。

A51(C51)编译步骤

A51(C51)编译步骤

`一、KeilC51编译环境安装1. 双击开始安装2. 打补本。

将文件复制到C:\Keil\C51\BIN目录中,并双击运行点按钮运行完成后点退出。

3、破解双击快捷方式图标启动KeilC51编译器选择File菜单下的License Management,打开License Managemen窗口然后运行破解程序:选MCU type为51, 并勾上External CID, 然后将License Managemen窗口中的CID复制过来再点Generate按钮生成注册码:将注册码复制到License Managemen窗口中点Add LIC按钮显示*** LIC Added Sucessfully ***表示已经注册成功到此,编译器安装完成。

二、新建工程及工程设置下面以SJ4000DT代码为例进行说明:1.首先建立工程目录在E盘建一个文件夹,命名为SJ4000DT,并将A51源程序复制进来:2.运行KeilC51编译器,选Project\New\uVision Project菜单在打开的窗口中选择工程目录路径,并输入工程文件名,点保存按钮:然后出现器件选择窗口,选择Intel的8032AH点确定后弹出选框,选”否”3. 将A51源文件加入到工程点左边Project Workspace中的“+”号,展开在Source Group 1上点右键,在菜单中选Add Files to Group ‘Source Group 1’选择文件类型为Asm Source file(*.s*;*.src;*.a*)框选.a51源文件点Add按钮,后再点Close.文件就已经加到新建的工程了:4. 工程设置点Options for Target图标弹出窗口:切换到Output选项页,勾选Create HEX File点确定按钮,配置完成。

三、编译源文件生成可烧写芯片的目录文件1.编译打开工程后,点击即可进行编译编译完成后,下方的信息窗口中会显示出编译情况2. 目标文件编译器编译后,生成的最终目标文件为.hex格式的文件。

Keil C51单片机实验指导

Keil C51单片机实验指导

Keil C51实验项目Keil C51实验项目 (1)一、单片机的IO编程 (2)实验1 IO开关量输入实验 (3)实验2 IO输出驱动继电器(或光电隔离器)实验 (4)实验3 IO输入/输出---半导体温度传感器DS18B20实验 (5)二、单片机的中断系统 (6)实验 1 外部中断----脉冲计数实验 (6)三、单片机的定时器/计数器 (7)实验1 计数器实验 (7)实验2 秒时钟发生器实验 (9)四、单片机的串口特点和编程 (10)实验1 PC机串口通讯实验 (10)实验2 RS485通讯实验 (12)五、存储器 (13)实验1 RAM存储器读写实验 (13)六、PWM发生器 (14)实验1 PWM发生器(模拟)实验 (14)实验2 蜂鸣器实验 (15)七、WDG看门狗 (16)实验1 外扩WDG(MAX705)实验 (16)实验2 WDG(内部)实验 (17)八、SPI总线 (18)实验1 SPI(模拟)实验-----TLC2543 AD转换实验 (18)实验2 SPI(模拟)实验-----TLV5616 DA转换实验 (19)九、I2C总线 (20)实验1 I2C(模拟)实验-----IC卡(AT24C01)读写实验 (20)十、综合实验 (22)实验1 HD7279LED数码管显示实验 (22)实验2 HD7279键盘实验 (22)实验3 电机转速实验 (23)十一、步进电机实验 (25)实验1 步进电机正反转实验 (25)十二、TFT液晶显示实验 (25)实验1 TFT液晶显示彩色条纹实验 (25)十三、16X16LED点阵显示汉字实验 (26)实验1 16X16LED点阵显示汉字实验 (26)一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。

内容:编程读取IO引脚状态。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

Keil-C51详细设置

Keil-C51详细设置

Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。

二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram 不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX @Ri,A 或MOVX A,@Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX @DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATINGNONE:不适用操作系统RTX51-TINY:使用TINY操作系统RTX-FULL:使用FULL操作系统Keil C51 提供了Tiny多任务操作系统,使用定时器0来做任务切换,效率很低,无实用价值。

Keil C51编程调试教程

Keil C51编程调试教程

Keil C51集成开发环境编程与调试教程山东师大传媒学院刘新阳编一、Keil中进行C语言编程的基本步骤同VC之类的通用C语言集成开发环境(IDE)一样,Keil也采用“工程”(Project)的方式管理源代码及相关文件,这种管理方式为由多个源代码文件组成的大型程序开发提供了方便。

不管是最简单的C51程序,还是复杂的多文件程序都需要以下步骤:1)先建立新的工程文件;2)在工程中新建源代码文件,或是将已经存在的源代码文件加入工程;3)编译;4)调试,修正错误再编译;5)将生成的二进制文件*.hex烧入单片机。

本教程重点介绍上述前4个步骤。

二、Keil中新建工程的步骤1. 单击菜单“Project——New uVision Project……”出现新建工程对话框:在此对话框中选择存放工程各类文件的路径和文件夹,然后为工程的主文件取个名字,以后单击该主文件即可打开这个工程项目。

2. 选择单片机型号上个窗口关闭后,马上会呈现下面这个窗口,在这里我们要选择所使用的单片机型号。

具体到这里,我们选择Atmel文件夹下的AT89C51。

(也可以选择下面的AT89C52、AT89S51或AT89S52)注意:单击OK后会出现下面这个提示信息:这里一定要选“否”,即:不需要自动添加起始代码。

完成后,即可看到Keil主界面:此时可以看到屏幕左侧的“Project”窗口(工程文件管理器)中,Target1下面的Source Group1(源代码文件组1)为空,即现在新建的工程中还不包含任何源代码文件。

所以,接下来要做的就是新建源代码文件。

3. 新建源代码文件单击菜单“File——New……”之后,即可在编辑区看到新建了一个名为text1的文本文件。

单击工具栏上的“保存”(图标为磁盘)按钮,可以在保存文件对话框中选择这个文本文件的保存位置(一般和工程文件保存在同一级文件夹)和文件的主名及扩展名。

如果只有一个源代码文件,一般主名命名为工程名,若是C语言源代码,扩展名设置为.c即可。

KEIL C51使用说明

KEIL C51使用说明

20.1 工程项目的建立、源程序文件的建立及加载Keil C51软件UVision打开后,程序窗口的左边有一个项目工作区管理窗口,该窗口有3个标签,分别是Files、Regs和Books,这3个标签页分别显示当前项目的文件结构、CPU的寄存器及部分特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件,如果是第一次启动Keil C51,那么这3个标签页全是空的(图20-1)。

图20-1 Keil C51打开后界面20.1.1 建立工程文件在单片机开发项目中,有时有多个的源程序文件,并且还要为项目选择CPU以确定编译、汇编、连接的参数,指定调试的方式等。

为便于管理,Keil C51使用工程项目(Project)的方法,将这些参数设置和所需的所有文件都放在一个工程项目中,只能对工程项目而不能对单一的源程序进行编译(汇编)和连接等操作。

一、先在硬盘上建立一个需保存工程文件的目录(例如在“我的文档” 中建立一个test的文件夹),为便于管理及使用,目录名称可与工程名称一致。

二、1、选择“工程>新工程”菜单(图20-2)。

弹出对话框,要求给将要建立的工程起一个名字,可以在编辑框中输入一个名字(例如test),扩展名不必输入(默认的扩展名为.uv2)。

点击“保存”按钮(图20-3)。

2、随后弹出一个“为目标target选择设备”(Select Device for Target “Target1”)对话框,这个对话框要求选择目标CPU(即你所用单片机开发板芯片的型号),Keil C51支持的CPU很多,我们选择Atmel公司的AT89C51(或AT89S51)芯片,用鼠标单击Atmel前的“+”号,选择“AT89C51(或AT89S51)”单片机后按确定(图20-4)。

随即系统弹出是否拷贝8051启动代码到工程项目并添加到当前项目组的提示(Copy Standard 8051 Startup Code to Project Folder and Add File to Project ?),我们选否。

12 实验2 Keil C51软件的使用

12 实验2 Keil C51软件的使用

究竟从哪一个单元开始的相邻单元则与你的设置 有关。 • 以整型为例,如果你输入的是I:0,那么00H 和 01H单元的内容将会组成一个整型数;如果你输 入的是I:1,01H和02H单元的内容全组成一个整 型数,以此类推。 第三部份的Modify Memory at X:xx 用于更改鼠标 处的内存单元值,选中该项即出现一个对话框, 可以在这个对话框内输入要修改的内容。
1、围绕一个案例,通过工程建立→文件建立 →文件添加→参数设置→程序输入→程序编 译→程序调试→程序运行等过程,全面学习 Keil C51软件的使用方法。 2、观察寄存器窗口、各类存储器窗口内容, 掌握不同空间的不同检查方法。 3、用单片机仿真器、实验箱进行仿真调试。
三、仪器设备
计算机、Keil uVision3 软件。 单片机仿真器、实验箱。
观察窗口
1、反汇编窗口(Dissambly Window)
点击View→Dissambly Window可以打开反汇编窗 口。 该窗口可以显示反汇编后的代码、源程序和相应 反汇编代码的混合代码。 可以在该窗口进行在线汇编、利用该窗口跟踪已 找行的代码、在该窗口按汇编代码的方式单步执 行。

用单片机仿真器调试程序
第一步:单片机仿真器的连接。
仿真头
计算器
仿真器
实验箱A1区
第二步:连接实验箱电路。 实验箱A2区:P1口 实验箱D1区:LED
LED
P1口
第三步:KEIL软件应用。 硬件仿真运行(全速、单步、设置断点), 查看运行情况。
注意: 工程设置→Debug页面→ Use:→选择型号 (如STAR) →右侧列表→选择型号(如 STAR51PH+)


这些窗口的显示值可以以各种形式显示,如十进制、 十六进制、字符型等,改变显示方式的方法是点鼠 标右键,在弹出的快捷菜单中选择。 该菜单用分隔条分成三部份,其中第一部份与第二 部份的三个选项为同一级别。 选中第一部份的任一选项,内容将以整数形式显示。 选中第二部份的Ascii项则将以字符型式显示。 选中Float项将相邻四字节组成的浮点数形式显示。

keil c51实验报告

keil c51实验报告

keil c51实验报告Keil C51实验报告引言:Keil C51是一款嵌入式系统开发工具,被广泛应用于单片机编程和开发。

本实验报告将介绍在使用Keil C51进行单片机编程时的一些实验结果和经验总结。

一、实验背景在嵌入式系统开发中,单片机是最常用的控制器之一。

单片机的编程需要使用特定的开发工具,Keil C51就是其中之一。

Keil C51提供了强大的集成开发环境,使得单片机的编程工作变得更加高效和便捷。

二、实验目的本实验的目的是通过使用Keil C51开发工具,学习单片机的编程方法和技巧,并通过实验验证编写的程序的正确性和可靠性。

三、实验过程1. 硬件准备在进行实验之前,首先需要准备好所需的硬件设备,包括单片机开发板、电源、连接线等。

确保硬件设备的连接正确且稳定。

2. 软件安装下载并安装Keil C51开发工具,根据提示进行相应的设置和配置。

确保软件的安装和配置正确。

3. 编写程序使用Keil C51开发工具,编写所需的程序。

根据实验要求和目标,编写相应的代码,并进行调试和测试。

在编写过程中,可以使用Keil C51提供的丰富的函数库和工具,提高编程的效率和质量。

4. 烧录程序将编写好的程序通过编程器烧录到单片机中。

确保烧录的程序正确无误。

5. 实验验证将烧录好的单片机连接到实验电路中,进行实验验证。

通过观察实验结果和数据,判断编写的程序是否达到了预期的效果和要求。

四、实验结果与分析通过使用Keil C51进行单片机编程实验,我们得到了以下实验结果和分析:1. 实验一:LED闪烁在这个实验中,我们使用Keil C51编写了一个简单的程序,控制LED灯的闪烁。

通过调试和测试,我们成功地实现了LED灯的闪烁效果。

这个实验验证了我们对Keil C51开发工具的基本掌握程度。

2. 实验二:温度传感器读取在这个实验中,我们使用Keil C51编写了一个程序,通过温度传感器读取环境的温度值,并将其显示在数码管上。

KeilC51教程

KeilC51教程

新建文件
• 1.打开File中的New.
• 2.把程序输入新文件。 • 3.保存文件,左击工具栏的保存工具。
• 4.在文件名栏中输入文件名,如 Text1.asm。在点保存。你输入的文件是 C语言为Text1.c,输入的文件是汇编为 Text1.asm。
加载
• 1.右击Project window栏里的Source Group1,点开Add Files to Group‘ Source Group1’。
• 3.Debug Toolbar工具栏里第一个为复位 键,第二个为全速运行,第三个为暂停, 第四个为单步运行,第五个为单步循环 里运行,第六个为跳出循环。
• 2.如图找到文件类型里的a*类型。
• 3.如图找到你保存asm 文件,然后电击 添加就行了。
参数设置
• 1.右击Project window 栏里的Target1 ,点 开 Options for Target ‘Target1’。
• 2.在Target选项卡里把“Xtal(MHZ):”的参 数改为你单片机用的频率数。如12MHZ 等。
• 3.在Output选项卡里把Create Hex Fi选中。 这是生成hex文件用于ISP下载。最后点确 定就行了。
软件仿真
• 1.编辑文件,单击Build Toolbar栏的三个 • 快捷键,进行编辑。看有无错误。警告 没影响。
• 2.打开菜单栏里的Debug的Start/stop Debug Sesion
KeilC51教程
新建一项目
1.打开工具栏里的Project。
2.打New Proபைடு நூலகம்ect。看我们的项目放在我们理想 的什么位置。如我们放到桌面上,先新建一 个文件夹。

Keil-C51详细设置

Keil-C51详细设置

Keil-C51详细设置Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。

二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram 不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX @Ri,A 或MOVX A,@Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX @DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATING方法2:使用BL51 Locate选项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51程序在Keil C51下的调试步骤
现在广泛使用的C51集成开发环境是Keil软件。

要使用Keil软件,首先要正确安装Keil软件,该软件的Eval版本可以直接去http://www. 下载,其步骤与一般Windows 程序安装类似,这里就不再赘述了。

Keil软件的详细说明见相关资料,这里仅作简要说明,以便于读者在后面的章节中实际动手调试、仿真程序。

1.建立工作项目文件
图1启动Keil μVison2
启动Keil μVison2,如果打开后就有打开的文件,单击“Project->Close Project”菜单将其关闭。

单击“File->New... ",打开一个新的文件输入窗口,在这个窗口里输入上述源程序。

输入完毕之后,选择“File-->Save",给这个文件取名保存,取名字的时候必须要加上扩展名,一般C语言程序均以“.c”为扩展名(一定要加扩展名,否则后面添加文件就找不到该文件,这是初学者很容易忘记的),这里将其命名为mytest.c。

图2 建立工程文件
单击“Project->New Project...",出现对话框,要求给将要建立的工程起一个名字,这里
起名为test,不需要输入扩展名。

单击“保存”按钮,出现第二个对话框,如图3所示:
图3 CPU选择窗口
这个对话框要求选择工程中所用的单片机型号,这里选择Atmel公司的89S52芯片。

单击ATMEL前面的“+”号,展开该层,单击其中的89S52,然后再单击“确定”按钮,会出现一个对话框,询问是否要将标准的8052启动代码加入工程,单击“是”按钮。

此时,在工程窗口的文件页中出现了“Target 1”,前面有“+”号,单击“+”号展开,可以看到下一层的“Source Group 1 ",需要手动把刚才编写好的源程序加入,方法如下:单击“Source Group 1 ",使其反白显示,然后单击鼠标右键,出现一个下拉菜单,如图
4所示。

图4添加文件菜单
选中其中的“Add file to Group‘Source Group 1’”,出现一个对话框,要求寻找源文件。

双击mytest. c文件,将文件加入项目,然后单击“Close”按钮即可返回主窗口。

返回后单击“Source Group 1”前的加号,可以看到mytest.c文件已在其中,双击文件名即可以打开
该源程序。

图5选择输出HEX文件
接下来要对一些工程选项进行设置。

选择资源窗口中的“Target 1 ",单击鼠标右键,出现快捷菜单,然后选择“Options for Target‘Target 1’”,在弹出的对话框中选择“output”标签页,选中该页的“Creat HEX File”前面的复选框,这样在编译后就会生成可以用于烧写的.hex文件。

“Name of Executable”表示将要生成的.hex文件的名称,这里改为“mytest",如图5所示。

2.项目编译、连接
设置好工程选项后即可进行编译、连接。

选择“Project→Build target”可以对当前工程进行连接。

如果当前文件已修改,将先对该文件进行编译,然后再连接以产生目标代码;如果选择“Project→Rebuild All target files”将会对当前工程中的所有文件(无论是否修改过)重新进行编译,然后再连接以产生目标代码;而如果选择“Project→Translate ....",项则仅对当前文件进行编译,不进行连接,也就不会产生新的目标代码。

以上操作也可以通过工具栏按钮进行。

编译、设置的工具栏按钮如图6所示,从左到右
分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。

图6 有关编译、设置的工具栏
编译过程中的信息将出现在输出窗口中的Build页中,可以得到如图7所示的结果,提示获得了名为mytest.hex的文件,该文件即可被编程器读入并写到芯片中。

同时还可看到该程序的代码量((code=37)、内部RAM的使用量(data=10.1,小数表示“位”)、外部RAM 的使用量(xdata=0)等一些信息。

除此之外还产生了一些其他相关的文件可被用于Keil的仿
真与调试。

图7 有关编译过程的信息窗口
3.程序的仿真与调试
程序的仿真和调试在开发中有着非常重要的作用,可以使开发者在有完整的硬件电路之
前就可以验证自己的程序是否能达到预期的目标。

工程进行汇编、连接成功以后,按组合键[Ctrl十F5】或者选择“Debug→Start/Stop Debug Session”即可进入调试状态,菜单项中出现了一个用于仿真运行和调试的工具条,如图8所示。

图8 运行和调试工具条
Debug菜单上快捷按钮从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令的快捷按钮。

对于本例的程序,由于要用到P0和P1端口的输入输出,因此在仿真的时候要仿真或观察P0、P1端口的状态。

选择“Peripherals →I/O-Ports→Port0”和“Peripherals→I/O-Ports →Port1”,在主窗口中会出现P0和P1口的状态,需要在程序运行的时候改变P0.0(即“Parallel Port 0”对话框中下边的复选框),并观察Parallel Port 0对话框中各位的变化情况,其中有对号的表示该位为逻辑“1”,没有对号的表示该位为逻辑“0",单击会取消对号,再次单击又会出现对号,如图9所示。

图9 并行端口仿真对话框
依次单击图9中最左边的两个快捷按钮,即复位和运行,程序就开始仿真执行,图9中的“暂停”快捷按钮由灰色变为红色,也可以单步运行。

单击“Parallel Port 0”对话框中
下边的复选框将对号,随着P0.0的变化,"Parallel Port1”对话框的状态也会发生变化。

相关文档
最新文档