找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

哪位高手哪位高手帮我看一下这个程序,用定时器0的CTC模式产生方波,波形从PB3口输出

[复制链接]
LWJ 发表于 2013-8-15 11:41:07 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
哪位高手哪位高手帮我看一下这个程序,用定时器0的CTC模式产生方波,波形从PB3口输出,频率可以任意只要能出来波形就行
#include <iom16v.h>
#include <macros.h>
void port_init(void)
{
PORTA = 0x00;
DDRA  = 0x00;
PORTB = 0x00;
DDRB  = 0x00;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
}
//TIMER0 initialize - prescale:64
// WGM: CTC
// desired value: 20KHz
// actual value: 19.231KHz (-4.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x00; //set count
OCR0  = 0xFD;  //set compare
TCCR0 = 0x1B; //start timer
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
MCUCR = 0x00;
GICR  = 0x00;
TIMSK = 0x02; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
init_devices();
PORTB=0x00;
DDRB=0xff;
while(1)
{};
//insert your functional code here...
}
techxuan 发表于 2013-10-7 03:43:51 | 显示全部楼层
本帖最后由 techxuan 于 2013-10-7 03:46 编辑

//在timer0中断处理子函数中进行处理
void timer0_int(void)
{
TCCR0 = 0x1B;
//加入以下语句
if((PINB&(1<<3)) == (1<<3))
   PORTB &=~ (1<<3);
else
   PORTB |= (1<<3);
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 06:27 , Processed in 0.059465 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表