打印

麻烦帮忙看看系统时钟的问题

[复制链接]
1389|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LastNew|  楼主 | 2008-1-10 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近学习做个小系统,用了T2做了个系统时钟,发现有个问题,想不明白。

下面的程序是这个意思:在P1口上接了8个LED,每秒钟依次亮一个;时钟是5ms,m是计数,200个系统时钟后点一个灯。

现在的问题是:在系统中断里对m的操作没有效果,AAAA注释下的是我为了判断有没有进入中断加的,以前是BBBB段代码,用AAAA仿真的时候灯亮,也很暗(因为是5ms一次,看不出来,所以都亮,都很暗,这个结果应该是对的吧?),但用BBBB段代码仿真的时候就什么反映都没了,想不明白

#include <system.h>

unsigned char m;

void SystemTimer(void) interrupt 5       //5mS
{    
    TF2=0;    

    if(P1==0x7f)                  //=====================AAAA
        P1=0xfe;
    else
        {P1<<=1;P1+=1;} 
 
/*     m--;                          //=====================BBBB

if(m==0)                  // 1 s
{
    m=200;
                      
    if(P1==0x7f)
        P1=0xfe;
    else
        {P1<<=1;P1+=1;}    
}*/
}

void SystemInit(void)
{
    IP=0x20;                       // IP:   定时器 2中断优先                             
    IE=0x20;                       // IE:   开定时器 2中断                
    EA=1;
    T2CON=0x00;                      
    
    timeload=TIMEdata(50);             //定时器重载值

    TH2=timeload/256;
    TL2=timeload%256;   
            
    TR2=1;

    RCAP2H=timeload/256;
    RCAP2L=timeload%256;

    m=200;
}
void main(void)
{
     P1=0xfe;

    SystemInit();

    while(1)
    {    }     
}

相关帖子

沙发
yczhang| | 2008-1-10 16:34 | 只看该作者

1

你的程序在我机器上都不能运行啊

使用特权

评论回复
板凳
孤星119| | 2008-1-10 17:07 | 只看该作者

程序错了.

while(1)
    {    }后面加分号

使用特权

评论回复
地板
孤星119| | 2008-1-10 17:08 | 只看该作者

{}不要

使用特权

评论回复
5
LastNew|  楼主 | 2008-1-10 17:35 | 只看该作者

ls

ls谢谢哈,不过改了,也不可以

使用特权

评论回复
6
kine8393| | 2008-1-11 10:54 | 只看该作者

timeload=TIMEdata(50); 的时间是5MS么?

如果时间过长,可能等待时间比较长。

使用特权

评论回复
7
kine8393| | 2008-1-11 10:56 | 只看该作者

你的程序是流程问题不是语法问题

最好检查一下TIMEdata()函数,或者调试时间长点看有没有指示灯变化

使用特权

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

本版积分规则

62

主题

352

帖子

0

粉丝