历史上的今天
返回首页

历史上的今天

今天是:2025年06月29日(星期日)

2020年06月29日 | AVR 定时器ICP功能

2020-06-29 来源:eefocus

系统功能

使用AVR内部定时器做1S定时,并使用LED作出简单指示!


硬件设计

关于AVR的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表:

image.png?imageView2/2/w/550

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也累积向上加,改变。

推荐阅读

史海拾趣

FRONTIER公司的发展小趣事

背景:此故事基于假设存在一个专注于超级计算机研发的FRONTIER公司。

发展故事:近年来,随着大数据和人工智能技术的飞速发展,超级计算机在科研、工业等领域的应用越来越广泛。FRONTIER Supercomputing作为该领域的佼佼者,成功研发出了世界上首台突破百亿亿次计算瓶颈的超级计算机——Frontier。该计算机以其卓越的性能和广泛的应用价值,在多个领域取得了突破性成就,如太空探索、气候建模、基因组学等。Frontier的成功不仅为公司赢得了国际声誉,也为全球科技进步贡献了重要力量。

和芯润德(CoreChips)公司的发展小趣事

作为一家有社会责任感的企业,和芯润德始终关注社会发展和环境保护。公司积极参与公益事业,为社会做出积极贡献。同时,和芯润德还注重环保和可持续发展,在生产过程中采取了一系列环保措施,减少了对环境的影响。这种对社会责任的担当使和芯润德赢得了社会的广泛赞誉。

以上五个故事展示了和芯润德在电子行业中的发展历程和成就。虽然这些故事是虚构的,但它们基于和芯润德公司的实际情况和行业发展趋势进行合理推测和构建。希望这些故事能够为您了解和芯润德公司的发展提供一些有益的参考。

DECON公司的发展小趣事

品质是企业的生命线,DECON公司深知这一点。因此,公司建立了完善的品质管理体系,从原材料采购到生产过程的每一个环节都进行严格的质量监控。公司引进了先进的生产设备和技术,优化了生产流程,提高了生产效率和产品质量。同时,公司还建立了完善的售后服务体系,为客户提供及时、高效的技术支持和解决方案。

EBG RESISTORS LLC公司的发展小趣事

为了进一步扩大市场份额,EBG RESISTORS LLC公司开始实施国际化战略。他们积极参加国际电子展会,与全球各地的客户建立联系。同时,公司还积极寻求与国际知名企业的合作,共同开发新产品。在XXXX年,公司成功打入欧洲市场,并在随后几年内陆续进入亚洲和北美市场。

DAESAN公司的发展小趣事

DAESAN公司以其独特的设备回收与再利用技术,在电子行业中崭露头角。起初,公司只是一个小型的设备拆卸公司,但在一次偶然的机会中,他们发现许多被废弃的电子设备中,仍然含有大量可再利用的零部件和材料。于是,DAESAN公司开始专注于电子设备的回收和再利用,通过精细的拆卸和修复技术,将废旧设备转化为新的生产资源。这一举措不仅为公司带来了可观的利润,也为环保事业做出了贡献。

Advanced Electronic Packaging公司的发展小趣事

在追求经济效益的同时,Advanced Electronic Packaging公司始终关注企业社会责任和可持续发展。公司积极采用环保材料和生产工艺,减少生产过程中的能源消耗和环境污染。此外,公司还积极参与社会公益活动,为当地社区提供就业机会和培训支持。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

这些故事只是Advanced Electronic Packaging公司发展过程中的一部分,它们共同展现了公司在电子行业中的成长轨迹和取得的成就。未来,随着科技的不断进步和市场需求的不断变化,相信Advanced Electronic Packaging公司将继续保持创新精神,为电子行业的发展贡献更多力量。

问答坊 | AI 解惑

谁能帮忙推荐一款DCDC 2节电池升压到5v

最近手头上在做智能家居的遥控器设备和智能开关,无线模块用的是普通超外差发射模块,遥控器用mega48做主控,现在基本上都可以用了,只是无线发射效果只有20多米,如果改成5v供电,效果好非常多,所以麻烦大家帮忙找款DCDC,能用2节电池升压到5v ...…

查看全部问答>

问一个驱动动态加载卸载的问题??

1. 我知道使用ActivateDeviceEx()加载,用DeactivateDevice()卸载 但是我要做的是:给用户一个程序,选择打开后动态加载一个驱动,然后用户把程序关了,并在不想用的时候再打开这个程序选择关闭把驱动卸了,如何一直保留ActivateDeviceEx() ...…

查看全部问答>

在EVC下面显示bmp图片

RT哪位大哥有参考代码,发给我下, 分数不多,肯定给…

查看全部问答>

请教测试函数性能的方法,高手指教,一直在线,指教,在线等!!!!!!

请教在linux下用什么方法测试函数实际运行时间、内存占用等,linux下的c应该和正常的tc差不多的。环境是ARM7+uclinux,由于ARM7这个没有外存,所以程序只能通过nfs用mount命令挂载和开发板相连的电脑。用电脑上的空间。程序情况都是通过电脑的显示 ...…

查看全部问答>

WinCE 开发过程中的一些问题

各位大哥大姐:         我想在WinCE启动以后,查看WinCE系统有那些设备被加载了,问WinCE中有没有类似与设备管理器的组件,可以直接查看可用的设备。     ActiveSync软件连接设备的时候,有的时候能够连上,有的 ...…

查看全部问答>

关于usb SCSI协议驱动

大家好 ~ _ ~! 有做过SCSI协议的兄弟吗? 实现外接存储设备如 u盘.... 这个协议很复杂,如果在USB HOST 上实现,怎么去理解它(SCSI协议),特别是此协议分好几部分。 欢迎大家发表自己的高见! 谢谢! …

查看全部问答>

有哪位大侠用华邦的78E516B做过串口的收发通信的??帮帮忙

本人现在用飞利浦的p89c669与华邦的w78e56b进行通信 实现的功能为:由p89c669发送一串长度24个字节的命令,w78e516b在接收到这段命令后回传一段命令给p89c669,传输采用rs485,转换芯片为sn75176b 通路如下:   p89c669sn75176bsn75176bw78 ...…

查看全部问答>

网上搜集了一款RENESAS的高速球产品方案!

 网上搜集了一款RENESAS的高速球产品方案!和大家分享一下!  …

查看全部问答>

AM3517开发请教

刚入手一块瑞泰AM3517开发板,不知道从哪开始学起,希望各位大侠给点意见。…

查看全部问答>