版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、 keil C51 的安装: 先运行光盘中 单片机软件setupsetup.exe 安装程序,选择安装“Eval Version”版进行安装。一直点击“Yes”或“Next”,直到“Finish”完成。 安装好后,在桌面上会产生快捷图标,如下图:第1页/共30页二、 keil C51 的使用: 点击桌面快捷图标,可以直接进入主画面:第2页/共30页 现在,我一步一步学着做,实际体验一下从编辑源程序到程序调试的全过程。 我们做一个 让单片机 P0 口所驱动的 LED 灯隔一个亮隔一个灭的程序。 第3页/共30页 1、在Keil系统中,每做个独立的程序,都视为工程(或者叫项目)。首先从菜但的“
2、工程”中“新建工程.”,建立我们将要做的工程项目:第4页/共30页 新建的工程要起个与工程项目意义一致的名字,可以是中文名;我们这里的程序是实验测试程序,所以起的名字为 Test ,并将 Test 工程“保存”到 C:Keil 下:第5页/共30页 接下来,Keil环境要求我们为 Test 工程选择一个单片机型号;我们选择 Atmel 公司的 89C51(虽然我们使用的是89S51,但由于89S51与89C51内、外部结构完全一样,所以这里依然选择“89C51”)。“确定”后工程项目就算建立了。第6页/共30页 2、立了工程项目,肯定要实施这个工程,现在就为工程添加程序; 点击“文件”中的“新
3、建”,新建一个空白文档;这个空白文档就是让我们编写单片机程序的场所。在这里你可以进行编辑、修改等操作。 第7页/共30页 根据题意,在文档中写入下列代码:(下列代码你暂时不要管什么意思,只要照抄正确就可以,今后在学习汇编时你会明白的) mov p0,#01010101B ;将01010101二进制代码送P0口 ajmp $ ;程序在此原地踏步 end ;程序结束标志 写完后再检查一下,并保存文件,保存文件时,其文件名最好与前面建立的工程名相同(当然这里为 Test 了),其扩展名必须为 .Asm !“文件名”中一定要写全,如:Test.Asm ;保存后的文档彩色语法会起作用,将关键字实行彩色显
4、示:第8页/共30页第9页/共30页 3、保存了Asm文件后,还要将其添加到工程中。具体做法如下:(见下图)鼠标右键点击 “Source Group 1”,在弹出的菜单中选“增加文件到组 Source Group 1”:第10页/共30页 在接下来出现的窗口中,选择“文件类型”为“Asm源文件(*.a*,*.src)”(由于我们使用的是汇编语言,所以选择Asm源文件),选中刚才保存的 Test.Asm,按“Add”,再按“关闭”,文件就添加到了工程中。 第11页/共30页 向工程添加了源文件后,鼠标右键点击 “TarGet 1” ,在弹出的菜单中选“目标 Target 1 属性”,如下图:第1
5、2页/共30页 在打开的话框中,选择“输出”选项卡,在这个选项卡中,“E生成HEX文件”选项前要打勾,按“确定”退出。第13页/共30页 4、 最后,从菜单的“工程”中执行“R重新构造所有目标”(或者按下图红圈中的按钮),汇编、连接、创建Hex文件一气呵成;在工程文件的目录下就会生成与工程名相同的一些文件,其中大部分文件我们并不必关心,而生成的 Hex 文件是我们需要的!它是要烧写到单片机中的最终代码,也就是单片机可以执行的程序。这里生成的是 Test.HEX ,稍后就写入。 若在下面的状态窗中有错误提示,就需要再次编辑、修改源程序(如语法、字符有错等)、保存、构造所有。直至没有错误。 第14
6、页/共30页 5、在没有语法错误的情况下,按下图红圈中的按钮就可以进行模拟调试: 第15页/共30页 下面是调试窗。由于我们的程序是让 P0 口8个脚隔一个输出0,隔一个输出1,所以要从菜单的“外围设备”中打开“Prot 0” P0口窗:第16页/共30页 单击“单步运行”,在P0窗中就可以看到我们原先设想的效果:第17页/共30页#include /52系列单片机头文件sbit led1=P10; /声明单片机P1口的第一位void main() /主函数led1=0; /*点亮第一个发光二极管* 第18页/共30页总线操作#include /52系列单片机头文件void main() /主
7、函数P1=0 xaa; 第19页/共30页灯的闪烁#include /52系列单片机头文件#define uint unsigned int /宏定义sbit led1=P10; /声明单片机P1口的第一位uint i,j;void main() /主函数while(1) /大循环led1=0;/*点亮第一个发光二极管*for(i=1;i0;i-)/延时for(j=110;j0;j-);led1=1;/*关闭第一个发光二极管*for(i=1000;i0;i-)/延时for(j=110;j0;j-); 第20页/共30页使用延时函数#include /52系列单片机头文件#define uint
8、 unsigned int /宏定义sbit led1=P10; /声明单片机P1口的第一位void delay1s();/声明子函数void main() /主函数while(1) /大循环led1=0;/*点亮第一个发光二极管*delay1s();/调用延时子函数led1=1;/*关闭第一个发光二极管*delay1s();/调用延时子函数void delay1s()/子函数体uint i,j;for(i=500;i0;i-)for( j=110;j0;j-);第21页/共30页使用带参数的延时函数#include /52系列单片机头文件#define uint unsigned int /
9、宏定义sbit led1=P10; /声明单片机P1口的第一位void delayms(uint);/声明子函数void main() /主函数while(1) /大循环led1=0;/*点亮第一个发光二极管*delayms(200);/延时200毫秒led1=1;/*关闭第一个发光二极管*delayms(800);/延时800毫秒void delayms(uint xms)uint i,j;for(i=xms;i0;i-) /i=xms即延时约xms毫秒for( j=110;j0;j-);第22页/共30页Keil仿真及延时语句的精确计算#include /52系列单片机头文件#define
10、 uint unsigned int /宏定义sbit led1=P10; /声明单片机P1口的第一位uint i,j;void main() /主函数while(1) /大循环led1=0;/*点亮第一个发光二极管*for(i=1;i0;i-)/延时for(j=110;j0;j-);led1=1;/*关闭第一个发光二极管*for(i=1000;i0;i-)/延时for(j=110;j0;j-); 第23页/共30页利用C51库函数实现流水灯#include /52系列单片机头文件#include #define uint unsigned int /宏定义#define uchar unsi
11、gned charvoid delayms(uint);/声明子函数uchar aa;void main() /主函数aa=0 xfe;/赋初值11111110 while(1) /大循环P1=aa;delayms(500); /延时500毫秒aa=_crol_(aa,1); /将aa循环左移1位后再赋给aavoid delayms(uint xms)uint i,j;for(i=xms;i0;i-) /i=xms即延时约xms毫秒for( j=110;j0;j-);第24页/共30页花样流水灯 #include #define INT8Uunsigned char #define INT16
12、Uunsigned int code INT16U Pattern =/本例16位的花样数组 0 xFCFF,0 xF9FF,0 xF3FF,0 xE7FF,0 xCFFF,0 x9FFF,0 x3FFF,0 x7FFE,0 xFFFC,0 xFFF9,0 xFFF3,0 xFFE7,0 xFFCF,0 xFF9F,0 xFF3F,0 xFFFF,0 xE7E7,0 xDBDB,0 xBDBD,0 x7E7E,0 xBDBD,0 xDBDB,0 xE7E7,0 xFFFF,0 xE7E7,0 xC3C3,0 x8181,0 x0000,0 x8181,0 xC3C3,0 xE7E7,0 xFF
13、FF,0 xAAAA,0 x5555,0 x1818,0 xFFFF,0 xF0F0,0 x0F0F,0 x0000,0 xFFFF,0 xF8F8,0 xF1F1,0 xE3E3,0 xC7C7,0 x8F8F,0 x1F1F,0 x3F3F,0 x7F7F,0 x7F7F,0 x3F3F,0 x1F1F,0 x8F8F,0 xC7C7,0 xE3E3,0 xF1F1,0 xF8F8,0 xFFFF,0 x0000,0 x0000,0 xFFFF,0 xFFFF,0 x0F0F,0 xF0F0,0 xFEFF,0 xFDFF,0 xFBFF,0 xF7FF,0 xEFFF,0 xDFFF,0
14、 xBFFF,0 x7FFF,0 xFFFE,0 xFFFD,0 xFFFB,0 xFFF7,0 xFFEF,0 xFFDF,0 xFFBF,0 xFF7F,0 xFF7F,0 xFFBF,0 xFFDF,0 xFFEF,0 xFFF7,0 xFFFB,0 xFFFD,0 xFFFE,0 x7FFF,0 xBFFF,0 xDFFF,0 xEFFF,0 xF7FF,0 xFBFF,0 xFDFF,0 xFEFF,0 xFEFF,0 xFCFF,0 xF8FF,0 xF0FF,0 xE0FF,0 xC0FF,0 x80FF,0 x00FF,0 x00FE,0 x00FC,0 x00F8,0 x00
15、F0,0 x00E0,0 x00C0,0 x0080,0 x0000,0 x0000,0 x0080,0 x00C0,0 x00E0,0 x00F0,0 x00F8,0 x00FC,0 x00FE,0 x00FF,0 x80FF,0 xC0FF,0 xE0FF,0 xF0FF,0 xF8FF,0 xFCFF,0 xFEFF,0 x0000,0 xFFFF,0 x0000,0 xFFFF,0 x0000,0 xFFFF,0 x0000,0 xFFFF ;第25页/共30页vvoid delay_ms(INT16U x) vvINT8U t; while(x-) for(t = 0; t 120;
16、 t+);vvvoid main()vv INT8U i;vwhile(1)vvfor (i=0;i8;vP2=Patterni;vdelay_ms(50);vvv第26页/共30页方波发生器 用任一IO口做一个周期为20ms的方波发生器第27页/共30页#include /52系列单片机头文件#define uint unsigned int /宏定义sbit l1=P10; /声明单片机P1口的第一位void delay1s();/声明子函数void main() /主函数while(1) /大循环l1=0;/*点亮第一个发光二极管*/delay1s();/调用延时子函数l1=1;/*关闭第一个发光二极管*/delay1s();/调用延时子函数void delay1s()/子函数体uint i,j;for(i=10;i0;i-)for(j=120;j0;j-);第28页/共30页练习各种效果流水灯1.第一个发光管以间隔200ms闪烁2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,一直
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产管理法责任制度
- 执业药师岗位责任制度
- 扶梯岗位责任制度
- 技术责任制考核制度
- 护士责任制度
- 拆迁安全生产责任制度
- 换气站岗位责任制度
- 推脱责任制度
- 支架维护包机责任制度
- 政务大厅岗位责任制度
- 100以内加减法PDF版1000道含答案可打印
- 石油天然气的科普
- 工厂预防传染病知识培训课件
- 人教版(2024)五年级全一册信息科技全册教案
- 文学元宇宙沉浸式体验开发分析方案
- 小学体育与健康地质版(2024)三年级全一册教学设计(2025秋编辑)
- 小学科学四年级下册同步练习题
- 监狱罪犯教育改造课件
- 2025至2030中国汽车改装套件行业项目调研及市场前景预测评估报告
- 2026年高考历史一轮复习:通史提纲(必修+选择性必修 知识提纲融合版)
- 学堂在线 雨课堂 学堂云 研究生生涯发展与规划 章节测试答案
评论
0/150
提交评论