完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这里使用ATmega16完成溢出中断功能
1、初始化定时器参数 // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=(0< TCNT0=0x37; //设置初值 OCR0=0x00; 预设频率16MHz,这里选择010,8分之一分频,2MHz,时钟周期0.5us,产生一个100us的时钟周期需要200个周期,所以时间t=(255-55)*0.5,所以初值TCNT0=0x37; //设置初值 2、设置时钟使能 // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=(0< 3、打开全局使能 // Global enable interrupts #asm("sei") 4、写入中断程序 // Declare your global variables here volatile unsigned int cnt=0; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here TCNT0=0x37; //重新赋予初值 cnt++; //计数 if(cnt>=1000) { cnt=0; //重新开始计数 PORTB^=0xff; //灯闪烁 } } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
328浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:02 , Processed in 1.237738 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号