keil-c51单片机实验指导.5.4演示教学
KeilC51使用教程
![KeilC51使用教程](https://img.taocdn.com/s3/m/a447ad22e2bd960590c677be.png)
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语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。
Keil C51 使用详解
![Keil C51 使用详解](https://img.taocdn.com/s3/m/71cf6f49cf84b9d528ea7adf.png)
Keil C51使用详解V1.0第一章KEIL C51开发系统基本知识 (6)第一节系统概述 (6)第二节KEIL C51单片机软件开发系统的整体结构 (6)第三节KEIL C51工具包的安装 (7)1. C51 for Dos (7)2. C51 for Windows的安装及注意事项: (7)第四节KEIL C51工具包各部分功能及使用简介 (7)1. C51与A51 (7)2. L51和BL51 (8)3. DScope51,Tscope51及Monitor51 (8)4. Ishell及uVision (9)第二章KEIL C51软件使用详解 (10)第一节KEIL C51编译器的控制指令 (10)1.源文件控制类 (10)2.目标文件(Object)控制类: (10)3.列表文件(listing)控制类: (10)第二节DSCOPE51的使用 (11)1. dScope51 for Dos (11)2. dScope for Windows (12)第三节MONITOR51及其使用 (13)1. Monitor51对硬件的要求 (13)2. Mon51的使用 (13)3. MON51的配置 (13)4.串口连接图: (13)5. MON51命令及使用 (14)第四节集成开发环境(IDE)的使用 (14)1. Ishell for Dos的使用 (14)2. uVision for windows的使用 (15)第三章KEIL C51 VS 标准C (15)第一节KEIL C51扩展关键字 (15)第二节内存区域(MEMORY AREAS): (16)1. Pragram Area: (16)2. Internal Data Memory: (16)3. External Data Memory (16)4. Speciac Function Register Memory (16)第三节存储模式 (16)1. Small模式 (16)2. Compact模式 (17)3. large模式 (17)第四节存储类型声明 (17)第五节变量或数据类型 (17)第六节位变量与声明 (17)1. bit型变量 (17)2.可位寻址区说明20H-2FH (18)第七节KEIL C51指针 (18)1.一般指针 (18)2.存储器指针 (18)3.指针转换 (18)第八节KEIL C51函数 (19)1.中断函数声明: (19)2.通用存储工作区 (19)3.选通用存储工作区由using x声明,见上例。
《单片机原理与应用》KeilC51软件使用实验
![《单片机原理与应用》KeilC51软件使用实验](https://img.taocdn.com/s3/m/3dcdfeb6d5d8d15abe23482fb4daa58da1111c54.png)
《单片机原理与应用》KeilC51软件使用实验
一、实验目的和要求
熟悉51单片机的基本输入输出应用,掌握Proteus ISIS模块原理图绘图方法及单片机系统仿真运行方法。
二、实验内容和原理
(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能。
(2)学会选择元件、画导线、画总线、修改属性等操作。
(3)学会可执行文件加载及程序仿真运行。
(4)验证计数显示器的功能。
三、主要仪器设备
电脑、keil c51、Proteus
四、操作方法与实验步骤
(1)提前阅读与实验1相关的阅读材料;
(2)参考实验1电路原理图和元件清单,在ISIS中完成电路原理图的绘制;(3)加载可执行文件,观察仿真结果,检验电路图绘制的正确性。
五、实验数据记录和处理
代码:
电路图:
六、实验结果与分析运行结果:
实验分析:
由实验结果可知,这是通过开关控制计数器显示,按一次开关计数器计一次数,即加一。
七、讨论和心得
通过本次数码管进行51计数器显示实验,让我知道了对教材应该熟悉,因为教材是基础的,只有把基础的搞好了才能够进行其它层次的学习。
其次,此次实验我还懂得了有时候可以通过软件的仿真来验证书上的一些理论性的东西。
通过C语言的编程,对数码管及51的应用让我对单片机理解更加明了。
Keil-C51的使用ppt课件
![Keil-C51的使用ppt课件](https://img.taocdn.com/s3/m/7908d0211fd9ad51f01dc281e53a580216fc50d4.png)
1
我想知道
• Keil C51是什么? • 我们用它用来做什么? • 怎么用?
2
☺解答问题1
Keil C51是德国Keil 来自oftware公司出品的51系列兼容单片 机C语言软件开发系统。
该软件提供丰富的库函数和功能强大的集成开发调试工具, 全Windows界面。通过该软件可以完成编辑,编译,仿真, 连接,调试等整个开发流程。
参见教材《单片机的C51应用程序设计》第 310 页 14
弹出添加文件对话框,要求寻找源文件。 通过“查找范围”列表栏找到文件所在的文件夹,
再单击“文件类型”中下拉列表框,从中选取合 适的文件类型。 默认的“文件类型”为C Source file(*.c),也 就是以C为扩展名的C51文件。 若需要汇编语言文件,请点击对话框中“文件类 型”后的下拉列表,找到并选中Asm Source file (*.s*; *.src; *.a*)项。 在列表中找到需要的文件,选中文件再单击 “Add”,或双击文件也可添加成功。
要的所有文件都放在这个目录下。
参见教材《单片机的C51应用程序设计》第 308 页 9
3、选择器件
工程建立完毕,uVision2会立即弹出一个对话框, 要求选择单片机的型号。
器件选择的目的是告诉uVision2最终使用的单片机 芯片的型号是哪一个公司的哪一个型号,因为不同 型号的芯片内部资源是不同的;uVision2可根据选 择进行SFR的预定义,在软硬件仿真中提供易于操 作的外设浮动窗口等。
目前常使用的Keil C51开发系统是uVersion IDE版本,开 发人员可以用IDE或其他编辑器编辑汇编或C语言程序,然 后分别由A51或C51编译器编译生成目标代码(.OBJ)。 目标文件可以由LIB51创建生成库文件,也可以与库文件一 起经过L51连接定位生成绝对目标文件(.ABS)。ABS文 件由OH51转换称标准的HEX文件,以供调试器 (dScope51或tScope51)进行代码级调试,也可用仿真 器直接对目标般调试,还可以直接写入程序存储器中。
Keil-C51单片机实验指导.5.4
![Keil-C51单片机实验指导.5.4](https://img.taocdn.com/s3/m/2a858067bd64783e09122b70.png)
Keil C51实验项目Keil C51实验项目 (1)一、单片机的IO编程 (3)实验1 IO开关量输入实验 (3)实验2 IO输出驱动继电器(或光电隔离器)实验 (4)实验3 IO输入/输出---半导体温度传感器DS18B20实验 (5)二、单片机的中断系统 (6)实验 1 外部中断----脉冲计数实验 (6)实验 2 外部中断----故障报警实验 (7)三、单片机的定时器/计数器 (8)实验1 计数器实验 (8)实验2 秒时钟发生器实验 (10)四、单片机的串口特点和编程 (11)实验1 PC机串口通讯实验 (11)实验2 RS485通讯实验 (13)五、存储器 (14)实验1 RAM存储器读写实验 (14)六、PWM发生器 (15)实验1 PWM发生器(模拟)实验 (15)实验2 蜂鸣器实验 (16)七、WDG看门狗 (17)实验1 外扩WDG(MAX705)实验 (17)实验2 WDG(内部)实验 (18)八、SPI总线 (19)实验1 SPI(模拟)实验-----TLC2543 AD转换实验 (19)实验2 SPI(模拟)实验-----TLV5616 DA转换实验 (20)九、I2C总线 (21)实验1 I2C(模拟)实验-----IC卡(AT24C01)读写实验 (21)十、综合实验 (23)实验1 HD7279LED数码管显示实验 (23)实验2 HD7279键盘实验 (23)实验3 电机转速实验 (24)十一、步进电机实验 (26)实验1 步进电机正反转实验 (26)十二、TFT液晶显示实验 (26)实验1 TFT液晶显示彩色条纹实验 (26)十三、16X16LED点阵显示汉字实验 (27)实验1 16X16LED点阵显示汉字实验 (27)一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。
内容:编程读取IO引脚状态。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
Keil C51 使用
![Keil C51 使用](https://img.taocdn.com/s3/m/5815617ff242336c1eb95e4c.png)
Keil 软件的使用一、软件启动在桌面上双击,或在开始→程序→。
二、界面图1、首先建立一个工程点击Project→New Project 如下图所示。
则会出现如下图。
注意工程保存在什么位置(要方便自己查找),输入文件,保存类开会自动生成,不用管,然后点保存,则会出如下图则会出现。
则出现可点是或否,影响不大。
则会出现:这样应建立了一个新的工程。
可在保存的位置找工程文件名。
2、建立一个汇编语言文件。
点击File→New,如下图所示则出现Text1为文件名,先要保存一下。
选为文件保存的位置,文件名要注意一下,用汇编语言编写则后缀(扩展名)为.ASM,如果用C 语言编写则为.C。
设置好后点击保存,则程序文件应建立好了。
在保存的位置可找到该文件。
3、程序录入编辑及编译(1)在程序编辑区录入程序(2)将程序文件添加到工程文件中右键单击Source Group1如下图则出现点击,Add Files to Group Source Group 1 则出现如下图选好文件类型为C Source file (*.C),再在保存位置中找到刚才编辑好的程序文件,然后点Add 即可。
(3)必要的参数设置点击Project→Option for Target则会出现如下图:在Target 选项卡中设置好晶振频率。
再选Output选项卡,如下图:设置好各项后点击确定,必要的参数应设置完毕。
(4) 程序编译检查点击Project→Build target files 如下图所示则在界面的最下面出现指示:如果有错误要改正程序的错误,再进行编译,一直到没有错误为止,要生成HEX文件,我们才能下载到单片机中。
程序下载到单片机的程序应用1、启动软件:在桌面找到图,双击将会出现如下图必须要选择正确的端口及单片机型号,然后调入从KEIL C51编译生成的HEX文件。
2、调入HEX文件:左键单击调入FLASH,如下图所示:将会出现HEX文件选择窗口:选择正确文件后,点打开,则出现如下图3、将HEX文件下载到单片机芯片选择正确后,检查单片机是否连接好,准备好后就点击自动,则会出现如下图,程序下载完成后,就会看到单片机板上LED灯在点亮了。
Keil C51 基本使用方法
![Keil C51 基本使用方法](https://img.taocdn.com/s3/m/6ec4f93d52d380eb62946ddb.png)
附录:一、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)。
(参考资料)Keil C51 uVision4使用指南
![(参考资料)Keil C51 uVision4使用指南](https://img.taocdn.com/s3/m/852278d3b14e852458fb57f2.png)
圖 1-6 選取晶片型號
圖 1-7 詢問是否需要加入 8051 啟動碼 STARTUP.a51 的主要工作是把包含 idata、xdata、及 pdata 在內的記憶體區塊清除為 0,並且初始化遞迴指標。STARTUP.a51 的內容在附錄 1 中,用戶可自行參考。注意, 若是編寫組合語言程式,則不需加入此啟動程式。在完成上述的初始化程序之後,8051 的控制權才會交給 main()主程式開始執行用戶的程式。 (3) 首先在專案中建立新的程式檔案或加入舊程式檔案。如果您沒有現成的程式或 是第一次使用,那麼就要新建一個 C 程式檔案。在 C51 中有一些程式的範例,但是在 這裡我們還是以一個 C 程式為例介紹如何新建一個 C 程式,和如何加到您的第一個專 案中吧。點擊圖 1-8 中 1 的新建文件的圖示按鈕,在 2 中出現一個新的文字編輯視窗, 或是也能透過選單 File/New 或是按下快速鍵 Ctrl+n 來實現。接著現在就能編寫程式了。
圖 1-5 選擇舊版或新版的專案檔副檔名 (2) 選擇所要的單晶片型號,這裡選擇常用的 Ateml 公司的 AT89S51。目前 Atmel 已經停產 AT89C51/AT89C52,改由 AT89S51/AT89S52 來取代之。AT89S 系列較 AT89C 系列更為便宜,工作頻率可高達 33 MHz,且重複燒錄次數至少可達一千次以上,非常 適合學校學習或工程師開發產品之用。所以本講義裡的大部分程式都是基於此 AT89S51 晶片的,此時螢幕如圖 1-6 所示。在右邊圖中的“Description”方塊內,會簡單的介紹 AT89S51 有什麼功能及特點。點選 OK 按鈕後,會出現圖 1-7,詢問你是否需要拷貝標 準的 8051 啟動碼程式(STARTUP.a51)到你的專案資料夾,並且將此檔案加入專案“Copy Standard 8051 Startup Code to Project Folder and Add File to Project”,點選“是”後,就可以 進行程式的編寫了。
Keil C51使用详解
![Keil C51使用详解](https://img.taocdn.com/s3/m/3d80b928647d27284b735109.png)
Keil C51使用详解第一章Keil C51开发系统基本知识 (6)第一节系统概述 (6)第二节Keil C51单片机软件开发系统的整体结构 (6)第三节Keil C51工具包的安装 (7)1. C51 for Dos 72. C51 for Windows的安装及注意事项: (7)第四节Keil C51工具包各部分功能及使用简介 (7)1. C51与A51. 72. L51和BL51. 83. DScope51,Tscope51及Monitor51. 84. Ishell及uVision. 9第二章Keil C51软件使用详解 (10)第一节Keil C51编译器的控制指令 (10)1. 源文件控制类 (10)2. 目标文件(Object)控制类: (10)3. 列表文件(listing)控制类: (10)第二节dScope51的使用 (11)1. dScope51 for Dos 112. dScope for Windows 12第三节Monitor51及其使用 (13)1. Monitor51对硬件的要求 (13)2. Mon51的使用 (13)3. MON51的配置 (13)4. 串口连接图: (13)5. MON51命令及使用 (14)第四节集成开发环境(IDE)的使用 (14)1. Ishell for Dos的使用 (14)2. uVision for windows的使用 (15)第三章Keil C51 vs 标准C.. 15第一节Keil C51扩展关键字 (15)第二节内存区域(Memory Areas): (16)1. Pragram Area: (16)2. Internal Data Memory: 163. External Data Memory. 164. Speciac Function Register Memory. 16第三节存储模式 (16)1. Small模式 (16)2. Compact模式 (17)3. large模式 (17)第四节存储类型声明 (17)第五节变量或数据类型 (17)第六节位变量与声明 (17)1. bit型变量 (17)2. 可位寻址区说明20H-2FH.. 18第七节Keil C51指针 (18)1. 一般指针 (18)2. 存储器指针 (18)3. 指针转换 (18)第八节Keil C51函数 (19)1. 中断函数声明: (19)2. 通用存储工作区 (19)3. 选通用存储工作区由using x声明,见上例。
KEILC51操作步骤
![KEILC51操作步骤](https://img.taocdn.com/s3/m/b7f081bef524ccbff0218404.png)
KEILC51操作步骤1、在桌面或者其他盘(D盘或E盘),新建一空白文件夹TEST1。
2、在桌面上双击:Keil uVision4。
3、点击Project\New uVision Project...,在弹出的对话框中选中目标文件夹(即在步骤1建立的文件夹下),建立一工程,文件名为test1,后点击保存。
4、在弹出的对话筐中选择Atmel中的AT89C51,点击OK,在弹出的uVision对话筐中,选“是”。
5、点击File\New...,建立一空白文档,敲入所需程序,点击保存,在弹出的对话框中输入文件名为test1.c,后点击保存即可。
6、鼠标点击左边project对话框中Target1前面的“+”号,会出现“Source Group 1”。
然后鼠标选中“Source Group 1”右击,选择”Add files to ‘Group Source Group 1’...,在弹出的对话筐中,选择刚才保存的TEST1文件夹下的test1.c单击,再点击Add,最后点击Close关闭对话框即可。
7、点击Project\Options for Target‘Target 1’...,在弹出的对话筐中点击”Output”,在Creat Hex前的方框内打勾,点击OK 即可。
8、点击Project\Translate.....后,在屏幕下方Build Output 对话框中出现"test1" - 0 Error(s), 0 Warning(s).然后再点击Project\Build target,下方出现"test1" - 0 Error(s), 0 Warning(s).最后点击Project\Rebulid all target files。
即编译完成,在屏幕下方出现creating hex file from "test"..."test1" - 0 Error(s), 0 Warning(s).即为正确调试。
keilc51教程
![keilc51教程](https://img.taocdn.com/s3/m/a38509d8ce2f0066f5332282.png)
Keil 工程文件的建立、设置与目标文件的获得单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP 等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
我们将通过一些实例来学习Keil软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。
图1所示电路图使用89C51单片机作为主芯片,这种单片机性属于MCS-51系列,其内部有4K的FLASH ROM,可以反复擦写,非常适于做实验。
89C51的P1引脚上接8个发光二极管,P3.2~P3.4引脚上接4个按钮开关,我们的第一个任务是让接在P1引脚上的发光二极管依次循环点亮。
一、Keil工程的建立首先启动Keil软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision的图标以启动该软件。
单片机仿真件KeilC51软件的使用教程(中文版)
![单片机仿真件KeilC51软件的使用教程(中文版)](https://img.taocdn.com/s3/m/f241f7ce0912a21615792910.png)
单片机仿真软件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单片机。
Keil C51 uVision4实验指导
![Keil C51 uVision4实验指导](https://img.taocdn.com/s3/m/7a62f2a6284ac850ad0242a8.png)
80C51单片机程序调试实验1.按钮控制LED——51单片机的Proteus实验实验原理51单片机的一个I/O口接按钮,再通过另一个I/O口控制LED的亮、灭。
主要器件以及电路图单片机——A T89C51,上拉电阻——pullup,按钮button,发光二极管——LED。
按钮控制LED汇编程序源码ORG 0START:MOV P1,#0 ;LED不亮MOV P0,#0FFH ;P0口准备读数ST1:JB P0.0,$ ;等待按钮抬起JNB P0.0,$ ;等待按钮按下;以上两句使得只有按一下按钮才可能执行下面的语句CPL P1.0 ;LED状态改变SJMP ST1 ;返回END2.流水灯—51单片机的Proteus实验实验原理通过个51单片机的一个I/O口送不同的数字,实现8个LED的流水灯。
本实验为移动一个不亮的LED。
通过修改送给I/O口送的数字可以实现不同方式的流水灯。
主要器件以及电路图单片机——A T89C51,8排电阻——RX8,发光二极管——LED。
流水灯汇编程序源码org 0sjmp startorg 30hstart: mov P1,#1 ;P1.0为1,不亮mov P1,#2 ;P1.1为1,不亮mov P1,#4 ;以下原理同上mov P1,#8mov P1,#10hmov P1,#20hmov P1,#40hmov P1,#80hsjmp startdelay: nopnopnopnopretend3.蜂鸣器—51单片机的Proteus实验实验原理51单片机的一个I/O口接7个按钮,再通过另一个I/O口控制蜂鸣器发出声音。
主要器件以及电路图单片机——A T89C51,蜂鸣器——speaker,按钮button。
汇编程序源码晶振12M,已在Proteus下测试,听起来声音差不多。
ORG 0SJMP STARTDL Y: MOV R2,#20 ;延时程序D1: MOV R3,#248DJNZ R3,$DJNZ R2,D1RETORG 30HSTART:MOV TMOD,#1 ;定时器0方式1MOV P3,#0FFH ;P3准备读数JNB P3.0,DODOACALL DL YJNB P3.1,REREACALL DL YJNB P3.2,MIMIACALL DL YJNB P3.3,FAFAACALL DL YJNB P3.4,SOSOACALL DL YJNB P3.5,LALAACALL DL YJNB P3.6,XIXIACALL DL YJNB P3.7,DO2DO2ACALL DL YSJMP STARTDODO:LJMP DORERE:LJMP REMIMI:LJMP MIFAFA:LJMP FASOSO:LJMP SOLALA:LJMP LAXIXI:LJMP XIDO2DO2:LJMP DO2DO:MOV TH0,#0FBHMOV TL0,#44HSETB TR0 ;开启定时器JNB TF0,$ ;等待定时到CLR TF0 ;清除中断CPL P2.7 ;喇叭JNB P3.0,DOCLR TF0SJMP STARTRE:MOV TH0,#0FBHMOV TL0,#88HSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.1,RECLR TF0SJMP STARTMI:MOV TH0,#0FBHMOV TL0,#0CCHSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.2,MICLR TF0SJMP STARTFA:MOV TH0,#0FCHMOV TL0,#00HSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.3,FACLR TF0LJMP STARTSO:MOV TH0,#0FCHMOV TL0,#44HSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.4,SOCLR TF0LJMP STARTLA:MOV TH0,#0FCHMOV TL0,#88HSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.5,LACLR TF0LJMP STARTXI:MOV TH0,#0FCHMOV TL0,#0CCHSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.6,XICLR TF0LJMP STARTDO2:MOV TH0,#0FDHMOV TL0,#00HSETB TR0JNB TF0,$CLR TF0CPL P2.7JNB P3.7,DO2CLR TF0LJMP STARTEND附上蜂鸣器发声的简单程序1.汇编ORG 0 START: CPL P2.7 ;蜂鸣器LCALL DELAYLJMP STARTDELAY: MOV R7,#0FFHDJNZ R7, $RETEND2.C语言#include<reg51.h>void delay(unsigned int z);//声明延时函数sbit beep=P2^7;void main()数{while(1){beep=0;//蜂鸣器响delay(1);//调用1ms延时beep=1;//蜂鸣器不响delay(1);//调用1ms延时}}void delay(unsigned int z)//1ms延时,通过z值改变延时{unsigned int x;for(;z>0;z--)for(x=110;x>0;x--);}4.蜂鸣器演奏祝你平安——51单片机的Proteus实验实验原理51单片机的一个I/O口控制speaker发声,演唱祝你平安歌曲。
KEILC51使用说明5
![KEILC51使用说明5](https://img.taocdn.com/s3/m/290ed598ddccda38366baf23.png)
其于 Keil 的实验仿真板的使用前面介绍了Keil 软件的使用,从中我们可以看到Keil 的强大功能,不过,对于初学者来说,还有些不直观,调试过程中看到的是一些数值,并没有看到这些数值所引起的外围电路的变化,例如数码管点亮、发光管发光等。
为了让初学者更好地入门,笔者利用Keil 提供的AGSI 接口开发了两块仿真实验板。
这两块仿真板将枯燥无味的数字用形象的图形表达出来,可以使初学者在没有硬件时就能感受到真实的学习环境,降低单片机的入门门槛。
图 1 是键盘、LED 显示实验仿真板的图,从图中可以看出,该板比拟简单,有在P1 口接有8 个发光二极管,在P3 口接有4 个按钮,图的右边给出了原理图。
图 2 是另一个较为复杂的实验仿真板。
在该板上有8 个数码管,16 个按键〔接成4*4 的键盘、LED 显示实验仿真板矩阵式〕,另外还有P1口接的8个发光管,两个外部中断按钮,一个带有计数器的脉冲发生器等资源,显然,这块板可以完成更多的实验。
一、实验仿真板的安装这两块仿真实验板实际上是两个dll 文件,名称分别是ledkey.dll 和simboard.dll,安装时只要根据需要将这两个或某一个文件拷贝到keil 软件的c51\bin 文件夹中即可。
二、实验仿真板的使用要使用仿真板,必须对工程进行设置,图 2 单片机实验仿真板设置的方法是点击Project->Option for Target-d 文件名。
例如要用ledkey.dll〔即第一块仿真板〕进行调试,就输入-dledkey,如图 3所示,输入完毕后点击确定退出。
编译、连接完成后按CTRL+F5 进入调试,此时,点击菜单Peripherals,即会多出一项“键盘LE D仿真板〔K〕〞,选中该项,即会出现如图1 的界面,P 0.7P 0.6P 0.5P 0.4P 0.3P 0.2P 0.1 P 0.0同样,在设置时如果输入-dsimboard 那么能够调出如图 2 的界面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keil C51实验项目Keil C51实验项目 (1)一、单片机的IO编程 (3)实验1 IO开关量输入实验 (3)实验2 IO输出驱动继电器(或光电隔离器)实验 (3)实验3 IO输入/输出---半导体温度传感器DS18B20实验 (4)二、单片机的中断系统 (6)实验 1 外部中断----脉冲计数实验 (6)实验 2 外部中断----故障报警实验 (7)三、单片机的定时器/计数器 (8)实验1 计数器实验 (8)实验2 秒时钟发生器实验 (9)四、单片机的串口特点和编程 (11)实验1 PC机串口通讯实验 (11)实验2 RS485通讯实验 (12)五、存储器 (14)实验1 RAM存储器读写实验 (14)六、PWM发生器 (15)实验1 PWM发生器(模拟)实验 (15)实验2 蜂鸣器实验 (16)七、WDG看门狗 (17)实验1 外扩WDG(MAX705)实验 (17)实验2 WDG(内部)实验 (18)八、SPI总线 (18)实验1 SPI(模拟)实验-----TLC2543 AD转换实验 (18)实验2 SPI(模拟)实验-----TLV5616 DA转换实验 (19)九、I2C总线 (21)实验1 I2C(模拟)实验-----IC卡(AT24C01)读写实验 (21)十、综合实验 (22)实验1 HD7279LED数码管显示实验 (22)实验2 HD7279键盘实验 (23)实验3 电机转速实验 (24)十一、步进电机实验 (25)实验1 步进电机正反转实验 (25)十二、TFT液晶显示实验 (26)实验1 TFT液晶显示彩色条纹实验 (26)十三、16X16LED点阵显示汉字实验 (26)实验1 16X16LED点阵显示汉字实验 (26)一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。
内容:编程读取IO引脚状态。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:首先要把相关的引脚设置在IO的输入状态,然后写一个循环,不停地检测引脚的状态。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将试验箱上的的IO1--- IO8分别连接到SWITCH的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INPUT 下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,改变开关状态,运行程序到断点处,观察窗口的数值与开关的对应关系。
实验2 IO输出驱动继电器(或光电隔离器)实验目的:学习IO输出控制方法。
内容:通过单片机的IO引脚驱动继电器(或光电隔离器)动作。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:首先要把相关的引脚设置在IO的输出状态,然后写一个循环,依次输出高低电平。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将MCU的IO1、IO2分别连接到RELAY的输入R_IN和PHOTO的输入P_IN上,R_OUT和P_OUT分别连接到发光二极管LAMP的输入孔L1和L2上。
连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_OUTPUT下的工程文件IO_OUTPUT.Uv2编译程序,上电,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,单步运行程序,观察窗口的数值变化。
4、全速运行程序,观察继电器的发光二极管的亮灭变化,同时确定继电器动作(或光电隔离器导通)与IO输出电平的关系。
实验3 IO输入/输出---半导体温度传感器DS18B20实验目的:学习IO引脚编程实现交替输入、输出的方法。
内容:通过单片机的IO引脚与半导体温度传感器实现单线通讯。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:根据18B20的资料(见备注),将IO引脚设置在输出状态,分别模拟出不同的命令时序,例如复位、读寄存器等;再改变IO引脚的为输入状态,接收传感器输出的数据。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将MCU的IO1连接到TEMP SENSOR DS18B20的DQ。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INOUTPUT下的工程文件IO_INOUTPUT.Uv2编译程序,上电,进入调试状态,按照程序注释说明设置断点,全速运行程序到断点处,观察寄存器R7中的数据,用手摸住传感器DS18B20芯片,再运行到断点处,比较R7的变化。
4、备注:DSl8B20数字温度计提供9位(二进制)温度读数指示,器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线),DSl8B20的电源可以由数据线本身提供而不需要外部电源。
因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上,这允许在许多不同的地方放置温度敏感器件。
DSl8B20的测量范围从-55到+125增量值为0.5可在l s(典型值)内把温度变换成数字。
二、单片机的中断系统实验 1 外部中断----脉冲计数实验目的:学习单片机的外部中断使用方法。
内容:对外部中断计数显示。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:首先第一步设置单片机的IO为输入状态,第二步设置引脚的中断触发方式,一般设置为边沿触发,第三步,设置外部中断的优先级,第四步,编写中断服务程序,包括中断入口跳转等,第五步,设置中断使能,允许外部引脚触发中断。
第六步,设置死循环,主程序结束,交给中断服务程序完成计数。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将MCU的INT0连接到单脉冲输出孔P-,连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹EXT_INT1下的工程文件EXT_INT1.Uv2,编译程序,上电,进入调试状态,按照程序注释说明设置断点,全速运行程序,每按下一次单脉冲开关Paulse,程序运行到断点处一次,观察寄存器R1的变化。
课堂思考题:(1)编写程序(同时接好硬件电路),采用外部中断INT1及低电平触发方式,使8只二极管从左向右依次循环点亮,中断结束后返回,二极管全灭。
实验 2 外部中断----故障报警实验目的:学习单片机的外部中断使用方法。
内容:利用外部中断和IO口,改变二极管和蜂鸣器状态,模拟故障报警。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:首先编写初始化程序,设置单片机IO状态,设置中断触发方式,一般设置为边沿触发,设置外部中断的优先级;第二步,编写主程序,调用初始化程序,对IO口状态写无限循环,使发光二极管处于稳定发光,蜂鸣器无发声状态,第三步,编写中断服务子程序,使二极管闪烁发光,蜂鸣器断续鸣叫,模拟故障报警;第四步,编写延时子程序,控制二极管闪烁和蜂鸣器鸣叫的间隔时间。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将MCU的INT0连接到单脉冲输出孔P-,同时将MCU的IO0、IO1分别与发光二极管L1、蜂鸣器BUZZER孔相连,连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹EXT_INT2下的工程文件EXT_INT2.Uv2,编译程序,上电,进入调试状态,按照程序注释说明,全速运行程序,发光二极管处于稳定发光状态,蜂鸣器无声音,每按下一次单脉冲开关Paulse,观察二极管L1和蜂鸣器的变化。
课堂思考题:(1)编写程序(同时接好硬件电路),采用外部中断INT0、跳变触发方式,将8支二极管分为2组,使L1、L3、L5、L7与L2、L4、L6、L8交替亮灭闪烁,中断结束后返回,8支二极管全亮。
(2)编写程序(同时接好硬件电路),采用外部中断INT0、跳变触发方式,实现5次中断请求后,进入中断服务子程序,使L1亮灭闪烁,蜂鸣器断续发声,中断结束后返回,二极管发亮。
三、单片机的定时器/计数器实验1 计数器实验目的:学习单片机的定时/计数器的计数功能使用方法。
内容:对外部单脉冲信号进行计数,计数10个后产生计数中断。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:使用定时/计数器的计数功能,将外部时钟信号加在计数器的计数时钟输入引脚上,当计数10次后,计数器溢出,触发标志位,编程控制分频输出引脚电平翻转,产生分频后的时钟信号。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将MCU的IO1和T0分别连接到发光二极管L1的输入L1上和单脉冲输出孔P-,连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹COUNTER 下的工程文件COUNTER.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化。
4、上电全速运行程序,按下5次单脉冲按键后发光二极管点亮,再按5次后发光二极管熄灭,如此重复。
实验2 秒时钟发生器实验目的:学习单片机的定时/计数器的定时功能使用方法。
内容:产生频率为0.5Hz的时钟输出。
设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。
编程:使用定时/计数器的定时功能,时钟源采用系统时钟,根据时钟源的频率配置初值寄存器,使能定时器中断,在中断服务程序中翻转一个IO引脚输出,产生0.5Hz的时钟输出。
步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。
2、连线:用导线将MCU的IO1连接到发光二极管L1的输入L1上,连接好仿真器。
3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹TIMER_SECOND下的工程文件TIMER_SECOND.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化。
4、全速运行程序,观察发光二极管的亮灭情况。
5、备注:现在的单片机系统时钟较高,难于产生1秒的定时中断,所以,可以设置定时时间为50毫秒,在中断服务程序中设置程序计数,当累加到1秒后,控制输出IO引脚电平翻转,驱动发光二极管。