单片机实验报告(3)
- 格式:docx
- 大小:15.74 KB
- 文档页数:7
单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。
例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。
(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。
同时,学习掌握汇编程序的编写和调试过程。
实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。
单片机外部中断实验报告实验三外部中断实验报告班级:学号:姓名:教师:一、实验LI的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管DPD8O每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3 口是8位准双向口,具有双重功能:第一功能和P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3. 0RXD串行输入口P3. 1TXD串行输出口P3. 2INTO外部中断0请求输入线P3. 3INT1外部中断1请求输入线P3.4TO定时器/计数器TO外部计数器脉冲输入线P3. 5T1定时器/计数器T1外部计数器脉冲输入线P3. 6WR外部数据存贮器写脉冲输出线P3. 7RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断003H定时器/计数器T1溢出中断OBH外部中断113H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EAESET1EX1ET0EX0(1)外部中断源允许中断(中断0: EX0=l;中断1: EXl=l)o(2)CPU 开中断(EA二1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCOX:TF1TR1TF0TR0IE1IT1IE0IT0IT0是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。
前一方式IT0二1,后一方式IT0二0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式ITl=0o当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
摘要单片机应用技术课程为一门理论与实践相结合的课程,本课程安排的实验旨在培养学生软硬件开发能力,用编程语言及硬件设备实现串、并行通讯、计数/定时、A/D、D/A等硬件接口的功能,进一步加深对常用硬件芯片的了解和应用,以及学习用单片机解决实际问题。
实验要求学生利用编程语言及硬件设备实现单片机的方案设计、程序编写、硬件连接、调试,从中体会具体硬件接口的应用技巧,进一步理解硬件接口芯片,逐步掌握单片机系统的开发和应用方法。
此次试验设计主要以STC89C52RC单片机为核心,由系统开发板、74LS138译码器、8253计数器等元件构成跑马灯以及方波的相关试验。
基于题目基本要求,首先我熟悉单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的使用方法。
然后根据系统要求设计电路图,编写汇编语句,购买试验器件,焊接试验电路。
最后进行试验调试。
通过自己不懈的努力,最终完成了试验。
目录实验一构建单片机最小系统和实验环境熟悉 (2)第一部分:实验要求 (2)一、预习要求 (2)二、实验目的 (2)三、实验内容 (2)3.1单片机最小系统实验 (2)第二部分:实验过程 (2)一、单片机最小系统实验 (2)二、实验总结 (4)通过这次实验让我们对单片机最小系统有了一个清晰的认识,为下面的试验打好了基础。
实实验二跑马灯实验及74HC138译码器 (4)第一部分:实验要求 (5)一、预习要求 (5)二、实验目的 (5)三、实验内容 (5)3.1跑马灯实验: (5)3.2 74HC138译码器实验: (5)第二部分:实验过程 (5)一、通过74HC138译码器实现跑马灯 (5)1.1 74HC138译码器介绍 (5)1.1.1 74HC138译码器引脚图 (6)1.1.2 74HC138译码器真值表 (6)1.2 74ls138跑马灯原理图 (7)1.3程序流程图 (7)1.4实验程序代码 (8)三、调试结论 (9)实验三8253方波实验 (10)第一部分:实验要求 (10)一、预习要求 (10)二、实验目的 (10)三、实验内容 (10)第二部分:实验过程 (10)一、8253芯片介绍 (10)1.1 8253引脚图 (10)1.2 8253工作方式 (11)二、使用8253产生方波 (12)2.1实验原理图 (13)2.2程序流程图 (13)2.3实验程序代码 (14)三、调试结论 (15)实验课程总结 (16)参考文献 (16)实验一构建单片机最小系统和实验环境熟悉第一部分:实验要求一、预习要求1.构建单片机最小系统,熟悉51单片机的结构及编程方法。
单片机原理与应用实验报告学校:合肥工业大学班级:计算机科学与技术学号:姓名:第一章MC51 单片机原理及应用软件实验实验1:系统认识实验1.实验目的(1)了解ZY15MCU12BC2单片机实验开发装置的接线与安排。
掌握实验箱内拨位开关KF,KC的使用方法。
(2)通过实例程序的编辑、编译、链接及调试,熟悉Keil C51软件的使用方法和基本操作。
(3)教育学生爱抚实验装置,养成良好的实验习惯。
2.试验设备(1)ZY15MCU12BC2单片机实验开发装置一台。
(2)PC系列微机及相关软件。
3.试验内容(1)使用串行通讯电缆将实验开发装置与PC机相连。
(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境。
(3)确认拨位开关KF的开关为A端,确认89C51处于仿真状态。
(4)在uVision2开发平台上建立并编辑示例程序:计算N个数求和程序。
其中N个数分别放在片内RAM区50H到55H单元中,N=6,求和的结果放在片内RAM区03H(高位)和04H(低位)单元中。
题目:1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?(5)编译连接源程序。
(6)在Keil uVision2主菜单窗口进入DEBUG调试环境,打开存储器窗口输入数据至片内RAM区50H到55H单元中,全速运行程序,并检查程序的运行结果,即观察在存储器窗口片内RAM区03H(高位)、04H(低位)单元中的数据是否正确。
(7)实验结束,撤出接线,将一切整理复原。
4.实验源程序ORG 0000HLJMP MAINORG 1000HMAIN: MOV R2,#06HMOV R3,#03HMOV R4,#04HMOV R0,#50HL1: MOV A,R4ADD A,@R0MOV R4,AINC R0CLR AADDC A,R3MOV R3,ADJNZ R2,L1END5. 实验结果截图6. 实验总结这次试验,熟悉了单片机开发的基本流程,对于实验的两道题目1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?实验结果如上图所示50H~54H存放数据,第一道题计算出来是0x00DEH,第二道题目计算出来是0x0137H,实验结果和预期相符,成功的完成了实验。
实验报告二、实验地点:图书馆816-2三、实验目的:了解MCS-51单片机定时器的结构及使用方法。
四、实验内容1.内容及要求:(1)用定时器1的方式1定时,P1.0接发光二极管,使发光二极管每秒钟闪烁1次。
程序如下:ORG 0000HLJMP STARTORG 001BHLJMP TIME1ORG 0100HSTART:MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#0B0HSETB TR1SETB ET1SETB EAMOV P1,#00HMOV R2,#0AHSJMP $TIME1:MOV TH1,#3CHMOV TL1,#0B0HDJNZ R2,LOOPCPL P1.0MOV R2,#0AHLOOP:RETIEND(2)用定时器1的方式2计数,T1引脚接单脉冲,用P1口接二极管显示计数。
程序如下:ORG 0000HLJMP STARTORG 001BHLJMP TIME1ORG 0100HSTART:MOV TMOD,#60HMOV P1,#00HMOV TR1,#00HMOV TL1,#00HSETB EASETB ET1SETB TR1LOOP:MOV P1,TL1LJMP LOOPTIME1:RETIEND2.流程图:(1)图1 实验(1)流程图(2)图2 实验(2)流程图3.实验步骤(1)连接P1.0和与之对应的发光二极管。
(2)编写定时器计时的程序,打开实验箱,进行编译。
运行程序并观测实验箱。
若实验箱中发光二极管随着程序的运算每一秒闪烁一次,则实验成功。
(3)按照P1.0至P1.7连对应的八个发光二极管,P3.5接单脉冲。
(4)若实验箱上的发光二极管,随着按下单脉冲的次数,进行累加,则表示实验成功。
五、实验中遇到的问题及解决方法问题:进行定时实验时,老师要求将一秒闪烁五次改为一秒闪烁一次。
解决:利用公式(2^16-X)*2*10^(-6)=0.1,重新计算数值,每间隔100ms中断一次,计数初值算得15536,之后进入中断,重新装载初值,做11次中断之后对输出信号进行翻转就能得到一秒闪烁一次的结果。
单片机与嵌入式系统实验报告一、软件模拟调试实验:本部分实验内容主要为指令系统和汇编语言程序设计。
采用软件模拟调试的方法,目的在于通过这些实验使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。
实验一数据传送实验实验目的1、熟悉软件模拟调试环境。
2、掌握汇编语言程序设计的方法,加深对指令的理解。
3、学会软件模拟调试和察看、验证结果方法。
4、印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。
实验步骤1、进入调试软件环境,输入源程序;2、汇编源程序;3、用单步方式运行程序;4、检查并记录各寄存器和存储单元内容的变化。
实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET:AJMP MAINORG 003FHMAIN:MOV R0,#40HMOV R2,#10HMOV A,#0A0HA1:MOV @R0,AINC R0INC ADJNZ R2, A1MOV R1,#10HMOV R0, #50HMOV R2, #10HA3: MOV A, @R1MOV @R0, AINC R1INC R2DJNZ R2, A3SJMP $END实验结果与分析:1、按照实验内容补全程序。
2、对源程序进行编译并查看相应程序存储器的内容,将源程序对应的机器码记录入下表,掌握ORG伪指令及汇编的过程。
ORG的作用及相关注意事项:ORG表示之后的语句从哪里开始,有的单片机里面的固定区域是用来做堆栈或者是子程序跳转地址的入口。
PC表示:下一条要执行的指令PSW表示:程序状态字,其各位的含义为:cy进位标志位AC辅助进位标志位Ov溢出标志位p校验位SP表示:堆栈指针R0~R7的物理位置:0000H-0007H3、运行机器码,查看片内数据区、CPU内寄存器的变化情况,按要求将结果记录入下表。
单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。
本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。
实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。
通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。
实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。
通过编程,可以控制这些功能模块的工作,实现各种应用。
2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。
本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。
实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。
2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。
程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。
3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。
4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。
实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。
通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。
实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。
同时,我们也加深了对温度传感器的原理和应用的理解。
这些知识和技能对于今后的学习和工作都具有重要意义。
单片机原理及接口技术学院:光电信息科学与技术学院班级:一一实验报告册083-1实验一系统认识实验1.1 实验目的1. 学习keil C51 集成开发环境的操作。
2.熟悉td-51系统板的结构和使用。
1.2实验仪器pc 机一台,td-nmc+教学实验系统。
1.3实验内容1. 编写实验程序,将00h —0fh共16个数写入单片机内部ram 的30h —3fh空间。
2. 编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。
1.4 源程序 0000hmov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end2. org 0000hmov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnzr2,loop sjmp $ endloop:loop:1.5 实验步骤1. 创建keil c51 应用程序(1)运行keil c51 软件,进入keil c51 集成开发环境。
-3 - ( 2)选择工具栏的project 选项,弹出下拉菜单,选择n ewproject 命令,建立一个新的卩visi on2 工程。
选择工程目录并输入文件名asm1后,单击保存。
(3)工程建立完毕后,弹出器件选择窗口,选择sst 公司的sst89e554rc 。
(4)为工程添加程序文件。
选择工具栏的file 选项,在弹出的下拉菜单中选择new目录。
(5)输入程序,将text1 保存成asm1.asm。
(6)将asm1.asm源程序添加到asm1.uv2工程中,构成一个完整的工程项目。
2.编译、链接程序文件(1 )设置编译、链接环境(2)点击编译、链接程序命令,此时会在output win dow 信息输出窗口输出相关信息。
3. 调试仿真程序(1)将光标移到sjmp $语句行,在此行设置断点。
(2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。
1.6实验结果.2.4实验二查表程序设计实验2.1 实验目的学习查表程序的设计方法,熟悉51的指令系统。
2.2实验设备pc 机一台,td-nmc+教学实验系统2.3实验内容1. 通过查表的方法将16进制数转换为ascii 码;2. 通过查表的方法实现y= x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd码形式输出。
52.4实验步骤1. 采用查表的方法将16进制数转换为ascii 码。
(1)编写实验程序,编译、链接无误后联机调试;(2)将待转换的数存放在r7中,如令r7中的值为0x86 ;( 3 )在语句行sjmp main 设置断点,运行程序;(4)程序停止后查看寄存器r6、r5中的值,r6中为高4位转换结果0x38 , r5中为低4位转换结果0x36 ;(5)反复修改r7的值,运行程序,验证程序功能。
2. 通过查表实现y = x2,x为0 —9的十进制数,存放与r7中,以bed码的形式保存,结果y以bed码的形式存放于寄存器r6中。
(1)编写实验程序,经编译、链接无误后,进入调试状态;(2)改变r7的值,如0x07 ;(3)在语句行sjmp main处设置断点,运行程序;(4)程序停止后,查看寄存器r6中的值,应为0x49 ;(5)反复修改r7中的值,运行程序,验证程序功能。
2.5源程序及实验结果1. org 0000hljmp main org 0100hmai n: mov dptr, #asetabmov a, r7 anl a, #0fh move a, @a+dptr mov r5, a mov a, r7 anl a, #0f0h move a, @a+dptr mov r6, a sjmp mai n6asetab: db 30h, 31h, 32h, 33h, 34h,5h, 36h, 37h, 38h, 39hdb 41h, 42h, 43h, 44h, 45h, 46hend当令(r7)=86h时,高四位转换结果(⑹=38h,低四位转换结果(r5)=36h,当令(r7)=37h时,结果如下图:当令(r7)=09h时,高四位转换结果(⑹=30h,低四位转换结果(r5)=39h,结果如下图:2. org 0000hljmp mai nmain: org 0100h mov dptr, #sqrmov a, r7move a, @a+dptrmov r6, asjmp main sqr: db 00h, 01h, 04h, 09h, 16hdb 25h, 36h, 49h, 64h, 81hend当令(r7)=07h 时,(r6)=49h 。
结果如下图:实验三数据排序实验3.1 实验目的熟悉51的指令系统,掌握数据排序程序的设计方法。
3.2 实验设备pc机一台,td-nmc+教学实验系统3.3 实验内容在单片机片内ram的30h —39h写入10个数,编写实验程序,将这10个数按照由小到大的顺序排列,仍写入ram的30h —39h单元中。
3.4 实验步骤(1)编写实验程序,编译、链接无误后联机调试;(2 )为30h—39h 赋初值,如:在命令行中键入 e char d:30h = 9,11h,5,31h , 20h, 16h,1,1ah,3fh,8 后回车,可将这10个数写入30h—39h中;(3)将光标移到语句行sjmp $处,点击命令,将程序运行到该行;(4)查看存储器窗口中30h —39h中的内容,验证程序功能;(5)重新为30h —39h单兀赋值,反复运行实验程序,验证程序的正确性3.5 源程序org OOOOhljmp mai norg 0100hmain: mov r0, #30hmov r7, #0ahlp1: mov a, r7mov r6, amov a, r0mov r1, ainc r1Ip2: mov a, @r0clr csubb a, @r1jc Ip3mov a, @r03.6 实验结果实验四数字量输入输出实验4.1 实验目的了解p1 口作为输入输出方式使用时,cpu对p1 口的操作方式。
4.2 实验设备pc机一台,td-nmc+教学实验系统。
4.3 实验内容编写实验程序,将p1 口的低4位定义为输出,高4位定义为输入,数字量从p1 口的高4位输入,从p1 口的低4位输出控制发光二极管的亮灭。
4.4 实验步骤1. 按图3-1-1所示,连接实验电路图,图中“圆圈”表示需要通过排线连接;2. 编写实验程序,编译链接无误后进入调试状态;3. 运行实验程序,观察实验现象,验证程序正确性;4. 按复位按键,结束程序运行,退出调试状态;5. 自行设计实验,验证单片机其它io 口的使用。
4.5 源程序汇编:org OOOOhIjmp start org 0100h start: orl pl, #OfOh mov a,p1 swap amov pl, a sjmp start endc 程序:#in clude sst89x5x4.h void main( void) {}un sig ned char data i; while(1) { }p1 = p1 | OxfO; i = p1;p1 = (i& gt; >4)&0x0f;实验五中断系统实验5.1 实验目的了解mcs-51单片机的中断原理,掌握中断程序的设计方法。
5.2实验设备pc机一台,td-nmc+教学实验系统。
5.3实验内容1. 单片机集成的定时器可以产生定时中断,利用定时器0和定时器1,编写实验程序在p1.0及p1.1引脚上输出方波信号。
122. 手动扩展外部中断int0、int1 ,当int0产生中断时,使led 8亮8灭闪烁4次;当int1产生中断时,使led由右向左流水显示,一次亮两个,循环4次。
5.4 实验步骤1.定时器中断实验(1)编写实验程序,经编译、链接无误后,启动调试功能;(2)运行实验程序,使用示波器观察p1.0及p1.1引脚上的波形;(3)使用示波器测量波形周期,改变计数值,重新运行程序,反复验证程序功能;(4)按复位键退出调试状态。
2.外部中断实验(1)按下图连接实验电路;(2)编写实验程序,编译、链接无误后启动调试;(3)运行实验程序,先按kk1 ―,观察实验现象,然后按kk2 ―,观察实验现象;(4)验证程序功能,实验结束按复位按键退出调试。
外中断实验接线图5.5 源程序1.定时器中断实验汇编:org 0000hljmp start org 000bh ljmp timer0 org 001bh ljmp timer1 org 0100hmov tmod, #11h mov tcon, #50h mov ie, #8ah sjmp $timer0:cpl p1.0mov th0, #0f8h mov tl0, #00h retistart: mov p1, #0ffhmov th0, #0f8h mov tl0, #00h mov th1, #0f8h mov tl1, #00htimer1:cpl p1.1mov th1, #0f8h mov tl1, #00h reti endc 程序:#i nclude sst89x5x4.h sbit wave1 = p1A0; sbit wave2 = p1A1;void in t_timer0() in terrupt 1 { wave1 = ~wave1; }void in t_timer1() in terrupt 3 {}th1 = 0xf8; tl1 = 0x00;void mai n() {th0 = 0xf8; tl0 = 0x00; th1 = 0xf8; tl1 = 0x00; tmod = 0x11; tcon = 0x50; th0 = 0xf8; tl0 = 0x00;wave2 = ~wave2;14ie = 0x8a; while(1);}2. 外中断实验汇编:org 0000hIjmp start org 0003h Ijmp ein t0 org 0013h Ijmp eint1acall delay djnz r7, elp0 retiei nt1: mov a, #03hilp1:mov r7, #10h mov p1, a rl a rl a acall delay djnz r7, ilpl retistart: mov p1, #00hsetb it0 setb ex0 setb it1 setb ex1 setb ea sjmp $delay: mov r6, #0ffh dlpl: dlp2:mov r5, #0ffh djnz r5, dlp2 djnz r6, dlpl ret endein t0: mov r7, #04h elp0:mov p1, #0ffh acall delay mov p1, #00hc 程序#i nclude sst89x5x4.h #i nclude intrin s.h void delay(void)15{ }un sig ned int x;for(x=0; x<0xffff; x++);void int0_isr() interrupt 0 { }void in t2_isr() in terrupt 2 {unsigned char i=0x03, j; for(j=0; j<16; j++) {p1 = i;un sig ned char j; for(j=0; j<4; j++) { }p1 = 0xff; delay(); p1 = 0x00; delay();}}p1 = 0x00;void main () {p1 = 0x00;it0 = 1; ex0 = 1; it1 = 1; ex1 = 1; ea = 1; while(1);}i = _crol_(i, 2); delay();5.6 思考题设定int1为中断高优先级,在程序初始化中加一句:setb px1,则当按kk1-时,即int0产生中断时,led灯亮灭闪烁,在期间即使按动kk2_时,led就会由右向左流水显示,一次亮两个,循环4次,结束后会按照按动kk2-之前没有完成的次数继续直到4次。