目录 实验一 I/O 口输出控制实验 ........................................................................................ 20 实验二 I/O 口输入输出控制实验 ................................................................................ 24 实验三 中断程序设计练习...................................................................................... 34 实验四 定时器、计数器实验.......................................................................................... 32
Keil C51 集成开发环境介绍 1、打开计算机,运行Keil C51 集成开发环境。 图1-1 第一次启动Keil C 图1-2 Keil C μVision2 操作界面 Keil C 软件菜单命令非常丰富,常用的菜单命令都有对应的快捷键和快捷图标,自己可以打开相应的菜单,熟悉各种命令。 2.选择“Project”-“New Project…”建立新的工程文件(注意工程文件放置的文件夹),输入文件名,选择“保存”。 图1-3 创建一个新工程 图1-4 为新工程命名并保存 3.工程保存后会弹出来一个器件选择窗口,这里需要选择单片机芯片类型。器件选择的目的是告诉μVision2 最终使用的80C51 芯片的型号是哪一个公司的哪一个型号,因为不同型号的51 芯片内部的资源是不同的。 图1-5 器件选择窗口 如果不知道自己需要使用什么型号的芯片,暂时选择“Atmel”下的“AT89C51”,然后在接下来的窗口中,选择“是”,加载芯片基本参数。 图1-6 选择AT89C51 芯片 4.选择“File”-“New”或者点击新文件快捷图标,会打开一个文本编辑器窗口。输入下列数据传送的程序,然后选择“File”-“Save…”,注意保存的时候给文件起名字以后,加个文件名后缀,Keil C 支持汇编语言及C 语言编程,它是依靠文件名后缀来判断文件是汇编语言还是C 语言格式的,如果是汇编语言,后缀为“.asm”,C 语言格式的,后缀为“.c”。我们根据实验要求选择保存为汇编语言格式或C 语言格式。注意此时程序中的一些代码和寄存器将会自动蓝色显示,方便观察。 图1-7 创建一个新文件 图1-8 输入程序并保存文件 5.选择“Project”-“Targets,Groups,Files…”,选择“Groups/Add Files”标签,首先点击下边窗口中的“Source Group 1”,然后选择下边的“Add Files to Group…”,在接下来的窗口中,首先选择你需要加入的文件的后缀名(默认是.c,我们可选择“Asm Sourcefile,即后缀为.asm”)。 图1-9 准备添加一个文件进入工程项目(1) 图1-10 准备添加一个文件进入工程项目(2) 图1-11 选择准备添加的文件类型 然后选择对应的文件,选择“Add”,然后选择“Close”,最后选择“确定”,完成文件的添加工作。 图1-11 选择准备添加的文件名称 工程项目添加结束后,可以用鼠标点击工程项目窗口中的“+”,展开工程项目内部的文件,从中可以看到添加进来的文件名称。 图1-12 添加文件结束后的工程项目 6.然后选择“Project”-“Options for Target ‘Target1’”,对工程项目进行设置,选取其中的“Debug”标签,选中“Use Simulator”,然后点击“确定”,就可以使用软件仿真了。 图1-13 准备对工程项目进行设置 图1-14 选取软件仿真模式 选择“Project”-“Build target”或者直接按下F7,对文件进行编译。编译的结果会出现在屏幕下方的输出窗口,其中会提示编译中出现的问题。如果发现问题,双击错误提示,光标会跳到出错的源程序处等待修改,直至程序没有错误,编译才能通过。 图1-15 对源程序文件编译之后的窗口 7.按下“CTRL+F5”,进入Debug(调试)状态,在窗口的左边会出现各个寄存器的状态(内容)。选择“View”-“Disassembly Window”,可以打开反编译窗口,其中显示了源程序中每条指令在程序存储区中的地址以及对应的机器码。下F11 单步执行程序,观察寄存器状态,填写下列表格中地址和有关单元的内容。 图1-16 进入Debug 状态 图1-17 打开反编译窗口 图1-18 将窗口横向并排分割 并排分割的效果 打开存储器观察窗口 显示数据存储器内容 显示数据存储器内容 显示程序存储器内容 8.对于查询内存地址中的数据,可双击存储器窗口中的address 后的文本框,并在其中输入待查看的地址,如D:0030H,表示查看数据存储器中30H 单元内容,C:0030H 则表示查看程序存储器中30H 单元内容,X:2000H,表示查看外部存储器2000H单元内容。
实验一 I/O口输出控制实验 一、实验目的 1.熟悉PROTEUS单片机仿真软件的使用。 2. 熟悉Keil C51软件的使用 3.掌握单片机I/O口输出的控制方法。 二、实验设备(仪器) PC 微机一台 三、实验内容 1.按照Keil C51 集成开发环境的要求,建立一段程序,然后进行编译并进行软件仿真。 2.输入实验例程,利用P1口作为输出控制端口,控制8位LED流水闪烁。 四、实验步骤 图3.1实验线路图 1.单片机I/O 接口的原理如图3.1所示。从图中可以看出,当单片机P1口某位为低电平时,对应的LED会亮,反之熄灭。 2.打开Keil C51 集成开发环境,建立一个工程并输入相应程序. 3.输入以下程序并进行编译、调试,观察、分析现象,说明P1 口的赋值与 LED 亮灭的关系,在空白部分填加注释。 ORG 0000H LJMP Main ORG 00F0H Main: Loop: MOV P1,#0FEH ACALL DELAY MOV P1,#0FDH ;__________________ ACALL DELAY ;__________________ MOV P1,#0FBH ACALL DELAY MOV P1,#0F7H ACALL DELAY MOV P1,#0EFH ACALL DELAY MOV P1,#0DFH ACALL DELAY MOV P1,#0BFH ACALL DELAY MOV P1,#07FH ACALL DELAY SJMP LOOP DELAY: MOV R1,#10 DEL1: MOV R2,#200 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 ;__________________ DJNZ R2,DEL2 DJNZ R1,DEL1 RET END 五、预习要求 1.Keil C 软件的调试方法及相关硬件设置。 2.预习实验例程,理解指令意义。 六、实验报告要求 1.把程序和注释补充完整 2.把设计的PROTEUS仿真图,写入实验报告。 3.思考题:请思考并描述调试工具中单步调试、运行、步入、步出的区别。
实验二 I/O口输入输出控制实验 一、实验目的 1.利用单片机的P1 口作I/O 口,掌握P1 口同时作为输入和输出的用法。 2.掌握按键去抖动的方法。 3.掌握条件转移指令的用法。 二、实验设备(仪器) PC 微机一台 三、实验内容 1.输入实验例程,进行仿真调试完成下述功能:P1.0-P1.6作为输出,控制7位LED。P1.7 口作为输入,当P1.7按下时,P1.0-P1.6控制的LED亮;当P1.7没有按下时,P1.0-P1.6控制的LED 灭。 四、实验步骤 1.原理图如图4.2所示。 图4.2 原理图 2.打开Keil C51 集成开发环境,对以下程序补充并进行调试,填加注释。 ORG 0000H LJMP Main ORG 0100H Main: SETB P1.7 ;_____________________ JB ___ , SETLED ;按键没有按下时,跳转到SETLED CLRLED: MOV R0,#0FFH DJNZ R0,$ ;______________________ JB P1.7,SETLED CLR P1.0 CLR P1.1 CLR P1.2 ;_______________________ CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: MOV P1,______ ;令LED 熄灭 ______ ________ ;跳转主程序 END 五、预习要求 1.例程分析补充。 2.完成预习报告。 六、实验报告要求 1.把程序和注释补充完整 2.把设计的PROTEUS仿真图,写入实验报告。 3.思考题:什么是按键去抖,为什么按键程序需要进行去抖动处理,一般按 键去抖的硬件处理方法和软件处理方法分别是怎样的。
实验三 中断程序设计练习 一、实验目的 1.学习并掌握外中断的使用。 2.学习中断处理程序的编程方法。 二、实验设备 PC 微机一台 三、实验内容 1.使用单脉冲作中断源,每按一次按钮,点亮的发光二极管向右移动一位 四、实验步骤 1.本实验电路如下所示。 2.输入以下程序并进行调试运行。 ORG 0000H LJMP START ORG 0013H LJMP INTT ;INT1 入口地址 ORG 3000H START: MOV SP,#60H MOV A,#0FEH SETB IT1 ;_______________ MOV IE,_______ ;外中断1 允许,总中断允许 MOV P1,#0FFH HERE: NOP SJMP HERE INTT: MOV P1,A RL A RETI ;________________________ END 五、预习要求 1.中断控制寄存器的定义。 2.外中断的初始化过程,入口地址等相关知识。 3.熟悉并分析实验例程。 4.完成预习报告。 六、实验报告要求 1.把程序和注释补充完整 2.把设计的PROTEUS仿真图,写入实验报告。 6.思考题: 单片机外中断两种触发方式的区别,各适用于何种情况。
实验四 定时器、计数器实验 一、实验目的 1.学习并掌握单片机定时器中断的使用。 2.掌握定时器中断溢出时间的计算。 3.了解单片机定时器各工作模式的区别。 二、实验设备(仪器) PC 微机一台 三、实验内容 连线并编制程序。使用定时器1中断,按方式1工作,将LED灯循环点亮。 1.定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/2。本实验中时钟频率为12M,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.05 秒产生一次中断,CPU响应中断后R0中计数值减一,令(R0)=14H,即可实现1 秒的延时。 时间常数可按下法确定: 机器周期=12/晶振频率=12/12=1uS 定时器需设初值为X,则(2^16﹣X)*1=50000uS 求出X=15536 转化为十六进制:X=3CB0H,故初始值为:TH1=3CH,TL1=B0H 2.初始化程序 包括定时器初始化和中断系统初始化。主要对IP,IE,TCON,TMOD 的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP不必设置。 注意一点:定时器1 初始化时建议用如下的指令: ANL TMOD,#0FH ORL TMOD,#10H 3.设计中断服务程序和主程序 中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中, 为下一次中断做准备。主程序则用来控制发光二极管按要求顺序亮灭。程序的流程图 如下: 四、实验步骤 1.本实验电路如下所示。 2.输入以下程序并进行调试运行。 ORG 0000H AJMP START ORG 001BH AJMP TIME ORG 0030H START:MOV IE,#00H MOV SP,#60H MOV P1,#0FFH MOV R0,#0FEH MOV R1,#14H ANL TMOD,#0FH ORL TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H ORL IE,#88H ;__________________ _____ TR1 ;启动定时器一 LOOP:CJNE R1,#00H, DISP MOV R1,#14H MOV A,R0 _____ A ;数据左移 MOV R0,A DISP: MOV ____,R0 ;输出LED 显示 AJMP LOOP 定时中断 TIME: CLR TR1 ;___________________ DEC R1 MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 RETI ;__________________ END 五、预习要求 1.预习单片机定时器的工作方式及中断处理方法。 2.掌握定时器初始化方法。 3.预习实验例程。 4.完成预习报告。 六、实验报告要求 1.把程序和注释补充完整 2.把设计的PROTEUS仿真图,写入实验报告。 3.思考题: 简述单片机定时器的几种方式的区别,利用内部定时器实现延时 与利用实验三中的软件延时有什么区别。
完整的Word格式文档51黑下载地址:
|