标题: 如何在单片机外部中断0函数中使用定时器,求修改所给程序。 [打印本页]

作者: wubaqian    时间: 2018-10-20 21:37
标题: 如何在单片机外部中断0函数中使用定时器,求修改所给程序。
//目前程序的问题,第一个延时可以成功,但是外部中断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. }
复制代码




作者: wubaqian    时间: 2018-10-21 17:02
没人回答吗?

作者: wubaqian    时间: 2018-10-21 17:03
尴尬了
作者: mengzhixinheng    时间: 2018-10-22 09:24
如果是延时不准的话,将延时用的定时器优先级设置为最高,其他中断都比他低就可以了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1