实验5_外部中断程序设计.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《单片机原理与应用》实验报告 实验序号:5          实验项目:外部中断程序设计 学  号 姓  名 专业、班级 实验地点 实1-416 指导教师 许华荣 实验时间 一、实验目的及要求 1、掌握单片机组成结构和特点; 2、掌握Keil 编辑、编译单片机C语言源代码的典型流程; 3、掌握单片机程序烧写的典型流程和注意事项; 4、掌握单片机外部中断的原理及过程。 5、掌握中断服务程序的编写方法。 二、实验设备(环境)及要求 爱普雷德A6000开发板、Windows XP或Windows 7操作系统。 三、实验内容与步骤 1.试编写按键控制数码管显示程序,要求: (1)数码管的DIG1位初始显示0; (2)当按下独立按键的Key_up按键时,数码管上数字在原有基础上加1; (3)当按下独立按键的Key_down按键时,数码管上数字在原有基础上减1; (4)所显示数字采用循环滚动显示方式,即当显示为0时,减1操作后显示变为9,当显示为9时,加1操作后显示变为0; (5)独立按键判断部分要求采用外部中断方式实现。 #include reg52.h #include intrins.h sbit K1 =P1^1; sbit K2 =P1^2; #define uint unsigned int #define uchar unsigned char sbit DIG_DATA = P0^2; sbit DIG_SHCP = P0^4; sbit DIG_STCP = P2^3; code uchar ucSegment[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; code uchar ucSelect[] ={0xFF,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; uchar num = 0; void Display(uchar ucSelect, uchar ucSegment) { uchar i; DIG_SHCP = 0; DIG_STCP = 0; for(i = 0 ;i 8 ; i++) { if(ucSegment 0x80) DIG_DATA = 1; else DIG_DATA = 0; _nop_(); DIG_SHCP = 1; _nop_(); DIG_SHCP = 0; _nop_(); ucSegment = 1; } for(i = 0 ;i 8 ; i++) { if(ucSelect 0x80) DIG_DATA = 1; else DIG_DATA = 0; _nop_(); DIG_SHCP = 1; _nop_(); DIG_SHCP = 0; _nop_(); ucSelect = 1; } DIG_STCP = 1; _nop_(); DIG_STCP = 0; _nop_(); } void Delay(void) { uchar i, j; for(i = 100; i 0; i--) for(j = 100; j 0; j--); } void eint0() interrupt 0 { if(K1 == 0) //第一次判断按键 { Delay(); if(K1 == 0) //第二次判断按键 { num++; if(num 9) num = 0; } while(K1 == 0); //等待按键松开 } } void eint1() interrupt 2 { if(K2 == 0) //第一次判断按键 { Delay(); if(K2 == 0) //第二次判断按键 num--; if(num == -1) num = 9; } while(K2 == 0); //等待按键松开 } void intt() { IT0 = 1; EX0 = 1; IT1= 1; EX1 =1; EA = 1; } void main() { intt(); while(1) { Display(ucSelect[8], ucSegment[num]); } } 四、分析与讨论 对上机实践结果进行分析,上机的心得体会。 五、教师评语 签名: 日期: 成绩

文档评论(0)

134****4355 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档