单片机实验报告(1)
- 格式:doc
- 大小:155.00 KB
- 文档页数:14
单片机实验报告实验一:存储器块清零或赋值一、实验目的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)。
实验一、认识实验实验一(一):存储器读写一、实验目的1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作;3、学习简单程序的基本调试方法。
二、实验设备PC机、Keil 软件、Proteus软件。
三、实验内容将70H-7FH16个字节单元的数据复制到片外存储器2000H开始的地址单元中,程序清单如下:ORG 0000HSJMP STARTORG 0030HSTART:MOV 70H,#00HMOV 71H,#01HMOV 72H,#02HMOV 73H,#03HMOV 74H,#04HMOV 75H,#05HMOV 76H,#06HMOV 77H,#07HMOV 78H,#08HMOV 79H,#09HMOV 7AH,#0AHMOV 7BH,#0BHMOV 7CH,#0CHMOV 7DH,#0DHMOV 7EH,#0EHMOV 7FH,#0FHMOV R1,#10HMOV R0,#70HMOV DPTR,#2000HLOOP:MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R1,LOOPEND四、上机操作及调试步骤1、启动PC机,打开Keil4软件,如图(1)图(1)2、建立Keil工程文件,如图(2)图(2)3、建立一个exe1工程文件(工程文件名任意取),不需要扩展名。
选择工程存放路径,点击“保存”按钮。
如图(3)图(3)4、选择芯片,51单片机在Atmel下,找到A T89C51,选中点击OK;图(4)5、因为使用汇编语言,下面弹出窗口选否;图(5)6、建立工程如图图(6)7、为工程添加文件,也就是汇编代码,点击新建按钮(或File->new),弹出Text1文本文件。
新建.ASM文件如图图(7)8、另存为到工程文件,点击保存,保存.asm文件图(8)9、保存后如图图(9)10、添加源文件exe1.asm,右键单击Source Group1,选中其中的“Add file to Group”Source Group1”,出现一个对话框,要求寻找源文件,单击exe1.asm文件,然后在点击Add按钮,此时对话框不会消失,在点击close就Ok 了,如图图(10)图(11)11、没有匹配的源文件,不要急,将C Source file(*.c)换成All files(*.*),源文件就出来了图(12)12、最终如图13、接下来就是写汇编代码了14、写好汇编代码,点击下面三个按钮进行编译……,没有错误(0 Error)就编译通过15、生成hex文件,下载到单片机中,使得单片机工作…………设置如下:单击如下按钮,在弹出的对话框中选中output列表项,按图设置,并单击OK保存就行了。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.9 实验成绩:实验一单片机软件实验(一)实验目的1.掌握51单片机keil软件集成开发环境,能够使用汇编语言编写应用程序。
2.掌握使用集成开发环境Keil进行单片机程序开发的方法3.掌握使用集成开发环境Keil进行单片机程序跟踪调试的方法。
(二)设计要求熟悉51单片机的keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。
(三)实验原理KeilC51软件使用:在KeilC51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。
(四)实验设备PC机,Keil C51集成开发环境。
(五)实验结果对汇编程序进行编译、链接、调试,在Keil C51软件中运行仿真结果如下图所示,由于“1+2+……100”运行结果超过8位二进制所能表示的范围,计算结果将存放于两个8位工作寄存器单元R2、R3中。
其中,低八位存放于R2中,高八位存放于R3中,R4中存放计算数。
下图中的寄存器窗口中可以显示计算结果为0x13ba。
调出存储器窗口Memory:选择菜单命令View →Memory Window →Memory 1:可见计算结果存放于当前工作寄存器R2(02H)与R3(03H)中,为0x13BA。
(六)结果讨论与心得体会第一次使用Keil C51软件,初步了解了软件:Keil uVision4的使用方法,初步了解了Keil软件中程序的编辑,新工程的建立运行,初步对单片机实验进行了解,加强了实验动手操作能力。
第一次尝试单步调试,能观察到内存中每一个单元的变化,感到单片机系统复杂中的严谨,收获颇丰。
(七)附录:实验源代码实验源代码如下:ORG 0000HLJMP MAINORG 0050H MAIN:MOV R2,#00HMOV R3,#00HMOV R4,#64HMOV A,#00HCLR C LOOP:MOV A,R2ADD A,R4MOV R2,AMOV A,#00HADDC A,R3MOV R3,ADJNZ R4,LOOPSJMP $END。
1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验1 计数显示器一、实验目的熟悉51单片机的基本输入输出应用,掌握Proteus模块的原理图绘图方法及单片机系统仿真运行方法二、实验原理由共阴极数码管LED1和LED2、P0口、P2口,上拉电阻RP1及Vcc组成的输出电路;由按钮开关BUT、P3.7和接地点组成的输入电路,该电路在编程软件的配合下,可实现计数显示功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。
三、实验内容(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能(2)学会选择元件、画导线、修改属性等基本操作(3)学会可执行文件加载及程序仿真运行方法(4)验证计数显示器的功能四、实验要求提交实验报告并包括如下内容:电路原理图、电路原理分析、仿真运行截图及实验小结1.实验原理图2.仿真运行截图3.实验小结通过这次实验让我认识了kell和proteus软件的基本功能,学会了用kell编写程序用proteus仿真运行。
在这次实验中同时也遇到了很多问题。
比如因为第一次使用这两个软件对界面还不太熟悉,浪费了很多的时间也产生了很多错误,但之后与同学们的交流过程中,慢慢的对这两个软件有了更深入的了解,在后期仿真的时候才能得心应手的处理问题。
这个计数显示器的实验让我进一步了解了单片机与数码管的魅力,看到了电子元件的神奇之处,只要按动按键就能让数码管的数字逐次加一,这大大激发了我的学习单片机兴趣,这次实验也会成为我以后学习单片机的奠基石,因为它打开了我认识单片机的大门,让我认识到了单片机的魅力,并让我沉浸其中。
实验2 指示灯开关控制器一、实验目的学习51单片机I/O口基本输入输出功能,掌握汇编语言的编程与调试方法。
二、实验原理输入电路由外接在P1口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。
实验一流水灯
实验目的:用AT89C51控制,使8个LED轮流点亮,周期1S,且LED使用驱动电路。
单片机电路
流程图
开始
将累加器的值赋为0FEH
将累加器的值输出给P1
循环左移一位
延时1秒
实验二定时器/计数器的使
用
实验目的:用T0对1kHz方波进行计数,每满200个使输出翻转;用T1产生20ms定时,满200ms时使翻转,满1s时使翻转。
电路图
流程图
开始
给TMOD赋初值,设
设定定时器初值
开启中断
等待中断
T0中断子程序,翻转T1中断子程序,
翻转
T1中断子程序,
翻转
脉冲个数满200 T1计时满200ms T1计时满1s
实验三 矩阵键盘的使用
单片机电路
流程图
开始 扫描键盘码 延时10ms
再次扫描键盘码
比较两次键盘码
将上次的按键字符左移,将
寻找较键盘码对应的字符
Y
N
实验四双机通信
实验目的:单片机甲同期发送一个自累加数值,周期500ms,用定时器且用中断;单片机乙中断方式接收数据,并通过P1口外接LED显示。
实验电路图:
实验流程图:
单片机乙。
单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
题目实验1 P1口实验一一、实验目的:1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:CPU挂箱、8031CPU模块三、实验内容:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2.P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。
四、实验步骤:1、打开CPU挂箱,正确安装8031CPU模块,指导显示屏上显示“199502”字样2、执行程序1(T1_1.ASM)时:P1.0~P1.7口接发光二极管L1~L8。
执行程序2(T1_1.ASM)时:P1.0~P1.7口接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0。
3、打开软件,选择相应的COM口和波特率,电脑与CPU挂箱正确连接上后,软件窗口的下端会显示已连接上,相应的CPU挂箱显示屏上会显示“C ”字样。
4、在软件上选择新建,新建文件类型为ASM51,新建好后,编写程序。
5、程序编写好后,选择保存,然后进行编译,调试,运行程序。
6、观察CPU挂箱上硬件的运行是否与设计的一样,否则进行相应的修改和调试。
五、注意事项1、P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
2、延时程序的实现,采用指令循环来实现,本实验系统晶振为 6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。
现要写一个延时0.1s的程序,可大致写出如下: MOV R7,#X (1)X为外循环的次数,放在R7DEL1:MOV R6,#200 (2)200为内循环的次数,放在R6DEL2:DJNZ R6,DEL2 (3)执行内循环DJNZ R7,DEL1 (4)判断R7是否为0,是否结束循环上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X 值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10⁶指令(1)指令(2)指令(3)指令(4)所需时间所需时间所需时间所需时间所以X=(0.1×10⁶-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH 经计算得X=127。
单片机生产实习报告(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作计划、工作总结、合同协议、条据书信、规章制度、应急预案、策划方案、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as work plans, work summaries, contract agreements, document letters, rules and regulations, emergency plans, planning plans, teaching materials, complete essays, and other sample essays. If you want to learn about different sample formats and writing methods, please pay attention!单片机生产实习报告单片机生产实习报告精选7篇单片机生产实习报告篇1一、实习目的单片机是一种集成电路芯片,采用超大规模集成电路技术把CPU、ROM、RAM等功能集成到一块硅片上构成一块小而完善的微型计算机系统,在工业控制领域广泛应用。
单片机原理与应用实验报告学校:合肥工业大学班级:计算机科学与技术学号:姓名:第一章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,实验结果和预期相符,成功的完成了实验。
实验二、中断实验――中断优先级控制及中断保护一、实验目的1、掌握单片机中断机制。
2、熟悉中断的应用和编程。
二、实验设备1、 仿真器;2、 单片机最小系统;3、 发光二极管阵列显示模块;4、 独立式键盘模块。
三、实验要求连接单片机最小系统和发光二极管阵列的电路并编写程序,学习单片机中断机制,及中断优先级和中断保护的方法:使用独立式按键1连接0INT (P3.2),按键2连接1INT (P3.3),在平时状态下,发光二极管行以200ms 的时间间隔,依次点亮。
1键按下时0INT 中断处理程序点亮P0.0对应的发光管2秒钟,其他发光管熄灭;2键按下时P0.1对应发光管点亮2秒,其他发光管熄灭。
四、实验原理通常一个微处理器读取外围设备(如键盘等)的输入信息的方法有轮询(Polling)及中断(Interrupt)两种。
轮询的方法是CPU 依照某种既定法则,依序询问每一外围设备I /O 是否需要服务,此种方法CPU 需花费一些时间来做询问服务,当I /O 设备增加时,询问服务时间也相对增加,势必浪费许多CPU 时间,降低整体运行的效率。
使用中断是一个较好的解决方法。
使用中断使系统对外部设备的请求响应更加灵敏,并且不需要占用CPU 的时间进行轮询。
但是,当使用中断,特别是有多个中断嵌套时要特别注意内存单元的保护。
1 80C51中断结构当中断发生后,程序将跳至对应中断入口地址去执行中断子程序,或称中断服务程序(Interrupt Service Routine),这些特殊的地址称为中断向量,例如当80C51外部中断INTl 发生时,会暂停主程序的执行,跳至地址0013H 去执行中断服务程序,直到RETI 指令后,才返回主程序继续执行。
MCS-51系列的程序内存中有7个矢量地址,叙述如下:(1)00H 复位当第9脚RESET 为高电平,CPU 会跳至地址00H 处开始执行程序,亦即程序一定要从地址00H开始写起。
(2)03H(外部中断0)INT引脚由高电位变至低电位(跳沿触发方式)或采样到是低电位(电平触发方式)当0时,CPU会接受外部中断0,并跳至地址03H处去执行中断子程序。
(3)0BH(定时器/计数器0中断)当CPU接受定时器/计数器0中断置位而产生中断要求时,会跳至地址0BH处去执行中断子程序。
(4)13H(外部中断1)INT引脚由高电位变至低电位(跳沿触发方式)或采样到是低电位(电平触发方式)当1时,CPU会接受外部中断1,并跳至地址13H处去执行中断子程序。
(5)1BH(定时器/计数器1中断)当CPU接受定时器/计数器1中断置位而产生中断要求时,会跳至地址1BH刻去执行中断子程序。
(6)23H(串行中断1)当串行端口传送数据或接收数据完毕时,CPU会接受串行中断,并跳至地址23H处去执行中断子程序。
(7)2BH(定时器/计数器2中断)此中断仅8052系列才有。
当CPU接受定时器/计数器2产生中断要求时,会跳至地址2BH处去执行中断子程序。
图2.1 MCU内部中断机制2.中断使能位8051针对中断提供两层使能,第一层为EA全局使能控制,第二层为分别控制EX0,ET0、EXl、ETl、ES、ET2。
当8051在复位状态时,寄存器的各个中断使能位都预设为“0”,即所有中断都禁止,故欲允许中断时,应先使能相对应的中断。
当中断产生后,中断状态会记录于定时器/计数器控制寄存器(Timer/CounterControlRigister,TCON)和串口口控制寄存器SCON的中断请求标志(InterruptRequest flag)中,当标志被置位,表示中断已发生。
由图2.1可知,当外部中断或定时器0、定时器1中断发生时,CPU 都可以判别是哪种中断。
因此当这四个中断发生时,中断服务程序被执行后,CPU 会主动清除中断请求标志,对于其他的中断,由于CPU 无法判别,因此中断请求标志需由程序指令来清除。
欲设定中断使能与否,必须设置中断使能寄存器IE(Interrupt Enable Register),其位地址A8H ,是一个可位寻址的寄存器。
3.中断保护由于各个中断入口间仅有8个字节,一般情况下难以安排下一个完整的中断服务程序。
因此,通常总是在重点入口地址处放置一条无条件转移指令,使程序转向在其他地址存放的中断服务程序。
当执行新的中断服务程序时,注意不可以破坏旧有的数据和状态,因此在编写时还要注意保护现场,主要是各个寄存器的值。
通常会被更改的数据(如ACC 、PSW 等),可以利用堆栈在执行中断服务程序之前就将其PUSH 起来,待执行结束后再将相关寄存器POP 即可。
另外,因为8051可任意选择四个工作寄存器区中的一组工作寄存器,所以利用选择不同寄存器区的方式亦可达到数据保存的目的。
4.中断优先级8051对于各种中断优先权采用双层结构,首先对于优先权可由中断优先权寄存器(Interrupt Priority )IP 设定该中断为高优先权或低优先权,高优先权可以中断低优先权,反之不行。
当同一时间同一级别的多个中断请求是,则按自然优先级顺序相应中断。
IP(LSB) PX0,PX1:外部中断0,1的中断优先级控制;1->高优先级,0->低优先级。
PT0,PT1:定时器/计数器0,1的中断优先级控制;PS:串行口中断优先级控制。
IP 中对应位全为零时,CPU 按照片自然优先级来顺序响应中断:中断源外部中断0 高定时器/计数器0外部中断1定时器/计数器1串行口中断 低五、实验步骤本实验将练习使用0INT ,1INT 的中断,利用按键来触发外部中断的发生。
并通过两个中断先后到达的方法,来学习中断优先级的意义与控制。
1、电路说明在图2.2中,主程序执行时,单片机端口P0所接的LED 由P0.7至P0.0一次一颗循环点亮。
当外部中断0产生后,执行该中断子程序,此时P0.0对应的二极管亮,其他二极INT中断子程序则为点亮P0.1对应的二极管,其管熄灭。
2秒钟后,返回主程序的工作。
1他二极管熄灭。
注意,由于每次在按键按下或放开可能会有抖动现象,因而必须进行必要的处理,以免产生二次以上的相同中断信号。
在程序主循环进行时,当1键按下,相应发光管点亮后,立即再按下2键,看反应如何;在程序主循环进行时,按下2键,相应发光管点亮后,立即按下1键,观察反应。
2.程序设计先按l键执行0INT中断子程序,在此中断子程序未结束前再按2键,或是先按2键执行INT中断子程序,在此中断子程序未结束前再按l键,或两者同时按,观察lED亮暗的情1形即可观察中断优先权执行的情形。
六、实验报告1.画出电路原理图,并简要分析工作原理;Array工作原理简述:外部中断按键INT0,INT1连接按键接受外部中断请求,由P0连接外部二极管,每个引脚控制一个发光二极管,低电平点亮。
当按键按下时,单片机接受外部中断请求,进行10MS消抖延迟后如果判断按键依然有效,则执行相应的程序进行相应的中断处理,通过P0进行灯的亮暗控制。
2.提供程序流程图和程序清单,适当给出注释;;******************************************************************************ORG 0000HAJMP MAINORG 0003HAJMP INT0INTORG 0013HAJMP INT1INT;**********主程序**********************************ORG 0030HMAIN:MOV SP,#60HMOV IE,#10000101B ;使能INT0,INTlMOV TCON,#00000101B ;设INT0、INTl跳沿触发。
MOV IP,#01H ;外部中断0优先MOV A,#0FEHLOOP: RR AMOV P0,AACALL DELAY200MSAJMP LOOP;*****************INT0中断服务程序*****************************INT0INT: CLR EAACALL DELAY10MS ;去抖动JNB INT0, HAVKEY1 ;确实有键,转HAVEKEY1SETB EARETIHAVEKEY1: PUSH PSWPUSH AccSETB EAMOV P0,#0FEHACALL DELAY2S ;亮2秒钟POP AccPOP PSWRETI;************INT1中断服务程序******************************INT1INT:CLR EA ;关闭中断ACALL DELAY10MS ;延迟10毫秒JNB INT1,HAVEKEY2 ;如果依旧按键有效执行子程序HAVEKEY2:PUSH PSWPUSH Acc ;现场入栈MOV P0,#0FCH ;P0赋值为1111,1101,即点亮P0.1对应的LED灯ACALL DELAY2S ;延迟2秒POP AccPOP PSW ;现场出栈SETB EA ;中断允许RETI ;中断返回;********************************************************DELAY200MS: ;延时200ms子程序MOV R7,#2DELA1:MOVR6,#200DELA2:MOV R5,#248DJNZ R5,$DJNZ R6,DELA2DJNZ R7,DELA1RET;延迟时间=1+1*2+1*2*200+2*2*200*248+2*200*2+2*2+2=199607us-.>200msDELAY10MS: ;延时10ms子程序DEL:MOV R7,#28HDEL1:MOV R6,#7DHDEL2:DJNZ R6,DEL2DJNZ R7,DEL1RET;时间计算同理DELAY2S: ;延时2s子程序DEL:MOV R7,#14HDEL1:MOV R6,#C8H .DEL2:MOV R5,#F8DJNZ R5,$DJNZ R6,DEL2DJNZ R7,DEL1RET;时间计算同理END3. 描述实验现象和结果,要求对实验现象和结果进行分析。
现象:开始发光二极管行以200ms 的时间间隔,依次点亮。
1键按下时最左端的灯点亮2秒钟,其他发光管熄灭;2键按下时左端第二个灯点亮2秒,其他发光管熄灭。
当1键按下左端灯亮,此时按下2键,左端第一个灯灭,第二个灯点亮。
当按下2键,第二灯亮,此时按下1键,灯没有反应。
结果分析:开始系统正常运行,即光二极管行以200ms 的时间间隔。
当1键按下时,系统产生0INT 中断,控制最左端的灯点亮2秒钟,其他发光管熄灭;2键按下时,系统产生1INT 中断,使左端第二个灯点亮2秒,其他发光管熄灭。