1、 本科实验报告课程名称: 单片机导论姓 名:学 院: 电气工程学院系: 应用电子学系专 业: 电子信息工程学 号: 3110103315指导教师: 王晓萍2013 年 03 月 25 日实 验 报 告课程名称:单片机导论 指导老师:王晓萍 成绩:_实验名称:硬件实验二 实验类型: _同组学生姓名:_一、实验目的和要求(必填) 二、实验内容和原理(必填)三、主要仪器设备(必填) 四、操作方法和实验步骤五、实验数据记录和处理 六、实验结果与分析(必填)七、讨论、心得一、实验目的和要求1.学习 89C51 内部计数器的使用和编程方法;2.进一步掌握中断处理程序的编写方法;3.掌握外部中断技术的基本使
2、用方法;4.掌握中断处理程序的编写方法;2、实验内容和原理1.编程使发光二极管循环闪烁的时间依次为 0.25s,0.5s,0.75s,1s(可用软件定时,用定时器定时为选做);2.如何保证一次外部中断的按键操作只响应一次中断,即保证程序稳定运行;3.编写十字路口交通灯控制程序。要求:(选做题)东西向亮红灯时,南北向亮绿灯,时间为 5s;两个方向均为黄灯亮 2s;红绿灯显示交换方向;两个方向均为黄灯亮 2s; 如此循环反复。3、主要仪器设备PC 机一台4、实验电路图专业:电子信息工程_姓名: _学号:3110103315_日期:2013.03.25_地点:东四 606_装 订 线5、流程图和源程
3、序实验一:1.说明:使发光二极管循环闪烁的时间依次为 0.25s,0.5s,0.75s,1s2.源程序:ORG 30H /定时器定时MOV P1,0H /置 P1.0 为 1,使发光管不亮MOV R2,#5MOV TMOD,#01H /设定时器 0 为方式 1MOV TH0,#3CH /赋初值MOV TL0,#0B0HSETB TR0 /启动 T0L1: JBC TF0,L2SJMP L1L2: MOV TH0,#3CHMOV TH1,#0B0HDJNZ R2,L1MOV R2,#5CPL P1.0SJMP L1SJMP $END3.运行结果:P1.1 每隔 0.25 秒改变一次状态。实验二:
4、1.说明:保证一次外部中断的按键操作只响应一次中断,即保证程序稳定运行;2.源程序:LED BIT P1.0LEDBUF BIT 0ORG 0000HLJMP STARTORG 000BHLJMP INTERRUPTORG 0030HINTERRUPT:CLR EAPUSH PSWCPL LEDBUFMOV C,LEDBUFMOV LED,CPOP PSWSETB EARETISTART:CLR LEDBUFCLR LEDMOV TCON,#01HMOV IE,#81HOK: SJMP OKEND3.运行结果:保证一次外部中断的按键操作只响应一次中断,即保证程序稳定运行;实验三:1.说明:编写
5、十字路口交通灯控制程序。2.源程序:ORG 0000HLJMP MAINORG 0100HTIME5: /定时 5SMOV R2,#100 /定时 5s 循环次数MOV TMOD,#01H /设定时器 0 为方式 1MOV TH0,#3CH /赋初值MOV TL0,#0B0HSETB TR0 /启动 T0L1: JBC TF0,L2SJMP L1L2: MOV TH0,#3CHMOV TH1,#0B0HDJNZ R2,L1RETTIME2: /定时 2SMOV R3,#40 /定时 2s 循环次数MOV TMOD,#01H /设定时器 0 为方式 1MOV TH0,#3CH /赋初值MOV T
6、L0,#0B0HSETB TR0 /启动 T0L3: JBC TF0,L4SJMP L3L4: MOV TH0,#3CHMOV TH1,#0B0HDJNZ R3,L3RETEWRSNG: /东西方向红灯,南北方向绿灯MOV P1,#0C3HRETEWGSNR: /东西方向绿灯,南北方向红灯MOV P1,#3CHRETALLY: /所有方向灯为黄灯MOV P1,#0FFHRETORG 0300HMAIN:MOV SP,#30LOOP:LCALL EWRSNGLCALL TIME5LCALL ALLYLCALL TIME2LCALL EWGSNRLCALL TIME5LCALL ALLYLCALL
7、 TIME2SJMP LOOPEND3.运行结果:东西向亮红灯时,南北向亮绿灯,时间为 5s;两个方向均为黄灯亮 2s;红绿灯显示交换方向;两个方向均为黄灯亮 2s; 如此循环反复。6、思考题1.如何将 LED 的状态间隔改为 2 秒,程序如何改写?答:只需要更改定时器的循环次数即可,例如:ORG 30HMOV P1,0H /置 P1.0 为 1,使发光管不亮MOV R2,#40 /定时 2 秒MOV TMOD,#01H /设定时器 0 为方式 1MOV TH0,#3CH /赋初值MOV TL0,#0B0HSETB TR0 /启动 T0L1: JBC TF0,L2SJMP L1L2: MOV
8、TH0,#3CHMOV TH1,#0B0HDJNZ R2,L1MOV R2,#40CPL P1.0SJMP L1SJMP $END2.如果更换不同频率的晶振,会出现什么现象?如何调整程序?答:由于晶振的改变导致振荡周期改变,从而使程序中控制的时间长短改变。应根据新的晶振从新计算时间。3.简述中断处理的一般过程。答:中断处理过程可以分为中断响应,中断处理和中断返回。具体如下:开始中断入口设置主程序初始化中断初始化开中断执行主程序结束中断源发中断申请中断响应条件是否满足 ?中断是否受阻 ?把 P C 断点地址压入堆栈相应中断源的中断入口地址送入 P C ,转向中断服务程序NYYN关中断保护现场开中断中断服务关中断恢复现场开中断中断返回断点地址由堆栈弹入 P C硬件自动完成( a ) 主程序框图 ( b ) 硬件自动完成框图( c ) 中断服务程序框图