打印

为什么进入T0中断运行几次之后不能出来了

[复制链接]
1405|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hellomydear|  楼主 | 2014-4-28 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit pcm_0=P1^0;
sbit pcm_1=P1^1;
uint a,an,b;
bit c=0,d=1;
uint array_data[3]={0x1547,0x1574,0x5784};
void pcm_fashe(uint array[3]);
void delay(uint n);
                                                          
void main()
{  
while(1)
{
delay(5000);
pcm_fashe(array_data);
delay(50000);
}
}
void pcm_fashe(uint array[3])
{
    uchar i,j;
    TMOD=0x02;                        //T0选方式2
    TH0=0x83;                        //125us定时
    TL0=0x83;
    EA=1;
    ET0=1;
    TR0=1;
        for(i=0;i<3;i++)
        {
                an=array[i];
                for(j=0;j<16;j++)
                {
                        a=1<<j;
                        b=an&a;                   //取第j位
                        while(!c);          //c=0
                        c=0;                  //c=1取0
                }
        }
        TR0=0;
        ET0=0;
        EA=0;
       
}
void fashe_t0()interrupt 1
{
        if(b)                          //b=1
        {
        d=~d;
        if(d)
        {
                pcm_1=1;                //产生+1
                delay(20);
                pcm_1=0;
                c=1;
        }
        else                                //产生-1
        {
                pcm_0=1;
                delay(20);
                pcm_0=0;
                c=1;
        }
        }
        else                                 //b=0
                c=1;

}

void delay(uint n)                //延时
{
uint i;
for(i=0;i<n;i++);
}

相关帖子

沙发
hellomydear|  楼主 | 2014-4-28 11:23 | 只看该作者
高手大神求帮助

使用特权

评论回复
板凳
qq986433936| | 2014-5-3 12:10 | 只看该作者
这个中断函数放在main()后面能运行吗?我也在初学,可能理解得不对。

使用特权

评论回复
地板
NWPU_CHEN| | 2014-5-4 11:13 | 只看该作者
粗略看了你这程序T0初始化无数次,肯定不行,容易跑飞,把初始化从那个pcm_fashe(uint array[3])子函数中取出,放入main函数死循环外边或者重新定义一个函数写初始化放到while(1)外边,先试试吧

使用特权

评论回复
5
yimaoqian01| | 2014-5-8 13:03 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝