完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于AVR的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表:
[tr]表 6.1 I/O 口引脚配置表[/tr]
/*01010101010101010101010101010101010101010101010101010101010101010101 ---------------------------------------------------------------------- 实验内容: 使用TIMER1做1S定时,并使用PD口的LED指示灯做简单指示。 ---------------------------------------------------------------------- 硬件连接: 将PD口的LED指示灯使能开关切换到"ON"状态。 ---------------------------------------------------------------------- 注意事项: (1)若有加载库函数,请将光盘根目录下的“库函数”下的“ICC_H”文件夹拷到D盘 (2)请详细阅读:光盘根目录下的“产品资料开发板实验板SMK系列SMK1632说明资料” ---------------------------------------------------------------------- 10101010101010101010101010101010101010101010101010101010101010101010*/ #include #include #define DISP_DDR DDRD #define DISP_PORT PORTD /*-------------------------------------------------------------------- 函数名称: 函数功能: 注意事项:基于7.3728M晶振,晶振不要买到假的! 提示说明: 输 入: 返 回: --------------------------------------------------------------------*/ void timer1_init(void) { TCCR1B = 0x00; //stop timer TCNT1H = 0xE3; //设置 TC1 的 计数寄存器 高8位值,基于7.3728M晶振 TCNT1L = 0xE1; //设置 TC1 的 计数寄存器 低8位值,基于7.3728M晶振 //OCR1AH = 0x1C; //设置 TC1 的 输出比较寄存器A 高8位值 //OCR1AL = 0x20; //设置 TC1 的 输出比较寄存器A 低8位值 //OCR1BH = 0x1C; //设置 TC1 的 输出比较寄存器B 高8位值 //OCR1BL = 0x20; //设置 TC1 的 输出比较寄存器B 低8位值 //ICR1H = 0x1C; //设置 TC1 的 输入捕获寄存器 高8位值 //ICR1L = 0x20; //设置 TC1 的 输入捕获寄存器 低8位值 TCCR1A = 0x00; TCCR1B = 0x05; //设置TC1 为 CLK/1024分频,启动TC1 MCUCR = 0x00; //设置 MCU 的 控制寄存器 GICR = 0x00; //设置 中断控制寄存器 TIMSK = 0x04; //设置 定时计数器 的 屏蔽寄存器 //SEI(); //enable interrupts } /*-------------------------------------------------------------------- 函数名称: 函数功能: 注意事项: 提示说明: 输 入: 返 回: --------------------------------------------------------------------*/ #pragma interrupt_handler timer1_ovf_isr:9 void timer1_ovf_isr(void) { TCNT1H = 0xE3; //reload counter high value TCNT1L = 0xE1; //reload counter low value DISP_PORT++; //每加1S,显示加1 } /*-------------------------------------------------------------------- 函数名称: 函数功能: 注意事项:没什么好注意的,不要直接对单片机控制板加220V电压就行了! 提示说明: 输 入: 返 回: --------------------------------------------------------------------*/ void main(void) { DISP_DDR = 0XFF; //设置显示口为输出 timer1_init(); SEI(); while(1); } |
|||||
|
|||||
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1072浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:46 , Processed in 1.071856 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号