INT0及INT1中断计数_第1页
INT0及INT1中断计数_第2页
INT0及INT1中断计数_第3页
INT0及INT1中断计数_第4页
INT0及INT1中断计数_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南科技大学本科生课程设计 湖南科技大学潇湘学院 课程设计 课程设计名称: 单片机接口技术课程设计 目: INTO及INT1的中断计数 名: 院: 专业及班级: 口 号: 指导教师: 2016年 12月 19日 单片机的外部中断有两种触发方式可选:电平触发和边沿触发。 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每 个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。 标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应 时,将被丢失。换句话说,要使电平触发的中断被 CPU响应并执行,必须保证外部中断 源口线的低电平维持到

2、中断被执行为止。因此当CPU正在执行同级中断或更高级中断期 间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平) 了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如 RET)I 时,产生的电平触发中断如果时间太短,也得不到执行。 边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的 跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。 因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断 负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果 你不希

3、望这样,必须在中断退出之前,手工清除外部中断标志。一个中断如果在没有到 响应之前就已经被手工清除,则该中断将被 CPU忽略。就如同没有发生一样。 1 设计要求及目的 1.1设计要求INTO及INT1中断计数 1.2 设计目的 2 方案设计和选择 1-3 3-6 2.1 原件选择 2.1.1 单片机的选择 3 调试过程 3.1 软件调试 4 心得体会 5 参考文献 湖南科技大学本科生课程设计 9 第一章 设计要求和目的 1.1 设计要求 INT0 及 INT1 中断计数 (1 ,每次按下第 1个计数键时,第 1组计数值累加并显示在右边 3只数码管上(2,每 次按下第 2 个计数键时,第 2 组计

4、数值累加并显示在左边 3 只数码管上 (3, 后两个按 键分别清零 1.2 设计目的 本设计的目的是为提高自己的实际动手能力以及对外部中断的原理和单片机C51语 言的相关知识有更深刻理解。 章 方案设计和选择 使用简单,定位为 根据本次设计的要求,方案的选择应力求实用性强,性价比高, 入门级的产品 2.1 元件选择 2.1.1 单片机的选择 8k bytes 的可反复擦 (RAM,器件采用ATMEL AT89C51是一个低电压,高性能CMOS 8位单片机,片内含 写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器 公司的高密度、非易失性存储技术生产,兼容标准MCS-5

5、1指令系统,片内置通用8位 中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 主要特性: 与MCS-15兼容 4k字节可编程闪烁存储器 寿命;100写/擦循环 数据保留时间: 10 年 全静态工作: OHz-24MHz 三级程序储存器锁定 128X 8位内部RAM 32 可编程 I/O 线 两个 16 位定时器 / 计数器 5 个中断源 可编程串行通道 低耗电的闲置和掉电模式 内片振荡器和时钟电路 管脚说明: VCC: 供电电压 GND: 接地 P0 口: P0 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL门电流。当P1 口的管脚第一次写1时,被定义为

6、高阻输入。P0能够用于外部程序数据存储器,它可以 被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进 行校验时,P0输出原码,此时P0外部必须被拉高。 输出 并 P2 P1 口: P1 口是一个内部提供上拉电阻的8位双向I/O 口,P1 口缓冲器能接收输 出4TTL门电流。P1 口管脚写入1后,被内部上拉为高,可用作输入,P1 口被外部下拉 为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASHS程和校验时,P1 口作 为第八位地址接收。 P2 口: P2 口为一个内部上拉电阻的8位双向I/O 口,P2 口缓冲器可接收, 4个TTL门电流,当P2 口

7、被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。 因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。 口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2 口输出地址的高 八位。在给出地址“ 1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行 读写时,P2 口输出其特殊功能寄存器的内容。P2 口在FLASH编程和校验时接收高八位 地址信号和控制信号。 P3 口: P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4个TTL门 电流。当P3口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于 外部下拉为低电平,P3 口

8、将输出电流(ILL )这是由于上拉的缘故。 P3 口也可作为AT89C5啲一些特殊功能口,如下表所示: RXD(串行输入口) TXD(串行输出口) /INT0 (外部中断 0) /INT1 (外部中断 1) T0 (记时器0外部输入) T1 (记时器1外部输入) /WR (外部数据存储器写选通) /RD (外部数据存储器读选通) 口管脚 备选功能 P3.1 P3.0 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RSTW两个机器周期的高电平时间。 ALE/PROG当访问外部存储器时,地

9、址锁存允许的输出电平用于锁存地址的地位 字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周 期输出正脉冲信号,此频率为振荡器频率的 1/6 。因此它可用作对外部输出的脉冲或用 于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如 想禁止ALE的输出可在SFR8Ehte址上置0。此时,ALE只有在执行MOV,MOV指令是 ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置 位无效。 /PSEN :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机 器周期两次/PSEN有效。但在访问外部数据存储器时,

10、这两次有效的 /PSEN信号将不出 现。 /EA/VPP :当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH, 不管是否有内部程序存储器。 注意加密方式 1 时, /EA 将内部锁定为 RESE;T 当 /EA 端保 持高电平时,此间内部程序存储器。在 FLASH编程期间,此引脚也用于施加12V编程电 源( VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振 荡器的输出。 振荡器特性 : XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片 内振荡器。石晶振荡和陶瓷振荡均可采用。 如采用外部时钟源驱动器件,X

11、TAL2应不接。 有余输入至内部时钟信号要通过一个二分频触发器, 因此对外部时钟信号的脉宽无任何 要求,但必须保证脉冲的高低电平要求的宽度。 第三章 调试过程 3.1 软件调试 keil 3.5 软件调试主要通过仿真软件 Proteus 8 Professional 和 keil 来实现。 用来对程序编写和修改, Proteus 8 Professional 则用来对电路进行仿真。 Keil 程序如下 : #include / 文件头 #define uchar unsigned char #define uint unsigned int sbit K3=P3M; sbit K4=P3A5;

12、 /定义K 3为P 3.4 (单片机引脚)sbit K4=卩3八5; / 定义K 4为P 单片机引脚) / 下面为数码管段码与位码定义,使用一维数组存放其值 uchar code DSY_CODE=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 xff; uchar code DSY_Scan_Bits=0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe; / 的位选码 /uchar code DSY_Scan_Bits=0 x20,0 x10,0 x08,0 x04,0 x02,0 x01; /

13、管的位选码 uchar data Buffer_Counts=0,0,0,0,0,0; uint Count_A,Count_B=0; / 计数单元赋初值 共阴数码管 共阳数码 void DelayMS(uint x) uchar t; while(x-) for(t=0;t120;t+); void Show_Counts() uchar i; Buffer_Counts2=Count_A/100; / Buffer_Counts1=Count_A%100/10; / Buffer_Counts0=Count_A%10; / 取某位上的数 取某位上数 取某位上显示数 Buffer_Count

14、s5=Count_B/100; / Buffer_Counts4=Count_B%100/10; / Buffer_Counts3=Count_B%10; / 取某位上显示数 取某位显示数 取某位上显示数 循环 for(i=0;i6;i+) /for P2=DSY_Scan_Bitsi; P1=DSY_CODEBuffer_Countsi; DelayMS(1); void main() / 主函数 IE=0 x85; PX0=1; / 中断优先 IT0=1; IT1=1; while(1) if(K3=0) Count_A=0; if(K4=0) Count_B=0; Show_Counts

15、(); / 调用子函数 中断函数计数加 1 中断函数计数加 1 void EX_INT0() interrupt 0 / Count_A+; void EX_INT1() interrupt 2 / Count_B+; end; Proteus 仿真如图 3.1 所示: P - it工 吐門: M ”爲-bp 二尸 图3.1 心得体会 为期两周的单片机课程设计实训很快就结束了,在这次设计过程里我们体验了从设计、画板、 编程、焊板到调试的整个过程。本次实训在操作过程中还是比较简单的,没出现什么重大的问题, 可是在电路整体调试的时候出现了一些问题,这说明硬件结构和软件编程还有待完善的地方,这就 需要结合所学的知识,有创造性地不断改进电路,以达到电路结构和软件性能的最优化。 积极参与单片机课程设计,不仅让我们充分的体会到自己动手实践的乐趣,获得哪怕是前进一小步 时候的那种成功的喜悦,还能学到很多我们在理论中学不到的知识。有利于我们学习能力的提高。 表达能力等很多方面,有利于我们团队精神的培养。我们都是一起共

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论