我正在编程Intel 8051(C8051F312)微控制器。我只是想通过使用中断来制作一个闪烁的led程序。它编译,但led不闪烁。我会很感激的任何想法。谢谢!
我的代码是:
#include <C8051F310.H>
#include <stdio.h>
sbit led = P2^7; //LED connected to D7 of Port2
void timer(void) interrupt 1 //interrupt no. 1 for Timer 0
{
led=~led; // toggle LED on interrupt
TH0=0xFC; // initial values loaded to timer
TL0=0x66;
}
void main(void)
{
TMOD = 0x01; // mode1 of Timer0
TH0 = 0xFC; // initial values loaded to timer
TL0 = 0x66;
EA = 1; // global interrupt enable
ET0 = 1; // enables Timer 0 interrupt
TR0 = 1; // start timer
while(1); // do nothing
}
答案 0 :(得分:2)
如上所述Mike Jablonski,您需要降低中断率。您的原始代码正在中断3.0625MHz / 12 / 922~ = 277Hz。部分CKCON
添加禁用缩放到定时器(通过设置T0M),所以现在你在~3.3kHz处中断。你将无法看到它。
看到任何东西都假定你有一个功能性电路。您没有配置输出引脚。你说你的LED已经“现在”,但希望不是意味着它不是以前。这没有多大意义,因为你没有改变任何关于引脚正在做什么的事情。
摆脱CKCON
行以保持/ 12缩放,并在中断时使用TH0
重新加载TL0
和0x00
。这样可以让你在低于4Hz的频率下中断,更加明显。
使针推拉:
P2MDOUT = 0x80;
XBR1 = 0x40;
开始阅读您的微观datasheet。