完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
程序有什么问题吗? #include #include //功能:是OCRO的变化速率变小 //名称:延时函数 void delay(unsigned int timer) { unsigned i,j; for(i=0;i<1000;i++) for(j=0;j /* 功能:端口初始化 注意:要想在引脚上得到输出信号还必须将OC0 的数据方向设置为输出,即PB3为输出。 PB3输出电平变化控制小灯,则控制小灯A口也为输出。 */ void port_init(void) { PORTA = 0xFF; DDRA = 0xff; PORTB = 0x00; DDRB = 0x08; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; } //TIMER0 initialize - prescale:64 // WGM: PWM Fast // desired value: 100KHz // actual value: 0.984KHz (-10140.0%) void timer0_init(void) { TCCR0 = 0x00; //stop TCNT0 = 0x01; //set count T/C 寄存器- TCNT0设置初值 OCR0 = 0x05; //set compare 输出比较寄存器- OCR0设置初值 TCCR0 = 0x7B; //start timer 非强制输出比较 //快速 PWM //比较匹配发生时OC0 置位 //clkI/O/64 ( 来自预分频器) } #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF void timer0_ovf_isr(void) { TCNT0 = 0x01; //reload counter value PORTA=0X01; } //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 = 0x01; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void main(void) { unsigned char i; init_devices(); while(1) { for(OCR0=0X05;OCR0<0xFB;OCR0++) //OCRO增大,占空比减小 delay(20); for(OCR0=0xFB;OCR0>0x05;OCR0--) //OCRO减小,占空比增大 delay(20); } } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
7 浏览 0 评论
26 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
13 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
644 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1000 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11770 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 09:33 , Processed in 0.479825 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号