《单片微机原理实验指导书.doc》由会员分享,可在线阅读,更多相关《单片微机原理实验指导书.doc(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片微机原理及应用实验指导书湖南理工学院机械与电气工程系LJD-2008 实验系统使用注 意 事 项1、 LJD-2008系统自带5V、+12V、-12V、-5V电源 。 请在使用的时候注意实验仪上的电源引出线。 2、 自带CPU内有测试监控程序,外接仿真器时需要拔掉本机CPU。 3、 所有的实验程序全部调试通过,说明书中的程序有重复的部分没有全部列出,完整的程序请参考随机光盘相应的文件。 4、 LJD-2008监控程序已经包含所有实验,具体操作请参考附录。 验机方法: 打开电源,实验仪LCD显示屏显示“欢迎使用LJD-2008实验系统”然后开始自检,等2秒显示“LJD-2008实验系统正常”
2、表示机器正常,如果显示“LJD-2008实验系统错误”,表示机器有错误,请关电源检查,或者和本公司技术部联系。 目录第一章 系统概述5第二章 LJD-2008实验系统的地址分配11第三章 Vision2集成开发环境14第四章 基本实验指导204、1、实验1 “LJD-2008+单片机实验开发系统”使用学习204.2、实验2 顺序、分支、循环三种结构程序的基本编程训练214.3、实验3 并行I/O口实验224.4、实验4 中断系统及应用实验224.5、实验5 定时/计数器应用实验254.6、实验6 单片机并行口扩展实验(1) 27第五章 选修实验 295.1、实验一、点阵式L C D ( 1 2
3、 8 X 6 4 ) 模块显示实验 295.2、实验二、 三色16X 16 矩阵L E D 应用实验525.3、实验三、A/D(ADC0809、)转换实验555.4、实验四、DAC 0832 输出0-5V电压转换实验605.5、实验5、电机(直流电机、步进电机、继电器)控制实625.6、实验6、I 2 C 总线芯片的读、写实验695.5、实验7、IC 卡(SE4442 控制)读、写实验815.5、实验8、“看门狗”(813L)复位控制实验100第一章:系 统 概 述1.1 系统的安装使用 1. 电源输出引脚定义 ( 图1 ) 实验仪自带一组工作电源,供实验时使用。2、CZ1 打印机的接口定义
4、(图2) 在实验仪的左上方有一个打印机接口CZ1,该接口可与外接微型打印机直接连接。3、串行接口(图3) 在实验仪的右下角有2个DB9的串口,其中COM1为实验仪自带的仿真器和计算机连接的接口,COM2为用户自己实验用的串行口,可以由用户CPU的P3.0、P3.1或者 82C51的RXD1、TXD1端控制。同时COM2还具备RS485通信功能,RS232和RS485的切换由跳线K11,K12决定,当K11,K12的1脚和2脚短接为RS232输出,2脚和3脚短接为RS485输出。RS485的控制由DI/RI决定。4、LED发光二极管显示:(图4) 实验仪上有16只发光二极管以及相应的驱动电路。分
5、4种颜色,L1L16为发光二极管驱动信号输入端,该输入为“0”时发光二极管亮。 5、逻辑电平开关电路 (图5): 实验仪上有8只开关K1K8和相应的K1K8引线孔为逻辑电平的输出端。开关向上拨相应的孔输出高电平“1”,向下拨相应的孔输出低电平“0”。 6、单脉冲电路(图6) 实验仪上有一个单脉冲发生电路,标有“的两个引线插孔为正负脉冲的输出端,附近的AN按钮为单脉冲,每按一次产生一个脉冲。 7、键盘/LED电路:(图7) 实验仪上有16个键的矩阵键盘,8个LED,既可以由82C79控制也可以由用户扩展并行口来控制,键功能用户可以自己编程定义。 X0X1X2X3RL0RL1RL2RL32、数码管
6、的结构图: D7 D6 D5 D4 D3 D2 D1 D0 a f e g d c B h 3、字形表(数码管为共阴) 0 1 2 3 4 5 6 7 8 9 11H 7DH 23H 29H 4DH 89H 81H 3DH 01H 09H A B C D E F P. 。 空 05H 0C1H 93H 61H 83H 87H 06H 0EFH 0FEH 0FFH 8、频率发生器电路:(图8) 实验仪上有一个1.8432MHZ的频率源,标有PCK的插孔为频率的输出端。 9、8X8双色矩阵LED (图9) 实验仪带一个8X8的LED,由IC(8255-1)控制,其中PA口经过反相驱动(7406)控
7、制它的公共端(共阳),PB口经过反相驱动(ULN2803)绿色的发光部分,PC口经过反相驱动(ULN2803)红色的发光部分,例如PA=00H,PB=0FFH 全部发绿色。PA=00H,PC=0FFH,全部发红色。 A、8X8 LED的内部结构图 B、8X8 LED的外部可视图 10、128X64 LCD液晶显示屏 (图10) 实验仪上有一个128X64点阵的液晶屏,内部带2M共8192个汉字库,可以显示字符、汉字、图形。内部带负压,带背光。 11、CPU的基本部分原理图 这里是整个实验系统的CPU部分,包括数据总线,地址总线、晶振启动的电路部分,在后面的各个扩展控制部分的原理图中的各个总线以
8、及控制信号均来自这个部分。所以在后面的相关的部分就不再重复。 12、系统的RAM和ROM部分的原理图 这里是实验系统的数据存储器RAM (62256 32K),和程序存储器ROM(27C512 64K)的原理设计图。 13、蜂鸣器的驱动部分的原理图 第二章实验系统的地址分配实系统的各个元件的地址分配: - 表(1):RTC(DS12C887)的地址分配以及符合定义 秒寄存器 = # 8000H SECOND = # 8000H 秒闹钟 = # 8001H SECOND_ALARM = # 8001H 分寄存器 = # 8002H MINUTE = # 8002H 分闹钟 = # 8003H M
9、INUTE_ALARM = # 8003H 时寄存器 = # 8004H HOUR = #8004H 时闹钟 = # 8005H HOUR_ALARM = #8005H 星期寄存器= # 8006H WEEK = #8006H 日寄存器 = # 8007H DATE = #8007H 月寄存器 = # 8008H MONTH = #8008H 年寄存器 = # 8009H YEAR = #8009H A寄存器 = # 800AH REG_A = #800AH B寄存器 = # 800BH REG_B = #800BH C寄存器 = # 800CH REG_C = #800CH D寄存器 = #
10、 800DH REG_D = #800DH 世纪寄存器= # 8032H CENTURY = #8032H 一般的RAM = # 800EH #807FH (8032 除外) 表(2):LCD(字符、图形)的地址分配以及符合定义 LCD 写命令地址= # 0E000H W_C_GLCD = # 0E000H 写数据地址= # 0E001H W_D_GLCD = # 0E001H读状态地址=# 0E002H R_ B_GLCD = #8402H 读数据地址=# 0E003H R_ D_GLCD = # 0E003H(DG-128x64 带2级 国标汉字库) 表(3):可以自定义扩展控制(8255
11、)的地址分配及符合定义 8255-2 端口A 寄存器= # 8200H A_8255_2 = # 8200H 端口B 寄存器= # 8201H B_8255_2 = # 8201H 端口C 寄存器= # 8202H C_8255_2 = # 8202H 控制端口 寄存器= # 8203H D_8255_2 = # 8203H 表(4):可编程定时/计数扩展控制(82C53)的地址分配及符合定义 82C53 写计数器0= # 8400H W_0_82C53 = # 8400H 写计数器1 = # 8401H W_1_82C53 = # 8401H 写计数器2 = # 8402H W_2_82C5
12、3 = # 8402H 写命令控制寄存器 = # 8403H W_D_82C53 = # 8403H 读计数器0 = # 8400H R_0_82C53 = # 8400H 读计数器1 = # 8401H R_1_82C53 = # 8401H 读计数器2 = # 8402H R_2_82C53 = # 8402H 读命令控制寄存器 = # 8403H R_D_82C53 = # 8403H 表(5):可编程串行口扩展控制(82C51)的地址分配及符合定义 82C51 写数据地址= # 8300H W_D_82C51= #8300H 写命令地址= # 8301H W_C_82C51= #830
13、1H 读数据地址= # 8300H R_ D_82C51= #8300H 读状态地址= # 8301H R_ B_82C51= #8301H 表(6):可编程键盘/显示扩展控制( 82C79 )的地址分配及符合定义82C79 写数据地址= # 8100H W_D_82C79= # 8100H 写命令地址= # 8101H W_C_82C79= # 8101H 读数据地址= # 8100H R_ D_82C79= # 8100H 读状态地址= # 8101H R_ B_82C79= # 8101H 表(7):扩展简单 I / O (74HC244, 74HC273)的地址分配及符合定义 74HC
14、244 读入地址= # 8600H R_D_244 = # 8600H 74HC273 输出地址= # 8700H W_D_273= # 8700H 表(8):A/D扩展(ADC0809、MC7135, AD574)的地址分配及符合定义 A/D 芯片的分配 符 号 定 义 通 道 号 0809的读(写)地址=# 0A000H W_D_0809 = # 0A000H 0-7通道对应 00H 07H AD574的启动地址=#0D200H W_C_574 = # 0D200H 读高8位结果地址=#0D201H R_DH_574 = # 0D201H 读低4位结果地址=#0D202H R_DL_574
15、 = # 0D202H MC7135通道地址= #0D000H W_C_7135 = # 0D000H 0 7通道对应 10H 17H 结果读出地址=#0D100H R_D_7135 = #0D100H 表(9): D/A扩展(DAC0832)的地址分配及符合定义 D/A转换的地址= # 0C000H W_D_0832 = # 0C000H 第三章 Vision2集成开发环境1、 软件简介KEILVision2 是流行的单片机开发环境之一,它集可视化编辑、编译、调试、仿真与一体,支持51 汇编、PLM 和C 语言的混合编程,功能强大、界面友好、易学易用。安装KEIL Vision2 的方法同一
16、般的软件安装。安装完成后将在Windows桌面生成一个KEIL Vision2 图标。运行该软件,启动屏幕如下:图、KEIL Vision2 启动界面KEIL Vision2 启动界面随后进入KEIL Vision2 的工作界面:2、创建一个项目要创建一个应用项目,需要下列步骤操作l 启动 Keil Vision,新建一个项目文件并从器件库中选择一个器件。l 新建一个源文件并把它加入到项目中。l 增加并设置选择器件的启动代码。l 针对目标硬件设置工具选项。l 编译项目并生成可以编程PROM的HEX文件。下面逐步介绍:(1)、在KEIL Vision2 集成开发环境中,打开菜单Project-N
17、ew Project;(2)、在弹出的Create New Project对话框中,选择目标项目的文件夹,并输入项目名称。(3)、根据需要,选择ATMEL 89C51 或其它51 系列单片机作为目标设备。选择目标单片机(4)、这时需要建立一个源文件。建立一个汇编或C文件,如果已经有源程序文件,可以忽略这一步。选择File/New选项,在弹出的对话框中,输入一个源程序。在此处输入源程序(5)、选择 File/Save选项,选择文件的存放路径并输入源程序文件名,注意一定要填上扩展名,如果C源程序文件,扩展名为.C;如果是汇编语言源程序文件,扩展名为.ASM后缀,单击保存。(6)、单击对象Targe
18、t1前的加号,展开的内容Source Group1,用右键单击Source Group1,在弹出的快捷菜单中选择Add File to Source Group1选项。(7)、在弹出的对话框中找到刚才的文件,单击ADD按键,这时目录里就有源程序文件了。(8)、项目设置,用鼠标右键单击对象Target1,在弹出的菜单中选择Options forTraget对话框选项,弹出的Options for Target1对话框中有8个选项卡, Target1选项卡中设置工作频率为12MHz,其它为默认选项,然后选中Debug页如下图,如选择Use Simulator 表示使用软件仿真;如选择Use:“ K
19、EIL Monitor-51 Driver”表示使用监控方式。设置使用KEIL Monitor-51 DriverN注意:由于每次仿真器复位后用户代码区都将被自动擦除,所以如果用户需要启动调试时加载用户代码,“Load Application at Startup”选项也必须打勾。在监控方式下还要对串口进行设置,单击“Settings”选择您要使用的计算机串行端口。KEIL Vision2 默认设置为COM1/57600。本实验系统支持57600bps(57.6Kbps)的波特率。最后单击“确定”按钮保存设定。8个选项卡的详细介绍请参考Keil C使用手册。3、使用Keil进行调试的基本技巧(
20、1)、进入和退出仿真状态只有在用户程序编绎和连接成功后才能进行调试工作,点击菜Debug-Start/Stop将进入/退出硬件仿真状态。(2)、如何运行程序在Keil 的IDE 中有以下几种运行方式:A)、Run 全速运行,遇到断点停下,或用户按动Stop按钮或RST CPU按钮停止.B) Step info 单步跟踪运行一条指令,如果该语句为C 中的调用子程序语句或汇编中的CALL指令Step info 指令,将跟踪进入子程序内部。C)、Step over 单步运行完一条指令,如果该语句为C 中的调用子程序语句或汇编中的CALL指令,Step over 指令将全速完成该子程序的运行停在下一指
21、令处。D)、Run till Cursor Line 从当前位置运行到光标处。(3)、如何设置和删除断点设置断点/删除断点最简单的方法是用鼠标双击待设置断点的源程序行或反汇编程序行或用断点设置命令bs (4)、如何查看和修改寄存器的内容仿真时主寄存器的内容显示在主寄存器窗口,用户除了可以观察以外还可自行修改,用鼠标点击选中一个单元,例如单元DPTR,然后再单击DPTR 的数值位置,出现文字框后输入相应数值按回车键即可。另外的输入方法是使用命令行窗口,例如输入A=0X34将把A 的数值设置为0X34。5、如何观察和修改变量点击View-Watch & Call stack Window 出现相应
22、窗口,选择Watch 1-3 中的任一个窗口,按动F2 在Name 栏填入用户变量名,如:Temp1 Counter 等,但必须是存在的变量。如果想修改数值可单击Value 栏,出现文本框后输入相应数值。用户可以连续修改多个不同的变量,uVision2 IDE 提供了观察变量更简单的方法。在用户程序停止运行时移动鼠标光标到要观察的变量上停大约一秒钟就弹出一个变量提示块出来。6、如何观察存储器区域在Keil中可以区域性的观察和修改所有的存储器数据。Keil IDE 把MCS-51内核的存储器资源分成4个部分A 内部可直接寻址RAM data ,IDE表示为D:xxB 间接寻址RAM区idata
23、,IDE表示为I:xxC RAM区xdata ,IDE表示为X:xxxxD 代码区code ,IDE表示为C:xxxx这四个区域都可以在Keil 的 Memory Windows 中观察和修改。IDE 集成环境中点击菜单View-Memory Windows,便会打开Memory 窗口, Memory 窗口可以同时显示4 个不同的存储器区域。点击窗口下部分的编号可以相互切换显示。在地址输入栏内输入待显示的存储器区起始地址如D:45h 表示从内部可直接寻址RAM 的45H 地址处开始显示;x:3f00H 显示外部RAM,从3f00H 地址开始; c:0X1234显示代码区域,从1234H 地址开
24、始;I:32H 显示内部间接寻址空间,从32H 地址开始显示。格式的切换: 在区域显示中缺省的显示单元为字节(byte),但是可以选择其他显示方式,在Memory 显示区域内按动鼠标右键在弹出的菜单中可以选择的显示方式为:Decimal 按照十进制方式显示Unsigned 按照有符号的数字显示又分char 单字节int 整型long 长整型Singed 按照无符号的数字显示又分char 单字节int 整型long 长整型ASCII 按照ASCII 码格式显示Float 按照浮点格式进行显示Double 按照双精度浮点格式显示在Memory 窗口中显示的数据可以修改,修改方法如下:在鼠标对准要修
25、改的存储器单元,按动鼠标右键,在弹出的菜单中选择“Modify Memory at 0x”在弹出对话框的文本输入栏内输入相应数值后按回车键修改完成。注代码区数据不能更改。第四章 基本实验指导本章实验结合各章理论进行,其中实验1、2为纯软件实验,采用Smiulator方式;后面的实验为软、硬件结合实验,采用Keil Monitor-51 Driver方式。建议每个学生先建立一个文件夹,实验中的项目文件和源程序文件都放在这个文件夹中。实验1 “LJD-2008+单片机实验开发系统”使用学习1. 实验目的(1)、了解实验设备的结构与组成,掌握Keile C平台的使用。(2)、熟悉指令系统和寻指方式。
26、(3)、编辑、编译、链接、装载、全速/单步/断点运行、单片机内部资源查看与改写,会查找和排除简单故障。2.实验步骤(1)、启动Keil C,出现主界面后,建立一个新的工程。(2)、在源程序输入窗口键入以下实验程序:INDEX EQU 20HSUM EQU 21HORG 0000HSTART:MOV INDEX,#5MOV A,#0LOOP:ADD A, INDEXDJNZ INDEX,LOOPMOV SUM,ASJMP $END以上文件以FIRST.ASM存盘,预分析程序的执行结果。(3)、构造对象,以Simmulator方式启动仿真。打开汇编窗口,查看汇编代码,理解指令的存储格式。(4)、打
27、开寄存器窗口和片内数据存储器窗口。单步执行程序,观察累加器的内容和PSW的内容的变化以及内部数据存储器中20H单元内容的变化。(5)、将断点设定在SJMP $指令行,观察程序运行的最终结果,即21H单元的内容的变化。3.程序设计选题(1)、将外部数据存储器0001H和0002H单元的内容互换,观察互换的结果。(2)、将外部数据存储器0001H单元的内容的高低4位相交换,观察互换的结果。(3)、完成8位数除以8位数,观察结果的商、余数和PSW中的状态标志。即R2/R1=R3R4。(4)、将外部数据存储器0001H单元的内容的奇数位取反,偶数位不变,观察处理结果。实验2 顺序、分支、循环三种结构程
28、序的基本编程训练1.实验目的(1)、通过拆字程序、拼字程序、数据排序程序和分类统计程序进步掌握三种结构程序的设计方法。(2)、进一步掌握软件的编辑、编译、排错、调试方法。(3)、进一步掌握十进制数的机内表示方法和有符号数据的机内表示方法。2.实验内容(1)、在仪器仪表等工业应用中要进行十制数的处理,一方面要以压缩BCD码的格式存储信息,另外又要把存储的结果一位一位的以十进制方式显示出来,这就要用到拆字和拚字程序。(2)、拆字程序:定义一个压缩BCD码数据并保存在片外RAM8000H单元,分离为非压缩BCD码数存入片内RAM30H和31H单元,以断点调试方式观察分离结果。(3)、拚字程序:定义一
29、个二位的非压缩BCD码数据并保存在片外RAM8000H和8001H单元,拚接为压缩BCD码数据存入片内RAM30H单元,以断点调试方式观察拚接结果。(4)、用DB伪指令定义10个无序数据,采用冒泡排序的方法将其从小到大或从大到小排序后存入片外RAM2000H开后的单元,调试程序观察排序结果。(5)、用DB伪指令定义10个包含0、正数、负数的一组数据,分别统计其中各数的个数,统计结果保存到内部RAM30H、31H、32H单元,调试程序观察统计结果。3.程序设计选题(1)、完成两个4字节数的BCD码数的相加,和存入内部数据存储器24H20H单元,观察运算结果。(2)、将外部数据存储器中的10个十六
30、进制数转换成ASCII码存放回原单元,观察转换结果。实验3 并行I/O口实验1.实验目的(1)、熟悉51单片机并行口输入方式和输出方式的编程。(2)、掌握子程序的设计和调用方法。(3)、掌握子程序的仿真和调试方法。2. 实验电路和程序段 驱 动位 驱 动a b c d e f g hLE1 LE2 . LE3 LE4 LE5 LE6 LE7 LE8如图,实验电路为8个数码显示器的的测试电路。数码显示器的8个段连接实验箱上的8个逻辑电平开关,位驱动的每一引脚对应连接单片机的P1.0P1.7。(1)、数码显示电路的测试:将逻辑电平开关全置于逻辑1,以秒为时间单位,编程轮流点亮8个数码管。若每个数码
31、管都显示8.,则数码管及其显示电路工作正常。(2)、动态扫描电路的原理分析:以10ms为时间单位,编程轮流点亮8个数码管,观察显示结果是否稳定。以2ms为时间单位,编程轮流点亮8个数码管,观察显示结果是否稳定。(3)、将P1.7接逻辑电平开关,作输入引脚使用,ag各段不变,H段浮空。当开关为逻辑1时,8个数码管以秒为单位间隔闪烁。当开关为逻辑0时,8个数码管分为高低4个两组,以秒为单位间交叉闪烁。实验4 中断系统及应用实验1. 实验目的(1)、了解中断的产生和响应过程,掌握中断程序的编制。(2)、学习利用中断实现单步运行的方法。(3)、加深对边沿触发方式和电平触发方式的理解。(4)、考察中断优
32、先权的控制。2、实验电路与实验内容89C51 单稳电路P3.2KVccVccP1.0P1.1P1.7P1.7INT00(1)、利用中断实现单步运行的方法。实验电路如图: 图4.单步运行电路连接示意图按图4连接线路,调试并运行如下程序,观察单步运行过程。实验程序如下:;主程序ORG 0000H LJMP MAIN ORG 0003H LJMP EXINT0MAIN: CLR IT0 CLR A MOV P1,A MOV IE , #81H ;开中断LOOP: CPL A MOV P1, A SJMP LOOP ;中断服务程序EXINTO: JNB P3.2 , EXINTOWAIT : JB P
33、3.2 ,WAIT RETIa)、预分析程序的功能和实验现象。b)、单片机上电复位后启动程序执行,这时,虽然INT0引脚为低电平,但由于复位后特殊功能寄存器IE各位为零,禁止中断,所以在设置完IE后(程序中执行完MOV IE,#81H)再执行一条指令才能进入中断程序。若P3.2(INT0)引脚为低电平,则程序陷入中断中断服务程序中。每按一次按键产生一个正脉冲,这样 当执行RETI指令从中断服务程序返回时P3.2引脚刚好为低电平中断请求信号有效,因此返回主程序中执行完一条指令后又会进入中断服务程序,达到通过外部按键控制程序单步运行的目的。(2)、按下图所示电路连线,分析边沿触发方式的外中断和电平
34、触发方式的外中断的中断请求信号的撤除有什么不同。考察中断优先级。实验程序如下(两中断源均为边沿方式):;主程序MODW0 EQU 70H MODW1 EQU FEH ORG 0000H LJMP MAIN ORG 0003H LJMP EXINT0 ORG 0013H LJMP EXINT1 ORG 0050HMAIN: MOV SP , #60H SETB IT0 SETB IT1 CLR PX0 SETB PX1 MOV IE , #85H SJMP $;中断服务程序EXINT1: PUSH ACC MOV R2,#08H LP1: MOV A ,#MODW0 MOV P1 , A LCA
35、LL DELY500 SWAP A MOV P1 , A LCALL DELY500 DJNZ R2, LP1 POP ACC RETIEXINT0: PUSH ACC MOV R3 , #08H MOV A , #MODW1LP0: MOV P1 , A LCALL DELY500 RR A DJNZ R3 , LP0 POP ACC RETIDELY500为延时500ms的子程序,该子程序由同学们自己设计。a)、两中断源都在边沿触发方式下作如下操作:启动程序运行,观察指示灯如何变化?按下按键手不松观察指示灯如何变化,松开手后观察批示灯如何变化?b)、修改程序两中断源都在边沿触发方式下作如下
36、操作:启动程序运行,观察指示灯如何变化?按下按键手不松观察指示灯如何变化,松开手后观察指示示灯如何变化?C)、考察自然优先级。两中断源均为电平触发方式,优先级均为0,将单片机的P3.2(INT0)和P3.3(INT1)接逻辑电平开关,拨开关使P3.2和P3.3输出低电平,启动程序运行观察执行结果。再拨开关使P3.2输出高电平,观察程序运行的结果。d)、考察优先权的控制。修改程序使INT1为高优先级,INT0为低优先级,拨开关使P3.2输出低电平,P3.3输出高电平,启动程序运行,观察运行结果。在程序运行过程中,拨开关使P3.3输出为低电平,程序运行的结果说明了什么?3.程序设计题,自编程并通过
37、调试。使8个数码管显示H,每中断一次,H左移1位。参考实验3的实验电路。实验5 定时/计数器应用实验1.实验目的(1)、学习利用定时/计数器扩展外中断的方法。(2)、了解定时/计数器的应用,掌握其编程方法。2.实验电路3.实验内容(1)、利用定时/计数器扩展外断。按实验电路图连线,实验程序如下:MODW0 EQU 0F0H MODW1 EQU 0FEH ORG 0000H LJMP MAIN ORG 000BH LJMP EXT0 ORG 001BH LJMP EXT1 ORG 0050HMAIN: MOV SP , #60H MOV TMOD , #66HMOV TH0,#0FFHMOV T
38、L0,#0FFHMOV TH1,#0FFHMOV TL1,#0FFH SETB TR0SETB TR1 CLR PT0 SETB PT1 MOV IE , #85H SJMP $;中断服务程序EXT1: PUSH ACC MOV TH1,#0FFHMOV TL1,#0FFH MOV R2,#08H LP1: MOV A ,#MODW0 MOV P1 , A LCALL DELY500 SWAP A MOV P1 , A LCALL DELY500 DJNZ R2, LP1 POP ACC RETIEXT0: PUSH ACCMOV TH0,#0FFHMOV TL0,#0FFH MOV R3 ,
39、 #08H MOV A , #MODW1LP0: MOV P1 , A LCALL DELY500 RR A DJNZ R3 , LP0 POP ACC RETIDELY500为延时500ms的子程序,该子程序由同学们自己设计。(1)、预分析程序的功能。录入程序,以Monitor-51 Driver方式仿真调试。按下按键观察程序的执行结果;在指示灯停止闪烁后松开按键观察程序的执行结果。按下按键,指示灯下在闪烁时松开按键观察程序的执行结果。程序执行的结果与边沿方式的外中断的结果是否相同?(2)、定时/计数器的扩展应用。设计实现下列功能的程序,并在实验箱上实现。a、 用定时/计数器T0产生秒闪烁信号,控制P1.0引脚上的指示灯以秒频率闪烁。b、 用定时/计数器T0和T1级连扩展方式产生秒闪烁信号,控制P1.0引脚上有指示灯以秒频率闪烁。实验6 单片机并行口扩展实验(1)1、实验目的(1)、学会单片机与8255、数码显示和键盘的接口掌握编程应用技术。(2)、学习动态扫描显示的基本工作原理。2、实验电路a b c d e f g hLE1 LE2 . LE3 LE4 LE5 LE6 LE7 LE8PA7PA0PB0PB7&8255APC3PC2PC1PC0段 驱 动位 驱 动0 1 2
限制150内