打印

请教各位,STC一个子程序放在定时器中,就不正常工作了.

[复制链接]
1855|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yefei55|  楼主 | 2012-4-13 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "REG51.h"
#include "h/Port.h"
#include "h/key.h"
#include "h/led.h"

void tim(void) interrupt 1 using 1   //定时器
{

        TH0=0xe5;
        TL0=0xe0;
        KeyLedDisplay();     //这个子程序放在主程序中能正常显示
       TestLED = !TestLED;        //定时器已工作频率1K Hz
}

void writeByte595(unsigned char num)
{
        unsigned char c;         
        for(c=0;c<8;c++)
        {
                CLK=0;
                DAT=num&0x80;
                num=num<<1;
                CLK=1;

        }
}


void WriteWord595(unsigned char Addr,unsigned char Dat)
{
        char i=0;       
      writeByte595(Addr);
        writeByte595(Dat);
        RCLK=0;
        i=0;
        i=1;
        // nop();
        RCLK=1;
}

void KeyLedDisplay()
{
        static unsigned char i=0;

        i+=1;
        if(i>1) i=0;
        ReadSign_LED();

        switch(i)
        {
                case 0: WriteWord595(0xfe,DISPLED.SByte.SByteH);break;
                case 1:        WriteWord595(0xfd,DISPLED.SByte.SByteM);break;

        }

}

相关帖子

沙发
yefei55|  楼主 | 2012-4-13 11:26 | 只看该作者
void Display()
{
        static unsigned char  TimeAdd = 0;
        static unsigned int t=0;
        //KeyLedDisplay();      //在这里时能正常工作。      有点搞不懂了,

使用特权

评论回复
板凳
yefei55|  楼主 | 2012-4-13 11:38 | 只看该作者
void InitTIMER0()
{
        AUXR |=0x80;
        TMOD|=0x01;//定时器设置 16位
        TH0=0x95;//初始化值
        TL0=0xe0;
        ET0=1;
        TR0=1;
        PT0= 1;  //中断优先1为高
        EA=1;
}

使用特权

评论回复
地板
ayb_ice| | 2012-4-13 11:43 | 只看该作者
去掉using 1试试

使用特权

评论回复
5
yefei55|  楼主 | 2012-4-13 11:59 | 只看该作者
兄弟谢谢你。高人。行了。数据手册上有加

使用特权

评论回复
6
xiaocanyang| | 2012-4-13 15:48 | 只看该作者
只有答案,没有解释吗?求解释

使用特权

评论回复
7
adofe| | 2012-4-14 11:41 | 只看该作者
为何加了using 1,就不行求高人解释。

使用特权

评论回复
8
yefei55|  楼主 | 2012-4-14 16:35 | 只看该作者
我也不知道。加上using 1 调试时候与电脑通信烧掉把电脑串口给烧了。后来把一条USB转串口也烧了。最后不敢与电脑通信,用主板通信,把主板上的232芯片,烧过两次,不是上电马上就烧,好几个回合才会烧。但通信都是正常的,能接收和发送。
现在去掉using 1这个后,就没烧过。用示波器捕捉模式测232的13脚RXD,与加using 1纹波会大1V。
电源纹波100mV.
操作的都时候热插拔。

使用特权

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

本版积分规则

17

主题

44

帖子

0

粉丝