在程序中创建一个新的中断服务程序,ISR 的名称必须以@开头,后面是计时器号。例如,T0 的 ISR 将命名为@T0。
为了在程序中创建新的中断服务程序,需要执行以下步骤:
-
创建一个新的文件,并将 ISR 的名称保存到该文件中。例如,要创建 T0 的 ISR,可以创建一个名为
@T0.ino
的文件。 - 在文件中,添加以下代码:
-
将文件保存到 Arduino IDE 的
libraries
目录中。 -
在 Arduino 草图中,使用
attachInterrupt()
函数将 ISR 附加到计时器。例如,要将 ISR 附加到 T0 计时器,可以使用以下代码:
interrupt @T0 {// ISR 代码 }
其中
ISR 代码
是要执行的中断服务程序代码。
attachInterrupt(digitalPinToInterrupt(2), @T0, FALLING);
其中
digitalPinToInterrupt(2)
是要附加 ISR 的数字引脚,
@T0
是 ISR 的名称,
FALLING
是 ISR 的触发方式。
创建中断服务程序后,当计时器以指定的触发方式触发时,将执行 ISR 代码。ISR 代码可以执行各种任务,例如切换 LED、读取传感器或发送数据。
在程序中创建元组并保存在文件中
在程序中创建元组并保存在文件中时,需要执行以下步骤:
-
创建一个新的文件,并将元组保存到该文件中。例如,要创建一个名为
my_tuple
的元组,可以创建一个名为my_tuple.ino
的文件。 - 在文件中,添加以下代码:
-
将文件保存到 Arduino IDE 的
libraries
目录中。 -
在 Arduino 草图中,使用
include
指令包含元组文件。例如,要包含my_tuple.ino
文件,可以使用以下代码: - 现在可以在草图中访问元组中的元素。例如,要访问元组中的第一个元素,可以使用以下代码:
const tuple my_tuple = {1, 2, 3, 4, 5};
其中
1, 2, 3, 4, 5
是元组中的元素。
include "my_tuple.ino"
int first_element = my_tuple[0];
创建元组后,元组将保存在文件中,并且可以在程序中通过
include
指令访问。
单片机复习,遇到关于定时器及中断的问题,求指点,不胜感激
【1】ORG是伪指令。 设定下一行程序的地址。 【2】其中000BH地址是T0的中断入口地址。 因此一旦T0中断发生,将执行语句AJMP SERVE处继续。 并以RETI结束。 【3】ORG 2000H的目的是跳开中断服务地址处。 这个值,只要程序员连接各片段不重叠即可。 取值可以随意。 只要不超出器件地址空间。 这里2000H有点儿大(单片机的程序地址空间确实大于8K吗?)。 建议100H就足够了。 【4】AJMP,2k范围内跳转。 SJMP,短转移偏移跳转。 回复 iceblue0512:【1】一般都用LJMP【2】SETB ……这里可以随意。 明确后面特殊功能位的含义。 【3】所有5个中断源的入口地址是固定的。 不可改变。 其中T0中断,就是000BH,不是别的。 【4】AJMP MAIN 的目的就是跳出上述【3】描述的各入口地址。 而由于各入口地址间隔仅8个字节,通常中断服务里首句都是LJMP到实际中断程序的开始处。 特别无中断,直接MAIN。
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论