22、ATtiny 微控制器时间延迟子程序的开发与优化

ATtiny 微控制器时间延迟子程序的开发与优化

在微控制器开发中,时间延迟子程序是一个常见且重要的功能。本文将详细介绍如何开发和优化 ATtiny 微控制器的时间延迟子程序,包括处理超出范围的值、传递参数的不同方法等内容。

1. 整数范围与警告信息触发

在代码中,我们会遇到整数范围的问题。例如,一个 32 位有符号整数的最大值为 (2^{31} - 1),即 2,147,483,647 或 0x7FFFFFFF。当使用这个值作为 NUM1 时,如果它大于 NUM2(值为 1),则不会触发警告信息。但如果将 NUM1 设置为 0x80000000(通过注释掉第一行代码并取消注释第二行代码),就会触发警告信息。这是因为 0x80000000 是在 0x7FFFFFFF 的基础上加 1 得到的,它的最高有效位被设置,作为 32 位补码有符号数时是负数,其十进制值为 -2,147,483,648,小于 NUM2 的值 1。

2. 处理超出范围的上限值

为了处理时间延迟子程序中使用的超出范围的值,我们可以采用以下两种解决方案:
- 方案一:测试 MS_TIME_DEL 的值 :确保 MS_TIME_DEL 的值小于我们计算出的最大值 2,147,483。这个值远小于 32 位有符号整数所能容纳的最大正值,因此不会被视为负数。即使使用比 2,147,483 大得多的值,也不会被视为负数。但该方案的问题在于,MS_TIME_DEL 的最大值是在 20MHz 的 F_CPU 下计算得出的。如果使用 1MHz 的 F_CPU,MS_TIME_DEL 的值也会被限制在 2,147,483,而实际上在 1MHz 的 F_CPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值