菜鸟才接触89c51,写的如下代码,但是中断不响应,我在INT0输入的是方波信号,还有这块是16位寻址哈
也就是unsigned int 型最大值是65536哈,我想是让int0为高电平时,计数器开始计数,当int0下一个高电平到来
之后计数器重新计数,一直这样循环响应并计数,该怎么写呢!!先谢谢各位大侠了
UINT count1 = 0; //计算计数器溢出的次数
void time0(void) interrupt 1
{
TR0 = 0;
TH0 = 0x00; //定时0.002ms
TL0 = 0x20;
TMOD = (TMOD & 0x05); //定时器0工作模式 方式一
TR0 = 1; //启动定时器/计数器0
count1++;
ET0 = 0; //允许定时器0中断
}
void time(void) interrupt 0
{
TR0 = 0; //关闭计数器0
count = TH0*256+TL0+count1*65536;
//count1 = 0;;
// ET1 = 1; //允许定时器1中断
}
我想在计数器
晕倒,楼主外部中断都没有开,怎么响应啊
EX0=0,貌似。
你自己看看,总之你的外部中断没有开。
这个你看看马忠梅的书吧,好多例子。
哦,谢谢,这个unsigned int最大值是不是65536哈?
字节拼装,左移8位(*0xFF),左移16位(0xFFFF)
需要设置中断优先级IP
那么关于你说的响应外部中断之后重新计数的问题也很好办
设置T0计数单元
某一数值后进位循环等等
计数溢出问题不大
多放几个地址存储
像钟表