AVR 定时、定时器与中断:C 代码调用汇编子程序及轮询定时器延迟
1. C 代码调用汇编子程序概述
在 C 代码程序中调用汇编语言子程序相对容易。调用时,关键信息是用于向子程序传递值的寄存器,以及用于从子程序返回值的寄存器。不同的 C 编译器,甚至针对同一微控制器,其寄存器使用方式可能不同。对于 avr - gcc 编译器,相关信息可在 Atmel AT1886 应用笔记中找到,链接为:ww1.microchip.com/downloads/en/appnotes/doc42055.pdf。
2. 从 C 向汇编子程序传递值
2.1 创建项目
创建一个名为 wait_ms_c 的新 GCC C 可执行项目,将 main.c 中的代码替换为以下内容:
#define F_CPU 1200000
#include <avr/io.h>
#include "wait_ms.h"
int main(void)
{
DDRB |= (1 << DDB4); // Set up pin PB4 as an output
while (1) {
PORTB |= (1 << PORTB4); // Set pin high (LED on)
wait_ms(WAIT_MS_TIME(200)); // LED on delay
PORTB &= ~(1 << PORTB4); // Set pin lo
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



