欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    51单片机中断程序大全39290.pdf

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

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

    51单片机中断程序大全39290.pdf

    .1/实例 42:用定时器 T0 查询方式 P2 口 8 位控制 LED 闪烁*include /包含 51 单片机存放器定义的头文件 void main(void)/EA=1;/开总中断/ET0=1;/定时器 T0 中断允许 TMOD=0*01;/使用定时器 T0 的模式 1 TH0=(65536-46083)/256;/定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256;/定时器 T0 的高 8 位赋初值 TR0=1;/启动定时器 T0 TF0=0;P2=0*ff;while(1)/无限循环等待查询 while(TF0=0);TF0=0;P2=P2;TH0=(65536-46083)/256;/定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256;/定时器 T0 的高 8 位赋初值/实例 43:用定时器 T1 查询方式控制单片机发出 1KHz 音频.1*include /包含 51 单片机存放器定义的头文件 sbit sound=P37;/将 sound 位定义为 P3.7 引脚 void main(void)/EA=1;/开总中断/ET0=1;/定时器 T0 中断允许 TMOD=0*10;/使用定时器 T1 的模式 1 TH1=(65536-921)/256;/定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256;/定时器 T1 的高 8 位赋初值 TR1=1;/启动定时器 T1 TF1=0;while(1)/无限循环等待查询 while(TF1=0);TF1=0;sound=sound;/将 P3.7 引脚输出电平取反 TH1=(65536-921)/256;/定时器 T0 的高 8 位赋初值 TL1=(65536-921)%256;/定时器 T0 的高 8 位赋初值 /实例 44:将计数器 T0 计数的结果送 P1 口 8 位 LED 显示*include /包含 51 单片机存放器定义的头文件 sbit S=P34;/将 S 位定义为 P3.4 引脚.1 void main(void)/EA=1;/开总中断/ET0=1;/定时器 T0 中断允许 TMOD=0*02;/使用定时器 T0 的模式 2 TH0=256-156;/定时器 T0 的高 8 位赋初值 TL0=256-156;/定时器 T0 的高 8 位赋初值 TR0=1;/启动定时器 T0 while(1)/无限循环等待查询 while(TF0=0)/如果未计满就等待 if(S=0)/按键 S 按下接地,电平为 0 P1=TL0;/计数器 TL0 加 1 后送 P1 口显示 TF0=0;/计数器溢出后,将 TF0 清 0/实例 45:用定时器 T0 的中断控制 1 位 LED 闪烁*include /包含 51 单片机存放器定义的头文件 sbit D1=P20;/将 D1 位定义为 P2.0 引脚 void main(void)EA=1;/开总中断.1 ET0=1;/定时器 T0 中断允许 TMOD=0*01;/使用定时器 T0 的模式 2 TH0=(65536-46083)/256;/定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256;/定时器 T0 的高 8 位赋初值 TR0=1;/启动定时器 T0 while(1);函数功能:定时器 T0 的中断效劳程序*/void Time0(void)interrupt 1 using 0 存放器 D1=D1;/按位取反操作,将 P2.0 引脚输出电平取反 TH0=(65536-46083)/256;/定时器 T0 的高 8 位重新赋初值 TL0=(65536-46083)%256;/定时器 T0 的高 8 位重新赋初值 /实例 46:用定时器 T0 的中断实现长时间定时*include /包含 51 单片机存放器定义的头文件 sbit D1=P20;/将 D1 位定义为 P2.0 引脚 unsigned char Countor;/设置全局变量,储存定时器 T0 中断次数 void main(void)EA=1;/开总中断 ET0=1;/定时器 T0 中断允许.1 TMOD=0*01;/使用定时器 T0 的模式 2 TH0=(65536-46083)/256;/定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256;/定时器 T0 的高 8 位赋初值 TR0=1;/启动定时器 T0 Countor=0;/从 0 开场累计中断次数 while(1);/*函数功能:定时器 T0 的中断效劳程序*/void Time0(void)interrupt 1 using 0 Countor+;/中断次数自加 1 if(Countor=20)/假设累计满 20 次,即计时满 1s D1=D1;/按位取反操作,将 P2.0 引脚输出电平取反 Countor=0;/将 Countor 清 0,重新从 0 开场计数 TH0=(65536-46083)/256;/定时器 T0 的高 8 位重新赋初值 TL0=(65536-46083)%256;/定时器 T0 的高 8 位重新赋初值/实例 47:用定时器 T1 中断控制两个 LED 以不同周期闪烁*include /包含 51 单片机存放器定义的头文件 sbit D1=P20;/将 D1 位定义为 P2.0 引脚.1 sbit D2=P21;/将 D2 位定义为 P2.1 引脚 unsigned char Countor1;/设置全局变量,储存定时器 T1 中断次数 unsigned char Countor2;/设置全局变量,储存定时器 T1 中断次数 void main(void)EA=1;/开总中断 ET1=1;/定时器 T1 中断允许 TMOD=0*10;/使用定时器 T1 的模式 1 TH1=(65536-46083)/256;/定时器 T1 的高 8 位赋初值 TL1=(65536-46083)%256;/定时器 T1 的高 8 位赋初值 TR1=1;/启动定时器 T1 Countor1=0;/从 0 开场累计中断次数 Countor2=0;/从 0 开场累计中断次数 while(1);void Time1(void)interrupt 3 using 0 Countor1+;/Countor1 自加 1 Countor2+;/Countor2 自加 1 if(Countor1=2)/假设累计满 2 次,即计时满 100ms D1=D1;/按位取反操作,将 P2.0 引脚输出电平取反.1 Countor1=0;/将 Countor1 清 0,重新从 0 开场计数 if(Countor2=8)/假设累计满 8 次,即计时满 400ms D2=D2;/按位取反操作,将 P2.1 引脚输出电平取反 Countor2=0;/将 Countor1 清 0,重新从 0 开场计数 TH1=(65536-46083)/256;/定时器 T1 的高 8 位重新赋初值 TL1=(65536-46083)%256;/定时器 T1 的高 8 位重新赋初值 /实例 50-1:输出 50 个矩形脉冲*include /包含 51 单片机存放器定义的头文件 sbit u=P14;/将 u 位定义为 P1.4/*函数功能:延时约 30ms(3*100*100=30 000s=30m*/void delay30ms(void)unsigned char m,n;for(m=0;m100;m+)for(n=0;n100;n+);void main(void).1 unsigned char i;u=1;/初始化输出高电平 for(i=0;i50;i+)/输出 50 个矩形脉冲 u=1;delay30ms();u=0;delay30ms();while(1):/实例 50-2:计数器 T0 统计外部脉冲数*include /包含 51 单片机存放器定义的头文件 void main(void)TMOD=0*06;/TMOD=0000 0110B,使用计数器 T0 的模式 2 EA=1;/开总中断 ET0=0;/不使用定时器 T0 的中断 TR0=1;/启动 T0 TH0=0;/计数器 T0 高 8 位赋初值 TL0=0;/计数器 T0 低 8 位赋初值 while(1)/无限循环,不停地将 TL0 计数结果送 P1 口 P1=TL0;/实例 51-2:定时器 T0 的模式 2 测量正脉冲宽度*include /包含 51 单片机存放器定义的头文件.1 sbit ui=P32;/将 ui 位定义为 P3.0INT0引脚,表示输入电压 void main(void)TMOD=0*0a;/TMOD=0000 1010B,使用定时器 T0 的模式 2,GATE 置 1 EA=1;/开总中断 ET0=0;/不使用定时器 T0 的中断 TR0=1;/启动 T0 TH0=0;/计数器 T0 高 8 位赋初值 TL0=0;/计数器 T0 低 8 位赋初值 while(1)/无限循环,不停地将 TL0 计数结果送 P1 口 while(ui=0):/INT0 为低电平,T0 不能启动 TL0=0;/INT0 为高电平,启动 T0 计时,所以将 TL0清 0 while(ui=1):/在 INT0 高电平期间,等待,计时 P1=TL0;/将计时结果送 P1 口显示 /实例 53:用外中断 0 的中断方式进展数据采集*include /包含 51 单片机存放器定义的头文件 sbit S=P32;/将 S 位定义为 P3.2,void main(void)EA=1;/开放总中断.1 E*0=1;/允许使用外中断 IT0=1;/选择负跳变来触发外中断 P1=0*ff;while(1);void int0(void)interrupt 0 using 0/外中断 0 的中断编号为 0 P1=P1;/每产生一次中断请求,P1 取反一次。/实例 54-1:输出负脉宽为 200 微秒的方波*include /包含 51 单片机存放器定义的头文件 sbit u=P14;/将 u 位定义为 P1.4 void main(void)TMOD=0*02;/TMOD=0000 0010B,使用定时器 T0 的模式 2 EA=1;/开总中断 ET0=1;/定时器 T0 中断允许 TH0=256-200;/定时器 T0 的高 8 位赋初值 TL0=256-200;/定时器 T0 的高 8 位赋初值 TR0=1;/启动定时器 T0 while(1):/无限循环,等待中断 void Time0(void)interrupt 1 using 0/interrupt声明函数为中断效劳函数 u=u;/将 P1.4 引脚输出电平取反,产生方波.1 /实例 54-2:测量负脉冲宽度*include /包含 51 单片机存放器定义的头文件 sbit u=P32;/将 u 位定义为 P3.2 void main(void)TMOD=0*02;/TMOD=0000 0010B,使用定时器 T0 的模式 2 EA=1;/开放总中断 E*0=1;/允许使用外中断 IT0=1;/选择负跳变来触发外中断 ET0=1;/允许定时器 T0 中断 TH0=0;/定时器 T0 赋初值 0 TL0=0;/定时器 T0 赋初值 0 TR0=0;/先关闭 T0 while(1);/无限循环,不停检测输入负脉冲宽度 void int0(void)interrupt 0 using 0/外中断 0 的中断编号为 0 TR0=1;/外中断一到来,即启动 T0 计时 TL0=0;/从 0 开场计时 while(u=0)/低电平时,等待 T0 计时 ;P1=TL0;/将结果送 P1 口显示.1 TR0=0;/关闭 T0 /实例 55:方式 0 控制流水灯循环点亮*include /包含 51 单片机存放器定义的头文件*include/包含函数_nop_定义的头文件 unsigned char code Tab=0*FE,0*FD,0*FB,0*F7,0*EF,0*DF,0*BF,0*7F;/流水灯控制码,该数组被定义为全局变量 sbit P17=P17;/*函数功能:延时约 150ms*/void delay(void)unsigned char m,n;for(m=0;m200;m+)for(n=0;n250;n+);/*函数功能:发送一个字节的数据*/void Send(unsigned char dat).1 P17=0;/P1.7 引脚输出清 0 信号,对 74LS164 清 0 _nop_();/延时一个机器周期 _nop_();/延时一个机器周期,保证清 0 完成 P17=1;/完毕对 74LS164 的清 0 SBUF=dat;/将数据写入发送缓冲器,启动发送 while(TI=0)/假设没有发送完毕,等待 ;TI=0;/发送完毕,TI 被置“1,需将其清 0 /*函数功能:主函数*/void main(void)unsigned char i;SCON=0*00;/SCON=0000 0000B,使串行口工作于方式 0 while(1)for(i=0;i8;i+)Send(Tabi);/发送数据 delay();/延时.1

    注意事项

    本文(51单片机中断程序大全39290.pdf)为本站会员(得**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开