欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    单片机C语言第4章中断系统的C51编程3课件.ppt

    • 资源ID:1311530       资源大小:118.79KB        全文页数:22页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机C语言第4章中断系统的C51编程3课件.ppt

    4.3 外部中断源的C51编程,51单片机提供了2个外部中断源 : 外部中断0请求,占用P3.2引脚,其中断请求号为0。 外部中断1请求,占用P3.3引脚,其中断请求号为2。 外部中断源的初始化时通过设置相应的特殊功能寄存器的相应位来实现的。,4.3 外部中断源的C51编程51单片机提供了2个外部中断,(1)TCON寄存器中的IT0、IT1位,外部中断0和外部中断1的中断触发方式控制位。如: IT0=0;/外部中断0为电平触发方式 IT1=1;/外部中断1为脉冲触发方式(2)IP寄存器中的PX0、PX1位外部中断0和外部中断1的中断优先级的设定。如:PX0=0;/设定外部中断0为低级中断PX1=1;/设定外部中断1为高级中断,4.3.1 外部中断源的初始化,(1)TCON寄存器中的IT0、IT1位外部中断0和外部中断,(3)IE寄存器中的EA、EX0、EX1位,EA为中断允许总控制位;EX0、EX1为外部中断0中断和外部中断1中断的中断允许位。如:EA=1;/开放总的中断控制EX0=1;/允许外部中断0中断EX1=0;/禁止外部中断1中断,(3)IE寄存器中的EA、EX0、EX1位EA为中断允许总控,【例4-1】初始状态时低4位灯亮,高4位的灯灭,编程实现按一下S0,P1口的发光状态发生反转。,【例4-1】初始状态时低4位灯亮,高4位的灯灭,编程实现按一,#includevoid main( ) P1=0XF0; /高4位灭、低4位亮 IT1=1; /脉冲触发方式 EA=1; EX1=1;/开放相应的中断 while(1); /等待中断 void wint0(void)interrupt 2 /外部中断1 P1=P1;,#include,【例4-2】利用S0按钮控制P1口的灯,要求每按一下就点亮一盏灯(其余的灯是灭的)。,#include#include /内部函数 bit flag; /中断标志unsigned char ledstatus;void wint1( ) interrupt 2 flag=1; ,【例4-2】利用S0按钮控制P1口的灯,要求每按一下就点亮一,void main(void) P1=0 xff; ledstatus=0 xfe; IT1=1; EA=1; EX1=1; while(1) if(flag) P1=ledstatus; ledstatus=_crol_(ledstatus,1); flag=0; 修改:利用S0按钮控制P1口的灯,要求每按一下就点亮一盏灯(其余的灯保持亮的状态) .。,void main(void),【例4-3】当S0动作时,P1.0端口的电平反向,当外S1动作,P1.7端口的电平反向。,【例4-3】当S0动作时,P1.0端口的电平反向,当外S1动,#includesbit LED0=P10;sbit LED7=P17;void IS0(void) interrupt 0/外部中断0 LED0=LED0;void IS1(void) interrupt 2/外部中断1 LED7=LED7;void main( ) P1=0 xFF; IT0=1; IT1=1; EX0=1; EX1=1; EA=1; while(1); ,修改:(1)S0控制P1.0P1.3的灯,S1控制P1.4P1.7的灯。 (2)按下S0后,点亮8只LED;按下S1后,变为闪烁状态。,#include修改:,【例4-4】P1口控制的灯按一定的频率闪烁,S0动作,实现单灯左移,而左移3圈结束。,【例4-4】P1口控制的灯按一定的频率闪烁,S0动作,实现单,#include #defineLEDP1 /定义LED接至P 1void delay1ms(int); /声明延迟函数 void left(int); /声明单灯左移函数 main( ) IE=0 x81; /准许INT 0中断LED=0 x00; /初值=0000 0000,灯全亮while(1) /无穷循环,程序一直跑 delay1ms(250); /延迟250*1m=0.25s LED=LED; /LED反相 /* INT 0的中断子程序 - 单灯左移3圈 */void my_int0(void) interrupt 0unsigned saveLED=LED; /储存中断前LED状态 left(3); /单灯左移3圈 LED=saveLED; /写回中断前LED状态 ,#include,/* 延迟函数,延迟约x 1ms */void delay1ms(int x) int i, j; /声明整数变数i,j for (i=0;ix;i+) /计数x次,延迟x 1ms for (j=0;j120;j+); /计数120次,延迟1ms /* 单灯左移函数,执行x圈 */void left(int x) /单灯左移函数开始 int i, j; /声明变数i,jfor(i=0;ix;i+) /i循环,执行x圈 LED=0 xfe; /初始状态=1111 1110,最右灯亮 for(j=0;j7;j+) /j循环,左移7次 delay1ms(250); LED=(LED1)|0 x01; /左移1位後,LSB设为1 delay1ms(250); ,修改:外部中断1,右移动3圈。,/* 延迟函数,延迟约x 1ms */修改:外部中断1,右移,【例4-5】首先通过P1.7口点亮发光二极管D1,然后外部输入一脉冲串,则发光二极管D1亮、暗交替。,【例4-5】首先通过P1.7口点亮发光二极管D1,然后外部输,#includesbit P1_7=P17;void interrupt0( ) interrupt 0 using 2 P1_7=P1_7;void main( )EA=1; IT0=1; EX0=1; P1_7=0; do while(1);修改:如果有3个脉冲,则灯亮、暗交替一次,请编程。,#include,实验1 按钮型开关模拟外部中断实验,实验目的:掌握外部中断的基本使用方法,掌握中断与查询的区别,掌握8段LED静态显示的软件设计。电路与内容:P3.2和P3.3分别接两个按钮开关K0和K1,P1口和P2口接共阴极LED显示器。编程实现:开始显示数字50,K0和K1分别是加1键和减1键,按K0则显示的数字加1,按K1则显示的数字减1。K0和K1采用中断方式控制。,实验1 按钮型开关模拟外部中断实验实验目的:掌握外部中断,#include#define uchar unsigned char#define uint unsigned intuchar data dir_buf2; /显示缓冲区uchar code dirtable18=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /显示的代码表uchar i;void display( ) P1=dirtabledir_buf0; /P2口显示 P2=dirtabledir_buf1; /P3口显示void k0int() interrupt 0 i=i+1;,#include,void k1int() interrupt 2 i=i-1;void main() i=50; IT0=1; IT1=1; EA=1; EX0=1; EX1=1; while(1) dir_buf0=i/10; dir_buf1=i%10; display(); ,void k1int() interrupt 2,实验2 外部中断优先级实验,实验目的:掌握外部中断源的基本应用,掌握两个中断源优先级管理。电路与内容:P1口接8个发光二极管,P3.2和P3.3分别接两个按钮开关,用来模拟2个外部中断源。平时8个灯交替按照亮和灭闪烁,一个按键控制左移3圈,另一个按键控制右移3圈(采用中断方式,左移的中断优先级高于右移中断优先级)。-,实验2 外部中断优先级实验实验目的:掌握外部中断源的基本应,#include#defineLEDP1/定义LED接至Port 1void delay1ms(int);/声明延迟函数 void left(int);/声明单灯左移函数 void right(int);/单灯右移函数开始main()IE=0 x85;/准许INT 0,INT 1中断IP=0 x01;/设定INT 0具有最高优先权LED=0 x00;/初值=0000 0000,灯全亮while(1)delay1ms(250);/延迟250 1m=0.25s LED=LED;/LED反相 ,#include,/* INT 0的中断子程序 - 单灯左移3圈 */void my_int0(void) interrupt 0 /NT0 中断子程序开始 unsigned saveLED=LED; /储存中断前LED状态 left(3); /单灯左移3圈 LED=saveLED; /写回中断前ED状态 /* INT 1的中断子程序 - 单灯右移3圈 */void my_int1(void) interrupt 2 /INT1 中断子程序开始 unsigned saveLED=LED; /储存中断前LED状态 right(3); /单灯右移3圈 LED=saveLED; /写回中断前LED状态 /* 延迟函数,延迟约x 1ms */void delay1ms(int x)int i,j; /声明整数变数i,j for (i=0;ix;i+) /计数x次,延迟x 1ms for (j=0;j120;j+); /计数120次,延迟1ms ,/* INT 0的中断子程序 - 单灯左移3圈 */,/* 单灯左移函数,执行x圈 */void left(int x) int i, j;/声明变数i,jfor(i=0;ix;i+) /i循环,执行x圈 LED=0 xfe; /初始状态=1111 1110,最右灯亮 for(j=0;j7;j+) /j循环,左移7次 delay1ms(250);/延迟250 1m=0.25sLED=(LED1)|0 x01; /左移1位後,LSB设为1 delay1ms(250);/延迟250 1m=0.25s,/* 单灯左移函数,执行x圈 */,/* 单灯右移函数,执行x圈 */void right(int x) /单灯右移函数开始 int i, j;/声明变数i,j for(i=0;i1)|0 x80; /右移1位後,MSB设为1delay1ms(250); /延迟250 1m=0.25s,/* 单灯右移函数,执行x圈 */,

    注意事项

    本文(单片机C语言第4章中断系统的C51编程3课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开