




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 30 单片机中断实验总结 实验三 定时器中断实验 一、实验目的 1、掌握 51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为 0 59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 2 / 30 主要器件: AT89C52、 7SEG-BCD、 四、实验步骤 1、使用 Proteus设计仿真原理图; 2、使用 Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2 ; 3 / 30 void timer1_init() TMOD=0x10;/将定时器 1 设置为工作方式 1 TH1=(65536-6000)/256;/定时器每加一时间为 1/fsoc,定时时间为 1/500 /(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;/fsoc=3000000,所以装入 16位定时器中值为 65536-6000 EA=1; ET1=1; TR1=1; void main() 4 / 30 timer1_init(); while(1); void timer1() interrupt 3 TH1=(65536-6000)/256;/ 每 次 进 入 中 断 , 重 装 初 值TL1=(65536-6000)%256; F=F;/每次进入中断口取反 #include #define uint unsigned int #define uchar unsigned char 5 / 30 sbit F=P2 ; void timer0_init() TMOD=0x01;/将定时器 0 设置为工作方式 1 TH0=(65536-83)/256;/定时器每加一时间为 1/fsoc,定时时间为 2Khz,既 500us /500us/6us= TL0=(65536-83)%256;/fsoc=6000000,所以装入 16 位定时器中值为 65536-83 EA=1; ET0=1; TR0=1; void main() timer0_init(); 6 / 30 while(1); void timer0() interrupt 1 TH0=(65536-83)/256;/每次进入中断,重装初值 TL0=(65536-83)%256; F=F;/每次进入中断口取反,表示定时时间到 #include / 包含 51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 7 / 30 #define uint unsigned int sbit D1=P2 ; /将 D1位定义为引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;/time=0; /* 函数功能:主函数 */ void main(void) uint time,time1,temp1,temp2,temp3; 8 / 30 seg_data=0; seg_data2=0; TMOD=0x11; /使用定时器 T0的模式 2 TH0=0xFC; /定时器 T0的高 8位赋初值 1000-500 TL0=0x18; /定时器 T0的低 8 位赋初值 TH1=(65536-50000)/256; /定时器 T1的高 8 位赋初值 TL1=(65536-50000)%256; /定时器 T1的低 8 位赋初值 EA=1; /开总中断 ET0=1; /定时器 T0 中断允许 ET1=1; TR0=1; /启动定时器 T0 9 / 30 TR1=1; while(1)/无限循环等待中断 temp1=(decade&0x0F) temp2=unit&0x0F; time=temp2|temp1; seg_data=time; temp3=avs&0x0F; time1=temp3; seg_data2=time1; 10 / 30 D1=D1; /按位取反操作,将引脚输出电平取反 TH0=0xFF; /定时器 T0的高 8位赋初值 1000-500 TL0=0x06; /定时器 T0的低 8 位赋初值 void Time1(void) interrupt 3 counter+; if(counter19) 11 / 30 unit+; counter=0; if(unit9) decade+; unit=0; if(decade5) avs+; decade=0; if(avs9) avs=0; TH1=(65536-50000)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-50000)%256; /定时器 T1的低 8 位赋初值 TF1=0; 七、实验心得 通过本次课程设计使我感受到它是一门综合性、实践性较强的课程,使我体会到要想综合运用所学的理论知识,提高我的设计能力,必须增加实际操作的环节。这次课程设计不 仅培养了我们的实际动手能力,更检验了我们对本门课学习的情况,培养我们严肃认真的学习态度。真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,并能用设计报告表达设计思想和结果的能力正是我这次课程的目的。 实验三 中断实验 一、实验内容 12 / 30 1当单片机的 INT0 端出现负脉冲时,进入相应的中断服务程序, P1口做输出口,接 8只发光二极管,通过程序控制发光二极管依次点亮。 2选择外部中断 0 接按键 INTO到地,按下出现负脉冲时,进入相应的中断服务程序,在中断服务程序中,数码管显示加 1,在 0-9之间循环。 二、实验目的 1、学习外部中断技术的基本使用方法。 2、学习中断处理程序的编程方法。 三、实验原理 本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器 ACC、标志寄存器 PSW外,还要注意。一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验中,主程序延时用的寄存器和13 / 30 中断延时用的寄存器应不相 同。 四、实验电路 外部中断源允许中断。 CPU开中断。 外部中断方 式 CPU 发出中断申请。 4、外部中断方式的选择 控制 TCON: IT0 是选择文字则外部中断 0 请求边沿触发方式或电平触发方式的控制位。前一方式 IT0=1,后一方式 IT0=0。 IT1 是选择外部中断 1 请求为边沿触发方式或电平触发方式的控制位。前一方式 IT1=1,后一方式 IT1=0。 当 8031 复位后, TCON被清 0。 5、外部中断电路 负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或 者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。边沿触发的最大优点在于不会丢失中14 / 30 断。只要中断请求负跳变的宽度大于 1 个 机器周期,单片机就能够采样到中断请求信号,单片机将采样到的信号琐存到中断请求标志寄存器中,硬件自动置 IE0 为 1,即使单片机暂时不响应,这个标志也不会丢失,只有在外部中断响应之后,硬件才将 IE0 清除。 低电平触发的外部中断与边沿触发的外部中断,其中断过程基本相似。唯一不同在于中断请求信号的保持与撤消。在边沿触发中,单片机 TCON寄存器专门有一位作它的请求标志,当负跳变后,单片机将中断请求标志 IE1 自动置 1,由 IE1请求中断,在响应中断时,又由单片机自动清除 IE1。但是对于电平触发方式,单片机中没有专门的请求标志,响应中断时也不能自动清除请求信号。在实际应用中,常常是在单片机外增加一个触发器作为中断请求标志,当中断请求发生时置触发器为 0,使 INT1为低电平,在单片机响应这个中断后,利用软件发出复位脉冲,使该触发器置 1,撤消中断请求。这种电路使请求中断的低电平能够保持足够的时间,一直到中断发生为止,因而不会丢失中断请求。低电平的时间又不致太长,只要进入中断服务程序,在返回之前,就撤消请求信号,因而也不会 产生多余的中断动作。 四、实验器材 15 / 30 仿真器、目标系统实验板、直流电源 五、实验步骤 1、边沿触发式外部中断 0 实验 设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移 位一次,中断程序中不延时去抖动,观察结果。 设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移 位一次,中断程序中采用延时去抖动,观察结果。 设为边沿触发方式,连接外部 RS触发器硬件去抖动的开关,编程使每次 中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。 2、电平触发式外部中断实验 16 / 30 设为电平触发方式,连接外部 RS触发器硬件去抖动的开关,编程使每次中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。 六、 C源程序清单 #include #define uchar unsigned char uchar i=0; uchar numi=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; void delay(uchar k ); void main() EA=1; EX0=1; IT0=1; while(1) if(EX0=0) /delay(100); IE0=0; EX0=1; 17 / 30 void int0() interrupt 0 EX0=0; (转 载于 : 海达 范文 网 :单片机中断实验总结 ) P2=numii; i+; if(i8) i=0; void delay(uchar k ) uchar x,y,z; for(x=k;x0;x-) for(y=20;y0;y-) for(z=250;z0;z-); 51单片机外部中断实验 实验报告要求: 1)整理本实验涉及的程序,将它们按正确的格式详细书写在实验报告纸上。 18 / 30 1.无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时, 4位数码管从 0000 开始加 1 显示 (加到 9999 后复位为 0000),同时蜂鸣器报警。 #include #include int n1,n2; sbit beep=P3 ; char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; void delay(int x) 19 / 30 int i,j; for(i=0;i for(j=0;j void main() EA=1; EX0=1; IT0=0; EX1=1; IT1=1; PX1=1; while(1); 20 / 30 void int0() interrupt 0 beep=0; P2=0xfe; delay(200); for(n1=8;n10;n1-) P2=_crol_(P2,1); delay(200); 21 / 30 void int1() interrupt 2 P0=0x00; for(n2=0;n2 P1=tablen2; delay(200); 2.设置中断优先级寄存器,当有外部中断 0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断 1也有中断请求,外部中断 0的中断程序将被中断去执行外部中断1 的中断程序。 22 / 30 C 语言程序 #include #include int n1,n2; chartable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e; void delay(int x) int i,j; for(i=0;i for(j=0;j void main() 23 / 30 EA=1; EX0=1; IT0=1; P2=0xfe; delay(200); for(n1=8;n10;n1-) P2=_crol_(P2,1); delay(200); 24 / 30 void int0() interrupt 0 EX0=1; P0=0x00; for(n2=0;n2 P1=tablen2; delay(200); EX0=0; 汇编程序: ORG 0000H AJMP MAIN ORG 0003H LJMP EXT0_INT ORG 0013H LJMP EXT1_INT ORG 0100H 25 / 30 SETB EA SETB EX0 SETB EX1 SETB PX1 CLR IT0 CLR IT1 AJMP $ MAIN: EXT0_INT: MOV P2,#0FEH MOV R4,#08H ACALL DELAY MOV A,P2 RL A MOV P2,A DJNZ R4,L1 RETI L1: EXT1_INT: MOV P1,#0F0H MOV R5,#00H 26 / 30 报告 成绩: 辅导员签字: 一、实验目的 1、 学习外部中断指令的基本使用方法; 2、 学习外部中断处理程序的编程方法。 二、实验内容 1、在试验一的内容的基础上增加允许急救车优先通过的要求; 2、急救车到达时,交通信号为全红,以便让急救车通过; 3、急救 车通过路口的时间为 10秒。急救车通过后,交通灯恢复原状态 实验说明: 27 / 30 交通灯的亮灭规律同实验一; 执行中断程序时,应注意保护现场,使中断程序执行完毕后交通灯能返回 中断前的状态。所谓保护现场,即保护有关的寄存器; 主程序的延时程序和中断处理程序所使用的寄存器不应该混用; 主程序中,每次经 74LS273 端口输出数据时,要先将输出数据保存、再输出,否则显示容易出错,而无法返回中断前状态。例如: MOV A, #0F0H (0) MOVX R1, A (1) MOV SR1, A (2) 假设程序执行 (1)时发生中断,而中断结束返回主程序前执行了一条 MOV A, SR1 的指令,则由于主 程序没有执行 (2),故 SR1的内容应该是上次操作存入的数据,而不是指令中的0F0H,容易
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绿色餐饮店环保设备升级改造施工服务协议
- 2025年新型节能材料研发与应用劳务分包协议
- 2025年度新能源项目股权质押借款合同纠纷诉讼保全执行起诉状
- 2025年医疗器械ROHS检测合格保证协议书
- 2025年羊只代放牧与高原生态保护合作合同
- 茶叶品牌形象塑造与传播合作合同
- 2025年城市绿化带地下设施钻孔灌注桩施工劳务分包合同
- 2025国际高端医疗设备研发及全球战略销售合作协议
- 2025年夫妻共同车辆拍卖处置离婚财产分割执行协议书
- 2025年绿色环保型外墙涂料施工安全质量监管服务合同
- 陈琦《教育心理学》课件
- 全业务竞争挑战浙江公司社会渠道管理经验汇报
- 护理副高职称答辩5分钟简述范文
- 幼小衔接资料合集汇总
- GB/T 42195-2022老年人能力评估规范
- GB/T 4909.4-2009裸电线试验方法第4部分:扭转试验
- GB/T 15155-1994滤波器用压电陶瓷材料通用技术条件
- 复变函数与积分变换全套课件
- 做一名优秀教师课件
- 企业标准编写模板
- 商场开荒保洁计划书
评论
0/150
提交评论