-
别沉了呀,我至今还没搞定呐!!
-
能给多点提示吗?
-
11000000如果按十进转十六进制等于a7d8c0,无论前面取数,还是后面取数,"a" "d" "c"都超过8.其它位设置也没涉及到模式等问题. 调试时,是可以进中断子程序. 这里的赋值确实是我的马虎.
只是主程序和子程序都各跑各的.能不能设置让主程序停下来的中断?
[ 本帖最后由 DoEarlyFuc 于 2013-3-30 21:22 编辑 ]
-
T0CON第7bit是TMR0ON位,调试发现能进中断服务子程序.
但是主程序和中断服务子程序,各跑各的.我要怎么把主程序停下来?
[ 本帖最后由 DoEarlyFuc 于 2013-3-30 20:48 编辑 ]
-
以上代码均参考书上例子修改.
1.不知道timer有没有开始计数?
2.然后中断服务子程序里面怎么又还要个temp常量? 不解.
谁能给个timer例子参考一下.
-
继续在这个例子上,修改如下:
将void main() 中的其中一个delay()改成timer0()替换.
timer0()
{
T0CON = 11000000 ;
TMR0IE = 1 ; // enable timer0 interupt
TMR0L = (65535-1000)%256 ;
TMR0H = (65535-1000)/256 ;
PEIE = 1 ;
GIE = 1 ;
}
其中中断服务子程序以下:
void interrupt ISR(void)
{
if (TMR0IF = 1)
{
TMR0IF = 0 ; // clear timer0 interupt
TMR0L = (65535-1000)%256 ;
TMR0H = (65535-1000)/256 ;
temp++ ;
if (temp >999 )
{
temp = 0 ;
TMR0ON = 0 ; // stop timer0
}
}
}
我本来是想用timer0作计数器,做delay,但是运行结果是,根本就没有delay效果.
很想知道为什么? 这里错在哪里?
-
硬件电路贴出来一起分析下
才发现,居然挖出个坟...
[ 本帖最后由 DoEarlyFuc 于 2013-3-29 01:40 编辑 ]
-
如果我想让它停下来,要输什么指令?