实验3 外部中断 程序框架.doc

上传人:cl****1 文档编号:562955479 上传时间:2023-09-02 格式:DOC 页数:4 大小:63.50KB
返回 下载 相关 举报
实验3 外部中断 程序框架.doc_第1页
第1页 / 共4页
实验3 外部中断 程序框架.doc_第2页
第2页 / 共4页
实验3 外部中断 程序框架.doc_第3页
第3页 / 共4页
实验3 外部中断 程序框架.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验3 外部中断 程序框架.doc》由会员分享,可在线阅读,更多相关《实验3 外部中断 程序框架.doc(4页珍藏版)》请在金锄头文库上搜索。

1、实验三 定时中断实验一、实验内容1. 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。2. 用外部中断改变流水灯的方式。(提供程序框架)3. 用定时器T1的方式2控制两个LED以不同周期闪烁。(提供程序框架)使用定时器T1的方式2来控制P0.0、P0.1引脚的两个LED分别以1s和2s的周期闪烁。(提供全部程序,只做修改) 二、实验仿真硬件图 在Proteus软件中建立如下图所示仿真模型并保存。三、实验程序框架1. 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来(用中断方式做计数器)。/实验一: 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出

2、来。#include #define uchar unsigned char /0-9各数字的数码管段码数组uchar counter=0;/ 全局变量counter作为计数变量void main() ;/ 开总中断 / 开外部中断1中断 / 下降沿触发外部中断0 /等待中断(中断服务程序入口) void int_0() interrupt 0 /每触发一次外部中断,计数变量加1 /如果计数变量加到10,则清0,重新计数 P1=ledcounter;2.用外部中断改变流水灯的方式。(根据原理图,低电平灯亮)中断前:开始时,P0.0P0.7的8个灯依次点亮。外部中断0:P0.0P0.7的左右4个

3、灯闪烁亮8次外部中断1: P0.0P0.7的8个灯间隔闪烁8次改变中断优先级和保护现场,观察运行结果实验二要求: 初始状态为P0.0P0.7的8个LED显示灯依次循环点亮;外部中断0服务程序为8个LED灯,左4个,右4个闪烁8次,外部中断1服务程序8个LED灯,间隔闪烁8次。以下两种方案: 设定外部中断0为高优先级,先执行外部1中断,过程中用外部0中断来将其中断,反之不行。注意保护现场。 设定外部中断1为高优先级,先执行外部0中断,过程中用外部1中断来将其中断,反之不行。注意保护现场。/实验二: 用外部中断改变流水灯的方式#include #define uchar unsigned char

4、void delay(uchar i);uchar lamp=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/将P0口,P0.0P0.7依次亮的值放在数组中,注意二极管连接方式,为共阳极接法,引脚为低电平,二极管才会亮。void delay( uchar i)/延时函数 uchar j,k; for(k=0;ki;k+) for(j=0;j255;j+);void main() uchar a; EA=1; /开放总中断 EX0=1; /允许使用外中断0 IT0=1; /选择下降沿来触发外中断 EX1=1; /允许使用外中断1 IT1=1; /选择下降沿来触发

5、外中断/*IP=0x01;/中断优先级别设定,设定外部中断0为高优先级中断,能打断其他中断服务程序; / 实验效果为按K2进入外部1中断后,只要按K1便能打断1中断*/ IP=0x04;/中断优先级别设定,设定外部中断1为高优先级中断,能打断其他中断服务程序,/实验效果为按K1进入外部0中断后,只要按K2便能打断0中断 while(1) for(a=0;a8;a+)/开始时,P0.0P0.7依次亮 P0=lampa;/将数组中对应P0.0P0.7依次亮的值送P0口 delay(250); void int0() interrupt 0 /外中断0的中断编号为0 K1按钮按下时左右4个灯闪烁亮八

6、次 uchar a,b; EA=0;/关中断 b=P0;/保护现场 EA=1;/开中断 for(a=0;a8;a+) P0=0xf0; delay(250); P0=0x0f;delay(250); EA=0;/关中断 P0=b;/恢复现场 EA=1;/开中断void int1() interrupt 2 /外中断1的中断编号为2 K2按钮按下时8个灯间隔闪烁8次 依照上列interrupt0中断函数来编写本中断函数3使用定时器T1的方式2来控制P0.0、P0.1引脚的两个LED分别以1s和2s的周期闪烁。(调试下列程序,在错误行后面注明错误及改正方法):#include #define uchar unsigned char;sbit D0=P10; /定义位名称(定义P0.0引脚位名称为D0)(有时会如下注释:将D0定义为P0.0引脚:)sbit D1=P11;uchar a,b;void main()EA=1;ET1=1;TMOD=0x20;TL1=6; TH=6;TR1=1;While(TF1!)a=0;b=0;while(1);void t1() interrupt 1a+;b+;if(a=1000)D0=D0a=0;if(b=4000)D1=D1;b=0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号