历史上的今天
今天是:2025年06月29日(星期日)
2020年06月29日 | AVR 定时器ICP功能
2020-06-29 来源:eefocus
系统功能
使用AVR内部定时器做1S定时,并使用LED作出简单指示!
硬件设计
关于AVR的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表:


AVR主控电路图
LED控制电路
软件设计
下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
/*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); } 系统调试 时间在累积,LED也累积向上加,改变。
上一篇:AVR PCF8563 程序
史海拾趣
|
最近手头上在做智能家居的遥控器设备和智能开关,无线模块用的是普通超外差发射模块,遥控器用mega48做主控,现在基本上都可以用了,只是无线发射效果只有20多米,如果改成5v供电,效果好非常多,所以麻烦大家帮忙找款DCDC,能用2节电池升压到5v ...… 查看全部问答> |
|
1. 我知道使用ActivateDeviceEx()加载,用DeactivateDevice()卸载 但是我要做的是:给用户一个程序,选择打开后动态加载一个驱动,然后用户把程序关了,并在不想用的时候再打开这个程序选择关闭把驱动卸了,如何一直保留ActivateDeviceEx() ...… 查看全部问答> |
|
请教测试函数性能的方法,高手指教,一直在线,指教,在线等!!!!!! 请教在linux下用什么方法测试函数实际运行时间、内存占用等,linux下的c应该和正常的tc差不多的。环境是ARM7+uclinux,由于ARM7这个没有外存,所以程序只能通过nfs用mount命令挂载和开发板相连的电脑。用电脑上的空间。程序情况都是通过电脑的显示 ...… 查看全部问答> |
|
各位大哥大姐: 我想在WinCE启动以后,查看WinCE系统有那些设备被加载了,问WinCE中有没有类似与设备管理器的组件,可以直接查看可用的设备。 ActiveSync软件连接设备的时候,有的时候能够连上,有的 ...… 查看全部问答> |
|
大家好 ~ _ ~! 有做过SCSI协议的兄弟吗? 实现外接存储设备如 u盘.... 这个协议很复杂,如果在USB HOST 上实现,怎么去理解它(SCSI协议),特别是此协议分好几部分。 欢迎大家发表自己的高见! 谢谢! … 查看全部问答> |
|
有哪位大侠用华邦的78E516B做过串口的收发通信的??帮帮忙 本人现在用飞利浦的p89c669与华邦的w78e56b进行通信 实现的功能为:由p89c669发送一串长度24个字节的命令,w78e516b在接收到这段命令后回传一段命令给p89c669,传输采用rs485,转换芯片为sn75176b 通路如下: p89c669sn75176bsn75176bw78 ...… 查看全部问答> |




