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

[复制链接]
2167|6
 楼主| LastNew 发表于 2008-1-10 13:58 | 显示全部楼层 |阅读模式
最近学习做个小系统,用了T2做了个系统时钟,发现有个问题,想不明白。<br /><br />下面的程序是这个意思:在P1口上接了8个LED,每秒钟依次亮一个;时钟是5ms,m是计数,200个系统时钟后点一个灯。<br /><br />现在的问题是:在系统中断里对m的操作没有效果,AAAA注释下的是我为了判断有没有进入中断加的,以前是BBBB段代码,用AAAA仿真的时候灯亮,也很暗(因为是5ms一次,看不出来,所以都亮,都很暗,这个结果应该是对的吧?),但用BBBB段代码仿真的时候就什么反映都没了,想不明白<br /><br />#include&nbsp;&ltsystem.h&gt<br /><br />unsigned&nbsp;char&nbsp;m;<br /><br />void&nbsp;SystemTimer(void)&nbsp;interrupt&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//5mS<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TF2=0;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(P1==0x7f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=====================AAAA<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1=0xfe;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{P1&lt&lt=1;P1+=1;}&nbsp;<br />&nbsp;<br />/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m--;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=====================BBBB<br /><br />if(m==0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&nbsp;s<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;m=200;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(P1==0x7f)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1=0xfe;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{P1&lt&lt=1;P1+=1;}&nbsp;&nbsp;&nbsp;&nbsp;<br />}*/<br />}<br /><br />void&nbsp;SystemInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IP=0x20;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;IP:&nbsp;&nbsp;&nbsp;定时器&nbsp;2中断优先&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IE=0x20;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;IE:&nbsp;&nbsp;&nbsp;开定时器&nbsp;2中断&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CON=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;timeload=TIMEdata(50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定时器重载值<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TH2=timeload/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL2=timeload%256;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR2=1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RCAP2H=timeload/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCAP2L=timeload%256;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m=200;<br />}<br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1=0xfe;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SystemInit();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}
yczhang 发表于 2008-1-10 16:34 | 显示全部楼层

1

你的程序在我机器上都不能运行啊
孤星119 发表于 2008-1-10 17:07 | 显示全部楼层

程序错了.

while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;}后面加分号
孤星119 发表于 2008-1-10 17:08 | 显示全部楼层

{}不要

  
 楼主| LastNew 发表于 2008-1-10 17:35 | 显示全部楼层

ls

ls谢谢哈,不过改了,也不可以
kine8393 发表于 2008-1-11 10:54 | 显示全部楼层

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

如果时间过长,可能等待时间比较长。
kine8393 发表于 2008-1-11 10:56 | 显示全部楼层

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

最好检查一下TIMEdata()函数,或者调试时间长点看有没有指示灯变化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

352

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部