找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1657|回复: 3
打印 上一主题 下一主题
收起左侧

如何在单片机外部中断0函数中使用定时器,求修改所给程序。

[复制链接]
跳转到指定楼层
楼主
ID:404619 发表于 2018-10-20 21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//目前程序的问题,第一个延时可以成功,但是外部中断0中就无法使用延时程序(精确延时)了。

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //uchar led1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. uchar x[]={0xff,0xfd};
  6. uchar y[]={0xaa,0x55};
  7. uchar z[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  8. uint tt,m,a,temp;
  9. delay(uint z)
  10. {
  11.         tt=0;      
  12.         TH0=(65536-18432)/256;
  13.         TL0=(65536-18432)%256;
  14.         EA=1;
  15.         ET0=1;
  16.         TMOD=0X01;//选择定时器0中断方式
  17.         TR0=1;//启动定时器0;
  18.         while(1)//进入循环,同时开始定时,50ms后,tt=20
  19.         {
  20.         if(tt==z)//1s后进入if语句
  21.                 {
  22.                 return 0;
  23.                 }   
  24.         }
  25. }
  26. void main()
  27. {
  28.         EA=1;
  29.         EX0=1;
  30.         EX1=1;
  31.         IT0=0;//水平
  32.         IT1=1;//跳沿
  33.         PX0=0;
  34.         PX1=1;//设置优先级
  35.         while(1)
  36.         {
  37.                 for(m=0;m<10;m++)
  38.                 {
  39.                 P1=x[m%2];
  40.                  delay(50);
  41.                 a=1;
  42.                 delay(100);
  43.                 a=2;
  44.                 }      
  45.         }      
  46. }
  47. void xyz() interrupt 1
  48. {
  49.         TH0=(65536-18432)/256;
  50.         TL0=(65536-18432)%256;
  51.         tt++;
  52. }
  53. void zero() interrupt 2
  54. {
  55.                 for(m=1;m<10;m++)
  56.                 {
  57.                 temp=P1;
  58.                 P1=y[m%2];
  59.                  delay(50);
  60.                 a=1;
  61.                 P1=temp;
  62.                 }      
  63. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:404619 发表于 2018-10-21 17:02 | 只看该作者
没人回答吗?
回复

使用道具 举报

板凳
ID:404619 发表于 2018-10-21 17:03 | 只看该作者
尴尬了
回复

使用道具 举报

地板
ID:89515 发表于 2018-10-22 09:24 | 只看该作者
如果是延时不准的话,将延时用的定时器优先级设置为最高,其他中断都比他低就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表