马老师能不能帮我看看这个定时器的程序什么问题
/*********************************************File name :
Chip type : ATmega48
Program type :CVAVR
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size: 0
Data Stack size : 256
*********************************************/
#include <mega48.h>
int time_counter; // 中断次数计数单元
unsigned char posit;
bit point_on, time_1s_ok;
// Timer 0 比较匹配中断服务
interrupt void timer0_comp_isr(void)
{
display(); // 调用LED扫描显示
if (++time_counter>=500)
{
time_counter = 0;
time_1s_ok = 1;
}
}
void main(void)
{
// T/C0 初始化
TCCR0B=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式
TCNT0=0x00;
OCR0B=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms
TIMSK0=0x02; // 允许T/C0比较匹配中断
posit = 0;
#asm("sei") // 开放全局中断
while (1)
{
}
}
是从你的程序改动的 老是编译通不过 至少也要说明使用什么平台,以及错误提示是什么? 使用CVAVR 2.04老是提示中断函数这里有问题
interrupt void timer0_comp_isr(void) interrupt void timer0_compa_isr(void)
{
TC2A++;
if(TC2A>=60)
{
TC2A=0; //中断30次就刚好是1秒钟
sum++;
sum1++;
if(sum==10)
{
sum=0;
time_1s_ok=1;
}
}
}
现在可以通过了,不过我不知道什么原因,呵呵,还有马老师,为什么我不能使用bit point_on, time_1s_ok; 用你的例程M16可以使用,我把它改成M48,就不能使用,我是初学,没有经过正规学习,不好意思,惭愧 编译器中芯片型号要选对。
另外,M16到M48,内部的资源也有不同。
请先参考我编写的教程一步一步的把基础打好。 不满马老师,我是我是现学现做,我自己搞了一个小东西,原来一个网友帮我推荐的一个方案,用M48加天威1627显示和键盘,检测加报警,他帮我写程序,我硬件都搞好了,结果不知道哪里问题他不肯搞了,打电话不接,发短信不回,搞的我都不知道哪里出了问题,现在只能自己搞,已经可以检测键盘和显示了,我水平差,只能慢慢搞 我买了马老师的书慢慢学习吧,呵呵!!
页:
[1]